[프로토타입] - 객체 지향 프로그래밍

Donggu(oo)·2022년 11월 18일
0

JavaScript

목록 보기
22/49
post-thumbnail

1. OOP(Object-Oriented Programming)


  • OOP는 프로그램 설계 철학 중 하나로, 객체로 그룹화되며 한번 만들어진 객체는 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지된다.
  • OOP의 네 가지 주요 개념을 통해 재사용성을 얻을 수 있다.
    • 캡슐화 : 코드가 복잡하지 않게 만들고, 재사용성을 높임
    • 추상화 : 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화
    • 상속 : 불필요한 코드를 줄여 재사용성 향상
    • 다형성 : 동일한 메서드에 대해 조건문 대신 객체의 특성에 맞게 달리 작성 가능

1) 캡슐화(Encapsulation)

  • 캡슐화는 관련있는 멤버 변수와 메서드를 클래스와 같은 하나의 틀 안에 담아서 묶는 것을 말하며, 느슨한 결합(Loose Coupling)에 유리하다.

느슨한 결합(Loose Coupling)이란?

  • 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는것을 의미한다.
  • 결합도란 하나의 클래스가 다른 클래스와 얼마나 많이 열결되어 있는지를 나타내는 표현으로, 프로그램 수정 시 결합도가 높은 프로그램은 수정이 힘들며 결합도가 낮을수록 유지보수가 쉬워진다.
  • 캡슐화는 정보 은닉(hiding)화의 특징도 포함하고 있는데, 은닉화는 내부 데이터나 내부 구현이 외부로 노출되지 않도록 하는 것을 말한다.

2) 추상화(Abstraction)

  • 추상화는 메서드의 사용을 사용자에게 맞추어 보다 편리하게 사용할 수 있도록 도와주는 것으로, 메서드의 복잡한 내부를 신경 쓸 필요 없이 사용할 때에는 단순하게 사용 할 수 있도록 하는 것이다.
  • 캡슐화가 코드나 데이터의 은닉이 중점이라면, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고 단순한 이름으로 정의하는 것이 중점이다.

3) 상속(Inheritance)

  • 상속은 부모 클래스의 메서드나 데이터 등을 자식 클래스가 물려받는 것을 말한다. 정확히 말하면 기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는 것이다.
  • 부모 클래스에게 상속받은 자식 클래스는 부모의 모든 데이터 속성과 메서드들을 사용할 수 있으며, 자식 클래스가 데이터 및 메서드를 추가한다고 해서 부모 클래스에게 영향을 끼치지 않는다.
  • '확장'의 개념으로도 볼 수 있는데, 부모 클래스가 가진 기존의 기능을 물려 받으면서 동시에 새로운 기능도 추가할 수 있는 방식이기 때문이다.

4) 다형성(Polymorphism)

  • 다형성은 하나의 메서드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다.
  • 특정 기능을 선언(설계) 부분과 구현(동작) 부분으로 분리한 후 구현 부분을 다양한 방법으로 만들어 선택하여 사용할 수 있게 하는 것으로, 다른 클래스들이 같은 메서드나 속성으로 정의 될 수 있다는 것이다(이 때 메서드는 메서드가 선언된 클래스로 실행 영역이 한정된다).

0개의 댓글