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

신혜인·2023년 3월 15일
0

블로깅

목록 보기
2/11

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

객체 지향 프로그래밍 패러다임이 등장하기 전에는 절차 지향 프로그래밍이 있었다.

초기의 C, 포트란 같은 언어들은 객체 지향의 개념이 없는 절차적 언어.

객체 지향 프로그래밍 패러다임이 등장하면서, 단순히 별개의 변수와 함수로 순차적으로 작동하는 것을 넘어, 데이터의 접근과, 데이터의 처리 과정에 대한 모형을 만들어 내는 방식을 고안.

데이터와 기능이 별개로 취급되지 않고, 한 번에 묶여서 처리.

이러한 객체 지향의 특징은 빠르게 현대 언어에 적용 되었다. 자바스크립트는 객체 지향 언어는 아니지만, 객체 지향 패턴으로 작성 가능.

"클래스"라고 부르는 데이터 모델의 청사진을 사용해 코드 작성.

OOP는 프로그램 설계 철학.

OOP의 모든 것은 "객체"로 그룹화.

OOP의 4가지 주요 개념을 통해 재사용성을 얻을 수 있다.

클래스와 인스턴스

클래스는 일종의 원형(original form)으로, 객체를 생성하기 위한 아이디어나 청사진.

인스턴스는 클래스의 사례(instance object).

클래스는 객체를 만들기 위한 생성자(constructor) 함수를 포함.

OOP의 주요 개념

캡슐화 Encapsulation

  • 데이터와 기능을 하나의 단위로 묶는 것
  • 은닉 (hiding): 구현은 숨기고 동작은 노출시킴
  • 느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음

느슨한 결합은 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닯게 코드를 모아 결합하는 것을 의미.

은닉화는 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것. 디테일한 구현이나 데이터는 숨기고, 객체 외부에서 필요한 동작(메서드)만 노출.

추상화 Abstraction

  • 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념
  • 인터페이스(interface)를 단순화
  • 캡슐화는 코드나 데이터의 은닉, 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것

상속 Inheritance

  • 부모 클래스의 특징을 자식 클래스가 물려받는 것
  • 기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다

다향성 Polymorphism

  • poly는 "많은", morph는 "형태"
  • "다향한 형태"
  • 메서드는 다른 방식으로 구현될 수 있다

OOP의 장점

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

OOP의 의미

사람이 세계를 보고 이해하는 방법을 흉내 낸 방법론.

0개의 댓글