JS 기초 정리(4)

신태일·2024년 10월 15일

OOP(Object-oriented programming)란?

객체 지향 프로그래밍(oop)은 Java 및 C++를 비롯한 많은 프로그래밍 언어의 기본이 되는 프로그래밍 패러다임이다. 객체 지향 프로그래밍은 여러개의 독립된 단위 “객체”들의 모임으로 컴퓨터 프로그램을 파악한다. ⇒ 객체 지향 프로그래밍은 객체들의 모임이다.

객체 지향 프로그래밍이 나오기 이전에는 명령어의 목록을 나열(절차 지향)하는 기능 구현을 목적으로 작성했지만 이렇게 코드를 길게 작성하다 보면 매우 알아보기 힘든 복잡한 코드가 만들어진다. 그래서 하나의 문제를 해결을 위한 독립된 단위인 객체로 만들었으며 이 객체로 인해 알아보기 쉽고 재사용성이 높아졌다.

1. 자료추상화 (Abstraction)

  • 자료추상화는 불필요한 정보는 숨기고 중요한 정보만을 표현함 으로써 프로그램을 간단히 만드는 것이다.

  • 이렇게 해서 그 객체 안에 자세한 내용을 몰라도 중요 정보를 이용해서 해당 객체를 사용할 수 있게 된다. (예를 들어, 커피를 마시기 위해서 커피머신을 이용할 줄 알면 커피 머신이 어떻게 작동하는지 몰라도 커피를 마실수 있는 것과 같다.)
  • 2. 상속(Inheritance)

  • 상속은 새로운 클래스가 기존의 클래스의 자료와 연산을 이용할 수 있게 하는 기능이다.
  • 3. 다형성(Polymorphism)

  • poly(많은) morph(형태) ⇒ 다형성 다양한 형태를 가질 수 있다 이다.
  • 다형성의 개념이란 어떠한 요소에 여러 개념을 넣어 놓는것이다.
  •       class Paypal extends PaymentGateway {
            pay(amount) {
              // 페이팔 전용 로직을 구현해야 한다.
            }
            refund(amount) {
              // 페이팔 전용 로직을 구현해야 한다.
            }
            connect() {
              // 페이팔 전용 로직을 구현해야 한다.
            }
          }
    
          class Visa extends PaymentGateway {
            pay(amount) {
              // Visa 전용 로직을 구현해야 한다.
            }
            refund(amount) {
              // Visa 전용 로직을 구현해야 한다.
            }
            connect() {
              // Visa 전용 로직을 구현해야 한다.
            }
          }

    4. 캡슐화 (encapsulation)

  • 캡슐화는 클래스 안에 관련 메소드, 변수 등을 하나로 묶어준다. 이 메커니즘을 이용해서 바깥에서의 접근을 막아 보안이 강화되고 잘 관리되는 코드를 제공한다.
  • JavaScript prototype

    모든 객체는 global Object prototype을 가진다.

    Prototype은 무엇인가 ?

    프로토타입은 자바스크립트 객체가 다른 객체로부터 메소드와 속성을 상속받는 메커니즘을 말한다. 이것을 프로토타입 체인(prototype chain)이라고도 한다.

    위에서 보듯이 prototype object 안에 있는 hasOwnProperty를 상속받아서 사용하고 있다. 이렇게 하므로 인해서 더 적은 메모리를 사용할 수 있고 코드를 재사용할 수 있다.

    profile
    노원거인

    0개의 댓글