📦 구조적 다이어그램 (Structural Diagrams) – ‘정지된 설계도’
[클객 컴배 복패]
1️⃣ 클래스 다이어그램 (Class Diagram)
- 어원의 의미: 같은 성격끼리 분류한다는 뜻
- 구성요소
구성 요소 | 설명 |
클래스 (Class) |
객체를 생성하기 위한 청사진 역할을 한다. 공통 속성, 연산(메서드), 관계, 의미를 공유하는 실제 객체들의 집합이다. |
속성 (Attribute) |
클래스가 가지는 데이터를 나타낸다. 변수 형태로, 인스턴스별로 저장되는 값을 정의하며 name: Type 형태로 표기 |
연산 (Operation) |
클래스가 수행할 수 있는 기능을 추상적으로 정의한다.매개변수와 반환 타입을 포함해 operation(params): ReturnType 형식으로 작성 |
메서드 (Method) |
연산의 구현체로, 실제 코드 수준에서 동작하는 함수를 의미. 시퀀스 다이어그램 등에서 호출될 때 사용 |
접근 제어자 (Access Modifier) |
클래스에 접근할 수 있는 접근 권한을 나타낸다. + : 클래스 외부 접근 허용(public) - : 클래스 내부 접근만 허용(private) # : 동일 패키지/파생 클래스에서 접근 가능(protected) ~ : 동일 패키지 클래스에서 접근 가능(default) |
- 클래스 간의 관계
관계 종류 | 정의 | UML 표기법 | 실전 예시 |
연관 (Association) |
클래스가 서로 개념적으로 연결된관계 | 실선 (ㅡ) | Customer -------- Order: 고객이 주문을 관리한다 |
의존 (Dependency) |
하나의 클래스가 또 다른 클래스를 사용하는 관계. 짧은 시간 동안만 연관을 유지. | 점선 화살표 (--->) | ReportGenerator -.-▶ DatabaseConnection: 보고서 생성 시 DB 연결을 일시적으로 사용 |
일반화 (Generalization) |
상속 관계.하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현하는 관계. 일반적인 개념을 부모(상위)라 하고 구체적인 개념을 자식(하위)라고 함. 그래서 다른 의미로 상속 관계라고도 함. “~은 ~이다”라는 ‘is‑a’ 관계를 나타낸다. | 빈 삼각형 화살표 (--▷) | Vehicle --▷ Car: 자동차는 차량이다 |
실체화 (Realization) |
인터페이스 구현. 추상클래스나 인터페이스를 상속받아 자식 클래스가 추상 메서드를 구현할 때 사용하는 관계 | 점선 + 빈 삼각형 (-.▷) | Comparable -.▷ Employee: 직원 객체가 비교 기능을 제공 |
포함 (Composition) |
전체(Composite)가 부분(Component)를 강하게 소유하고, 전체가 소멸하면 부분도 함께 소멸됩니다. ‘전체는 부분을 관리한다’는 의미로, 부분의 라이프사이클이 전체에 종속됩니다. 강한 소유(집↔방). 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계를 표현. |
채워진 마름모 (◆) | Library ◆— Book: 도서관이 폐관하면 책도 관리 대상에서 사라짐 |
집합 (Aggregation) |
전체가 부분을 느슨하게 묶어 둔 관계로, 부분은 전체와 독립적입니다. 부분의 라이프사이클은 전체와 무관하게 유지될 수 있습니다. 하나의 객체에 여러 개의 독립적인 객체들이 구성되는 관계. 하나의 사물이 다른 사물에 포함되어 있는 관계 표현. | 빈 마름모 (◇) | Team ◇— Player: 팀이 해체되어도 선수 객체는 여전히 존재 |
2️⃣ 패키지 다이어그램 (Package Diagram)
- 어원의 의미 : 관련 클래스를 묶음(패키지)
- 구성요소
- 패키지 / 의존 관계
1) 🌳 패키지 (Package) — 시스템을 정리하는 폴더
무엇을 나타내는가? | 클래스, 인터페이스 등 여러 코드들을 관련 있는 것끼리 묶은 덩어리. 마치 컴퓨터에서 ‘음악’, ‘사진’ 폴더처럼 |
왜 쓰는가? | 시스템이 커질수록 한눈에 보기가 어려움. 패키지로 묶으면 어떤 기능이 어디 있는지 보기 쉽고 유지보수도 편함. |
어떻게 생겼나? | 폴더처럼 생긴 아이콘에 이름을 붙여 사용한다. 보통 UML에서는 작은 탭이 달린 사각형으로 표현된다. |
예시 | 예를 들어 쇼핑몰 시스템에 📁 OrderPkg → 주문 관련 클래스들 📁 PaymentPkg → 결제 관련 클래스들 📁 MemberPkg → 회원 관련 클래스들 |
- 👉 정리하자면, **“패키지 = 시스템 기능별 정리 폴더”**
2) 🔗 의존 관계 (Dependency) — 다른 패키지의 기능을 잠깐 빌려 씀
무엇을 나타내는가? | A 패키지가 B 패키지의 기능을 일시적으로 빌려서 사용할 때 나타내는 관계 |
표기법은? | 점선 화살표(──▶) 로 나타내. 방향은 ‘빌려 쓰는 쪽 → 빌려지는 쪽’ |
왜 필요한가? | “어떤 패키지가 다른 패키지의 기능에 의존한다”는 걸 알려줘서, → 누가 누구에게 영향을 주는지 쉽게 파악할 수 있어. |
예시 | 📁 OrderPkg ──▶ PaymentPkg → 주문 기능은 결제 기능을 호출해서 사용함. → 결제 로직이 바뀌면 주문 쪽도 영향 받을 수 있음. |
- 👉 쉽게 말하면, “의존 = 빌려쓰기 관계”,
“점선 화살표 = 이쪽이 저쪽 걸 잠깐 써요~” 라는 의미
3️⃣ 컴포넌트 다이어그램 (Component Diagram)
-
- 어원의 의미: ‘componentem’(함께 놓인 요소) → 모듈 단위
- 개념 : 시스템을 구성하는 큰 부품들(=컴포넌트)을 보여주는 다이어그램
- 구성요소
- 컴포넌트 / 인터페이스 / 의존 관계
구성 요소 | 쉽게 말하면 | 정의 및 설명 | 예시 |
컴포넌트 (Component) |
시스템의 부품 | 프로그램에서 독립적으로 실행되거나 배포 가능한 덩어리. 보통 하나의 기능 단위. | 📦 회원관리 서비스, 주문 처리 모듈, 결제 API |
인터페이스 (Interface) |
연결 포트 | 컴포넌트가 어떤 기능을 제공하거나 사용할 수 있는지 외부에 알려주는 연결점. | 🔌 로그인 요청, 결제 승인, 상품 목록 가져오기 |
의존 관계 (Dependency) |
빌려 씀 | A 컴포넌트가 B 컴포넌트의 기능을 사용하려면, 점선 화살표로 연결함. | 주문 컴포넌트 ─▶ 결제 컴포넌트 |
🧠 각각을 더 쉽게 풀어보면…
1) 📦 컴포넌트 (Component)
- 프로그램의 기능을 담당하는 하나의 "덩어리"
- 보통 하나의 .jar, .dll, .module 파일로 배포 가능
- UML에서 직사각형 박스로 그리며, 좌상단에 두 개 겹친 작은 사각형 아이콘이 붙어 있음
2)🔌 인터페이스 (Interface)
- 컴포넌트끼리 소통할 때 쓰는 “메뉴판” 같은 역할
- 두 종류:
- 제공 인터페이스 (Provided): 내가 제공하는 기능 → 원형 포트 ●
- 요구 인터페이스 (Required): 내가 필요한 기능 → U자 모양 ⊃
- 예시:
- 결제 서비스는 결제 승인()이라는 기능을 제공 (Provided)
- 주문 컴포넌트는 결제 승인()을 요구 (Required)
3)➰ 의존 관계 (Dependency)
- 점선 화살표 ────▶
- "이쪽 컴포넌트가 저쪽 기능을 잠깐 쓸 거예요~" 라는 의미
- 예시:
- OrderComponent ───▶ PaymentComponent
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기 이론] 물리 데이터 모델링 무결성 종류 - 개체/참조/속성/사용자정의/키 무결성 (0) | 2025.07.05 |
---|---|
[정보처리기사 실기 이론] 행위적(동적) 다이어그램 종류-유스케이스/시퀀스/활동/상태/커뮤니케이션 다이어그램 (4) | 2025.07.04 |
[정보처리기사 실기 이론] UML 다이어그램 종류 쉽게 이해하기 (1) | 2025.07.03 |
[정보처리기사 실기 이론] 디자인 패턴 유형 | 구조패턴(Structural Pattern) 쉽게 이해하기 (2) | 2025.07.02 |
[정보처리기사 실기 이론] 디자인 패턴 유형 | 생성패턴(Creational Pattern) 쉽게 이해하기 (1) | 2025.07.02 |