Skip to content
난이도 출제 빈출문제은행 5

클래스 다이어그램 ​

클래스 다이어그램(class diagram)은 클래스마다 어떤 데이터와 동작을 갖는지, 그리고 클래스끼리 어떻게 엮이는지를 나타내는 UML(Unified Modeling Language, 통합 모델링 언어) 구조 다이어그램이다. 코드를 짜기 전에 "어떤 클래스가 어떤 데이터와 기능을 갖고 서로 어떻게 엮이는지"를 한 장에서 보게 해 준다. 시험에서는 구성 요소 이름, 가시성(visibility) 기호, 다중도(multiplicity) 읽기, 관계 이름을 묻는다.

클래스 상자 ​

클래스(class)는 보통 세 칸짜리 사각형으로 그린다. 맨 위 칸은 클래스 이름, 가운데 칸은 속성, 아래 칸은 오퍼레이션이다.

속성(attribute)은 클래스의 상태나 정보를 나타낸다. 오퍼레이션(operation)은 클래스가 수행할 수 있는 동작이며 함수(function)나 메서드(method)라고도 한다. 칸을 나누는 이유는 데이터와 동작을 한눈에 구분해 읽기 위해서다.

text
┌───────────────────────┐
│ 회원                  │
├───────────────────────┤
│ - 아이디 : String     │
│ # 등급 : int = 1      │
│ / 나이 : int          │
├───────────────────────┤
│ + 로그인(pw : String) │
│ ~ 등급변경() : void   │
└───────────────────────┘

속성은 이름 : 타입 = 기본값 형태로 쓰고, 오퍼레이션은 이름(매개변수 : 타입) : 반환 타입으로 쓴다. 속성에 붙은 /는 다른 값에서 계산해 얻는 파생(derived) 속성이라는 뜻이다. 위 예에서 나이는 생년월일로 계산할 수 있다.

가시성 기호 ​

가시성(visibility)은 속성이나 오퍼레이션에 어디에서 접근할 수 있는지를 나타낸다. 외부에서 함부로 바꾸면 안 되는 값을 숨기려고 쓴다.

기호이름접근 범위
+public어디서나
-private그 클래스 안에서만
#protected그 클래스와 하위 클래스
~package같은 패키지 안에서

#과 ~가 자주 바뀌어 나온다. #은 상속받은 자식까지, ~는 같은 패키지까지다.

다중도 ​

다중도(multiplicity)는 관계선 끝에 적어 상대 객체가 몇 개 연결되는지를 나타낸다. 연결 개수를 정해 두면 "주문에는 상품이 최소 하나 있어야 한다" 같은 업무 규칙이 그림에 드러난다.

표기뜻
1정확히 1개
0..1없거나 1개
* 또는 0..*0개 이상
1..*1개 이상
n..mn개 이상 m개 이하

다중도는 상대 쪽 끝에 적힌 숫자를 읽는다. 주문과 주문 항목 사이 선에서 주문 쪽 끝에 1, 주문 항목 쪽 끝에 1..*가 있으면 "주문 하나에 항목이 1개 이상 있고, 항목 하나는 주문 하나에 속한다"로 읽는다.

제약 조건과 관계 ​

속성 값에 대한 제약 조건(constraint)은 중괄호 { } 안에 쓰거나, 모서리가 접힌 메모 상자에 적어 연결한다. 예를 들어 {재고 >= 0}은 재고가 음수가 되면 안 된다는 규칙이다. 오퍼레이션의 사전 조건(precondition)과 사후 조건(postcondition)도 같은 방식으로 적는다.

클래스 사이 관계는 클래스 간 관계의 기호를 그대로 쓴다. 클래스 다이어그램에서 주로 쓰는 것은 연관 관계(association), 집합 관계(aggregation), 합성 관계(composition), 일반화 관계(generalization), 의존 관계(dependency), 실체화 관계(realization)다.

시험 포인트 ​

  • 클래스·속성·클래스 사이 관계를 한 장에 그린다 → 클래스 다이어그램.
  • 세 칸 → 이름·속성·오퍼레이션. 오퍼레이션 = 동작 = 메서드.
  • 가시성 → + public, - private, # protected, ~ package. / 는 파생 속성.
  • 다중도 → 1..* 1개 이상, 0..1 없거나 하나, * 0개 이상. 상대 쪽 끝 숫자를 읽는다.
  • 제약 조건 → 중괄호 { } 또는 메모 상자.

관련 문서