프로그래밍 공부
작성일
2023. 12. 6. 15:55
작성자
WDmil
728x90

객체지향 프로그래밍에서 사용하는 설계도 로,

 

클래스 간의 객체상속, 데이터 전달 방식을 명시적으로 표현하는 개요도 이다.


클래스 다이어그램(Class Diragram) 을 사용함으로써 얻을 수 있는 이득

  • 자신의 프로그램을 명시적으로 표현할 수 있다.
    • 각 코드는 작성자가 아니면, 이해하기가 매우 힘들 수 있으나, 클래스 다이어그램으로 상속관계와 데이터 구조를 표현하면 더 쉽게 알 수 있다.
  • 전체 구조와 클래스 의존성을 파악하기 쉽다.
    • 데이터를 명시적으로 나타냄으로 각 데이터와 객체간 의존성을 파악하고, 객체 구조를 손쉽게 수정할 수 있다.
  • 유지보수에 용이하다.
    • 다른사람이 이해하기 편하다는것 은, 나중에 살펴보거나 코드구조를 잊었을 때 살펴볼경우. 다시 기억을 떠올리기가 쉽다는 의미로 코드에 수정사항이 발생하였을 경우. 또는 시스템의 수정을 할 경우 필요한부분을 갈아치울 수 있다.

 


클래스 다이어그램의 구조


Class

클래스는 3개 구역으로 나누어진 사각형으로 그린다.

 

클래스의 이름, 속성, 기능을 표기하며 이름은 필수로 명시해야 한다.

클레스의 세부사항은 필드와 메서드의 접근제한자, 필드명, 데이터타입, 매개변수, 리턴타입 등을 나타낸다.

  • 접근 제한자 (Access Modifier)
    • + : public
    •  - : private
    • # : protected
  • 속성 (Attribute)
    • 접근 제어자 이름 : 타입 = 기본값
  • 기능 (Method)
    • 접근 제어자 이름(파라미터 속성) : 리턴값
    • void 리턴일경우 생략할 수 있다.
    • + setTitle(String)
    • + getTitle() : String

클래스를 세부적으로 작성하는것 또한 중요하지만, 다이어그램을 그릴 때 의 목적을 명시하여. 구조도를 더 명확하게 표현하는것에 집중하는것 이 좋다.


Stero Type

 

Class 객체의 확장요소를 나타낸다.

 

주로 인터페이스 형태의 객체이거나 Utitlity형태의 객체이거나 등의 객체 구현방식에 따라 나타낼 수 있다.


Abstract Class / Method

 

추상클래스로, 1개이상의 메소드가 구현체 없이 명세만 할 경우 존재하는 클래스를 이야기한다.

이름과 메소드를 기울여 표현하거나, {abstract}를 사용하거나 하여 명확하게 표현할 수 있다.

 


Class RelationShip

 

클래스간의 관계도를 표현하는 방식이다.

 

화살표 또는 점선 같은 것으로 객체끼리의 관개성을 표시한다.

 


일반화 ( Generalization)

 

부모클래스와 자식 클래스 간의 상속관계를 나타낸다.

 

부모클래스는 자식클래스를 일반화 한 것이고, 자식클래스는 부모 클래스를 구체화 한 것 이다.

 

상속은 부모클래스의 필드와 메소드를 구체화 해 사용하며, 필요에따라 메소드를 재정의해 사용하게 ㅗ딘다.

 

부모클래스가 추상일 경우 반드시 Overriad해준다.

위에서 실선으로 연결하고 부모 클래스 쪽에 비어있는 삼각형 화살표를 그리는것 으로 표현한다.

 

위 그림에서는 Magician이 test.Jop을 상속받는다고 표현되어있다.

 


실체화 (Realization)

 

인터페이스의 기능을 실제고 구현한것 을 의미한다.

위 그림에서 인터페이스와 실체화 객체 사이에는 인터페이스쪽에 비어있는 삼각형과 점선 선을 사용하여 연결한다.

 


의존 (Dependency)

 

클래스 다이어그램에서 가장 많이 사용되는 관계로

 

어떤 클래스가 다른 클래스를 참조하는것 을 의미한다.

클래스 사이를 점선과 참조할 클래스에 점선으로 이어 화살표를 붙여서 표현한다.

 

참조는 다음과 같다.

  • 메서드 내 대상 클래스 객체 생성
  • 메서드 내 대상 클래스 객체 사용
  • 메서드 내 대상 클래스 메서드 호출
  • 메서드 내 대상 클래스 객체 리턴
  • 메서드에서 대상 클래스 객체를 매개변수로 받아서 사용하는것.

연관 (Association, Directed Association)

 

클래스 다이어그램에서 Association은 다른객체의 참조를 가지는 필드를 의미한다.

 

위의 다이어그램은 두가지 형태를 나타내고 있다.

 

  • 일반적인 Association
  • 실선 한개로 연결한다.
  • 방향이 없음으로 User가 Phone를 참조할 수도 그 반대가 될 수도 있다. 또는 그 두가지 전부 일 수 있다.

 

  •  Directed Association
  • 클래스를 실선으로 연결 후 끝에 화살표를 추가한다.
  • user에서 Phone으로 화살표가 향함으로, User가 Phone를 참조하는걸 의미한다.
  • -phones는 역할명 을 나타내고, 어떤 역할로 참조되는지 의미한다.

 

*은 개수를 나타내는데, 대상 클래스에 가질 수 있는 인스턴스의 범위를 나타낸다.

  • 1  : 1개
  • *  : 0 ~ n개
  • n...m : n부터 m까지의 연관관계

집합 (Aggregation, Shared Aggregation)

 

Association 관계를 조금 더 특수하게 나타내 전체와 부분의 관계를 나타낸다.

 

집한관계를 나타내는것 임으로 Collection이나 Array등을 이용하는 관계이다.

 


합성 (Compositon, Composite Aggregation)

 

Aggregation과 비슷하게 전체와 부분의 집합관계를 나타낸다. 그러나, Aggeration보다 더 강한. 소유권에 영향을 미치는 집합관계를 이야기한다.

윗부분의 다이아몬드 모양이 아랫부분 화살표를 소유한다.

 

part가 whole에 독립적이고, whole이 part를 빌려쓰는것과 비슷하게 동작한다.

 

특징점

 

  • 위의 이미지에서 part를 가지는 whole인스턴스가 part인스턴스의 전체 수명을 책임진다.
  • part에 해당하는 인스턴스는 공유될 수 없다.
  • part가 공유될 경우, DeepCopy를 통해 공유해야 한다.

 

 

화살표 정리

ㅏㅂ

728x90

'컴퓨터 용어 정리' 카테고리의 다른 글

스레드와 멀티스레딩  (0) 2023.12.14
DirectX Particle Trail  (0) 2023.12.09
행동 객체화 방법 [ FSM 응용 ]  (0) 2023.12.01
유한 상태 기계방법[ FSM(Finite State Machine) ]  (0) 2023.12.01
DirectX Instancing  (0) 2023.11.28