고급자바_클래스 다이어그램

oungoo·2020년 10월 12일
0

JAVA_고급

목록 보기
12/19

UML

Unified Modeling Language : 통합 모델링 언어

  • 시스템을 모델로 표현해주는 대표적인 모델링 언어

UML 다이어그램 종류

구조 다이어그램

  • 클래스다이어그램, 객체다이어그램, 복합체구조다이어그램, 배치다이어그램, 컴포넌트다이어그램, 패키지다이어그램

행위 다이어그램

  • 활동다이어그램, 상태머신다이어그램, 유즈케이스다이어그램, 상호작용다이어그램

클래스 다이어그램

  • 시간에 따라 변하지 않는 시스템의 정적인 면을 보여주는 대표적인 UML구조 다이어그램
  • 목적 : 시스템을 구성하는 클래스들 사이의 관계 표현

클래스

  • 동일한 속성과 행위를 수행하는 객체의 집합
  • 객체를 생성하는 설계도

클래스는 공통의 속성과 책임을 갖는 객체들의 집합이자 실제 객체를 생성하는 설계도

관계

연관 관계

  • 실선 화살표
  • 클래스들이 개념상 서로 연결되었음
  • 보통은 한 클래스가 다른 클래스에서 제공하는 기능을 사용하는 상황일때 표시
  • 오랜시간동안 같이할 객체와의 관계
    ex) 자동(Car)차와 소유한 사람(Person)의 관계
public class Person {
	// 클래스의 속성(멤버변수)에서 참조
	private Car owns;
}

의존 관계

  • 점선 화살표

  • 일반적으로 한 클래스가 다른 클래스를 사용하는 경우

    1. 클래스의 속성(멤버변수)에서 참조할 때 : 연관 관계
    2. 연산의 **인자(참조값)**로 사용될 때 : 의존 관계
    3. 메서드 내부의 지역객체로 참조될 때 : 의존 관계
  • 짧은 시간 동안 이용하는 관계
    ex) 자동차(Car)와 주유기(GasPump)의 관계

// 자동차와 주유기의 관계 
// 메서드가 실행되는 동안만 관계있음
public class Car{
	...
    // 연산의 "인자(참조값)"로 사용
    public void fillGas(GasPunp p){
    	p.getGas(amount);
    }
}

! 연관관계-의존관계 차이

  • 실선+화살표 - 점선+화살표

일반화 관계

  • 실선 빈화살표
  • 한 클래스가 다른 클래스를 포함하는 상위 개념일 때 (상속관계)
  • 부모클래스는 자식 클래스의 공통 속성이나 연산을 제공하는 틀

실체화 관계

  • 점선 빈화살표
  • 인터페이스를 구현하는 것
  • 클래스처럼 표기하고 스테레오타입으로 <<interface>> 추가

! 일반화관계-실체화관계 차이

  • 실선+빈화살표 - 점선+빈화살표

집합관계

  • 전체와 부분의 관계를 명확하게 명시하고자 할 때

1. 집약관계 (aggregation)

  • 실선 빈마름모
  • 한 객체가 다른 객체를 포함 (전체 쪽에 빈 마름모)
    '부분'을 나타내는 객체를 다른 객체와 공유할 수 있음
  • 전체 객체의 라이프타임과 부분객체의 라이프 타임이 독립적
    전체 객체가 메모리에서 사라진다 해도 부분객체 사라지지 않음
    ex) 생성자에서 참조값을 인자로 받아 필드 세팅
    => Computer 객체가 없어질때 MainBoard와 CPU가 소멸되는 것은 아님

2. 합성관계

  • 실선 마름모
  • 부분 객체가 전체 객체에 속하는 관계
    '부분'을 나타내는 객체를 다른 객체와 공유할 수 없음
  • 전체 객체의 라이프타임과 부분객체의 라이프 타임은 의존적
    전체 객체가 없어지면 부분 객체도 없어짐
    ex) 생성자에서 필드에 대한 객체를 생성

! 집약관계-합성관계 차이

  • 집약관계 : 라이프타임이 독립적
  • 합성관계 : 라이프타임을 함께함


게시판 클래스다이어그램

~~P11_BoardTest~~


참고

  • https://gmlwjd9405.github.io/2018/07/04/class-diagram.html
  • http://www.nextree.co.kr/p6753/
  • 관계 정리
    https://ehpub.co.kr/tag/%EC%9D%BC%EB%B0%98%ED%99%94-%EA%B4%80%EA%B3%84generalization%EC%A7%91%ED%95%A9-%EA%B4%80%EA%B3%84aggregation-%EA%B5%AC%EC%84%B1-%EA%B4%80%EA%B3%84composition-%EC%A7%81%EC%A0%91-%EC%97%B0/

1개의 댓글

comment-user-thumbnail
2020년 10월 13일

연관관계랑 집합관계 헷갈림

답글 달기