728x90
728x170
UML(Unifed Modeling Language)
UML(Unified Modeling Language)
- 객체 간의 관계를 표현하는 데 사용됨.
- 시스템 시각화나 사양의 설계를 문서화할 때 사용하는 표현 방법
클래스 다이어그램(Class Diagram)
- 클래스의 관계를 표시하는 다이어그램
클래스와 인터페이스
- 클래스와 인터페이스는 영역이 3개로 나뉜 사각형으로 표시한다.
- 가장 위 영역 : 클래스나 인터페이스의 이름
- 추상 클래스, 인터페이스 : 이텔릭체
- 인터페이스는 <<interface>> 라고 적는다.
- 중간 영역 : 클래스나 인터페이스의 필드
- 클래스 필드(static 필드) 이름에는 밑줄을 긋는다.
- 가장 아래 영역 : 클래스나 인터페이스의 메서드
- 클래스 메서드(static 메서드) 이름에는 밑줄을 긋는다.
- 추상 메서드(abstract 메서드)는 이름을 이텔릭체로 표시한다.
- 가장 위 영역 : 클래스나 인터페이스의 이름
- 정리
이탤릭체 : 추상 클래스, 인터페이스, 추상 메서드
밑줄 : 클래스 필드, 클래스 메서드
- 세 영역 각각은 필요에 따라 생략 가능하다.
- 실제 프로그램에 선언된 필드나 메서드라도 클래스 다이어그램에서 생략하기도 한다.
- 클래스 다이어그램은 클래스 사이의 구조를 표현하는 용도지, 프로그램 자체를 복원하는 용도가 아니기 때문
- 실제 프로그램에 선언된 필드나 메서드라도 클래스 다이어그램에서 생략하기도 한다.
◆ 화살표
- 화살표의 종류 차이도 있지만, 프로그래밍에서 중요한건 화살표의 방향이다.
- 각 클래스는 화살표가 가리키는 클래스나 인터페이스에 의존하기 때문
- 어떤 화살표든, 화살표 시작점에 있는 클래스는 화살표 끝에 있는 클래스나 인터페이스가 없으면 컴파일을 할 수 없다.
- 반대로, 오른쪽 클래스나 인터페이스는 왼쪽 클래스가 없어도 컴파일 된다.
- 부품으로 재사용 가능한 모음은 의존 관계로 정해지므로, 화살표가 가리키는 방향은 매우 중요하다.

화살표 | 설명 |
![]() |
- 상위 클래스를 가리키는 화살표 - '사용한다'를 뜻하는 화살표 - 필드에 들어 있지 않아도 메서드 매개변수나 임시 변수 등으로 사용할 가능성이 있는 객체를 가리킴. |
![]() |
- 인터페이스를 가리키는 화살표 - '알고 있다' 를 뜻하는 화살표 - 프로그램에서 집합을 뜻하는 화살표와 같지만, '포함한다'를 강조하기보다는 필드에 들어 있음을 강조할 때 사용 |
![]() |
- 집합을 나타내는 화살표 - 필드 등으로 객체를 '포함'하는 경우 사용 |
클래스 다이어그램의 예
그림 1 : 클래스 다이어그램의 예

코드 1 : 클래스 다이어그램에 대응하는 자바 프로그램
interface Executable { abstract void execute(); } abstract class ParentClass { Something _field1; static int FIELD2; abstract void method1(); void method2() { ... } static void method3() { ... } } class ChildClass extends ParentClass implements Executable { void method1() { ... } void execute() { ... } } class Something { int _value; ... }
시퀀스 다이어그램(Sequence Diagram)
- 프로그램 동작 순서를 표현하는 다이어그램
코드 : 시퀀스 다이어그램 예시용 자바 프로그램
class Client { Server _server = new Server(); ... void work() { _server.open(); _server.print("Hello"); _server.close(); } } class Server { Device _device; void open() { _device = new Device(); ... } void print(String s) { _device.write(s); } void close() { ... } } class Device { void write(String s) { ... } }
그림 2 : 시퀀스 다이어그램의 예

- :Client, :Server, :Device 는 Client 클래스, Server 클래스, Device 클래스의 인스턴스를 나타낸다.
- 시퀀스 다이어그램에서 위에서 아래 방향은 시간 흐름이고, 가로 방향 화살표는 인스턴스 사이의 상호 작용을 표현한다.
화살표 | 설명 |
![]() |
메서드 호출 |
![]() |
메서드에서 돌아오는 것 |
주석과 역할
- 클래스 다이어그램이나 시퀀스 다이어그램에는 노트 모양의 주석을 추가할 수 있다.

- 클래스 다이어그램에서 클래스 역할을 강조하고 싶을 때는, 태그를 사용한다.
- UML에 규정된 서식은 아니다.
- 이는 특히 디자인 패턴에서 클래스의 역할을 표기할 때 편리하다.

- 이 페이지에서는 집합 관계인 필드 이름도 클래스를 표시하는 사각형 안에 작성하였지만(그림1의 _field1 필드), UML에서는 일반적으로 집합 관계 필드 이름을 사각형 안에 작성하지 않는다.
- 집합 관계는 화살표로 표현 가능하다.
728x90
그리드형(광고전용)