CS

[CS] UML_ClassDiagram

리네엔 2024. 10. 14. 22:50

Class Diagram

  • 시스템에서 객체 및 객체간의 관계를 설명하는 diagram일반화
  • 상속 관계를 나타냄
    generalization{:width="40%" display="flex" justify-content="center"}
    public class Animal
    {
      public string Name{get;set;}
      public int Age{get;set;}
      public void Describe(){}
    }
    public class Dog : Animal
    {
      public void Bark(){}
    }

실체화

  • 인터페이스와 클래스의 관계를 나타냄
    Realization{:width="40%" display="flex" justify-content="center"}
    public class IDrive
    {
      public void Drive();
    }
    public class Car : IDrive
    {
      public string Model{get;set;}
      public void Drive(){}
    }

의존

  • 한 클래스가 다른 클래스를 일시적으로 사용 하는 관계
  • 클래스 A가 클래스 B의 객체를 매개 변수로 받거나 매서드 내에서 사용하는 것
  • 클래스간의 결합도가 낮은 관계
    Dependency{:width="40%" display="flex" justify-content="center"}
public class Engine
{
    public void Start(){}
}
public class Car
{
    pubilc void StartCar(Engine)
    {
        Engine.Start();
    }
}

연관 & 직접연관

  • 클래스가 다른 클래스를 속성으로 갖는 관계
  • 의미적으로 서로 연관이 있는 정도의 관계
  • 한 클래스가 일방적으로 다른 클래스를 속성으로 갖는 경우 DirectAssociation
  • 클래스 서로가 서로를 속성으로 갖는경우 Association
  • DirectAssociation*
    DirectAssociation{:width="40%" display="flex" justify-content="center"}
    public class Address
    {
       public DisplayAddress(){}
    }
    public class Person
    {
       public Address address;
       public void DisplayPersion() {}
    }
  • Association*
    Association{:width="40%" display="flex" justify-content="center"}
    public class Company
    {
       public List<Person> person;
    }
    public class Person
    {
       public Company company;
    }

집합 & 연관집합

  • 클래스가 다른 클래스를 속성으로 갖는 관계
  • 의미적으로는 전체와 부분의 관계
  • 전체 클래스가 일방적으로 부분 클래스를 속성으로 갖는 경우 Aggregation
  • 전체 클래스와 부분 클래스가 서로를 속성으로 갖는 경우 Aggregation Association
  • 전체 클래스와 부분 클래스 사이의 생명주기가 독립적

합성 & 복합연관

  • 클래스가 다른 클래스를 속성으로 갖는 관계
  • 의미적으로는 전체와 부분의 관계
  • 전체 클래스가 일방적으로 부분 클래스를 속성으로 갖는 경우 Composition
  • 전체 클래스와 부분 클래스가 서로를 속성으로 갖는 경우 Composite Association
  • 전체 클래스와 부분 클래스 사이의 생명주기가 독립적

직접연관 / 연관 / 집합 / 집합연관 / 합성 / 복합연관 사이의 차이점과 공통점

Direct Association Association Agregation Aggregation Association Composition Composition Association
참조관계 A가 ->B를 A랑 - B랑 A가 -> B를 A랑 - B랑 A가 -> B를
의미관계 연관 있는 친구 연관이 있는 전체와 부분 전체와 부분 전체와 부분
생명주기 독립적 독립적 독립적 독립적 B가 A에 의존

연관과 집합의 차이점

연관 : student와 subject처럼 서로간의 연관만있음
집합 : car와 engin처럼 전체가 부분이 없으면 안돌아감. 하지만 차의 뼈대가 먹는다고 엔진이 무조건 터지진 않음
합성 : 집과 방처럼 집이 무너지면 방도 같이 무너짐

'CS' 카테고리의 다른 글

[CS] SOLID 원칙  (0) 2024.10.14
[CS] 객체지향 프로그래밍의 4대 특징  (0) 2024.10.14