● UML
UML(Unified Modeling Language)은 통합 모델링 언어로, 소프트웨어 개념들을 다이어그램으로 표현하기 위해 사용하는 시각적인 표기법이다.
UML은 설계 논의 및 의사소통을 위해 작성하기도 하고, 전체 시스템의 구조 및 클래스의 의존성을 파악하기 위해 사용하기도 한다.
- 정적 다이어그램
클래스, 객체, 데이터 구조와 이것들의 관계를 그림으로 표현하여 소프트웨어 요소에서 변하지 않는 논리적 구조를 보여준다.
- 동적 다이어그램
실행 흐름을 그리거나 상태가 어떻게 변하는지 그림으로 표현하여 소프트웨어 실행 도중에 어떻게 변하는지 보여준다.
- 물리적 다이어그램
소스 파일, 라이브러리, 데이터 파일 등의 물리적인 요소들과 이것들의 관계를 그림으로 표현해서 소프트웨어 요소에서 변하지 않는 물리적 구조를 보여준다.
● 관계선
● 접근제어자
+ : public
- : private
# : protected
● 일반화 관계
- 일반화 관계는 상속 관계(IS-A 관계)를 표현한다.
- 실선에 빈 화살표로 표시한다.
● 실체화 단계
- 실체화 단계는 인터페이스의 스펙만 있는 메서드를 오버라이딩 하여 실제 기능으로 구현하는 것을 말한다.
- 점선과 빈 화살표로 표시한다.
● 의존단계
- 의존 관계는 어떤 클래스가 다른 클래스를 참조하는 것을 말하며 '잠깐 이용한다' 라고 보면 된다.
- 점선과 화살표로 표현한다.
● 연관관계
- 클래스 다이어그램에서 연관 관계는 다른 객체의 참조를 가지는 필드를 의미하며 '계속 이용한다' 라고 이해하면 된다.
- 연관 관계와 직접 연관 관계의 차이는 방향성의 유무이다.
- 직접 연관 관계는 방향성을 갖는데, 방향성으로 참조 하는 쪽과 참조 당하는 쪽을 구분한다.
- 연관 관계는 실선으로 표현하고, 직접 연관 관계는 화살표로 표현한다.
● 집약관계
- 집약 관계는 한 객체가 다른 객체를 포함하는 관계이다.
- 부분을 나타내는 객체를 다른 객체와 공유할 수 있으며, 전체 객체의 라이프타임과 부분 객체의 라이프타임이 독립적일 때(전체 객체가 메모리에서 사라져도 부분 객체는 사라지지 않을 때) 집약 관계를 이용하여 표현한다.
즉, 탈부착이 가능하다고 보면 된다.
- 실선과 비어 있는 마름모로 표현하며, 마름모가 가르키고 있는 객체가 전체 객체이다.
즉, 외부로부터 객체를 받아 연결시킨다.
● 합성 관계
- 합성 관계는 부분 객체가 전체 객체에 속하는 관계에 이용한다.
- 집약 관계와 달리 부분 객체를 다른 객체와 공유할 수 없으며, 부분 객체의 라이프타임이 전체 객체의 라이프타임에 종속적일 때(전체 객체가 메모리에서 사라지면 부분 객체도 사라질 때) 합성 관계로 표현한다.
즉, 탈부착이 불가능하다고 보면 된다.
- 실선과 내부가 채워져 있는 마름모로 표현하며, 마찬가지로 마름모가 가르키고 있는 객체가 전체 객체이다.
집약단계와 합성단계는 집합 관계로, 전체와 부분의 관계를 명확하게 명시하고자 할 때 사용한다.
< 예제 (스타크래프트) >
전체 다이어그램은 이렇게 생겼다.
여기서 일부인 이 부분을 보면서 코딩을 짜볼 것이다.
Marine과 Medic은 Unit의 상속을 받고 Rifle과 Pistol은 Gun의 상속을 받는다.
총을 쏜 횟수만큼 hp가 닳는 것을 구현한다.
- Unit 클래스
- Marine 클래스
Unit의 상속을 받는다.
- Medic 클래스
Unit의 상속을 받는다.
- Gun 클래스
- Pistol 클래스
Gun의 상속을 받는다.
- Rifle 클래스
Gun의 상속을 받는다.
- Main 클래스
< 총을 쏜 결과 >
hp가 총을 쏜 횟수만큼 줄어든 것을 볼 수 있다.
'IT수업 > JAVA PART2' 카테고리의 다른 글
IT 수업 15주차 (77) MVC 패턴 2 (0) | 2024.04.01 |
---|---|
IT 수업 14주차 (76) MVC 패턴 1 (0) | 2024.03.29 |
IT 수업 14주차 (74) 어노테이션 (0) | 2024.03.29 |
IT 수업 14주차 (73) 람다식을 :: (더블 콜론) 으로 변환 (0) | 2024.03.28 |
IT 수업 14주차 (72) 함수형 인터페이스 2 (0) | 2024.03.28 |