오늘의 고생
typescript 구글링
npm install typescript npx tsc -v npx tsc --init
npx tsc -w npm install --save-dev ts-node npx ts-node 뭐뭐뭐.ts
중요한 객체지향 이야기
정보은닉을 목적
멤버변수앞에 _를 붙여 클래스 내부의 변수를 숨긴 것 처럼 표시
getter setter사용해 접근제한
이미 정의된 상위클래스의 특징을 하위 클래스가 물려 받음
코드의 중복 제거, 재사용성 증가
class Child extends Mother {
// Mother 클래스를 상속받은 Child 자식 클래스
constructor(name, age, tech) {
// 자식 클래스 생성자
super(name, age, tech);
}
}
extends로 부모클래스를 상속받을 수 있다.
super라는 문법으로 부모클래스의 생성자를 호출 가능
객체에서 공통된 부분을 모아 상위 개념으로 새롭게 선언
추상화 → 추상 클래스 → 인터페이스로 모델링 향후 다형성으로 확장할 수 있도록 설계
동일한 메소드의 이름을 사용하지만 클래스마다 다르게 구현되는 개념
다형성의 대표적인 예시
오버라이딩
부모클래스에서 선언한 메소드를 자식에서 새롭게 선언
오버로딩
같은 이름의 메소드를 여러개 정의 파라미터의 유형과 개수를 다르게 하여 다양한 호출에 응답 가능
객체들이 협력하는 과정 속에서 생기는 의존하는 정도
모듈에 포함된 내부요소들이 연관된 관계의 정도
하나의 객체는 하나의 책임을 가져야 한다.
적절한 클래스의 크기를 제시
개량폐쇄원칙OCP
기존 코드에 영향 주지 않고 소프트웨어에 새로운 기능이나 구성요소를 추가할 수 있어야함
프로그램의 정확성을 깨뜨리지 않으면서 하위타입의 인스턴스로 바꿀 수 있어야 한다
부모 클래스 자식클래스가 있는경우 서로를 바꾸더라도 잘못된 결과 도출 x
특정클라이언트를 위한 인터페이스가 여러개 범용 인터페이스 하나보다 낫다.
최대한 인터페이스를 작게 유지해야한다
프로그래머는 추상화에 의존해야함 구체화에 의존 x