주로 초기의 프로그래밍 언어.
절차적 언어는 순차적인 명령의 조합이다.
class를 사용해서 코드를 작성한다.
javascript는 객체 지향으로 작성 가능하다.
현대의 언어들이 대부분 객체지향의 특징을 가진다.
1.캡슐화
- 데이터와 기능을 하나로 묶는 것.
- 은닉 : 구현은 숨기고, 동작은 노출시킨다.
- 느슨한 결합 : 언제나 구현을 수정할 수 있다.
코드 실행 순서에 따라 절차적으로 코드를 작성하는게 아닌, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것.
내부 데이터나 내부 구현이 외부로 노출되지 않도록 하는 것.
디테일한 구현이나 데이터는 숨기고, 객체 외부에서 필요한 동작만 노출시킨다.
은닉화를 사용해서 작성하면, 객체 내 메서드의 구현만 수정해도 노출된 메서드를 사용하는
코드 흐름은 바뀌지 않게 할 수 있다.
<->
❗반대로, 절차적 코드의 경우 데이터의 형태가 바뀔 때, 코드의 흐름이 바뀔 수가 있어 유지보수가 힘들다.
- 추상화
- 내부의 구현은 복잡하지만, 노출되는 부분은 단순하게 만든다.
- 사용하는 사람이 쉽게 느낄 수 있도록 단순한 이름으로 정의하는 것.
- 클래스 정의 시, 인터페이스는 메서드와 속성을 정의한 것.
- 상속
- inherit. 부모 클래스의 특징을 자식 클래스가 물려받는다.
- 다형성 ( 다양한 형태를 형성 )
- 같은 이름을 가진 메서드라도 쓰임새에 맞게 다르게 동작함.