AndreaSmalltalkLecture:QnA 06: Difference between revisions

From 흡혈양파의 인터넷工房
Jump to navigation Jump to search
No edit summary
 
(No difference)

Latest revision as of 15:02, 5 December 2013

질문과 답변-6
:Framework(짜임새)

Framework(짜임새)

안녕하세요? 김찬홍 안드레아입니다. 아래 성윤님께서 짜임새에 대해서 답변을 해 주셨습니다. 정말 감사하구요, 저도 이제 객체지향의 참 맛을 알아가려고 하는 찰라이기 때문에, 많이 모르는 것이 있습니다. 그러니 틀린 게 있다면 지적을 해 주세요.


Smalltalk는 객체지향 언어입니다. 그래서 Smalltalk의 모든 것은 객체입니다. 그래서 우리들이 Smalltalk에서 프로그래밍을 한다는 말은, 결국 Smalltalk 안에 들어있는 객체들을 이용해서 일을 하는 것입니다.


자, 여기에 디스켓이 있습니다. 이 디스켓은 한 덩어리의 객체로 되어있지 않고 여러 가지 작은 객체를 가지고 있습니다. 잘 보십시오.

  • 디스켓 겉 껍질
  • 보호용 미닫이 철문
  • 디스켓 앞판
  • 디스켓 뒷판
  • 쓰기방지 칸막이
  • 디스크 원판
  • 회전판


디스켓이라는 하나의 객체를 이루기 위해서는 위와 같이 여러 개의 작은 객체들이 모여야 합니다. 이런 객체들은 서로 나름대로의 역할을 가지고 있습니다. 그리고 각각의 객체들이 서로 의사소통을 하면서, 즉 객체들끼리 서로 지시를 주고 받으면서 일을 합니다.


그런데 디스켓을 구성하는 작은 객체들을 아무렇게나 배치한다고해서 디스켓이 되지는 않습니다. 바로 객체들을 일정한 틀에 맞도록, 즉 일정한 짜임새에 맞도록 배치해 주어야 합니다.


짜임새(framework)란 바로 이러한 틀입니다. 여러 개의 객체들을 서로 조립해서 일을 처리해야할 때, 어떻게 이들 객체들을 조립해야 할지를 결정하는 것입니다. 자동차를 생각해 보면, 자동차에는 디스켓보다 훨씬 많은 객체들이 복잡하게 얽혀있는데, 이는 '자동차'를 구성하는 짜임새(framework)가 미리 정해져 있기 때문입니다. 집도 그렇고요... 아무튼 복잡한 일을 하기 위해서는 여러 개의 객체가 협동해서 일을 해야 한다는 것이 짜임새의 가장 중요한 이야기입니다.


MVP(Model-View-Presenter) 짜임새는 Smalltalk를 사용해서 응용 프로그램을 만들때 필요한 짜임새입니다. MVP 짜임새는 크게 '모형', '보임새', '풀이꾼'의 세 무리의 객체가 조립된 형태입니다.


'모형'(model)은 응용 프로그램 자체의 모형입니다. 흔히 '문제 영역'(domain model)이라고 부르기도 합니다. 프로그램의 핵심적인 논리가 이 모형 속에 집약되어 있습니다.


'보임새'(view)는 프로그램의 겉모양입니다. 어떤 프로그램이던지 사용자와 대화를 해야하는데, 그 때 드러나는 프로그램의 겉 껍데기를 말합니다. 단추, 글줄 입력 상자 등은 모두 자신들의 창을 가지고 있는데, 이런 것들이 모두 보임새에 들어갑니다.


'풀이꾼'은 사용자와 대화하는 실제적인 부분으로, 마우스와 키보드에서 들어온 사용자의 입력을 받아서 모형(model)과 보임새(view)를 통제하여 전체적인 프로그램을 풀어가는 역할을 수행합니다.


비슷한 것으로는 성윤님께서 말씀하신 MFC 의 Doc/View 구조와 MVC가 있습니다. MVP 는 Dolphin Smalltalk에서 채택한 짜임새입니다.


일단 MVP나 짜임새에 관한 것들은 객체지향에 대해. 그리고 Smalltalk에 대해 좀 더 공부한 뒤에 익히셔도 무리가 없을 것입니다. 언제가 될지는 모르겠지만, Smalltalk 배우기에서도 이러한 짜임새를 좀 다루어 볼 생각입니다. 그러기 위해서는 우선 기본에 충실해야 하기 때문에, 조금 더디더라도 Smalltalk에 대해서 충분히 깊이 있게 다루고자 합니다.


아무튼 여러분들께서 지치지 않게 좀 도와주시고요, 혹시나 제 글에서 틀린 부분이 있다면 서슴지 마시고 지적해 주십시오. 그래야 저도 공부를 해서 잘못된 것을 고칠 수 있기 때문입니다.


그럼 객체지향 공부 열심히 하세요. 화이팅!


Notes