이 셋의 차이점 및 특성을 설명 할 줄 알아야 함 (면접때 자주 나오는 질문)
개념
객체(Object) : 단위, 개념. 특정한 기능을 가지고 실체하는 것. 프로그래밍에선 클래스를 기반으로 생성된 실제 데이터로 보기도 함. 클래스라는 설계도를 바탕으로 메모리에 생성된 실체
클래스(Class) : 문법. 클래스는 설계도 또는 청사진. 객체를 만들기 위한 틀이나 구조를 정의하는 것. 객체가 가져야 할 데이터와 그 데이터를 처리하는 방법을 클래스 안에 정의함
인스턴스(Instance) : 메모리에 할당 된 객체/클래스. 클래스를 기반으로 생성된 특정 객체.
캡슐화 (Encapsulation)
상속 (Inheritance)
다형성 (Polymorphism)
추상화 (Abstraction)
객체 (Object)
단일 책임 원칙 (Single Responsibility Principle, SRP)
개방-폐쇄 원칙 (Open-Closed Principle, OCP)
리스코프 치환 원칙 (Liskov Substitution Principle, LSP)
인터페이스 분리 원칙 (Interface Segregation Principle, ISP)
의존 역전 원칙 (Dependency Inversion Principle, DIP)
의존성을 낮추고 결합도를 낮춘다
객체의 자율성을 높이고 응집도를 높인다
결합도 / 의존도를 낮추는 법!
-> 책임(=응집도)를 이동시킨다.
-> 관람객의 책임? 영화관의 책임? 판매원의 책임은 무엇인가
응집도를 높이는 법!
-> 연관성이 없는 작업은 다른 객체(클래스)에 위임 함
-> 객체 내부의 상태를 캡슐화 하고 오직 메세지를 통해서만 상호작용 함
-> 단일 클래스 상속보단 다중 인터페이스 상속(인터페이스 분리 원칙이 생각나네😀)