유스케이스, 클래스 다이어그램, SOLID원칙

eunoia73·2025년 1월 2일
0

TIL

목록 보기
12/32

객체지향
객체(Object), 클래스(Class), 메시지(Message)

클래스 - 설계도. 객체를 생성할 수 있는 구조와 정보를 가지고 있는 틀
메시지 - 객체들 사이의 상호작용 수단. 어떤 객체가 다른 객체에게 특정 작업을 요청하는 신호

유스케이스 다이어그램(UML)

  • 스테레오 타입!
    <<include>> : 포함관계. 공통적인 기능. 유스케이스의 수행결과에 의존.
    <<extend>> : 확장관계. 부가적으로 추가된 기능
고객은 도서를 대여, 반납한다. 대여, 반납할 때 도서입력과 고객확인을 해야 한다. 도서 예약 기능 도중에 예약이 가능한지 확인하는 과정을 추가적으로 수행할 수 있다.

클래스 다이어그램

클래스명, 속성, 메서드로 구분한다.

  • 집합관계 : 독립적인 구성요소로 연관
  • 복합관계 : 구성요소가 영구적인 요소로 구성됨. 강한 집합 연관으로 각 클래스는 오직 하나의 전체 클래스에만 속함

ex)
컴퓨터 세트 ----집합관계---- 본체, 마우스, 모니터, 스피커, 키보드
본체 ----복합관계---- CPU, RAM, HDD

SOLID 원칙

SRP(Single Responsibility Principle) - 단일 책임 원칙
: 클래스와 모듈은 단일 작업에 중점을 두어야 한다.
OCP(Open Closed Principle) - 개방/폐쇄 원칙
: 확장에는 Open하고 수정에는 Close되어야 한다.
클래스를 수정하지 않고도 클래스의 행위를 확장할 수 있어야 한다.
LSP(Liskov Substitution Principle) - 리스코프 대체 원칙
: 부모 클래스의 인스턴스를 해당 자식 클래스 중 하나의 인스턴스로 교체할 수 있게 설계해야 한다.
부모 클래스가 무언가를 할 수 있다면 자식클래스도 할 수 있어야 한다.
ISP(Interface Segregation Principle) - 인터페이스 분리 원칙
: 몇 개의 큰 인터페이스가 있는 것보다 작은 인터페이스가 많은 것이 바람직하다.
DIP(Dependency Inversion principle) - 의존성 역전 원칙
: 의존 관계 수립 시 변화하기 어려운 것에 의존해야 한다.
구체적인 클래스가 아닌 추상화(인터페이스나 추상 클래스)에 의존해야 한다. 코드의 결합도를 낮추고 유연성을 높일 수 있다.

ex)
도형의 면적을 계산하고 결과를 화면에 출력하는 클래스 - 단일 책임 원칙(SRP)위반(면적 계산, 결과 출력)
Rectangle 클래스를 상속받아 정사각형 Square 클래스 구현 - 리스코프 대체 원칙(LSP)위반

0개의 댓글