Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데브마우스

[다이어그램] 클래스 다이어그램 정리 본문

다이어그램

[다이어그램] 클래스 다이어그램 정리

데브마우스 2024. 1. 8. 10:41

클래스 다이어그램이란 무엇인가요?

클래스 다이어그램은 객체지향 프로그래밍 언어로 작성된 프로그램의 소스 코드를 기반으로 프로그램 구조를 더 이히하기 쉽게 표현하기 위한 다이어그램입니다.

 

클래스 다이어그램은 소프트웨어 설계 단계에서 매우 중요하며, 클래스의 멤버(변수와 함수) 그리고 클래스 간의 관계를 시각적으로 드러냅니다.

클래스 다이어그램은 왜 그리나요?

클래스 다이어그램을 그리는 이유는 아래와 같습니다.

  • 시스템 구조 이해
    • 시스템을 구성하는 클래스들과 그 관계를 시각적으로 쉽게 파악할 수 있습니다. 또한 시스템 분석 및 이해에 도움이 됩니다.
  • 의사소통의 효율성
  • 문서화
  • 설계 오류 발견
    • 설계 초기 단계에서 다이어그램을 작성하여 잠재적으로 있을 수 있는 설계 오류를 발견하고 미리 수정할 수 있습니다.

클래스 다이어그램은 어떻게 작성하나요?

클래스 다이어그램 작성 순서는 아래와 같습니다.

  1. 요구사항 분석
  2. 클래스 식별
  3. 속성정의(변수)

 

클래스 다이어그램의 멤버 접근제어자 작성 방법

클래스 멤버(변수와 함수)의 접근제어자는 아래와 같이 표현합니다.

접근제어자 표기법
public +
private -
default (기호 없이 작성합니다.)
protected #

 

 

클래스 다이어그램 관계 표기법

클래스들의 사이의 관계를 식별하고 관계에 따라 연관, 의존, 상속, 구현, 집합, 복합 관계로 표현할 수 있습니다.

 

연관관계(Association):실선 #지속적인관계

한 클래스가 다른 클래스의 객체를 멤버 변수로 포함하고 있을 때 나타냅니다.

class Student {
	private String name;
	School school;
	
	public String getName() {
		return name;
	}
}

class School {
	private String name;
	
	public String getName() {
		return name;
	}
}

위 코드를 클래스 다이어그램으로 표현하면 아래와 같습니다.

의존관계(Dependency): 점선 #일시적인관계

메서드 안에서 선언되거나 파라미터로 선언된 경우 의존 관계입니다.

class Human {
	private String name;
	public void eat(Food food) {
		System.out.println("먹은 음식은 " + food+"입니다.");
	}
}

class Food {
	private String name;
}

위 코드를 클래스 다이어그램으로 표현하면 아래와 같습니다.

상속관계(Inheritance): 실선과 빈세모 #상속(extends)

다른 클래스로부터 상속받은 관계를 표현합니다.

구현관계(Realization): 점선과 빈세모 #구현(implements)

다른 클래스로부터 구현받은 관계를 표현합니다. 이때 인터페이스임을 강조하기 위해 클래스 위에 <<interface>>라고 작성하는 경우도 많습니다.

집합관계(Aggregation): 점선과 다이아몬드 #생명주기가_독립적

한 클래스가 다른 클래스의 객체를 전역변수로 포함하지만, 생명주기가 독립적인 경우를 의미합니다.

 

복합관계(Composition): 꽉찬 다이아몬드 #생명주기가_같음

한 클래스가 다른 클래스의 객체를 포함하며 생명주기가 같은 경우를 의미합니다.