Posts 디자인패턴을 이해하기 위한 기초, 관계 이해
Post
Cancel

디자인패턴을 이해하기 위한 기초, 관계 이해

클래스 다이어그램에서의 관계의 종류

UML 다이어그램 종류 중 클래스 다이어그램은 시스템을 구성하는 클래스들 사이의 관계를 표현합니다. 요구 분석부터 설계, 구현 단계까지 폭넓게 사용되는 다이어그램입니다.

그 중에서 클래스들 사이의 관계에 대해 자세히 알아보겠습니다. 크게 연관, 일반화, 집합, 의존, 인터페이스 책임 관계로 나누어집니다.

 연관 관계일반화 관계집합 관계의존 관계인터페이스 책임 관계
설명클래스간에 연관관계가 있으면 두 클래스를 실선으로 잇습니다.클래스들의 공통부분을 추출하여 수퍼 클래스를 정의하고 서브클래스들은 수퍼클래스를 향하여 속이 빈 화살표로 선을 연결합니다.클래스를 정의하는 속성의 라이프타임에 따라 집약, 합성 관계로 나누어집니다.클래스의 관계가 연관 관계에 비해 협력하는 빈도수가 적거나 유동적일 때 사용하며 점선을 연결한다.일반화 관계가 is a kind of 관계라면 인터페이스 책임관계는 can do 관계로써 행위를 수행함이 가능한 것을 의미한다.
예시IMG_DF230C3211FC-1IMG_D1C966B43E1F-1IMG_9A0FAC9D7D63-1IMG_96D7206C0AD3-1IMG_0DE8FB73A4E6-1

방향성과 다중성

선들을 표현함에 있어서 어떤 클래스는 관계되어있는 클래스를 알아야 할 수도 몰라야 할 수도 있습니다. 이럴 때 화살표를 통해 단방향과 양방향을 나타냅니다 기본적으루 화살표가 없으면 양방향을 의미합니다. 그리고 관계에 있는 클래스의 구체적인 개수를 나타내기 위해 선의 끄트머리에 “1”, “*”, “1..*” 을 표기하기도 합니다.

연관 관계를 실제로 구현한다면?

위의 예시에서 Student와 Course 클래스는 양방향 관계입니다. 이는 서로의 존재를 알고있음을 의미합니다. 이를 Java 코드로 표현하면 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Class Student {
    private Course course;	
    public void register(Course course){
        
this.course = course;
    }
}

Class Course {
    private Student student;
    public void setStudent(Student student){
      	this.student = student;
    }
}
This post is licensed under CC BY 4.0 by the author.

[책 후기]스프링부트와 AWS로 혼자 구현하는 웹 서비스를 읽고나서

크루스칼 알고리즘

Comments powered by Disqus.