Java(3): MVC Architecture Design Fundamentals

이규현·2024년 9월 25일

소프트웨어 아키텍쳐

  • 건축은 설계와 공사를 분리
    - 건축가(architect): 건물을 어떻게 지을지 전체적인 구성을 설계
    - 시공자(builder): 건물 공사 담당
  • 소프트웨어도 설계와 구현을 분리
    - 설계(design): 소프트웨어 구조 설계
    - 구현(implementation): 프로그램 작성

객체지향 프로그래밍

Intellij 내에서 Diagram 확인할 수 있음.

클래스의 종류

Starter: 시동걸기
Model: 핵심 계산을 하는 두뇌, 선수, 자료
View: 외부와 소통창구(Input, Output)
Controller: 매니저, 지휘자

객체지향 설계

설계

  • 설계도: Class Diagram
  • 설계도 부품: Calss = Object를 만들기위한 형틀
  • 클래스 별로 필요한 Method 장착
  • 클래스 별로 필요한 변수(field variable) 설정

구현

  • 클래스 구현
  • 메소드 구현

Class Diagram 만들기

구현: 오늘 날짜부터 크리스마스까지 남은 날 계산하기

(GUI 활용)

Christmas 클래스

public class Christmas {
    public static void main(String[] args) {
        Model m = new Model();
        View v = new View();
        Controller c = new Controller();
        c.showResult(m,v);
    }
}

Model 클래스(계산)

import java.time.LocalDate;
import java.time.Period;

public class Model {
    Period getResult(){
        LocalDate today = LocalDate.now();
        LocalDate christmas = LocalDate.of(today.getYear(), 12, 25);
        return Period.between(today,christmas);
    }
}

View 클래스(Input, Output)

import javax.swing.*;
import java.time.Period;

public class View {
    void showResult(Period p){
        JOptionPane.showMessageDialog(null, "올해 크리스마스까지 "+p.getMonths()+" 달하고"+p.getDays()+" 일 남았다!");
    }
}

Controller 클래스(Model, View 활용)

public class Controller {

    void showResult(Model m, View v){
        m.getResult();
        v.showResult(m.getResult());
    }
}

각각의 클래스들이 부품처럼 사용된다

수정하거나 공유되어 사용할 때 매우 편리

TIP: Controller를 먼저 만들어 놓으면 어떤 걸 만들어야 하는지 알기 편함

0개의 댓글