객체지향
용어
- 클래스 class
- 객체를 만들기 위한 설계도
- 객체 object
- class 라는 틀에서 생겨난 실체(instance)
- 실제 메모리에 할당된 물리적 실체
- 인스턴스 instance
- class 를 바탕으로 실체화된 객체
객체 지향 프로그래밍 특징
- 추상화(abstraction)
- cat, dog와 같은 class를 class pet()으로 비슷한 개념을 묶어서 정의하는 것
- 공통 속성과 행위를 추출하는 것
- 캡슐화(encapsulation)
- 객체, 즉 클래스의 내부 변수와 메소드를 하나로 패키징 하는 특징
- 상속성(inheritance)
- 자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것
- 다형성(polymorphism)
- 같은 메서드를 자식에서 재정의 하는것
- say hi()라는 메서드를 한국인과 이탈리아인이 다른 응답을 하도록 재정의
- https://yozm.wishket.com/magazine/detail/1396/
SOLID 원칙
객체 지향 프로그래밍을 설계할 때는 SOLID 원칙을 지켜야한다.
- S 단일 책임 원칙
- 단일 책임 원칙은 모든 클래스는 각각 하나의 책임만 가져야 하는 원칙
- O 개방-폐쇄 원칙
- 유지 보수 사항이 생긴다면 코드를 쉽게 확장할 수 있고 수정할때는 닫혀 있어야 하는 원칙
- 기존 코드는 잘 변경하지 않으면서 확장은 쉬워야 한다
- L 리스코프 치환 원칙
- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 하는 것
- I 인터페이스 분리 원칙
- 하나의 일반적인 인터페이스보다 구체적인 여러 개의 인터페이스를 만들어야 하는 원칙
- D 의존성 역전 원칙
- 자신보다 변하기 쉬운 것에 의존하던 것을 추상화된 인터페이스나 상위 클래스를 두어 변하기 쉬운 것의 변화에 영향받지 않도록 하는 원칙
enum
- 자바스크립트에서 enum
- enum : 상수값 중 비슷한 종류를 묶어두기 위한 용도
- enum의 장점
- 코드가 단순해지고, 가독성이 좋다.
- enum이란 이름 자체만으로도, 열거 의도를 분명히 알 수 있다.
- 하나의 변수에 대해서 고정값으로 이용이 가능
- 안정적이며, 읽기 쉽고 오류의 발생도 줄일 수 있다.
//javascript에서는 객체로 선언해서 enum을 사용할 수 있다. const Season = { SPRING : "spring", SUMMER : "summer", AUTUMN : "autumn", WINTER : "winter" }
- 다만, 위와 같이 설정하면 외부에서 값을 변경할 수 있다.
- Object.freeze
- Object.freeze() 메서드를 사용하면 객체의 값을 변경하지 못하게 할 수 있다.
//javascript에서는 객체로 선언해서 enum을 사용할 수 있다. const Season = { SPRING : "spring", SUMMER : "summer", AUTUMN : "autumn", WINTER : "winter" }; Object.freeze(Season); //선언값 참조 1. 객체.프로퍼티 if(true){ console.log(Season.SPRING); } 2. 구조분해할당 if(true){ const {SPRING} = Season; console.log(SPRING); }
'면접,CS' 카테고리의 다른 글
[면접,CS] 함수형 프로그래밍 (0) | 2023.01.05 |
---|---|
[면접,CS] 아키텍처 패턴 (0) | 2023.01.05 |
[면접,CS] 의존성주입(DI) (0) | 2023.01.05 |
[면접,CS] 디자인패턴 (0) | 2023.01.04 |
[면접,CS]라이브러리, 프레임워크 (0) | 2023.01.04 |