객체 지향 프로그래밍 패러다임이 등장하기 전에는 절차 지향 프로그래밍이 있었다.
초기의 C, 포트란 같은 언어들은 객체 지향의 개념이 없는 절차적 언어.
객체 지향 프로그래밍 패러다임이 등장하면서, 단순히 별개의 변수와 함수로 순차적으로 작동하는 것을 넘어, 데이터의 접근과, 데이터의 처리 과정에 대한 모형을 만들어 내는 방식을 고안.
데이터와 기능이 별개로 취급되지 않고, 한 번에 묶여서 처리.
이러한 객체 지향의 특징은 빠르게 현대 언어에 적용 되었다. 자바스크립트는 객체 지향 언어는 아니지만, 객체 지향 패턴으로 작성 가능.
"클래스"라고 부르는 데이터 모델의 청사진을 사용해 코드 작성.
OOP는 프로그램 설계 철학.
OOP의 모든 것은 "객체"로 그룹화.
OOP의 4가지 주요 개념을 통해 재사용성을 얻을 수 있다.
클래스는 일종의 원형(original form)으로, 객체를 생성하기 위한 아이디어나 청사진.
인스턴스는 클래스의 사례(instance object).
클래스는 객체를 만들기 위한 생성자(constructor) 함수를 포함.
느슨한 결합은 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닯게 코드를 모아 결합하는 것을 의미.
은닉화는 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것. 디테일한 구현이나 데이터는 숨기고, 객체 외부에서 필요한 동작(메서드)만 노출.
사람이 세계를 보고 이해하는 방법을 흉내 낸 방법론.