###### tags: `2020 Boostcamp` # Day05-학습정리 ### 스스로 확인할 사항 - **`클래스`와 `오브젝트`, `인스턴스`에 대한 정의를 찾아보고, 자신이 이해한 내용을 자기만의 표현으로 정리한다.** - 클래스 - 객체를 만들기 위한 설계도 - 프로퍼티와 메서드들을 정의한다 - 오브젝트 - 소프트웨어 세계 상에 구현할 대상 - 인스턴스 - 소프트웨어 세계 상에 구현된 실체 - **객체지향 프로그래밍의 특징 중에서 상속과 다형성에 대해 학습하고 정리한다.** - 상속 - 기존의 클래스를 토대로 새로운 클래스를 만드는 방법 - 하위 클래스에서 상위 클래스의 맴버를 물려 받는다 - 다형성 - 여러가지 형태를 가지게 하는 능력 - 코드의 재사용성이 증대됨 - 서로 다른 객체가 동일한 메시지에 대해 다른 방법으로 응답할 수 있다 - **Class 와 Prototype 에 대한 공통점과 차이점을 학습하고 정리한다.** - 둘다 객체를 생성할 수 있는 프레임워크 기능을 한다 - 프로토타입은 기존의 객체를 복사해서 새로운 객체를 생성한다 - 프로토타입과 객체 생성자를 연결해 줘야 한다 - **this(또는 self)와 super 키워드 차이점에 대해 정리한다.** - super: 부모 클래스로부터 상속받은 필드나 메소드를 자식 클래스에서 참조하는 데 사용하는 참조 변수 - this: 자신의 필드나 메소드를 참조할 때 사용하는 참조 변수 - ex) 두 필드의 이름이 같은 경우, super와 this로 구별 가능하다 ### 다같이 확인할 사항 - **객체 인스턴스 비교하는 다양한 방법과 효율성에 대해 정리하고 비교한다.** > 1. Referential Equality: 객체 인스턴스가 같은 메모리공간에 있는지를 비교 > 2. Manual Comparison: 객체 인스턴스의 프로퍼티들을 읽어들이고 그들간 비교 > 3. Shallow Equality: 객체 인스턴스의 프로퍼티 리스트간 비교 > 4. Deep Equality: shallow equality 와 동일하게 진행하지만 nested object 에 대해서도 check진행 ​ 인스턴스를 비교하는 데에 있어서 Reference를 비교하냐 그 속에있는 value들을 비교하냐의 상황에 따라 비교 해야할 요소가 다 다름 - **SOLID 원칙에서 SRP 단일책임원칙에 대해 학습하고 정리한다** - Single Responsiblity Principle (단일 책임 원칙) > 소프트웨어의 설계 부품(클래스, 함수 등)은 단 하나의 책임(기능)만을 가져야 한다 * 새로운 요구사항과 프로그램 변경에 있어서 영향 받는 부분이 적아야 한다 * 응집도는 높고 결합도는 낮은 프로그램 * 책임이 증가하면 내부 함수끼리 강한 결합을 하게 되고 이는 유지보수 비용을 높인다 - **SOLID 원칙에서 LSP 리스코프교환원칙 대해 학습하고 정리한다.** - Liskov Substitution Principle (리스코프 치환 원칙) > 자식 클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 한다. * 부모 클래스와 자식 클래스 사이의 행위에는 일관성이 있어야 한다 * 부모 클래스의 인스턴스 대신 자식 클래스의 인스터스를 사용해도 문제가 없어야 한다