🌊 객체 지향 프로그래밍
객체 지향 vs 절차 지향
객체 지향 (OOP) | 절차 지향 (PP) | |
특징 | 캡슐화, 상속, 다형성, 추상화 | 순차적인 처리를 중요시되며, 프로그램 전체가 유기적으로 연결되도록 함 |
장점 | 재사용성, 생산성 향상, 자연적인 모델링, 유지보수의 우수성 | 빠른 실행 속도 |
단점 | 느린 개발 속도, 느린 실행 속도, 높은 난이도 | 유지보수의 어려움, 비효율적 |
언어 | JAVA, Objective-C, Swift, C++, Python, etc. | FORTRAN, C |
자바스크립트는 객체 지향 언어는 아니지만, 객체 지향 패턴으로 작성할 수 있다.
객체 지향 프로그래밍 (Object Oriented Programming)
- 사람이 세계를 보고 이해하는 방법을 흉내 낸 방법론
- OOP는 프로그램 설계 철학이다.
- OOP의 모든 것은 객체로 그룹화된다.
- OOP의 4가지 주요 개념을 통해 재사용성을 얻을 수 있다.
클래스
: 일종의 원형, 객체를 생성하기 위한 아이디어나 청사진, 객체를 만들기 위한 생성자 함수를 포함한다.
인스턴스
: 클래스의 사례
OPP의 4가지 주요 개념
1. 캡슐화 (Encapsulation)
- 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것
- 한 곳에서 변화가 일어나도 다른 곳에 미치는 사이드 이펙트를 최소화 시키는 것을 의미한다.
- 은닉 : 구현은 숨기고 동작은 노출
- 느슨한 결합에 유리 : 언제든 구현을 수정할 수 있다.
- 보호된 변수는 getter, setter 메서드로 간접적으로 접근 가능
- 코드가 복잡하지 않게 만들고 코드의 재사용성을 높인다.
2. 상속 (Inheritance)
- 부모 클래스의 특징을 자식 클래스가 물려받는다.
- 불필요한 코드를 줄여 코드의 재사용성을 높이나, 기능의 확장 관점으로 보아야한다.
3. 추상화 (Abstraction)
- 객체들이 공통적으로 필요로 하는 속성이나 동작을 하나로 추출해내는 작업.
- 세부적인 사물들의 공통적인 특징을 파악한 후 하나의 묶음으로 만들어내는 것
- 인터페이스를 단순화할 수 있다.
- 코드가 복잡하지 않게 만들고 변화에 대한 영향을 최소화한다.
4. 다형성 (Polymorphism)
- 똑같은 메서드라도 다양하고 다른 방식으로 구현할 수 있다.
- 동일한 메서드에 대한 조건문 대신 객체의 특성에 맞게 달리 작성이 가능해진다.
💡 참고
'🐣 STUDY > Java Script' 카테고리의 다른 글
🌊 [javascript] 배열 고차함수 (2) | 2023.03.15 |
---|---|
🌊 [javascript] 프로토타입과 클래스 (1) | 2023.03.15 |
🌊 [javascript] 클래스와 인스턴스 (2) | 2023.03.15 |
🌊 [javascript] 함수 (1) | 2023.03.13 |
🌊 [javascript] LocalStorage (2) | 2023.03.12 |