NodeJS(4기) 31일차

형집·2022년 12월 27일

NodeJS(4기)

목록 보기
39/56

오늘의 고생

typescript 구글링

npm install typescript
npx tsc -v
npx tsc --init

npx tsc -w
npm install --save-dev ts-node
npx ts-node 뭐뭐뭐.ts

중요한 객체지향 이야기

객체지향

  • 소프트웨어 핵심을 기능이 아닌 객체로 삼아 누가 어떤 일을 할 것인가
  • 책임과 권한을 가진 객체들이 서로 메시지를 주고 받으며 기능을 수행

객체 지향적인 sw?

  • 캡슐화 다형성 클래스 상속을 지원하는가?
  • 데이터 접근제한을 걸 수 있는가

캡슐화

정보은닉을 목적
멤버변수앞에 _를 붙여 클래스 내부의 변수를 숨긴 것 처럼 표시
getter setter사용해 접근제한

상속

이미 정의된 상위클래스의 특징을 하위 클래스가 물려 받음
코드의 중복 제거, 재사용성 증가

class Child extends Mother {
  // Mother 클래스를 상속받은 Child 자식 클래스
  constructor(name, age, tech) {
    // 자식 클래스 생성자
    super(name, age, tech);
  }
}

extends로 부모클래스를 상속받을 수 있다.
super라는 문법으로 부모클래스의 생성자를 호출 가능

추상화

객체에서 공통된 부분을 모아 상위 개념으로 새롭게 선언
추상화 → 추상 클래스 → 인터페이스로 모델링 향후 다형성으로 확장할 수 있도록 설계

다형성

동일한 메소드의 이름을 사용하지만 클래스마다 다르게 구현되는 개념

다형성의 대표적인 예시
오버라이딩
부모클래스에서 선언한 메소드를 자식에서 새롭게 선언
오버로딩
같은 이름의 메소드를 여러개 정의 파라미터의 유형과 개수를 다르게 하여 다양한 호출에 응답 가능

의존성

객체들이 협력하는 과정 속에서 생기는 의존하는 정도

응집도

모듈에 포함된 내부요소들이 연관된 관계의 정도

프로그래밍 패러다임

  • 프로그래밍 패러다임
    -> 구조적 프로그래밍
    -> 기능을 중심으로 개발
    -> 가장 처음으로 적용된 패러다임
  • 객체지향프로그래밍
    -> 프로그램 처리단위가 객체인 프로그래밍 방법
    -> 현실 세계를 모델링
  • 함수형프로그래밍
    -> 함수를 중심으로 개발을 진행

객체지향 프로그래밍을 사용해야 하는 이유

  • 데이터와 프로세스를 하나의 단위로 처리하는 특성
  • 어떤 코드에서 문제가 발생 직관적으로 인지 가능
  • 해당 로직을 수행하는 코드만 수정하면 문제 해결

객체 지향 설계 5원칙 (SOLID)

단일책임의 원칙 SRP

하나의 객체는 하나의 책임을 가져야 한다.
적절한 클래스의 크기를 제시
개량폐쇄원칙OCP
기존 코드에 영향 주지 않고 소프트웨어에 새로운 기능이나 구성요소를 추가할 수 있어야함

리스코프치환원칙 LSP

프로그램의 정확성을 깨뜨리지 않으면서 하위타입의 인스턴스로 바꿀 수 있어야 한다
부모 클래스 자식클래스가 있는경우 서로를 바꾸더라도 잘못된 결과 도출 x

인터페이스 분리 원칙 ISP

특정클라이언트를 위한 인터페이스가 여러개 범용 인터페이스 하나보다 낫다.
최대한 인터페이스를 작게 유지해야한다

의존성역전원칙 DIP

프로그래머는 추상화에 의존해야함 구체화에 의존 x

profile
개발자

0개의 댓글