오늘 학습 키워드
MVC, MVP 패턴
오늘 학습 한 내용을 나만의 언어로 정리하기
MVC와 MVP
MVC : Model + View + Controller
- Model : 데이터 및 데이터 처리
- View : 프론트
- Controller : 사용자의 입력 처리
Controller : View = 1 : N View는 Controller를 모름.
MVP : Model + View + Presenter
- Model : 데이터 및 데이터 처리
- View : 프론트
- Presenter : View와 Model을 연결. View에서 요청한 자료를 Model을 가공해 View로 다시 전달.
Presenter : View = 1 : 1 Presenter는 View와 Model의 인스턴스를 가짐.
챗지피티의 정리..
항목 | MVC (Model-View-Controller) | MVP (Model-View-Presenter) |
---|---|---|
View 역할 | 사용자 입력 전달 + 출력 | 출력만 (입력은 Presenter가 처리) |
Controller/Presenter 역할 | 사용자 입력 처리 및 Model과 View 연결 | 사용자 입력, Model 업데이트, View 갱신 |
View가 Model을 참조? | 가능 | 불가능 (Presenter를 통해서만) |
유닛 테스트 용이성 | MVP가 더 테스트하기 쉬움 | Controller에 따라 다름 |
MVC의 흐름 : User → Button 클릭 → Controller → Model 업데이트 → View 갱신
MVP의 흐름 : User → Button 클릭 → View → Presenter → Model 업데이트 → Presenter → View 갱신
그림으로 정리
학습하며 겪었던 문제점 & 에러
- 문제&에러에 대한 정의
계산기에 연산을 진행할 수를 저장하는 float first 변수가 있었는데, 거기에 = null 을 하니까 float는 null을 허용하지 않는다는 문제가 나왔다.
- 내가 한 시도
처음에는 0.0으로 초기값을 줘야하나 하다가 연산하려고 하는 수가 0일 수도 있기 때문에 이는 맞지 않다고 판단했다.
- 해결 방법
float 뒤에 물음표를 붙여 float?로 만들면 null이 된다는 사실을 알았다.
- 새롭게 알게 된 점
float 뿐만 아니라 int, double, bool 또한 가능하다는 점을 깨닫게 되었다.
- 이 문제&에러를 다시 만나게 되었다면?
값을 임의로 지정하면 안되는 경우에는 물음표를 붙여 null을 허용하게 할 것이다.
내일 학습 할 것은 무엇인지
계산기 마저 만들기