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

쫀구·2022년 5월 25일
0
post-thumbnail
post-custom-banner

📌 객체지향 프로그래밍 Object Oriented Programming

실세계에 존재하고 인지하고 있는 객체(Object)를 소프트웨어의 세계에서 표현하기 위해 객체의 핵심적인 개념 또는 기능만을 추출하는 추상화(abstraction)를 통해 모델링하려는 프로그래밍 패러다임을 말한다. 다시 말해, 우리가 주변의 실세계에서 사물을 인지하는 방식을 프로그래밍에 접목하려는 사상을 의미한다.
객체 지향 프로그래밍(object-oriented programming, OOP) 이라 부른다.

(절차지향도 있고 둘의 차이점도 알고싶으면 참조하자)

애플리케이션을 만들 때 좋은 설계를 하기 위해서는, 기본적으로 이 객체지향을 이해하고 응용하는 것이 중요하다. 사용자 입장에서 바라보기 좋은 객체 지향 프로그래밍의 주요 개념 4가지 OOP

Encapsulation(캡슐화) Inheritance(상속) Abstraction(추상화) Polymorphism(다형성)

✅ 캡슐화

클로저

  • 데이터와 기능을 하나의 단위로 묶는다
  • 내부의 디테일한 구현(코드)은 숨기고 외부의 필요한 동작(메서드)만 노출시킴
  • 데이터와 메서드들의 느슨한결합을 통해 구현을 언제든 수정한다.
  • 코드만 보고도 인스턴스 객체의 기능을 상상할 수 있게 작성하는 것이 느슨한 결합

✅ 추상화

내부 구현은 복잡하지만 외부에서 노출되는 동작은 단순하다.

전화기는 내부에 복잡한 회로와 부품으로 구현 되어있지만 사용자 입장에서는 내부를 생각하지않고 단순히 버튼만 눌러서 말 하기만 하면 해결 되는것으로 , 인터페이스를 단순화 한다.

❓ 캡슐화 & 추상화 차이점

캡슐화는 코드나 데이터의 은닉에 초점

추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.

✅ 상속

부모 클래스의 특징을 자식 클래스가 물려받는 것 기존에 존재하던 기능을 토대로 새로운 기능 추가하여 발전시킬 수 있다.

✅ 다향성

HTML에서 text, select, class, id 와 같은 모든요소를 Element 라 한다.

엘리먼트는 전부 객체이므로 각각 다른 내부적인 모양, 화면에 나타내는 메서드가 존재한다.

부모인 HTML에서 render 메서드를 상속 받아 엘리먼트를 사용한다면 메서드 이름은 같아도 화면에 각각 다르게 나타나는데 이것을 다향성이라 한다.

❓ 다향성이 없다면

  • 기본(부모) 클래스에 종류별로 분기를 시켜서 하나하나 다르게 만들어야 할 것
  • 각각의 자식 클래스에 별도의 각기 다른 render 함수를 만들 수도 있겠지만, 엘리먼트라는 클래스의 본질상 "화면에 뿌린다"(render)는 개념은 부모가 갖고 있는 것이 합리적

✅ OOP의 장점

  • 캡슐화 : 코드가 복잡하지 않게 만들고, 재사용성을 높입니다.
  • 추상화 : 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화
  • 상속 : 불필요한 코드를 줄여 재사용성을 높인다.
  • 다향성 : 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해집니다.

결론 🚩

사람이 세계를 보고 이해하는 방법을 흉내낸 방법론이다.
객체 지향 프로그래밍 패러다임을 따라해 보면, 사람이 세계를 보고 이해하는 방법과 매우 흡사
사용자 입장에서 개발을 해야하는 개발자가 꼭 알아야할 객체 지향 프로그래밍 OOP

객체지향을 배우는게 타입스크립트를 배우기위함이다..?

profile
Run Start 🔥
post-custom-banner

0개의 댓글