IT수업/JAVA PART2

IT 수업 14주차 (75) 클래스 다이어그램

워제하 2024. 3. 29. 12:27

 

● UML

UML(Unified Modeling Language)은 통합 모델링 언어로, 소프트웨어 개념들을 다이어그램으로 표현하기 위해 사용하는 시각적인 표기법이다.

 

UML은 설계 논의 및 의사소통을 위해 작성하기도 하고, 전체 시스템의 구조 및 클래스의 의존성을 파악하기 위해 사용하기도 한다.

 

 

 

- 정적 다이어그램

클래스, 객체, 데이터 구조와 이것들의 관계를 그림으로 표현하여 소프트웨어 요소에서 변하지 않는 논리적 구조를 보여준다.


- 동적 다이어그램

실행 흐름을 그리거나 상태가 어떻게 변하는지 그림으로 표현하여 소프트웨어 실행 도중에 어떻게 변하는지 보여준다.

 

- 물리적 다이어그램

소스 파일, 라이브러리, 데이터 파일 등의 물리적인 요소들과 이것들의 관계를 그림으로 표현해서 소프트웨어 요소에서 변하지 않는 물리적 구조를 보여준다.

 

 

 

 

 

● 관계선

참조 : https://www.nextree.co.kr/p6753/

 

 

 

● 접근제어자

+ : public
- : private
# : protected

 

 

 

 

 

● 일반화 관계

- 일반화 관계는 상속 관계(IS-A 관계)를 표현한다.

- 실선에 빈 화살표로 표시한다.

 

 

 

 

 

 

● 실체화 단계

- 실체화 단계는 인터페이스의 스펙만 있는 메서드를 오버라이딩 하여 실제 기능으로 구현하는 것을 말한다.

 

- 점선과 빈 화살표로 표시한다.

 

 

 

 

 

 

 

● 의존단계

 

- 의존 관계는 어떤 클래스가 다른 클래스를 참조하는 것을 말하며 '잠깐 이용한다' 라고 보면 된다.

- 점선과 화살표로 표현한다.

 

 

 

 

● 연관관계

 

- 클래스 다이어그램에서 연관 관계는 다른 객체의 참조를 가지는 필드를 의미하며 '계속 이용한다' 라고 이해하면 된다.

- 연관 관계와 직접 연관 관계의 차이는 방향성의 유무이다.

- 직접 연관 관계는 방향성을 갖는데, 방향성으로 참조 하는 쪽과 참조 당하는 쪽을 구분한다.

- 연관 관계는 실선으로 표현하고, 직접 연관 관계는 화살표로 표현한다.

 

 

 

 

● 집약관계

- 집약 관계는 한 객체가 다른 객체를 포함하는 관계이다.

- 부분을 나타내는 객체를 다른 객체와 공유할 수 있으며, 전체 객체의 라이프타임과 부분 객체의 라이프타임이 독립적일 때(전체 객체가 메모리에서 사라져도 부분 객체는 사라지지 않을 때) 집약 관계를 이용하여 표현한다.

 즉,  탈부착이 가능하다고 보면 된다.

- 실선과 비어 있는 마름모로 표현하며, 마름모가 가르키고 있는 객체가 전체 객체이다.

즉, 외부로부터 객체를 받아 연결시킨다.

 

 

 

 

 

합성 관계

- 합성 관계는 부분 객체가 전체 객체에 속하는 관계에 이용한다. 

- 집약 관계와 달리 부분 객체를 다른 객체와 공유할 수 없으며, 부분 객체의 라이프타임이 전체 객체의 라이프타임에 종속적일 때(전체 객체가 메모리에서 사라지면 부분 객체도 사라질 때) 합성 관계로 표현한다.

 즉, 탈부착이 불가능하다고 보면 된다.

- 실선과 내부가 채워져 있는 마름모로 표현하며, 마찬가지로 마름모가 가르키고 있는 객체가 전체 객체이다.

 

 

 

 

집약단계와 합성단계는 집합 관계로, 전체와 부분의 관계를 명확하게 명시하고자 할 때 사용한다.

 

 

 

 

 

 

< 예제 (스타크래프트) >

 

전체 다이어그램은 이렇게 생겼다.

 

여기서 일부인 이 부분을 보면서 코딩을 짜볼 것이다.

 

 

Marine과 Medic은 Unit의 상속을 받고 Rifle과 Pistol은 Gun의 상속을 받는다.

총을 쏜 횟수만큼 hp가 닳는 것을 구현한다.

 

- Unit 클래스

 

 

- Marine 클래스

Unit의 상속을 받는다.

 

 

- Medic 클래스

Unit의 상속을 받는다.

 

- Gun 클래스

 

 

 

- Pistol 클래스

Gun의 상속을 받는다.

 

- Rifle 클래스

Gun의 상속을 받는다.

 

 

- Main 클래스

 

 

 

< 총을 쏜 결과 >

 

hp가 총을 쏜 횟수만큼 줄어든 것을 볼 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

참고 : https://velog.io/@zooneon/%ED%81%B4%EB%9E%98%EC%8A%A4-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8#%EC%9D%98%EC%A1%B4-%EA%B4%80%EA%B3%84dependency