[JS] 객체 지향 프로그래밍(OOP)은 뭘까?😯

TATA·2023년 1월 13일
0

JavaScript

목록 보기
15/25

✔️ OOP는 뭘까?

객체 지향적인 프로그래밍
Object-Oriented Programming

객체지향은 사람의 추상능력, 인식방법에 가까운 개발 방법론이다.

OOP는 프로그램 설계 철학이다.
OOP의 모든 것은 객체로 그룹화된다.
OOP의 4가지 주요 개념을 통해 재사용성을 얻을 수 있다.

프로그래밍에 필요한 데이터를 추상화시켜서 상태와 행위를 가진 객체를 만들고,
그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 방법이다.

🧹 장점

  1. 코드 재사용이 가능하다. - 상속을 통해 확장해서 사용 가능.
  2. 유지보수가 쉽다. - 클래스 내부에 멤버 변수 또는 메서드로 있기 때문에 해당 부분만 수정하면 됨.
  3. 대형 프로젝트에 적합하다. - 클래스 단위로 모듈화시켜서 개발하기에 업무 분담이 쉬움.

🧹 단점

  1. 처리속도가 느리다.
  2. 많은 시간과 노력이 필요하기에 설계하기 쉽지 않다.

✔️ 객체지향 OPP의 특징 4가지

  • 캡슐화 (Encapsulation)
  • 추상화 (Abstraction) — class, object, instance
  • 상속 (Inheritance)
  • 다형성 (Polymorphism)

🧽 캡슐화

한 객체가 특정한 하나의 목적을 위해 필요한 데이터나 메서드를
데이터(속성)와 데이터를 처리할 함수(메서드)하나로 묶는 것을 의미한다.
ex) 클래스 = 붕어빵 틀, 객체 = 붕어빵

정보은닉, Hiding
은닉화는 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것이다.
캡슐화를 통해 만일의 상황(외부에서 조작, 불필요한 조건 등)을 막아 데이터를 보호할 수 있다. 보호된 변수는 불러오는 함수(getter)설정하는 함수(setter) 등의 메서드를 통해서만 간접적으로 접근이 허용된다.

즉, 캡슐화는 코드가 복잡해지지 않게 만들고, 재사용성을 높여준다.


🧽 추상화

내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념이다.
ex) 전화기. 전화기 안은 복잡하게 구현되어 있지만, 우리는 단순히 수화기를 들고 버튼을 눌러 해결하는 것으로 인터페이스를 단순화할 수 있다.

즉, 추상화는 코드가 복잡해지지 않게 만들고,
단순화된 사용으로 변화에 대한 영향을 최소화해준다.

🤔 캡슐화 vs 추상화의 차이점?

캡슐화 : 코드나 데이터의 은닉에 포커스.
추상화 : 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고,
             단순한 이름으로 정의하는 것에 포커스.
             클래스 정의 시, 메서드와 속성만 정의한 것을 인터페이스라고 부른다.


🧽 상속

상속은 부모 클래스의 특징을 자식 클래스가 물려받는 것이다.
부모 클래스를 이용해 자식클래스를 빨리 개발할 수 있고 반복된 코드의 중복을 줄여준다.

즉, 불필요한 코드를 줄여 재사용성을 높인다.


🧽 다형성

다형성이란 상속과 연관 있는 개념으로 한 객체가 상속을 통해 기능을 확장하거나 변경하여 다른 여러 형태(객체)로 재구성되는 것을 말한다.
ex) "말하다"라는 동작의 본질은 "입으로 소리를 내다"를 의미한다. 그러나, 각기 다른 동물들이 "말할 때" 제각각의 소리를 내는 것처럼, 객체 역시 똑같은 메서드라 하더라도, 다른 방식으로 구현될 수 있다.

즉, 동일한 메서드에 대해 if / else if와 같은 조건문 대신
객체의 특성에 맞게 달리 작성하는 것이 가능해진다는 것이다.

profile
🐾

0개의 댓글