보키_기록용

[UML 실전에서는 이것만 쓴다 :: 3장] 클래스 다이어그램 본문

공부/UML

[UML 실전에서는 이것만 쓴다 :: 3장] 클래스 다이어그램

bokki0117 2022. 8. 24. 10:15
  • 클래스

  • 표기
    • 접근 제한자 [private : (-) / protected : (#) / public : (+)]
    • 변수 [변수이름 : 자료형]
    • 메서드 [함수이름 (파라미터이름 : 파라미터 자료형) : 반환값 자료형]
  • 세부사항을 상세하게 적는 것이 유용할 때도 있지만, 자주 이렇게 해서는 안 된다.

 

ex )

 

public class  Dialer

{

    private Vector digits;

    int nDigits;

    public void digit (int n);

    protected boolean recordDigit (int n);

}

 

  • 연관

 

public class Phone

{

    private Button itsButtons[15];

}

 

  • Phone 객체에 Button 객체가 15개 연결되어 있다.

 

public class Phonebook

{

    private Vector itsPnos;

}

 

  • Phonebook은 여러 개의(*) 전화번호 객체와 연결되어 있다.
  • 벡터(Vector)나 리스트(List) 또는 다른 컨테이너 타입으로 구현하는 경우가 종종 있다.

 

  • 상속

 

 public class Employee

{

    ...

}

public class SalariedEmployee extends Employee

{

    ...

}

  • 점선으로 그리지만 여기서는 상속은 세로 화살표, 연관은 가로 화살표로 그린다.

 

  • 세부사항

 

  • 클래스 스테레오 타입
    • 《interface》
      • 클래스의 메서드가 모두 추상 메서드.
      • 인스턴트 변수를 가지지 못하고 정적(static) 변수만 가질 수 있다. 
    • 《utility》
      • 모든 메서드와 변수가 정적(static)이다. 

  • 추상 클래스
    • 이름을 이탤릭체로 적거나 {abstract} 프로퍼티(클래스 이름 오른쪽 아래에 작성)를 사용한다.
    • 약어를 쓰는게 훨씬 편함

  • 프로퍼티
    • 클래스에 속하지 않는 추가 정보
    • {이름1=값1, 이름2=값2, ...}
    • 값을 가지지 않는다면 참(true)을 가지는 것으로 간주. ex ) {abstract}와 {abstract = true}는 같은 뜻
    • 클래스 이름 오른쪽 아래에 작성

  • 집합 (aggregation)
    • 부분/전체 관계를 내포하는 연관의 특별한 형태
    • UML 2.0에선 빠졌음.

잘못된 순환집합 관계

  • 합성 (composition)
    • 집합의 특별한 형태. 집합과 동일한 규칙이 적용
    • 피보호자의 한 인스턴스를 두 주인이 동시에 소유할 수 없음
    • 주인은 피보호자의 수명 전체에 책임을 진다. (주인이 소멸/복사되면, 피보호자도 함께 소멸/복사되어야 한다.)
    • 자바에서는 가비지컬렉터가 수행되므로 어떤 객체의 수명을 관리할 필요는 없다.

  • 다수성 (multiplicity)
    • 배열이나 벡터, 같은 종류의 객체라도 배열이 아니라 여러 인스턴스 변수에 따로 가질 수 있는 상황에 쓰임
    • ex ) 3..5 (3개에서 5개까지) / 0..* (0개 또는 그 이상)

 

public class BinaryTreeNode

{

    private BinaryTreeNode leftNode;

    private BinaryTreeNode rightNode;

}

 

  • 연관 스테레오 타입
    • 《create》
      • 연관의 원본이 연관의 대상을 생성함.
      • 대상을 생성해 다른 부분에 넘긴다.
    • 《local》
      • 대상을 생성하고 지역 변수에 담긴다.
      • 멤버 변수 안에 한정됨. 다른 부분에 전달되지 않음.
    • 《parameter》
      • 원본이 대상에 접근할 수 있게 된다.
      • 그 멤버 함수가 리턴한 이후 그 객체에 대해 모두 잊는다.
      • 대상이 원본 클래스의 인스턴스 변수에 저장되지 않는다.
      • 점선으로도 씀
    • 《delegate》
      • 원본 클래스의 멤버 함수가 호출될 때 이 호출을 대상 클래스에 그대로 전달해서 대상 클래스의 멤버 함수를 호출하는 경우에 사용
      • 프록시(Proxy), 데코레이터(Decorator), 컴포지트(Composite)

연관 스테레오 타입

  • 내부 클래스

  • 익명 내부 클래스

  • 연관 클래스

 

 

 

public class Address {

    private Vector itsLine;

};

 

 

 

  • 연관 한정사 (association qualifier)
    • 일반적인 자바 참조가 아니라 어떤 종류의 키나 토큰을 통해 연관을 구현할 경우 사용
Comments