S. SRP : ★ 단일 책임 원칙 ★ O. OCP : 개방 폐쇄 원칙 -> 인터페이스 혹은 상속 잘 쓰기 L. LSP : 리스코프 치환 원칙 I. ISP : 인터페이스 분리 원칙 D. DIP : 의존성 역전 원칙 1. SRP : ★ 단일 책임 원칙 ★ - 클래스는 하나의 책임만 갖기 - 기본적이고 제일 중요한 원칙 - 유저 서비스에서 유저 관련 액션만 하고 다른 액션은 금지 2. OCP : 개방 폐쇄 원칙 - 기존 코드를 변경하지 않고도 기능을 확장하기 (수정X) - 인터페이스나 상속을 통해 해결 가능 - 부모 클래스 기존 코드 변경 안하기 3. LSP : 리스코프 치환 원칙 - 서브타입은 기반이 되는 슈퍼타입을 대체 가능 - 논리적으로 엄격하게 관계가 정립 (자식클래스는 부모클래스의 기능 수정 X, ..
1. 추상클래스 - 인스턴스화를 할 수 없는 클래스 - 기본은 부모클래스가 하지만, 핵심 기능은 자식클래스에 위임하는 것 - 상속을 통해 자식클래스에서 메서드를 각각 구현하기 abstract class Shape { abstract getArea(): number; // 추상 함수 정의!!! printArea() { console.log(`도형 넓이: ${this.getArea()}`); } } class Circle extends Shape { radius: number; constructor(radius: number) { super(); this.radius = radius; } getArea(): number { // 원의 넓이를 구하는 공식은 파이 X 반지름 X 반지름 return Math.PI..
1. 상속 - 기존 클랙스의 속성과 메서드를 물려받아 새로운 클래스의 정의 가능 - extends 키워드 사용 class Animal { name: string; constructor(name: string) { this.name = name; } makeSound() { console.log('동물 소리~'); } } class Dog extends Animal { age: number; constructor(name: string) { super(name); this.age = 5; } makeSound() { console.log('멍멍!'); // 부모의 makeSound 동작과 달라요! } eat() { // Dog 클래스만의 새로운 함수 정의 console.log('강아지가 사료를 먹습니다.'..
1.객체 지향 프로그래밍을 구성하는데 핵심 = 클래스 2. 속성 : 객체의 성질 결정 (팥붕 /슈붕) 3. 메서드 : 객체의 성질을 변화 + 객체에서 제공하는 기능들을 사용하는 창구 - 붕어빵 주인 = 팥붕 -> 슈붕으로 변경 - 붕어빵 고객 = 팥붕의 가격이 3개의 1천원, 슈붕 2개의 1천원임을 알 수 있음 4. 객체 = 클래스의 인스턴스 (1) 클래스 정의 - class 키워드 사용 - new 키워드 : 객체 생성 가능 - constructor 키워드 : 생성자 ( 클래스 인스턴스 생성 & 초기화) => 인스턴스 생성 시 자동 호출 + 오직 1개만 존재 + 초기값을 지정하는 코드임 => DB 연결을 미리 가능 class Person { name: string; age: number; construc..
1.프로그램 세팅 (1) 터미널(cmd) 실행 : npm init -y : tsc --init --rootDir ./src --outDir ./dist --esModuleInterop --module commonjs --strict true --allowJS true --checkJS true (2) package.json 수정 : script 항목 "scripts": { "start": "tsc && node ./dist/index.js", "build": "tsc --build", "clean": "tsc --build --clean" }, (3) src 폴더 생성 > index.ts파일 생성 2. 인터페이스 & 데이터 정의 (index.ts) (1) 유저 인터페이스 - 유저는 어드민 또는 고객 in..
* enum : 간단한 상수 값 * object literal : 복잡한 구조 + 다양한 데이터 타입 1. enum - 열겨형 데이터 타입 - 상수의 그룹화에 적합 - 간단한 상수값 --> 각 멤버의 값이 변하면 안된다는 조건이 있음 2. object literal - 키 +값으로 구성된 객체 - [1,3,4],'k',7 의 값으로 바인딩 가능 --> number와 string 타입의 값만 대입 가능 - 복잡한 구조와 다양한 데이터 타입을 사용할 때 (맘대로 변경 가능) 3. 유틸리티 타입 (1) Partial - 일부 속성만 제공하는 객체 생성 가능 interface Person { name: string; age: number; } const updatePerson = (person: Person, ..