객체지향이란?
- 프로그래밍 패러다임의 하나로, 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다.
- 자바스크립트는 class 문이 포함되지 않은, prototype 기반의 객체지향 프로그래밍 언어이다.
객체지향 프로그래밍의 4가지 특징 (OOP의 4대 특징)
- 캡슐화 (Encapsulation)
- 객체의 속성과 기능을 하나로 묶고, 실제 구현 내용 일부를 외부에 감추어 은닉하는 것
- 캡슐 알약에 비유할 수 있다. 알약의 내용물을 보려면 알약을 깨야 한다. 즉, 알약을 깨지 않으면 알약의 내용물을 알 수 없다. 이처럼 캡슐화는 객체의 속성과 기능을 하나로 묶고, 그 중 일부를 외부에 감추어 은닉하는 것이다.
- 추상화 (Abstraction)
- 객체의 공통된 속성과 행위를 묶어 이름을 붙이고, 이를 통해 객체를 식별하고 분류하는 것
- 예를 들면, 토끼, 코끼리, 호랑이 등은 모두 동물이라는 객체의 일종이다. 이 동물들은 모두 먹이를 먹고, 숨을 쉰다. 이처럼 객체들의 공통된 속성과 행위를 묶어 이름을 붙이고, 이를 통해 객체를 식별하고 분류하는 것이 추상화이다.
- 상속 (Inheritance)
- 부모 객체의 속성과 기능을 그대로 물려받아 새로운 객체를 만드는 것
- 예를 들면, 동물이라는 부모 객체가 가진 먹기, 자기, 숨쉬기 등의 기능을 그대로 물려받아 새로운 객체인 토끼를 만드는 것이다. 이처럼 부모 객체의 속성과 기능을 그대로 물려받아 새로운 객체를 만드는 것이 상속이다.
- 다형성 (Polymorphism)
- 같은 객체임에도 상황에 따라 다르게 동작할 수 있는것을 의미합니다.
- 예를 들어, 동물이라는 객체가 있을 때, 동물이라는 객체는 먹이를 먹는다는 기능을 가지고 있습니다. 이때, 동물이라는 객체가 토끼라는 객체로 변하면 토끼는 풀을 먹는다는 기능을 가지게 됩니다. 이처럼 같은 객체임에도 상황에 따라 다르게 동작할 수 있는 것을 다형성이라고 합니다.
객체지향 프로그래밍의 5가지 원칙 (SOLID)
- SRP (Single Responsibility Principle) 단일 책임 원칙
- 하나의 클래스는 하나의 책임만 가져야 한다.
- OCP (Open Closed Principle) 개방 폐쇄 원칙
- 확장에는 열려있고, 변경에는 닫혀있어야 한다.
- LSP (Liskov Substitution Principle) 리스코프 치환 원칙
- 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다.
- ISP (Interface Segregation Principle) 인터페이스 분리 원칙
- 인터페이스를 클라이언트에 특화되도록 분리해야 한다.
- DIP (Dependency Inversion Principle) 의존 역전 원칙
- 의존 관계는 추상화에 의존해야 한다.
Reference
'Javascript' 카테고리의 다른 글
Hoisting (호이스팅) 이란? (0) | 2023.03.28 |
---|---|
[ Redux ] Redux 란 무엇인가? (0) | 2023.01.19 |
[ JavaScript ] 크로스 브라우징 (0) | 2023.01.18 |
[ JavaScript ] Bundle 사이즈 줄이기 (0) | 2023.01.18 |
SSR, CSR, SSG (0) | 2023.01.17 |