복잡한 프로그램을 위한 UML 클래스 다이어그램
들어가며
객체 지향 프로그래밍에서 클래스는 코드의 기본적인 구성 요소이다. 프로그램의 규모가 커지고 클래스 간의 관계가 복잡해짐에 따라, 전체적인 구조를 한눈에 파악하고 관리하는 것이 중요해진다. 이를 위해 UML 클래스 다이어그램이 유용하게 사용된다. UML 클래스 다이어그램은 시스템의 클래스, 속성, 연산 및 관계를 시각적으로 표현하는 표준적인 방법이다.
UML 클래스 다이어그램의 개념
UML(Unified Modeling Language) 클래스 다이어그램은 객체 지향 시스템을 모델링하는 데 사용되는 그래픽 표기법이다. 클래스 다이어그램은 시스템의 정적 구조를 보여주며, 클래스, 인터페이스, 협업 및 관계와 같은 요소를 포함한다.
UML 클래스 다이어그램 그리기 규칙
UML 클래스 다이어그램은 다음과 같은 규칙에 따라 그려진다.
- 클래스: 클래스는 사각형으로 표시되며, 클래스 이름, 속성 및 연산을 포함한다.
- 속성: 속성은 클래스 내부에 나열되며, 속성 이름과 데이터 유형을 포함한다.
- 연산: 연산은 클래스 내부에 나열되며, 연산 이름, 매개변수 및 반환 유형을 포함한다.
- 관계: 클래스 간의 관계는 다양한 유형의 선과 기호를 사용하여 표시된다.
![]() |
how to draw UML Diagram |
클래스 간의 관계 표현
UML 클래스 다이어그램은 다음과 같은 관계를 표현할 수 있다.
- 연관 (Association): 두 클래스 간의 일반적인 관계를 나타낸다.
- 상속 (Inheritance): 한 클래스가 다른 클래스의 속성과 연산을 상속받는 관계를 나타낸다.
- 구현 (Realization): 한 클래스가 인터페이스를 구현하는 관계를 나타낸다.
- 의존 (Dependency): 한 클래스가 다른 클래스에 의존하는 관계를 나타낸다.
- 집합 (Aggregation): 한 클래스가 다른 클래스의 부분을 포함하는 관계를 나타낸다.
- 합성 (Composition): 한 클래스가 다른 클래스의 생명 주기를 제어하는 강력한 집합 관계를 나타낸다.
![]() |
relationship between classes |
예제: Lecture, Student, Teacher 클래스
다음은 Lecture
, Student
, Teacher
클래스 간의 관계를 보여주는 UML 클래스 다이어그램 예시이다.
![]() |
Association relationship(Lecture, Student, Teacher) |
위 다이어그램에서 Lecture
클래스는 Student
클래스와 Teacher
클래스에 대한 포인터를 멤버 변수로 가지고 있다. 이는 Lecture
클래스가 Student
클래스와 Teacher
클래스의 객체를 참조할 수 있음을 의미한다.
main.cpp 코드 예제
다음은 위 UML 클래스 다이어그램을 C++ 코드로 구현한 예시이다.
#include <iostream>
#include "Student.h"
#include "Teacher.h"
#include "Lecture.h"
using namespace std;
int main() {
Student s1(201911999, "Alice");
Teacher t1(111111111, "Tom");
Lecture l1(222222222, "OOP");
cout << s1.GetName() << endl; // Alice
cout << t1.GetName() << endl; // Tom
cout << l1.GetName() << endl; // OOP
return 0;
}
위 코드는 Student
, Teacher
, Lecture
클래스의 객체를 생성하고, 각 객체의 GetName()
메서드를 호출하여 이름을 출력한다.
마치며
UML 클래스 다이어그램은 복잡한 프로그램의 구조를 시각적으로 표현하는 데 유용한 도구이다. 클래스 다이어그램을 통해 클래스 간의 관계를 명확하게 파악하고, 코드를 효율적으로 관리할 수 있다.
추천글 :
[C++][OOP] Array & Pointer
(https://hyeonb.blogspot.com/2024/09/coop-array-pointer.html)
[C++][OOP] Class - definition, struct, constructor, destructor
(https://hyeonb.blogspot.com/2024/10/coop-class-definition-struct.html)