안녕하세요. 펄입니다. Java 객체 지향 디자인 패턴에 대한 공부자료를 업데이트하고 있습니다.
잘못된 부분이 있으면 가감없이 피드백 부탁드리겠습니다.
본 글은 해당 자료를 기반으로 작성되었습니다.
1. 객체지향 모델링
모델의 역할
- 서로의 해석을 공유해 합의를 이루거나 해석의 타당성을 검토한다.
- 현재 시스템 또는 앞으로 개발할 시스템의 원하는 모습을 가시화 한다.
- 시스템의 구조와 행위를 명세할 수 있으며 시스템을 구축하는 틀을 제공한다.
1.2 UML : Unified Modeling Language
시스템을 모델로 표현해주는 언어. UML은 요구 분석, 시스템 설계, 시스템 구현 등의 시스템 개발 과정에서 개발자 사이의 의사소통이 원활하게 이루어지도록 표준화한 통합 모델링 언어이다. UML 2.0에서는 시스템의 구조(Structure)와 동작을 표현하는 13개 다이어그램을 제공한다. 이는 다양한 관점에서 시스템을 모델링하기 위함이다.
다이어그램의 종류
1. 구조 다이어그램 : 클래스 다이어그램, 객체 다이어그램, 복합체 구조 다이어그램, 배치 다이어그램, 컴포넌트 다이어그램, 패키지 다이어그램
2. 행위 다이어그램 : 활동 다이어그램, 상태 머신 다이어그램, 유즈 케이스 다이어그램, 상호작용 다이어그램(순차 다이어그램, 상호작용 개요 다이어그램, 통신 다이어그램, 타이밍 다이어그램)
1.3 클래스 다이어그램 - 구조 다이어그램
시간에 따라 변하지 않는 시스템의 정적인 면을 보여주는 UML 구조 다이어그램이다.
클래스는 공통의 속성과 책임을 갖는 객체들의 집합이자 실제 객체를 생성하는 설계도이다.
UML 클래스 표현 예
분석 단계의 클래스 | 설계 단계의 클래스 |
클래스 명 학생 |
학생 |
속성 이름 전공 학과 과목 |
- name : String - major : String - department : String - subject : String |
연산 + 수강하다. |
+ take() : void |
연산에서 +는 public, -는 private, #은 protected, ~ 는 package이다. 설계 단계의 클래스를 보면 바로 코드를 작성할 수 있어야 한다.
클래스 관계
연관관계, 일반화 관계, 집합 관계, 의존 관계, 실체화 관계로 구분한다.
1. 연관관계 : 두 개념이 연관되어 있을 때, UML연관 관계를 사용해 나타낼 수 있다. 양방향 연관관계는 서로의 존재를 안다는 의미이며, 단방향 연관관계는 한 쪽은 알지만 다른 쪽은 상대의 존재를 모른다는 의미이다. 연관된 객체의 수를 나타낼때 다중성 표시를 활용한다.
표현 : 실선(양방향)이나 화살표(단방향)로 표현.
2. 일반화 관계 : 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 두 클래스 사이에는 일반화 관계가 존재한다.(자식, 부모) = 상속 관계라고도 한다. 일반화 관계는 두 클래스 사이에 'is a kind of 관계'가 성립될 때 사용한다.
표현 : 화살표 끝에 빈 삼각형 표시.
3. 집합 관계 : UML 연관 관계의 특별 경우로 전체와 부분의 관계를 명확하게 명시하고자 할 때 사용한다. 집약과 합성 두 종료의 집합 관계가 존재한다. 집약관계와 합성 관계를 구분하려면 전체 객체와 부분 객체의 라이프타임 의존성을 살펴보면된다.
집약 -> 한 객체가 다른 객체를 포함하는 것을 나타낸다. 전체 객체가 메모리에서 사라지더라도 부분 객체는 사라지지 않는다.
표현 : 전체를 가리키는 방향에 빈 마름모로 표현.
합성 -> 부분 객체가 전체 객체에 속하는 관계. 전체 객체가 없어지면 부분 객체도 없어진다.
표현 : 전체를 가리키는 방향에 채워진 마름모로 표현.
4. 의존 관계 : 연관 관계는 오랜 시간 동안 같이할 객체와의 관계이며 의존 관계는 짧은 시간 동안 이용하는 관계이다.
표현 : 점선으로 표현.
5. 인터페이스와 실체화 관계 : 인터페이스는 어떤 공통 능력이 있는 것들을 대표하는 관점으로 볼 수 있다. 인터페이스 자체는 실제로 책임을 수행하는 객체가 아니며 따로 실제 책임들을 수행하는 객체가 존재한다.
표현 : 빈 삼각형이 머리에 있는 점선.<<interface>>
실체화 관계는 can do this 관계이다.
관련 코드는 이쪽에 모아두고 있습니다~.~ Good.d.
잘못된 부분은 가감없이 말해주세요~ㅎㅎ 감사합니다.
'Java > Java 객체지향 디자인 패턴' 카테고리의 다른 글
[Java 객체 지향 디자인 패턴] 6. 싱글턴 패턴 - Singleton Pattern : 단하나! 비동기 시 주의 (0) | 2022.02.23 |
---|---|
[Java 객체 지향 디자인 패턴] 5. 스트래티지 패턴 - Strategy Pattern~! 전략 패턴~! (0) | 2022.02.23 |
[Java 객체 지향 디자인 패턴] 4. 디자인 패턴 - 바퀴를 다시 발명하지 말라~! (0) | 2022.02.16 |
[Java 객체 지향 디자인 패턴] 3. SOLID 원칙(SRP, OCP, LSP, DIP, ISP) (0) | 2022.02.08 |
[Java 객체 지향 디자인 패턴] 2. 객체지향 원리 (0) | 2022.01.25 |
댓글