티스토리 뷰
반응형
UML의 관계: 의존, 연관, 일반화
✅ UML 정의
UML(Unified Modeling Language)
시스템의 구조와 동작을 시각적으로 표현하기 위한 표준화된 모델링 언어입니다.
소프트웨어 설계 시 클래스 간의 구조적 관계를 명확히 표현하고, 설계 의도를 전달하기 위해 사용됩니다.
✅ UML의 필요성
- 시스템의 복잡한 구조를 명확히 시각화하여 이해를 돕습니다.
- 개발자 간의 의사소통을 원활하게 합니다.
- 설계의 일관성을 유지하고 유지보수성을 높입니다.
✅ UML 관계
UML 클래스 다이어그램에서는 클래스 간의 관계를 표현합니다.
여기에서는 가장 기본적인 세 가지 관계를 다룹니다.
- 의존(Dependency)
- 연관(Association)
- 일반화(Generalization)
각 관계는 정의 → 다이어그램 → 주체/대상 → 설명 → 예시 코드 순으로 설명합니다.
🔷 의존 관계 (Dependency)
정의
한 클래스(주체)가 작업을 수행하기 위해 다른 클래스(대상)의 정의를 참조하며, 대상의 변경이 주체에 영향을 미치는 관계.
대상 객체를 내부에 저장하지 않고, 일시적으로만 참조합니다.
UML 다이어그램
[Printer] - - - - - -→ [Document]
(점선 화살표)
주체와 대상
- ✅ 주체: Printer
- ✅ 대상: Document
Printer가 Document에 의존합니다.
Printer는 Document가 제공하는 메서드를 사용해야 동작할 수 있지만, Document를 소유하지는 않습니다.
설명
의존 관계는 두 클래스 간의 결합이 약합니다.
주로 메서드 파라미터나 지역 변수로 대상 클래스의 인스턴스를 받아 잠깐 사용하는 상황에서 발생합니다.
예시 코드
class Document {
public:
void render();
};
class Printer {
public:
void print(Document doc) {
doc.render();
}
};
🔷 연관 관계 (Association)
정의
한 클래스(주체)가 다른 클래스(대상)의 인스턴스를 속성으로 보유하며, 장기간 참조하는 관계.
객체 간의 지속적인 연결을 나타냅니다.
UML 다이어그램
[Teacher] ──────────→ [Student]
(실선)
주체와 대상
- ✅ 주체: Teacher
- ✅ 대상: Student
Teacher가 Student를 속성으로 가지고 있습니다.
Teacher는 Student 객체를 내부 상태로 지속적으로 유지하며 참조합니다.
설명
연관 관계는 의존 관계보다 강한 결합을 가집니다.
주체가 대상의 인스턴스를 소유하여 상태로 유지하고, 작업마다 지속적으로 사용합니다.
예시 코드
class Student {
public:
std::string name;
};
class Teacher {
public:
Student* student;
};
🔷 일반화 관계 (Generalization)
정의
한 클래스(주체)가 다른 클래스(대상)의 속성과 행동을 상속받아 계층을 형성하는 관계.
부모-자식 관계이며, 코드 재사용성과 다형성을 구현합니다.
UML 다이어그램
[Dog] ▲ │ [Animal]
(실선 + 빈 삼각형)
주체와 대상
- ✅ 주체: Dog
- ✅ 대상: Animal
Dog가 Animal을 상속받습니다.
Dog는 Animal의 특성과 기능을 물려받아 사용하거나 확장합니다.
설명
일반화 관계는 계층적 구조를 형성하고, 코드의 재사용성을 높입니다.
하위 클래스가 상위 클래스의 정의를 기반으로 동작합니다.
예시 코드
class Animal {
public:
void eat();
};
class Dog : public Animal {
public:
void bark();
};
✅ 요약 및 비교
| 관계명 | 정의 | UML 표기 | 주체 → 대상 | 관계 강도 |
|---|---|---|---|---|
| 의존 | 정의에 영향을 받는 일시적 참조 | 점선 화살표 | Printer → Document | 약함 |
| 연관 | 속성으로 보유하며 지속적으로 참조 | 실선 | Teacher → Student | 중간 |
| 일반화 | 상속 계층을 형성 | 실선 + 빈 삼각형 | Dog → Animal | 강함 |
- ✅ 의존: 작업 시 대상의 정의를 잠시 사용함, 소유하지 않음
- ✅ 연관: 대상의 인스턴스를 속성으로 가지고 있음
- ✅ 일반화: 대상의 정의를 상속받아 계층을 형성
반응형
'정보처리기사' 카테고리의 다른 글
| 데이터그램 방식과 가상 회선 방식: 자세한 설명 (0) | 2025.07.08 |
|---|---|
| 소프트웨어 설계의 응집도: 기능적 응집, 순차적 응집, 교환적 응집, 절차적 응집, 시간적 응집, 논리적 응집, 우연적 응집 (0) | 2025.07.07 |
| URL의 구조와 의미: 완전 정리! 인터넷 주소, 프로토콜, 도메인, 경로, 질의 문자열, 프래그먼트 (1) | 2025.07.05 |
| 데이터베이스 키, 슈퍼키, 후보키, 기본키, 대체키, 외래키 총정리! (0) | 2025.07.04 |
| 스머프 공격(Smurf Attack) - 원리와 대응법 (1) | 2025.07.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 그래프 탐색
- 문제 풀이
- 코딩 테스트
- 그리디알고리즘
- HTML
- 상속
- 그리디
- 파이썬코딩
- C++
- 알고리즘
- 브루트포스
- 코딩
- 파이썬
- 알고리즘기초
- 문제풀이
- c언어
- Python
- 프로그래머스
- 동적 계획법
- 프로그래밍
- DP
- 객체지향
- python 알고리즘
- dfs
- 알고리즘문제풀이
- 문자열처리
- 코딩테스트
- 동적계획법
- 백준
- 알고리즘 문제풀이
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함
반응형
