[SW Engineering] 4.1. 클래스 관계

이상윤·2024년 4월 18일
0

소프트웨어공학

목록 보기
4/11

클래스 관계의 종류

관계가 강한 순대로,

  • Inheritance(상속관계)
    한 클래스가 다른 클래스의 Type일 때. 즉, 자식-부모 관계
  • Composition(합성관계)
    어떤 클래스 B가 다른 클래스 A에 포함될 때, 클래스 B의 라이프 사이클이 클래스 A에게 종속됨을 의미한다. A가 없으면 B도 없다. (e.g. 학과-교수)
  • Aggregation(집합관계)
    어떤 클래스 B가 다른 클래스 A에 포함될 때, 클래스 B가 A에 종속적이지 않음을 의미한다. A가 없어도 B는 존재할 수 있다. (책-페이지)
  • Association(연관관계)
    두 클래스 사이에 서로 참조할 수 있으며, 그 관계가 어느정도 지속된다.
  • Dependency(의존관계)

    한 클래스가 다른 클래스의 기능을 사용하고, 그 관계가 짧다. (메소드에 한번 사용되는 등)

Bianary Association

두 클래스 간의 관계

  • 구성 요소

    • Association Name

    • Reading direction

    • Role
      객체가 연결 관계에 관여하는 방식

    • Visibility
      Public(+), Private(-), Protected(#), Default(~)

    • Navigablility

      한 객체가 다른 상대방의 객체에 대해 인식하고 접근할 수 있는가, 즉, 인스턴스에 접근할 수 있는가에 대한 정의이다.
      Navigable 하면 화살표로, Non-navigable 하면 X자로 표시한다. 서로 non-navigable 한 경우에 실선으로 표시하지만, 실제로는 실선 표시는 Bidirectional(양쪽으로 탐색 가능)한 경우를 나타내는 경우가 많다.

    • Multiplicity

      반대쪽 객체와 연관될 수 있는 객체의 수.
      (명시되지 않는 경우) 시작하는 쪽을 1로 본다


Unary Association


왼쪽 다이어그램에 따르면 3번 관계는 husband role이 2개이기 때문에 허용되지 않는다. 그런데, 4번은 보기에는 말이 안되는데 왼쪽 다이어그램에 따르면 허용된다.


Association Class


클래스 간의 관계에 속성을 할당

  • n:m의 관계에서 필수
  • 1:1, 1:n에서는 필수는 아님
  • 왜 그냥 클래스 안쓰고 Association 클래스 써요?

    왼쪽의 경우는 한 학생이 한 수업에 한번만 (기본적으로는) 등록할 수 있다. 그러나 오른쪽의 경우는 한 학생이 한 수업에 여러번 등록할 수 있다.

    Association 클래스에서도 중복 관계를 만들고 싶다면, {non-unique}를 명시하면 된다.

Qualified Association


한정자를 사용하여 연결된 개체에 액세스할 때의 모호성을 해결

0개의 댓글

관련 채용 정보