-
ch01 객체지향 모델링25 - 2/설계패턴 2025. 9. 25. 13:38
1. 모델링
01. 모델의 역할
- 서로의 해석 공유해 합의 or 해석의 타당성 검토
- 현재 시스템 or 앞으로 개발할 시스템의 원하는 모습 가시화
- 시스템의 구조와 행위 명세
- 시스템 구축하는 틀 제공
02. 모델링
- 모델, 추상화를 바탕에 둠 → 특정 관점에서 관련 있는 점은 부각, 관련 없는 것은 무시

2. UML

대표적인 시스템 모델링 언어 3. 클래스 다이어그램
01. 클래스 다이어그램
- 시스템의 정적인 구조 표현
- 시간에 따라 변하지 X
- 클래스와 그들간의 관계 표현02. 클래스


- 동일 속성 가지고 있고, 동일 행위 수행하는 객체의 집합
- 객체를 생성하는 설계도
- UML의 클래스 표현
- 세 부분으로 나누어진 박스 표현
- 가장 윗부분: 클래스 이름/ 중간 부분: 속성 / 마지막 부분: 연상

- 접근제어자

02. 관계
- 객체지향 시스템은 상호 관계를 맺는 여러 클래스에서 생성된 객체들이 기능 수행

- 연관 관계
1. 연관된 클래스 상에 실선 그어 표시
2. 두 클래스 사이의 관계 명확한 경우, 이름 사용 X
3. 역할: 클래스 바로 옆 연관 관계를 나타내는 선 가까이 기술
4. 역할 이름, 연관된 클래스의 객체들이 서로를 참조할 수 있는 속성의 이름으로 활용
- 다중성


- 양방향, 단방향 연관 관계

- 양방향 연관 관계
1. 두 클래스를 연결한 선에 화살표 사용X
2. 서로의 존재 인지 - 단방향 연관 관계
1. 한쪽으로만 방향성이 있는 관계
2. 한 쪽은 알지만 다른 쪽은 상대방 존재 모른다는 의미
- 연관 클래스: 연관 관계에 추가할 속성이나 행위가 있을 때 사용

- 사건 이력 표현
- 대출 이력
- 재귀적 연관 관계


- 동일한 클래스에 속한 객체들 사이의 연관 관계
- 역할을 클래스로 할 때 문제 발생
- 일반화

- 세탁기는 가전 제품
- TV는 가전 제품
- 식기세척기는 가전 제품
- 일반화는 상속화
- 집합 관계
- 전체와 부분 간의 관계
- 집약(aggregation)
1) 전체를 나타내는 객체, 부분 나타내는 개체의 라이프 타임이 독립적
2) 부분을 나타내는 객체를 다른 객체와 공유 O
3) 전체 객체가 사라져도 부분 객체 사라지지 X
4) 빈 마름모로 표시

public class Computer {
private MainBoard mb;
private CPU c;
private Memory m;
private PowerSupply ps;
public Computer(MainBoard mb, CPU c, Memory m, PowerSupply ps) {
this.mb=mb;
this.c=c;
this.m=m;
this.ps=ps;
}
}- 합성(composition)
1) 전체를 나타내는 객체에 부분을 나타내는 개체의 라이프 타임이 종속적
2) 전체 객체가 사라지면 부분 객체도 사라짐
3) 채워진 마름모로 표시

public class Computer {
private MainBoard mb;
private CPU c;
private Memory m;
private PowerSupply ps;
public Computer() {
this.mb=new MainBoard();
this.c=new CPU();
this.m=new Memory();
this.ps=new PowerSupply();
}
}- 의존 관계

- 한 클래스에서 다른 클래스 사용하는 경우
1) 클래스의 속성에서 참조
2) 연산의 인자로 참조
3) 메소드의 지역 개체로 참조
- 연산의 인자나 메소드의 지역 개체로 참조 -> 찰나적 관계


- 인터페이스와 실체화 관계

- 인터페이스, 책임 -> ex: 리모콘의 책임, 가전 기기 on/off, 볼륨 up/down
- 어떤 공통되는 능력이 있는 것들을 대표하는 관점
- 실체화 관계

'25 - 2 > 설계패턴' 카테고리의 다른 글
[Week5] 5장 스트래티지 패턴 실습 (0) 2025.10.15 ch05 스트래티지 패턴 (0) 2025.10.15 [Week4] 4장 디자인패턴 개요 실습 (0) 2025.10.14 [Week2] 2장 객체지향 원리 실습 (1) 2025.09.25 [Week1] 1장 객체지향 모델링 실습 (0) 2025.09.24