객체 지향 프로그래밍이란

객체란 하나의 역할을 수행하는 '메소드와 변수(데이터)'의 묶음으로 봐야 한다.

객체 지향 vs 함수 지향

함수형은 일급 객체가 함수 ↔ 객체 지향은 일급 객체가 객체,클래스가 된다.

객체 지향은 접근 대상 제어하고 내부 데이터 값 변경이 일어날 수도 있다 ↔ 함수 지향은 입력이 있으면 출력이 있고, 사이드 이펙트가 없어야 함(순수 함수) 즉 내부의 값이 변경되면 안됨.

<aside> 💡 일급 객체란 아래와 같은 조건을 모두 만족한 객체를 뜻한다.

  1. 객체를 변수에 할당한다
  2. 객체를 매개변수로 전달한다
  3. 객체를 return할 수 있음

</aside>

SOLID

https://victorydntmd.tistory.com/291 https://velog.io/@kyle/객체지향-SOLID-원칙-이란

객체 지향 프로그래밍을 위한 5대 원칙이라고 함

Single Response Principle : 객체는 하나의 책임만 저야함 (응집도 높게, 결합도 낮게)

Open Closed Principle : 객체는 변화에는 닫혀있고 기능 추가에는 열려있어야 함

Liskov Substitution Principle : 부모의 일은 자식도 할 수 있도록

Interface Segregation Principle : 인터페이스 단일 책임 법칙이라고 생각하면 됨

Dependency Inversion Principle : 추상도가 높은 친구를 의존성으로 가지기

캡슐화

정보은닉을 해서 기존의 객체를 사용하는 다른 객체가 이를 변화시키지 못하게 하는 방법임