boostcamp Day06 학습정리

ttobe·2023년 7월 17일
0

boostcamp

목록 보기
4/15
post-thumbnail

- 오늘 공부

1) 자바스크립트 Class

class MyClass {
  prop = value; // 프로퍼티

  constructor(...) { // 생성자 메서드
    // ...
  }

  method(...) {} // 메서드

  get something(...) {} // getter 메서드
  set something(...) {} // setter 메서드

  [Symbol.iterator]() {} // 계산된 이름(computed name)을 사용해 만드는 메서드 (심볼)
  // ...
}

다음과 같이 기본적으로 사용하고,

class Animal {

  constructor(name) {
    this.speed = 0;
    this.name = name;
  }

  // ...
}

class Rabbit extends Animal {

  constructor(name, earLength) {
    super(name);
    this.earLength = earLength;
  }

  // ...
}

다음과 같이 상속을 사용한다.
해당과 같이 super를 사용하는 이유는 다음과 같다.

자바스크립트는 '상속 클래스의 생성자 함수(derived constructor)'와 그렇지 않은 생성자 함수를 구분합니다. 상속 클래스의 생성자 함수엔 특수 내부 프로퍼티인 [[ConstructorKind]]:"derived"가 이름표처럼 붙습니다.

일반 클래스의 생성자 함수와 상속 클래스의 생성자 함수 간 차이는 new와 함께 드러납니다.

일반 클래스가 new와 함께 실행되면, 빈 객체가 만들어지고 this에 이 객체를 할당합니다.
반면, 상속 클래스의 생성자 함수가 실행되면, 일반 클래스에서 일어난 일이 일어나지 않습니다. 상속 클래스의 생성자 함수는 빈 객체를 만들고 this에 이 객체를 할당하는 일을 부모 클래스의 생성자가 처리해주길 기대합니다.

이런 차이 때문에 상속 클래스의 생성자에선 super를 호출해 부모 생성자를 실행해 주어야 합니다. 그렇지 않으면 this가 될 객체가 만들어지지 않아 에러가 발생합니다.

만들때 super로 이름을 만들어 줘야 함...!


- 추가 학습

1) SOLID

SRP - 단일 책임 원칙, 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다.
하나의 클래스 하나의 기능.
SRP
LSP - 리스코프 치환 원칙, 서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다.
하위 클래스 is a kind of 상위 클래스 - 하위 분류는 상위 분류의 한 종류다.
구현 클래스 is able to 인터페이스: 구현 분류는 인터페이스할 수 있어야 한다.

리스코프 치환 원칙 위배
family
아버지 - 딸(계층도/조직도) 딸은 아버지의 한 종류가 아니다.

리프코프 치환 원칙 만족
animal

동물 - 펭귄 구조(분류도)

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기