디자인 패턴을 공부하기 전 반드시 공부하고 가야하는 클래스 다이어그램입니다.
클래스 다이어그램의 구성 요소에 대해 알아보겠습니다.
클래스 다이어그램이란?
클래스 다이어그램은 UML(Unified Modeling Language)의 다이어그램 중 1개로 위키에 정리된 클래스 다이어그램 설명을 보면 아래와 같습니다.
클래스 다이어그램은 객체 지향 모델링의 주요 빌딩 블록이다. 응용 프로그램 구조의 일반적인 개념적 모델링, 또 모델의 프로그래밍 코드로의 세세한 모델링 변환을 위해 사용된다. 클래스 다이어그램은 데이터 모델링용으로도 사용이 가능하다. - 위키
클래스간 관계를 나타내기 위한 다이어그램이라고 이해주시면 됩니다.
클래스 다이어그램의 구성 요소
Field (필드)
변수는 접근 제한자, 변수 명, 변수 타입, static, final을 표기할 수 있습니다.
접근 제한자
- : private
+ : public
# : protected
static
static은 밑줄로 표시
final
final은 {readyOnly}로 표시
Method (메소드)
메소드는 인자를 표기하는 거 이외에는 변수와 표기법이 동일합니다.
abstract
abstract는 {abstract}로 표시
Class (클래스)
클래스는 클래스 명, 필드, 메소드로 이루어져 있습니다.
abstract
abstract 클래스는 클래스 명 위에 <<abstract>>를 써서 표기
Interface (인터페이스)
인터페이스는 스테레오 타입(Stereo Type)으로 나타낼 수 있습니다.
(스테레오 타입엔 <<interface>>, <<enumeration>>, <<utility>> 등이 있습니다.)
클래스 명위에 <<interface>>를 명시해서 인터페이스라는 걸 표시할 수 있습니다.
Relationship (관계)
클래스 간 관계를 표시할 때 사용하는 표기 방법에 대해 알아보겠습니다.
Generalization (일반화)
상속(extends) 관계를 나타낼 때 사용
public abstract class Animal {
String name;
abstract String sound();
}
public class Dog extends Animal {
@Override
String sound() {
return "왈왈";
}
}
class Cat extends Animal {
@Override
String sound() {
return "야옹";
}
}
Realization (실체화)
구현(implements) 관계를 나타낼 때 사용
public interface Dictionary {
String find(String keyword);
}
public class KoreanDictionary implements Dictionary {
@Override
public String find(String keyword) {
// 국어 사전 검색
}
}
public class EnglishDictionary implements Dictionary {
@Override
public String find(String keyword) {
// 영어 사전 검색
}
}
Dendency (의존)
가장 많이 사용하는 관계입니다. 다른 클래스 참조를 나타낼 때 사용
public class AnimalSoundDictionary {
public String find(String keyword) {
Animal animal = findAnimal(keyword);
return animal.sound();
}
private Animal findAnimal(String keyword) {
// Animal 찾는 로직
}
}
public abstract class Animal {
String name;
abstract String sound();
}
Association(연관), Directed Association(직접 연관)
다른 클래스를 필드로 사용할 때 사용
Association과 Directed Association의 차이는 방향성입니다.
화살표가 없는 쪽이 참조 쪽
화살표가 있는 쪽이 참조를 당하는 쪽
public class Library {
private List<Dictionary> dictionaries;
}
Aggregation (집합, 집합연관)
Composition (합성, 복합연관)
위 두개는 추후 정리하겠습니다.
디자인 패턴이 아니여도 개발하는 분들은 여기까지 꼭 기본으로 숙지를 하셔야합니다.
그럼 다음부터는 디자인 패턴의 종류에 대해 알아보겠습니다.
'Design Pattern' 카테고리의 다른 글
[디자인 패턴] 총 정리 (3) - 싱글톤(Singleton) 패턴 [생성 패턴] (0) | 2022.02.12 |
---|---|
[디자인 패턴] 총 정리 (2) - 디자인 패턴이란? + 디자인 패턴 종류 (1) | 2022.02.11 |
[디자인 패턴] 총 정리 (0) - 무료 클래스 다이어그램 툴 소개 (0) | 2022.01.22 |
[디자인 패턴] 빌더 패턴 (Builder Pattern) (0) | 2020.05.11 |
[디자인 패턴] 자바빈즈 패턴 (JavaBeans Pattern) (2) | 2020.05.11 |
댓글