주니 개발 도서관

자바(JAVA)

(18)Model View Controller (MVC)

주니홍 2022. 6. 28. 22:34

MVC (모델-뷰-컨트롤러) 는

사용자 인터페이스, 데이터 및 논리 제어를

구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다.

소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있습니다

이러한 "관심사 분리" 는 더나은 업무의 분리와 향상된 관리를 제공합니다

 

MVC 각각의 역할을 알아보겠습니다

 

 

Model 파트

정보를 관리하는 파트라고 생각하면 되겠습니다

 

VO ( Value System )

데이터베이스(DB)에 저장된 데이터를 Java에서 어떻게 표현할지
멤버변수만을 표현하여 저장하는 위치

 

DAO ( Data Access Object )

DBMS ( Oracle, MySQL )에 저장된 데이터를 Java로 불러오는 역할

DAO 에선 CRUD(핵심로직, 비지니스메소드)를 만들어야한다

== 사용자에게 서비스(제공)되는 메소드

 

 

CRUD 

  • C - Create 생성
  • R - Read 읽기
  • U - Update 갱신
  • D - Delete 삭제

 

멤버변수에 변화를 주는 행위는 Model에서 해결해야합니다

ㅡ> DAO에서 코드를 작성하여 해결

 

 

 

View 파트

User Flow

  • 제품을 통한 사용자의 움직임을 설명하고
    진입 점에서 최종 상호 작용에 이르기까지
    사용자가 수행하는 모든 단계를 말한다

UI / UX

  • UI 는 사용자가 제품/서비스를 사용할때
    마주하게 되는 시각적인 디자인을 말합니다

  • UX는 사용자의 경험의 약자로
    제품/서비스를 직간접적으로 이용하면서
    느끼는 종합적인 만족을 의미합니다

 

사용자의 편의성을 위해 사용자만을 생각하는 파트입니다

 

사용자에게 제공되는

공간을 확인, 화면구성, 유효성검사

신경써주는 파트입니다

 

사용자에게 보여지는 부분의 사용자 불편사항이나

서비스 이용시 불편함을 느끼거나 오류가 생긴다면

View 파트에서 해결해야할 일이 대부분 일 것입니다!

 

View 파트에서 멤버변수에 변화를 주는 행위를 한다면

잘못된 작업이라도 생각해야 합니다

 

 

 

Controller 파트

M 과 V를 연결해주는 역할입니다

 

주로 만들려고하는 프로세스의 이해력이 높은사람이

해당 파트를 관리하게 됩니다!

 

M 과 V 를 연결해주며 사용한 로직이 정상적인데

오류가 발생한다고 한다면, 해당 내용을

M 과 V 에게 수정을 요청을 해야할텐데

 

로직을 작성하는데에 문제가 많거나

M 과 V의 정보를 확실하게 이해하지 못하고 있다면

해당 파트를 관리하기에는 힘들 것입니다!

 

 

 

MVC를 이용하면 도움이 되는 이유

결합도가 낮아집니다!

  • 결합도가 높다는 뜻은 유지보수가 불리한 코드

  • 오류가 발생시 연쇄작용으로
    여러가지 오류를 발생시킬 수 있습니다

  • 메소드를 세세하게 나누는 이유이다
    세부적으로 나눠 놓는다면
    연쇄작용을 최소화 시킬 수 있기 때문입니다

 

응집도가 높아집니다!

  • 응집도가 낮다는 것은
    필요한 로직들이 모여있지 않은 것

  • 응집도가 높아지는 이유는
    M V C로 파트별로 나누어
    해당로직끼리 모아두기 때문입니다 

 

낮은 결합도 / 높은 응집도를 신경쓴다면

유지보수가 용이한 코드

이고 개발자로서 중요하게 체크해야하는 부분이다

 

 


설계하는 상황으로MVC 파트에서 맡을 일을 예시로 만들어 보겠습니다

 

 

 학생부 프로그램을 설계하는 상황입니다!

 

Model 파트

VO 클래스학생부 프로그램에서 어떤 정보들이

필요할지 생각하고해당 정보들을 관리하고 정리합니다

 

멤버변수

  • PK (Primary Key) ***
  • 학생의 이름
  • 학생의 번호
  • 학생의 점수
  • 학생의 주소
  • 학생의 전화번호
    등등

 

DAO 클래스

학생부 프로그램에서 정보들의 CRUD를 생각하며

해당 메소드를 작성합니다

 

메소드

  • 학생을 추가하는
  • 전교생의 정보를 보여주는
  • 학생의 점수정보를 변경하는
  • 학생의 주소정보를 변경하는
  • 학생의 정보를 검색하는
  • 학생의 정보를 삭제하는
    등등

 

주로 정보의 값의 변화가 있어야하는 메소드라면

Model의 DAO 클래스에서 작업을 할 것이다

 

 

 

View 파트

 

여러 시각적인 부분을 작성한다

  • 학생부 프로그램 화면
  • 이름을 입력하는 화면
  • 번호를 입력하는 화면
  • 성적변경 서비스 화면
  • 학생추가 서비스 화면
  • 프로그램 종요시 화면
  • 오류 발생시의 화면
    등등

유효성검사 부분 작성

  • 번호입력부분에서 한글을 입력했을때
  • 0~100사이 번호입력이 아닌 다른걸 입력했을때
  • 사용자의 잘못된 입력을 처리해야하는 부분
    등등

 

View의 파트에서는 "사용자"만을 생각하며

보여지는 화면구성 및 유효성검사를 중요시합니다!

 

 

 

 

Cotroller 파트

M과 V를 연결해주는 코드을 구현한다

"설계"단계에서 정리하고, 로직을 이해한다면

 

정보(M.VO)를 이용하여

서비스를 사용자에게 보여주는 (V)의 화면안에서

(M.DAO) 메소드를 연결하여 서비스를 이용할 수 있게

연결 다리 역할을 코드로서 구현하면 된다!

 

 

 

 

'자바(JAVA)' 카테고리의 다른 글

(19) 자바 Jsoup을 이용한 웹 크롤링  (0) 2022.07.18
(17) throw 와 throws 의 차이  (0) 2022.06.28
(16) 파일 입출력  (0) 2022.06.27
(15) 콜론 ( : ) 의 기능  (0) 2022.06.27
(14) Exception(try,catch,throw)  (0) 2022.06.24