OOP(Object Oriented Programming)

박성진·2021년 4월 9일
post-thumbnail

OOP(Object Oriented Programming)란?

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

OOP의 장점

  1. 코드 재사용이 편리합니다.
    남이 만든 클래스를 가져와서 이용할 수 있고, 상속을 통해 확장해서 사용할 수 도 있습니다.
  2. 유지 보수가 쉽습니다.
    객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 변수혹은 메서드로 있기 때문에 해당 부분만 수정을 하면 됩니다.

객체 지향프로그래밍의 주요 컨셉(OOP Basic Concepts)

  1. Encapsulation(캡슐화)
    • 데이터와 기능을 하나의 단위로 묶은 것
    • 은닉(hiding): 구현은 숨기고, 동작은 노출시킴
    • 느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음.
    • 코드가 복잡하지 않게 만들고, 재사용성을 높입니다.(코드를 수정하지 않고 재사용)
  2. Inheritance(상속)
    • 상속은 부모 클래스의 특징을 자식 클래스가 물려받는 것입니다.(기본 클래스의 특징을 파생 클래스가 상속받는다)
    • 불필요한 코드를 줄여(코드의 중복을 없애기 위함) 재사용성을 높입니다.
  3. Abstraction(추상화)
    • 추상화는 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념
    • 캡슐화가 코드나 데이터의 은닉에 포커스가 맞춰져있다면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메소드 등을 노출시키지 않고, 기능 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있습니다.
    • 코드가 복잡하지 않게 만들고, 단순화된 사용으로 인해 변화에 대한 영향을 최소화합니다.
    • 만약 사자, 호랑이, 고양이가 있을 때 이것들은 각각의 객체라고 하며, 이 객체들을 하나로 묶으려 할 때, 동물이라는 어떤 추상적인 객체로 크게 정의한다고 했을 때, 이 때 동물이라고 묶는 것을 추상화라고 합니다.
  4. Polymorphism(다형성)
    • 객체 역시 똑같은 메소드라 하더라도, 다른 방식으로 구현될 수 있습니다.
    • 부모 클래스로부터 상속을 받은 속성에 대해, 자식 클래스에서 물려받은 속성을 재정의 할 수 있습니다. 이것을 오버라이딩이라고 합니다.
    • 다형성을 사용하면 장점은 같은 이름의 속성을 유지함으로서, 속성을 사용하기 위한 인터페이스를 유지하고, 메서드 이름을 낭비하지 않는다는 것입니다.

JavaScript에서 Prototype란?

JavaScript에는 클래스라는 개념이 없습니다. 그래서 기존의 객체를 복사하여 새로운 객체를 생성하는 프로토타입 기반의 언어입니다. 프로토타입 기반 언어는 객체 원형인 프로토타입을 이용하여 새로운 객체를 만들어냅니다.

Prototype를 왜사용하는가?

자바스크립트는 prototype을 기반으로 상속을 구현한다. 생성자 함수와 new 키워드를 이용하여 인스턴스 객체를 만들어 낸다. 생성자 함수가 정의될 때, 생성자 함수의 프로토타입 객체도 동시에 생성된다. 프로토타입과 인스턴스 객체는 proto 프로퍼티를 가지고 있기 때문에 해당 프로퍼티를 통해 상위 프로토타입에 접근할 수 있다. 그리고 상위 프로토타입의 프로퍼티 및 메서드에 접근할 수 있다. 이러한 특징을 통해 중복된 코드 줄일 수 있고, 재사용성을 높일 수 있다.

0개의 댓글