그림판 프로그램 속 MVC 패턴

yeezze·2022년 6월 10일
0

1. MVC 패턴

개념

모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

<참고 : https://ko.wikipedia.org/wiki/모델-뷰-컨트롤러>

Model

  • Data와 애플리케이션이 무엇을 할 것인지를 정의하는 부분으로 내부 비즈니스 로직을 처리하기 위한 역할을 한다.
  • 사용자가 편집하기를 원하는 모든 데이터를 가지고 있어야 한다.
  • View나 Controller에 대해서 어떤 정보도 알지 말아야 한다.

View

  • 사용자에게 보여주는 화면(UI)
  • 사용자와 상호작용을 하며 컨트롤러로부터 받은 모델의 결과값을 사용자에게 화면으로 출력하는 일을 한다.
  • Model이 가지고 있는 정보를 따로 저장해서는 안된다.
  • Model이나 Controller와 같이 다른 구성요소들을 몰라야 한다.

→ Model과 View는 서로의 존재를 몰라야 한다. 오직 Controller의 연결에 의해서 작동되야 한다.

Controller

  • Model과 View 사이를 이어주는 인터페이스 역할을 한다.
  • 즉, Model이 데이터를 어떻게 처리할지 알려주는 역할을 한다.
  • 사용자로부터 View에 요청이 있으면 Controller는 해당 업무를 수행하는 Model을 호출하고 Model이 업무를 모두 수행하면 다시 결과를 View에 전달하는 역할을 한다.
  • Model이나 View에 대해서 알고 있어야 한다.
  • Model이나 View의 변경을 모니터링 해야 한다.

<참고 : https://velog.io/@seongwon97/MVC-패턴이란>

현재 프로그램 디자인

DrawingPanel이 View 역할을 하고 있다. Transformer나 ColorChanger 같은 객체들은 여러 객체에 공통적으로 적용되는 도구이다. 이러한 객체들을 Controller로 구분한다. 본질적인 그림의 정보들은 TShape가 모두 가지고 있도록 설계했다.

2. 메타버스

인간은 살아가면서 기억한 정보를 활용하여 현실 상황을 인지하거나 가상의 상황을 만들어낸다. 후자의 경우를 메타버스라고 일컫는다. 우리는 복잡하고 다양한 현실의 정보를 어떻게 기억할까? 예를 들어 교실의 정보를 기억하고자 한다면 먼저 눈에 보이는 것들로 분리한다. 칠판, 책상, 의자, 모니터, 교탁 등으로 분리한다. 각각의 객체로 분리하는 것이다. 엔지니어는 평소에 하고 있는 생각의 단계를 효율적으로 할 줄 알고 그것을 프로그램 설계 시에도 적용해야만 좋은 프로그램을 설계할 수 있다.

프로그램은 abstract의 집합

평소에 가지고 있는 생각을 프로그램으로 옮기는 것을 프로그램 설계라고 하는데 이때 생각의 단위가 class 타입이 된다. 프로그램 디자인은 개별적인 객체들이 재사용 가능하도록 독립적으로 설계해야 한다. 각 객체들은 내부와의 긴밀성을 높이고 외부와의 연결성은 줄여야 한다. 복잡한 프로그램의 설계도를 머릿속에서 추상적으로 정돈하여 생각하는 연습을 평소에 자주 해야만 좋은 프로그램을 설계할 수 있다. 수학 문제처럼 정답이 정해져있지 않기 때문에 엔지니어에게는 문제해결능력이 상당히 중요하다. 좋은 프로그램을 설계하기 위해 마주치는 수많은 문제들을 어떻게 해결할 것인가?

profile
백엔드 개발자 😊

0개의 댓글