UML 클래스 다이어그램 (Class Diagram)
**클래스 다이어그램(類圖)**은
시스템을 구성하는 **클래스(Class)**와 **클래스 간의 관계(Relationship)**를
정적으로 표현한 UML의 구조적(Structural) 다이어그램이다.
즉, “시스템이 어떤 객체(클래스)들로 구성되어 있고,
이들이 서로 어떻게 연결되고 상호작용하는가”를 시각적으로 표현한 설계도다.
1. 개념 설명
객체지향(Object-Oriented) 설계에서 클래스 다이어그램은
가장 기본적이면서도 중심이 되는 모델이다.
하나의 **클래스(Class)**는
속성(Attribute)과 동작(Operation, Method)을 포함하며,
이를 통해 객체의 상태와 행위를 정의한다.
클래스 다이어그램은 프로그램의 **설계 구조(Structure)**를 표현하므로,
시스템 개발 전 구조 설계나 유지보수 시 구조 파악에 활용된다.
2. 클래스 다이어그램의 목적
- 시스템의 **정적 구조(Static Structure)**를 표현한다.
- 클래스 간의 관계(상속, 집합, 의존 등)를 정의한다.
- 설계 및 구현 단계에서 객체지향적 모델링을 수행한다.
- 시스템의 데이터 구조와 행위 간의 연관성을 문서화한다.
요약하면, 클래스 다이어그램은 **“소프트웨어의 설계도이자 구조 지도”**이다.
3. 클래스 다이어그램의 구성 요소
클래스 다이어그램은 보통 세 부분으로 나뉜다.
1️⃣ 클래스 이름(Class Name) – 클래스의 이름을 정의
2️⃣ 속성(Attribute) – 클래스가 가지는 데이터나 상태를 표현
3️⃣ 연산(Operation) – 클래스가 수행하는 동작(함수, 메서드)을 표현
예를 들어,
“회원(Member)” 클래스가 있다면 다음과 같이 표현할 수 있다.
- 이름: Member
- 속성: name, id, password
- 연산: login(), logout(), register()
4. 클래스 다이어그램에서 표현되는 주요 관계
클래스 다이어그램의 핵심은 **관계(Relationship)**를 정의하는 것이다.
① 연관(Association) – 클래스 간 연결 관계
② 집합(Aggregation) – 포함하지만 독립 존재 가능
③ 합성(Composition) – 포함되며 종속 존재
④ 일반화(Generalization) – 상속 관계
⑤ 의존(Dependency) – 약한 참조 관계
이 관계들은 선(—), 마름모(◇/◆), 삼각형(△), 점선(---▶) 등으로 시각적으로 표시된다.
🧩 클래스 다이어그램에서의 제약조건 (Constraint, 制約條件)
이제 핵심인 **제약조건(Constraint)**을 살펴보자.
제약조건은 클래스 다이어그램을 이해할 때 가장 중요한 “논리적 조건” 개념이다.
1. 제약조건의 개념
**제약조건(制約條件)**이란
클래스, 속성, 연산, 관계 등에 대해
**특정 조건이나 규칙을 제한하거나 명시하는 논리적 제약(Restriction)**을 말한다.
즉, 클래스 간 관계나 속성이 아무렇게나 연결되지 않도록
특정한 제한 규칙을 설정한 것이다.
예를 들어,
- 한 학생(Student)은 반드시 한 개의 학과(Department)에만 소속된다.
- 주문(Order)은 하나 이상의 상품(Product)을 포함해야 한다.
- 직원(Employee)의 급여는 0보다 커야 한다.
이런 조건들을 **자연어 또는 OCL(Object Constraint Language)**로 기술할 수 있다.
2. 제약조건의 표현 방법
UML에서는 제약조건을 중괄호 { } 안에 기술한다.
예를 들어,
- {ordered} → 순서가 있는 집합
- {readOnly} → 읽기 전용 속성
- {1..*} → 1개 이상 존재해야 함 (다중도 제약)
- {subset} → 기존 집합의 부분 집합 관계
- {unique} → 중복을 허용하지 않음
즉, 중괄호 안의 조건이 논리적 제약 규칙을 의미한다.
3. 제약조건의 역할
- 시스템 설계 시 **데이터 무결성(Data Integrity)**을 보장한다.
- 관계나 속성의 **논리적 일관성(Logical Consistency)**을 유지한다.
- 명확한 규칙을 통해 요구사항의 모호함을 제거한다.
- 나중에 설계나 코드로 구현될 때 제약 검증 기준이 된다.
4. 제약조건의 예시
- “학생(Student)” 클래스와 “강의(Course)” 클래스가 있다면,
“한 학생은 최대 5개의 강의를 수강할 수 있다.”
→ Student ── Course {0..5} - “직원(Employee)” 클래스에서 급여(salary) 속성은 0 이상이어야 한다.
→ salary : int {salary ≥ 0} - “결제(Payment)” 클래스에서 결제 방식(paymentType)은 반드시 하나만 선택해야 한다.
→ paymentType : String {1}
5. 정처기 실기 정의 문장
“UML 클래스 다이어그램은 시스템의 정적 구조를 나타내는 모델로,
클래스 간의 관계와 속성, 연산을 표현하며,
제약조건(Constraint)은 클래스나 관계에 부과되는 제한 규칙을
중괄호 { }를 이용해 명시하는 요소이다.”
시험 키워드:
클래스, 속성, 연산, 관계, 제약조건, 중괄호 { }, 다중도(Multiplicity), 논리적 제약
🪶 단어 정리 (한국식 한자 + 영어 어원 + 뜻풀이)
클래스(類) / Class
무리 류(類)
: 공통된 속성과 행위를 가진 객체들의 집합. 영어 classis(무리, 집단)에서 유래.
속성(屬性) / Attribute
붙을 속(屬), 성품 성(性)
: 클래스가 가지는 데이터나 상태의 특성. 영어 attribuere(부여하다)에서 유래.
연산(演算) / Operation
펼 연(演), 셈 산(算)
: 클래스가 수행할 수 있는 행위나 기능.
제약조건(制約條件) / Constraint
억제할 제(制), 맬 약(約), 가지 조(條), 굳을 건(件)
: 특정 관계나 속성에 대한 제한 규칙. 영어 constringere(묶다, 제한하다)에서 유래.
관계(關係) / Relationship
관계할 관(關), 맬 계(係)
: 객체 또는 클래스 간의 연결과 상호작용.
일반화(一般化) / Generalization
한 일(一), 무리 반(般), 될 화(化)
: 상위 클래스가 하위 클래스의 공통 특성을 정의하는 관계.
🏷️ 해시태그 정리
#클래스다이어그램
#ClassDiagram
#UML
#정처기실기
#객체지향설계
#속성
#연산
#관계
#제약조건
#Constraint
#Multiplicity
#소프트웨어공학
#시스템설계
'자격증 > 정보처리기사 실기' 카테고리의 다른 글
순차 다이어그램 (Sequence Diagram, 順次圖) (0) | 2025.10.15 |
---|---|
연관 클래스 (Association Class, 連關類) (0) | 2025.10.15 |
유스케이스 다이어그램 (Use Case Diagram) (0) | 2025.10.15 |
UML 다이어그램 (UML Diagram) (0) | 2025.10.15 |
HIPO 차트 (Hierarchy Input Process Output Chart) (0) | 2025.10.15 |