클래스 다이어그램 작성

Welcome to Seoyun Dev Log·2022년 5월 20일
0

다이어그램

목록 보기
1/2

클래스 다이어그램 이해하기
https://morm.tistory.com/88
https://narup.tistory.com/32
https://infinitejava.tistory.com/61

💡클래스 다이어그램이란

  • 프로젝트 산출물을 문서화 할 때
    모든 구조가 결정되어 있는 프레임워크를 사용하는 경우

: 시스템을 구성하는 클래스들 사이의 관계를 표현해주는 그림 도식

💡클래스의 표현

클래스는 3칸으로 구성(상단부터 설명)
1. 클래스 명
2. 클래스 속성(클래스의 특징,변수)
3. 연산(메서드,클래스가 수행하는 책임)
// 속성과 연산 부분은 생략하기도 한다.
//ex) 속성으로 흐름을 분석하기 위해 다이어그램을 사용하는 경우

속성 작성시 기호가 들어가는데, 아래와 같이 나타낼 수 있다

- : private
+ : public 
# : protected (클래스내부, 동일패키지, 상속받은 클래스)

다이어그램을 작성할 때
분석단계와 설계 단계가 다르다.


💡클래스 간 관계

: UML에서 제공하는 클래스들 사이의 관계는 아래와 같다.

1) 연관관계(association)

  • 표시 : 실선 혹은 화살표
  • 설명 : 클래스들이 개념상 서로 연결됐음을 나타냄
    보통 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상활일 때 표시

    A가 B를 사용함. A는 B의 존재를 모른다.
- 한 클래스가 다른 클래스와 연관 관계를 가지면 각 클래스의 객체는 해당 연관 관계에서 어떤 역할을 수행하는데,
이때 두 클래스의 역할 표현을 '역할 관계 이름'이라 부른다. 
연관관계는 방향성을 가지고 있는데 
양방향은 실선
단방향은 화살표로 표시한다.

- 단방향(화살표)의 경우 : 한 쪽은 알지만 다른 쪽은 상대방의 존재를 모른다. 
ex) 사람과 핸드폰
- 양방향(실선)의 경우 : 두 클래스의 객체들이 서로를 인지한다. 
ex) 상담의사와 환자

2) 일반화 관계(generalization)

  • 표시 : 속이 빈 화살표
  • 설명 : 객체지향 개념에서 상속관계라고 말한다.
    한 클래스가 다른 클래스를 포함하는 상위 개념일 때 이를 IS-A관계라고 하며 UML에서는 일반화 관계로 모델링한다.



부모 클래스와 자식 클래스 간의 상속 관계

- 한 클래스가 다른 클래스를 포함하는 상위 개념일 때, 두 클래스 사이에는 일반화 관계가 존재한다.
이를 객체지향 개념에선 상속관계라고 한다.

- 부모 클래스(Super) : 추상적인 개념, 삼각형 표시가 있는 쪽을 의미
- 자식 클래스(Sub) : 추상적인 개념을 물려받은 구체적인 개념, 
삼각형 표시가 없는 쪽으로 부모 클래스는 자식 클래스의 공통적인 속성과 연산을 제공하는 틀이다.

3) 집합관계 - 집약관계(aggregation)

  • 표시 : 속이 빈 다이아몬드
  • 설명 : 클래스들 사이의 전체 또는 부분과 같은 관계
    전체 객체의 라이프타임과 부분 객체의 라이프 타임은 독립적이다.
    즉, 전체 객체가 사라져도 부분 객체는 남아있다(라이프 타임 독립적)
    (전체가 삭제될 때 부분도 삭제되느냐를 생각해보는것이 유용)

- 집합 관계는 클래스A가 B를 소유하고 있다거나,
클래스A가 B의 부모라거나 하는 것이 아니다.

클래스A의 인스턴스는 B클래스의 인스턴스와 배타적이지(독립적) 않다는것을 강조하기 위한 것

위 다이어그램에서 engine과 wheel은 car와 집합관계이지만,
차가 없어진다고해서 engine과 wheel이 삭제된다고 보진 않았다.
(프로그램 특성에 따라 변경될 수는 있을 것)

4) 집합관계-합성관계(composition)

  • 표시 : 속이 찬 다이아몬드
  • 설명 : 클래스들 사이의 전체 또는 부분 같은 관계를 나타냄
    전체 객체의 라이프 타임과 부분 객체의 라이프 타임이 의존적이다.
    즉, 전체 객체가 사라지면 부분 객체도 함께 사라진다
    더 범위가 큰 쪽에 마름모를 표시한다고 생각


person이 삭제되면 head, body, leg도 존재하지 않는다

5) 의존관계(dependency)

  • 표시 : 점선 화살표
  • 설명 : 연관 관계와 같이 한 클래스가 다른 클래스에서 제공하는 기능을 사용할 때 사용.
    연관 관계와 차이점은 두 클래스의 관계가 한 메서드를 실행하는 동안과 같은 매우 짧은 시간만 유지된다는 점

  • 연관관계와의 차이점:
    연관 관계는 클래스A가 클래스B를 멤버변수로 가이고 있고,
    의존관계는 클래스A가 클래스B의 메서드를 가지고있고 혹은 클래스B를 메서드의 인자로 받는다.

6) 실체화 관계(realization)

  • 표시 : 빈 삼각형과 점선
  • 설명 : 책임들의 집합인 인터페이스와 이 책임들을 실제로 실현한 클래스들 사이의 관계를 나타낸다.



인터페이스란 책임이다. 어떤 객체의 책임이란 객체가 해야 하는 일 혹은 객체가 할 수 있는 일을 의미한다.
인터페이스의 경우 클래스 명에

<<interface>>를 달아준다

그리고 인터페이스도 마찬가지로 객체 지향 개념에서 일반화 관계에 속한다.

profile
하루 일지 보단 행동 고찰 과정에 대한 개발 블로그

0개의 댓글