모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.
<참고 : https://ko.wikipedia.org/wiki/모델-뷰-컨트롤러>
→ Model과 View는 서로의 존재를 몰라야 한다. 오직 Controller의 연결에 의해서 작동되야 한다.
<참고 : https://velog.io/@seongwon97/MVC-패턴이란>
DrawingPanel이 View 역할을 하고 있다. Transformer나 ColorChanger 같은 객체들은 여러 객체에 공통적으로 적용되는 도구이다. 이러한 객체들을 Controller로 구분한다. 본질적인 그림의 정보들은 TShape가 모두 가지고 있도록 설계했다.
인간은 살아가면서 기억한 정보를 활용하여 현실 상황을 인지하거나 가상의 상황을 만들어낸다. 후자의 경우를 메타버스라고 일컫는다. 우리는 복잡하고 다양한 현실의 정보를 어떻게 기억할까? 예를 들어 교실의 정보를 기억하고자 한다면 먼저 눈에 보이는 것들로 분리한다. 칠판, 책상, 의자, 모니터, 교탁 등으로 분리한다. 각각의 객체로 분리하는 것이다. 엔지니어는 평소에 하고 있는 생각의 단계를 효율적으로 할 줄 알고 그것을 프로그램 설계 시에도 적용해야만 좋은 프로그램을 설계할 수 있다.
평소에 가지고 있는 생각을 프로그램으로 옮기는 것을 프로그램 설계라고 하는데 이때 생각의 단위가 class 타입이 된다. 프로그램 디자인은 개별적인 객체들이 재사용 가능하도록 독립적으로 설계해야 한다. 각 객체들은 내부와의 긴밀성을 높이고 외부와의 연결성은 줄여야 한다. 복잡한 프로그램의 설계도를 머릿속에서 추상적으로 정돈하여 생각하는 연습을 평소에 자주 해야만 좋은 프로그램을 설계할 수 있다. 수학 문제처럼 정답이 정해져있지 않기 때문에 엔지니어에게는 문제해결능력이 상당히 중요하다. 좋은 프로그램을 설계하기 위해 마주치는 수많은 문제들을 어떻게 해결할 것인가?