Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기
    • 부스트캠프
    • iOS
    • visionOS
    • Backend
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • 소프트웨어 공학
  • 소프트웨어공학
  • authenticationinterceptor
  • 소프트웨어 테스트
  • alamofire
  • guard
  • Optional
  • 부스트캠프
  • image
  • CS
  • constraint
  • boj
  • 백준
  • Git
  • Python
  • SwiftUI
  • 오블완
  • Concurrency
  • 티스토리챌린지
  • MVC
  • AVAudioSession
  • jekyll
  • 알고리즘
  • AutoLayout
  • ios
  • 모듈화
  • Swift5.7
  • if let
  • swift
  • ImageResource

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
[소프트웨어공학] 클래스 다이어그램
CS

[소프트웨어공학] 클래스 다이어그램

2022. 9. 15. 12:57

클래스 다이어그램

시스템의 정적 구조

시스템을 구성하는 클래스와 그들 간의 관계 표현

클래스 다이어그램

  • 클래스 이름, 속성, 연산
  • 속성과 연산의 접근 제어자
    • + (public), - (private), # (protected), ~ (package)
  • 속성의 표현
    • static은 밑줄
    • [+ or - or # or ~] 이름: 타입[다중성 정보][=초기값]
  •  연산의 표현
    • static은 밑줄
    • [+ or - or # or ~] 이름(인자1: 타입1, ..., 인자n: 타입n): 반환타입
표현식이 Swift 같네요 public func someFunc(num: Int, name: String) -> String 이런 느낌

 

 

제약 조건

제약조건: salary는 0보다 항상 크다

{ } 또는 노트 심볼 이용

 

다중성

다중성

클래스의 관계

연관, 일반화, 실체화, 집합, 의존 관계

 

클래스의 (개념적) 연관 관계

연관 관계

해석하자면 사람은 자동차를 0개 이상 소유할 수 있다. 자동차는 한 사람에게 소유된다고 해석된다.

// 코드로 표현하자면
class Person {
	private Car[] car;// 사람은 0개 이상의 차를 가질 수 있다.
}

class Car {
	private Person owner;// 차는 한 사람에게만 소유된다.(차의 소유자는 한 명)
}

 

연관 클래스

n명의 고객이 m개의 제품을 주문할 수 있다. (n ,m > 0)

  • 연관 관계에 속성 추가
  • 한 클래스에서 다른 클래스를 사용하는 경우
    1. 클래스의 속성에서 참조
    2. 연산의 인자/지역변수로 참조

 

클래스의 일반화 관계

기반 클래스와 파생 클래스 간에 is a kind of 관계

파생 클래스들의 공통(슈퍼) 클래스

 

기반 클래스 - 파생 클래스

 

클래스의 실체화 관계

인터페이스와 상속(구현) 클래스 간의 관계

can do this 관계

 

상속은 ----- 점선으로 표현

 

클래스의 집합 관계

  • 전체와 부분간의 관계
    • 집약
      • 한 객체(전체 객체)가 다른 객체(부분 객체) 포함
      • 생명 주기가 서로 독립적
      • 부분 객체는 다른 객체와 공유 가능
    • 합성
      • 부분 객체가 전체 객체의 생명 주기에 종속
      • 전체 객체가 소멸되면 부분 객체도 소멸

집약 관계 예시 (회원의 생명주기는 동호회 생명주기와 독립적임. 동호회가 사라져도 회원은 사라지지 않음!)

 

합성관계 예시 (직원 정보의 생명주기는 ERP 생명주기에 종속적임. 회사가 없으면 직원도 없다!)

 

클래스의 의존 관계

  • 일시적 연관 관계
    • 서비스를 이용할 때마다 서비스 제공 객체가 변동
      • 사람-자동차: 연관 관계 (지속적 서비스 제공)
      • 자동차-주유소: 의존 관계 (일시적 서비스 제공)
    • 연산의 인자/지역변수로 참조

자동차-사람: 연관 관계, 자동차-주유소: 의존 관계

 

클래스 다이어그램 작성

  1. 유스케이스 기술서 등의 문서에서 명사를 추출
    • 클래스 후보
      • 사물, 역할, 조직, 장소, 트랜잭션, 외부 시스템 등
    • 제외 대상
    • 시스템 전체, 중복, 모호함, 지나치게 상세, 속성/값/연산
  2. 클래스 간의 논리적 관계 조사
    • 객체 간의 상호작용 분석

 


이미지 출처

https://blog.naver.com/PostView.nhn?blogId=ljh0326s&logNo=221002118528

 

저작자표시 (새창열림)

'CS' 카테고리의 다른 글

[소프트웨어 공학] Maven  (1) 2022.09.26
[소프트웨어 공학] 객체지향 개발 프로세스  (0) 2022.09.19
[소프트웨어 공학] 순차 다이어그램(Sequence Diagram)  (0) 2022.09.19
[소프트웨어 공학] 패키지 다이어그램  (2) 2022.09.19
[소프트웨어공학] 모델링, UML, 유스케이스 다이어그램  (2) 2022.09.15
    'CS' 카테고리의 다른 글
    • [소프트웨어 공학] 객체지향 개발 프로세스
    • [소프트웨어 공학] 순차 다이어그램(Sequence Diagram)
    • [소프트웨어 공학] 패키지 다이어그램
    • [소프트웨어공학] 모델링, UML, 유스케이스 다이어그램
    Dev.YoungKyu
    Dev.YoungKyu
    iOS를 공부하고 있습니다

    티스토리툴바