2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

Software Style Architeture - MVC Model

그렇게도 지겹게 들어오던 MVC Architecture Model.
사실 공부도 워낙 안 하고 프로그래밍에 흥미가 없었다고는 하지만 어디에선가 슬쩍 들어봤던 기억이 있는..
GUI가 MVC 모델이니 어쩌구 이런 소리에 머리만 쥐어뜯다가 결국에는 이렇게 공부하게 되는 상황이 와버렸다 ㅎ

단순하게 말하자면, 해야하는 일을 나누어서 이 부분에서는 이 일을 전담, 저 부분에서는 다른 일을 분담하자!!!
소프트웨어 구현 시, 구성요소들의 역활을 결정하고 부분적으로 나누자는 발상에서부터 시작되었다.
이 모델은 세 가지 부분으로 구성되는데, 바로 Model - View - Controller 이다.


우선, Model 부분은 데이터를 캡슐화 해서 보존하는 역활을 한다.
View에 대해서는 읽기만 허락되며, Controller에 대해서는 읽기와 쓰기가 모두 허가된다.
이렇게 생각하면 위험할지도 모르지만,쉽게 Repository 라고 생각하면 될 듯 싶다.
필요한 데이터를 보존하고 있다가, 필요한 곳에 뿌리는 부분이라고 보면 무방할 듯 하다.

[Model에는 데이터를 읽고 저장하기 위한 getter, setter가 필요하다.]

다음, View 부분은 정보를 표시해주는 역활을 한다.
당연한 이야기지만, 사용자가 정보를 접하게 되는 부분으로 복수 이상의 view가 존재할 수 있다.
중요한 부분은, 정보가 변경되었을 경우, 그 정보를 새로 표현해주는 update() 함수를 필히 가져야 한다는 점!!

[데이터의 변경을 새로이 표시하기 위해서 update() 메소드가 필요!!]

마지막으로 Controller 부분은 정보를 입력하고 제어하는 부분이다.
사용자가 입력하거나 발생시키는 정보와 이벤트에 대해서 처리하고 그것을 Model과 연동시켜서 변경시키는
역활을 하는 부분이다.
Controller에도 필요에 따라서 update()가 필요한 경우가 있는데, 예를 들어서 사용자가 값을 입력하지 않았다면
버튼을 비활성화 시킨다거나 하는 경우에 필요하다.
Controller는 경우에 따라서 View와 일체화 되는 경우도 있는데, 이는 JSP 모델에서 다시 보자~!!!

[추가가 되지 않는 경우, add 버튼을 비활성화 시키기 위해서 update() 메소드가 필요!!]

이를 이용해서 매우매우 간단한 호텔 예약 시스템을 예로 들자.
MVC 모델에 적용한 클래스 다이어그램과 시퀀스 다이어그램은 다음과 같다.

[정적 모델링 : 클래스 다이어그램]
[view는 model의 데이터를 참조, controller는 model을 사용, view와 controller는 생성과 의존관계]

[동적 모델링 : 시퀀스 다이어그램]
[입력값의 변화와 수신버튼의 이벤트에 따라서 나타낸 시퀀스 다이어그램의 일례] 

댓글

이 블로그의 인기 게시물

[메모] PostgreSQL에서 Insert 하는 경우 자동채번 PK가 중복에러 나는 경우

[C# & LINQ] 랜덤으로 데이터를 한 개 추출하는 방법

[react-native] uuid 생성이 에러가 날 때 대처법