[JavaScript] 객체 지향 프로그래밍 OOP

Gaanii·2025년 3월 18일

JavaScript

목록 보기
8/11
post-thumbnail

1️⃣ 객체 지향 프로그래밍이란 ?

객체 지향 프로그래밍 Object-Oriented Programming이란 객체 지향적인 프로그래밍, 즉 C언어와 같이 절차 지향적인 프로그래밍이 아닌 객체의 관점에서 프로그래밍을 한다는 것이다.

실세계에 존재하고 인지하고 있는 객체(Object)를 소프트웨어의 세계에서 표현하기 위해 객체의 핵심적인 개념 또는 기능만을 추출하는 추상화(abstraction)를 통해 모델링하려는 프로그래밍 패러다임이다.

❓ 절차 지향 프로그래밍
프로세스가 함수 단위로 순서대로 진행되는 것을 말한다.
컴퓨터의 처리구조와 유사하며 실행 속도가 빠른 장점이 있지만, 유지보수의 어려움이 있고 엄격하게 순서가 정해져있어 비효율적이다.


2️⃣ 객체 지향 프로그래밍의 요소

1. 캡슐화 Encapsulation

하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미한다. 이렇게 묶인 캡슐은 class를 의미한다.

2. 상속 Inheritance

자녀 클래스가 부모 클래스의 속성을 갖는 것을 의미한다. 즉, 부모가 가진 속성이나 메서드를 그 자식이 부모의 속성이나 메서드를 상속받아 가질 수 있다.

이는 코드의 중복을 줄이고, 프로그램의 복잡도를 줄여줄 수 있다.

또한, 상속받은 자식의 기능을 일부 변경해야 할 경우 해당하는 기능을 다시 정의하는 것을 오버라이딩 Overriding이라고 한다.

3. 추상화 Abstraction

구현 세부 정보를 어떠한 객체의 이름으로 추상화시켜 내부 메서드 구현이 어떤지 몰라도 사용하기 쉽게 만드는 것이다.

예를 들어, 자동차의 엔진이 어떻게 돌아가고 연료가 어떻게 사용되는지 이해하지 않아도 ‘핸들’, ‘브레이크’, ‘엑셀 페달’ 등과 같이 추상화 되어있는 도구(객체)를 사용하면 되는 것이다.

4. 다형성 Polymorphism

객체의 변수나 메서드가 상황에 다라 다른 의미로 해석될 수 있는 것을 말한다. 상속에서 언급한 오버라이딩을 이용하여 자식 클래스의 메서드가 부모 클래스의 메서드와 다르게 동작하거나 변수가 다른 값으로 지정될 수 있다.


3️⃣ JavaScript에서 OOP

JS에는 Object, Function, Array 등과 같이 다양한 기본 객체들이 존재한며, 모든 객체는 자바스크립트의 기본 객체인 Object를 확장하고 있다.

그러나, 자바스크립트는 클래스 기반이 아니라 프로토 타입을 기반으로 하는 객체 기반의 언어이다.

이와 같이 기반이 다르기 때문에 자바스크립트를 사용하여 객체의 계층 구조를 만들고 상속하는 방법은 명확하지 않을 수 있다.

함수 기반 언어인 Scheme를 기반으로 만들어진 뒤 자바에서 다양한 프로그래밍 개념들을 가져온 자바스크립트는, 객체 지향 언어는 아니지만 객체 지향과 비슷한 특징들을 지원한다. 이를 가능하게 하는 개념이 바로 프로토타입 prototype이다.(이에 대한 설명은 따로 포스팅 할 예정)

0개의 댓글