JavaScript
JavaScript 객체 지향 프로그래밍
이히힣
2022. 7. 22. 23:21
[절차 지향 프로그래밍과 객체 지향 프로그래밍]
절차 지향(Procedural Programming) | 객체지향(Object-oriented programming) | |
종류 | c언어 등 | c++,자바스크립트 등 |
특성 | 컴퓨터의 처리구조와 유사 | 사람의 사고 방식에 가까움 |
메모리 사용 | 적음 | 많음 |
처리 속도 | 빠름 | 느림 |
재활용성 | 낮음 | 높음 |
코딩 이해 | 어려움 | 쉬움 |
디버깅 | 어려움 | 쉬움 |
🌈 어떤것이 더 좋고 나쁘다기 보다는 장단범을 알고, 상황에 맞는 방법론을 선택하는 것이 좋다!!
👊 메모리 관리가 중요하다면? 절차지향
👊 사람들과의 협업이 필요하다면? 객체지향
[객체 지향 프로그래밍(OOP) ]
- 객체 지향 프로그래밍은, 절차 지향 프로그래밍과는 다르게 데이터와 기능을 한곳에 묶어서 처리한다.
- 속성과 메서드가 하나의 "객체"라는 개념에 포함되며, 이는 자바스크립트 내장 타입인 object(object literal)와는 다르게,
클래스(Class)라는 이름으로 부른다. - 한번 만들고 나면, 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지된다.
[속성과 메소드]
속성: 객체 내부에 있는 값
메소드: 객체 안에 있는 함수
class Student {
constructor (name, age, gender,score(function) {
// 속성: name, age, gender 메소드: score
}
}
[4가지 주요 개념]
1. Encapsulation(캡슐화)
- 데이터와 기능을 하나의 단위로 묶는 것을 말한다.
- 은닉화는 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만들고,동작을 노출 시킨다.
- 느슨한 결합(Loosing Coupling)에 유리하다. ➡️ 언제든 구현을 수정할 수 있음
- 코드를 복잡하지 않게 만들고, 재사용성을 높인다.
자바스크립트에서는 잘쓰이지 않는 개념이다. 클로져등을 이용하여 캡슐화 할 수는 있지만 잘 쓰이지는 않는다.
2. Abstraction(추상화)
- 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만들어 인터페이스를 단순하게 하는 것이다.
- 코드를 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화한다.
🦖캡슐화와 추상화 비교🦖
캡슐화 | 추상화 |
코드나 데이터의 은닉에 포커스 | 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스 |
3. Polymorphism(다형성)
"다양한 형태" 라는 뜻이다.
객체 역시 똑같은 메서드라 하더라도, 다른 방식으로 구현될 수 있다.
동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능하다.
4. Inheritance(상속)
상속은 부모 클래스의 특징을 자식 클래스가 물려받는 것이다.
("기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다")
불필요한 코드를 줄여 재사용성을 높입니다.
➡️ 객체를 상속하기 위한 매커니즘이다.
⭐️ 결론 ⭐️
- 객체 지향 프로그래밍은 사람이 세계를 보고 이해하는 방법, 사고방식에 가깝다.
- 어떤것이 더 좋고 나쁘다기 보다는 장단범을 알고, 상황에 맞는 방법론을 선택하는 것이 좋다!!