본문 바로가기

Coding/내일배움캠프

[내일배움캠프] TypeScript 5주차 | Node.js 4기 | Day 59 | 24.03.03.(일)

01. 클래스

 

  • 클래스는 객체를 만들기 위한 틀
  • 속성은 객체의 성질을 정함
  • 생성자
  • 클래스 접근 제한자

 

02. 상속

 

  • 상속을 통해 기존 클래스의 속성과 메서드를 물려받아 새로운 클래스를 정의할 수 있다.
  • extends 키워드를 사용
  • super 키워드는 자식 클래스가 부모 클래스를 참조하는 데 사용하는 키워드!
  • 서브타입, 슈퍼타입
  • upcasting, downcasting

 

03. 추상 클래스

 

  • 인스턴스화 할 수 없는 클래스
  • 상속을 통해 자식 클래스에서 메서드를 제각각 구현하도록 강제하는 용도
  • abstract 키워드를 사용하여 정의
  • 1개 이상의 추상 함수가 있는 것이 일반적

 

04. 인터페이스

 

  • 객체가 가져야 하는 속성과 메서드를 정의
  • 추상 클래스와 인터페이스의 차이


추상 클래스 인터페이스
구현부 제공 여부 클래스의 기본 구현 제공 객체의 구조만 정의
상속 메커니즘 단일 상속만 지원 다중 상속을 지원
구현 메커니즘 반드시 추상 함수를 구현해야 인터페이스에 정의된 모든 메서드를 전부 구현해야

 

  • 기본 구현을 제공하고 상속을 통해 확장하는데 초점을 맞추고 싶다면 -> 추상 클래스
  • 객체가 완벽하게 특정 구조를 준수하도록 강제하고 싶다면 -> 인터페이스

 

05. 객체 지향 설계 원칙 - S.O.L.I.D

 

  1. S(SRP. 단일 책임 원칙) -> ⭐️ 매우 중요 ⭐️

    - 클래스는 하나의 책임만 가져야 한다.
  2. O(OCP. 개방 폐쇄 원칙

    -
    기존 코드를 변경하지 않고도 기능을 확장할 있어야 한다.
  3. L(LSP.리스코프 치환 원칙)

    -
    서브타입은 기반이 되는 슈퍼타입을 대체할 있어야 한다.
  4. I(ISP. 인터페이스 분리 원칙)

    -
    해당 클래스에게 무의미한 메소드의 구현을 막자.
  5. D(DIP. 의존성 역전 원칙)

    -
    하위 수준 모듈(구현 클래스)보다 상위 수준 모듈(인터페이스) 의존을 해야 한다.