본문 바로가기

Study/Concepts

DAY 70. UML - 클래스 다이어그램

 

Chap 03. 클래스 다이어그램(in 정적 다이어그램)

정적(구조) 다이어그램이다.

UML 모델링에서 가장 일반적으로 사용한다.

시스템의 구조와 구조 간 상호 관계를 나타낸다.

시스템의 논리적 및 물리적 구성 요소 설계 시 주로 활용한다.

클래스와 클래스 사이에 관계를 설정하기도 한다.

 

🔸 접근제한자

🔸 클래스 이름 / 속성 / 연산 으로 구성된다.

  • 클래스 이름 기울임 = 추상 클래스
  • 변수명이 대문자 = 상수형 필드를 나타낸다.
  • 속성에 밑줄 = static
  • 연산에 기울임 = 추상 메소드

 


 

클래스 다이어그램의 관계

 

✔️ 연관 관계

한 클래스가 필드로 다른 클래스를 참조할 때를 의미한다.

클래스 간의 관련성을 뜻하는 것으로 메시지 전달의 통로 역할을 한다.

서로 연결되어 있으면 방향성이 없고 실선으로 연결되어있다.

▪️ 방향성이 있는 연관 관계

방향성은 메시지 전달의 방향을 뜻하며 반대 방향은 불가능하다.

▪️ 연관 관계의 다중성

관계를 맺을 수 있는 실제 상대 객체의 수를 다중성을 통해 지정이 가능하다.

동일한 의미, 역할의 복수 개의 객체와의 관계이다.

▪️ 다중 연관

동일한 클래스 간의 존재하는 복수 개의 연관 관계를 뜻한다.

다른 의미, 역할의 복수 개의 객체와의 관계이다.

 

 

✔️ 집합 관계와 합성 관계

두 대상 간의 포함(소속) 표현으로 항상 Has-a 의미가 성립되어야 한다.

▪️ 집합 관계

부분 객체가 다수의 전체 객체에 의해 공유 될 수 있다.

→ 전체 객체가 사라져도 부분 객체는 존재한다.

▪️ 합성 관계

부분 객체가 오직 하나의 전체 객체에 포함될 수 있다.

→ 전체 객체가 사라지면 부분 객체도 사라진다.

 

 

✔️ 일반화 관계와 실체화(인터페이스 실현) 관계

▪️ 일반화 관계

보다 일반적인 클래스와 보다 구체적인 클래스 간의 관계를 뜻한다.

한 클래스(상위 클래스)가 다른 클래스(하위 클래스)보다 일반적인 개념, 대상 임을 의미하는 관계이다.

상속의 구조를 나타내기도 한다.

▪️ 실체화(인터페이스 실현)관계

인터페이스에 명세 된 기능을 클래스에 의해서 구현한 관계를 뜻한다.

상속받는 부모가 클래스가 아니라 인터페이스이다.

점선으로 표시된다.

 

 

✔️ 의존 관계와 인터페이스 의존 관계

▪️ 의존 관계

두 클래스 연산 간의 호출 관계를 표현한 것으로 제공자의 변경이 이용자에 영향을 미칠 수 있음을 의미(제공자의 변경이 이용자의 변경 유발)

이용자는 의존 관계를 통해서 제공자의 연산을 호출할 수 있다.

  • 연관 관계 : 실선, 의존 관계 : 점선
  • 메소드 내부에서 다른 클래스를 참조하고 있을 때 의존 관계라고 한다.
  • ex. 자식 클래스의 메소드 안에 매개변수로 부모 클래스를 참조하고 있을 때

▪️ 인터페이스 의존관계

인터페이스와 인터페이스 이용자 간의 이용관계를 표현할 때 사용될 수 있다.

 

// A : 이용 클래스
// B : 인터페이스
// C : 인터페이스 실현 클래스

// 클래스 A는 인터페이스 B에 의존한다. = 인터페이스 의존 관계
// 클래스 C는 인터페이스 B를 실현한다. = 인터페이스 실현 관계

// 인터페이스는 생성되지 않는다. new ~ 불가능

public interface B{
	void test();
}

public class C implements B{
	public void test(){...}
}

public class A{
	public void op1(){
			B b = new C();
			b.test();
	}
}

// op1() 메소드는 B 인터페이스를 참조하고 있다.
// B b = new B(); 가 될 수 없기 때문에(인터페이스는 생성이 안된다.)
// 다형성을 적용해서 B라는 인터페이스를 구현한 자식 클래스 C로 생성하게 된다.
// b.test(); 하는 순간
// B에 있는 test() 메소드를 강제 오버라이딩한 인터페이스 실현 클래스인 C안에 있는 메소드가 실행이 된다.  -> [by. 동적 바인딩]

 

 

 

  • 서로 다른 클래스를 참조하고 있는 관계 ( 내가 참조하고 있는 그 클래스에 접근하기 위해서 )
  • 연관 관계 : A 클래스와 B 클래스가 항상 연결되어 있다. A 클래스가 없어질 때까지 B 클래스는 살아있다.
  • 의존 관계 : A클래스의 메소드 실행시에 B 클래스가 생기고, 메소드 종료 시 B 클래스는 소멸한다.

 

 


MVC 패턴

Model : 데이터 처리를 담당, (Service : 트랜잭션 처리 , VO/DTO : 클래스들 간에 값을 전달 할 때 값들을 보관, Dao : DB에 직접 접근하는 용도)

Controller : 사용자가 요청한 기능을 받아오는 역할, 사용자가(view에서) 보낸 값을 컨트롤러에서 받는다. 기능처리 완료 후 결과 값을 어떤 화면에 보여질지 화면 선택의 역할도 한다.

View : 사용자의 눈에 보이는 화면


[과정 순서] View → Controller - > Service → Dao → DB → Dao → Service → Controller (View Reserve) → View

 

▪️ Model

데이터 처리 부분 담당

  • VO(Value Object) : 계층 간 데이터 교환을 위한 객체
  • DAO(Data Access Object) : DB에 접근하기 위한 용도
  • Service : DB에서 전달 받은 데이터 or DB에 전달할 데이터들을 가공처리 (비즈니스 로직)
  •  

▪️ View

전달 받은 데이터들을 클라이언트에게 전송하여 보여준다.

 

▪️ Controller

모델과 뷰를 연결하는 역할

Service(로직) 처리 후 전달 받은 데이터를 View로 전송하거나 View 에서 사용자가 입력한 값을 전달 받는다.