본문 바로가기

C#, C++

SDI(Single Document Inteface)패턴을 활용한 영상처리 MFC프로그램 개발 튜토리얼 (4) - 클래스 구조 정의

UI의 계획서인 Mock을 작성했으니,

이번에는 Class의 계획서인 UML을 그려보겠습니다.

이번 프로그램은 구조가 그렇게 복잡하지는 않습니다.

뼈대가 되는 MainFrame이 존재하고, View , Document(Logic) 3가지로 나누어서 그려봤습니다.

 

아래부터 설명해보자면

1. Logic (Document)

우리의 프로그램은 Image라는 데이터를 다루게 됩니다.

따라서, Document에서 이러한 Image의 데이터를 가지고 원하는 동작을 수행해야 합니다.

Logic의 코드를 다룰 때에는 View와 관련된 사항들은 신경쓰지 않고 진행 할 수 있어야 합니다.

Image는 .bmp, jpg등의 File에서부터 읽어와서 Memory의 포인터에 저장 할 예정입니다.

MemoryTool에서 이렇게 저장하기 위한 포인터를 할당합니다.

 

MemoryTool에서 저장 한 이미지에 대해서 OpenCV를 이용해서 처리하는 알고리즘도 Document에 구현되야 합니다.

간단한 건 Document에 직접구현해도 되고, 복잡해지면 OpenCV클래스를 MFCModel이라는 별도 프로젝트에서 따로 구현해서 불러오는 식으로 작업할 수도 있습니다.

 

결론 : Image저장, Image처리에대한 코드를 Document와 Document가 참조하는 MFCModel에서 구현한다.

2. UI (View)

이미지 처리에 대한 요청을 사용자에게 받는 과정

그리고, 처리가 된 결과물을 사용자에게 시각적으로 보여주는 과정을 User Interface(UI) 라고 부를 수 있습니다.

Menu에서 MenuItem을 선택하거나, Button을 클릭하거나, Mouse를 작동하거나 이러한 것들을 View에서 구현합니다.

Document가 소유중인 Memory에서 이미지를 읽어서 BitMap으로 뿌려주는 작업 또한 View에서 구현합니다.

SettingView에서 원하는 알고리즘을 선택하면 매칭되는 ProcessDlgView가 출력되고 Parameter를 입력하면

이 것에 해당하는 동작은 Document에 위임해야합니다..

3. MainFrame (뼈대)

모든 위젯, View를 소유하고, 배치를 결정합니다.

Window의 크기를 조절하거나 위치를 조절하거나.. 

 

다음 포스팅에서는 MainFrame 구성을 진행해보도록 하겠습니다.