22.03.04_클래스다이어그램
본문 바로가기
CS Study/Csharp

22.03.04_클래스다이어그램

by KyeongMin 2022. 3. 4.
728x90
반응형

01.클래스다이어그램이란?

  • 1. 문제 해결을 위한 도메인 구조를 나타내어 보이지 않는 도메인 안의 개면과 같은 추상적인 개념을 기술하기 위해
  • 2.소프트웨어의 설계 혹은 완성된 소프트웨어의 구현 설명을 목적으로 할 수 있음
  • 시스템에서 사용되는 객체타입(클래스)을 정의하고 그들 간에 존재하는 정적인 관계를 다양한 방식으로 표현한 다이어그램
    • 클래스 다이어그램은 객체지향 SW시스템을 분석하고 설계하는 데 사용되는 핵심적인 모델
    • 객체지향 SW시스템은 클래스와 그 관계로 뼈대가 구성되기 때문에
      • 이를 정의한 클래스 다이어그램은 곧 시스템의 구현될 모습을 정의한 것임
      • 클래스 다이어그램은 분석되거나 설계되는 모든 클래스를 한장의 다이어그램으로 정의한것
  • 클래스의 정적인 정의와 관계를 표현
  • 객체가 아닌 클래스는 본질적으로 정적
    • 시간과 조건이 개입되지 않기 때문임
  • 그러나 객체는 그 자체가 동적인 개념을 가짐, 클래스에서 파생된 것이 객체
    • 객체는 상태와 행위가 시간과 구체적인 조건에 따라 변화하고, 또한 다른 객체와 동적으로 상호 작용하는 것이기 때문

02.작성목적

  • 대표적인 UML의 다이어그램이라고 할 수 있는 목적은 아래와 같음
  • 객체지향 SW시스템의 기본 단위인 클래스를 식별하고 그 관계를 정의하는 유용한 방식을 제공
    • 객체지향 SW시스템의 기본 단위인 클래스의 정의를 용이하게 함으로써 시스템을 구축하는 본격적인 단계로 인도
  • 클래스 간의 정적인 협력관계를 정의함으로써 시스템을 이해하는데 용이하게 함
    • 하나의 클래스가 할 수 있는 일은 적음, 한 단위의 임무를 수행하려면 클래스간의 협력은 필수적으로 필요함
    • 이러한 클래스간의 정적인 협력관계를 정의함으로써 시스템을 분석하고 이해하는데 도움을 줌
  • 클래스의 오퍼레이션과 속성을 상세히 정의함으로써 SW시스템을 설계함
    • 클래스의 속성과 오퍼레이션을 상세히 정의하는 일은 객체지향 SW시스템에 있어서의 설계를 의미
    • 이러한 설계관점의 작업을 쉽게 수행하는데 도움을 주어, 시스템 구축 과정에 큰 역할을 함
  • 논리적인 관점으로 부터 물리적인 관점까지 시종 일관된 형식으로 SW시스템을 분석, 설계하는 방식을 제공
    • 기존 방식의 가장 큰 단점인 분석/ 설계 모델간의 차이를 극복하고,
    • 동일한 형식과 관점을 제공함으로써 의미의 소실없이 효과적인 시스템 분석, 설계방식을 제공함

03.작성시기

  • 다이어그램을 작성하는 시기마다 그 관점이 변함
  • 분석단계 -> 개략설계 단계 -> 상세 설계 단계
    • 클래스 다이어그램을 작성하려면 사용자의 요구사항이 정의되고, 개발할 SW시스템에 대한 범위가 정의 되어야 함

04.작성시 3가지 관점

  • 클래스 다이어그램을 처음부터 상세하게 정의할 수는 없음
    • 그래서 상세한 클래스 다이어그램을 얻기 위해 단계적으로 상세화시켜 나가는 방식을 사용
    • 아래와 같이 3가지 관점으로 반복적이면서 점증적인 방식으로 작성해 나감
  • Conceptual level
    • 개발범위에 속해있는 문제영역에 대해 단순한 관계를 도출하는데 중점
    • 업무 관점의 class들만 도출하고, 구현에 관련된 시각은 최대한으로 배제
  • Specification level
    • 구현관점을 살려 모델링을 수행
    • 어떻게 코딩할 건지에 대한 관점을 배제
    • 클래스의 속성과 오페이션을 될 수 있는 한 상세히 정의하고,
      • 구체적인 플랫폼(개발언어의 특성등)특성을 반영하지 않음
  • Implementation level
    • 언어와 개발플랫폼이 가진 특성 및 제한 사항을 반영
    • 정의된 class를 보고 정해진 개발언어로 개발자가 코딩을 하기에 충분한 정보를 모두 표현

05. 클래스 다이어그램의 기본 요소

  • 접근제어자 리스트
    • + : public
    • - : private
    • #: protected
  • 형식
    • 속성
      • 접근제어자 이름 : 타입 = 기본값
        • Ex) - title : String = ""
    • 메서드
      • 접근제어자 이름(파라미터 속성): 리턴값
        • Ex) +setTitle(String)
        • Ex)+getTitle():String
    • interface와 abstract와 같은 요소들은 <<>>을 이용해서
      • <<interface>>, <<abstract>>로 나타낼 수 있음

https://github.com/3DPIT/study/blob/master/02.studyData/05.Csharp/2022/22.03.04_%ED%81%B4%EB%9E%98%EC%8A%A4%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8/22.03.04_%ED%81%B4%EB%9E%98%EC%8A%A4%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8.md

 

GitHub - 3DPIT/study

Contribute to 3DPIT/study development by creating an account on GitHub.

github.com

 

728x90
반응형

'CS Study > Csharp' 카테고리의 다른 글

22.03.09_Nuke적용메뉴얼  (0) 2022.03.09
22.03.05_템플릿메소드  (0) 2022.03.06
22.03.02_x64,x86,AnyCpu  (0) 2022.03.02
22.03.02_obj와bin  (0) 2022.03.02
22.03.02_컴파일타임과런타임의차이  (0) 2022.03.02

댓글