절차적 언어
-객체 지향 프로그래밍 등장이전
-초기의 프로그래밍 언어
-순차적인 명령의 조합
객체지향 언어
-"클라스"라고 부르는 데이터 모델의 청사진을 사용해 코드작성
-현대의 언어들의 대부분(Java, C++,C# ...)
-JavaScript :객체 지향으로 작성 가능
객체 지향 프로그래밍
-데이터의 접근과 데이터의 처리 과정에 대한 모형을 만들어 내는 방식
-데이터와 기능이 별개가 아닌 묶음으로 처리(메서드와 속성이 존재)
-자바스크립트는 객체 지향 패턴으로 작성 가능
-OOP: 모든 것은 "객체"로 그룹화, 재사용성,
OOP Basic Concepts 4가지
-Encapsulation(캡슐화)
1.데이터와 기능을 하나의 단위로 묶는 것
2.은닉(hiding): 구현은 숨기고 동작은 노출시킴, 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것. 객체 외부에서 필요한 동작(메서드)만 노출시킴.
3.느슨한 결함(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음
코드 실행 순서에 따라 절차적으로 코드 작성하는 것x, 코드가 상징하는 실제모습과 닮게 코드를 모아 결합하는 것
(코드만 보고도 인스턴스 객체의 기능을 상상할 수 있게 작성하는 것)
->코드를 단순화 시키고 재사용성을 높임
-Ingeritance(상속)
:기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는 것/ 부모 클래스의 특징을 자식 클래스 물려받는 것
->불필요한 코드를 줄요 재사용성을 높임.
-Abstraction(추상화)
:실제 노출되는 부분을 단순하게 만든다는 개념.
->단순화된 사용으로 변화에 대한 영향 최소화
-Polymorphism(다형성)
:똑같은 메서드라 하더라도 다른 방식으로 구현될 수 있음. 다양한 형태로 나타남
->동일한 메서드에 대해 객체의 특성에 맞게 달리 작성하는 것이 가능.
=>꼭알아두기!!