객체 지향 프로그래밍

이성은·2022년 11월 18일
0

절차적 언어

  • 초기의 프로그래밍 언어는 일반적으로 절차적 언어라고 부름(C, 포트란 등)
  • 절차적 언어는 순차적인 명령의 조합

객체 지향 언어

  • "클래스"라고 부르는 데이터 모델의 청사진을 사용해 코드 작성
  • 현대의 언어들은 대부분 객체 지향의 특징을 갖고 있음
    (대표적으로 Java, C++, C# 등)
  • JavaScript: 객체 지향으로 작성 가능

OOP

  • OOP는 프로그램 설계 철학입니다.
  • OOP의 모든 것은 "객체"로 그룹화된다.이 객체는 한번 만들고 나면, 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지된다
  • OOP의 4가지 주요 개념을 통해 재사용성을 얻을 수 있다.

클래스와 인스턴스

  • 클래스 : 클래스는 일종의 원형(original form)으로, 객체를 생성하기 위한 아이디어나 청사진이다.클래스는 객체를 만들기 위한 생성자(constructor) 함수를 포함한다.
    클래스의 세부사항에는 속성과 메서드가 있다.
     
  • 인스턴스 :avaScript에서 사용하는 용어와 별개로 클래스를 통해 만들어진 객체를 특별히 인스턴스 객체, 줄여서 인스턴스라고 부른다.

OOP Basic Concepts

1. Encapsulation (캡슐화)

  • 데이터와 기능을 하나의 단위로 묶는 것,데이터(속성)와 기능(메서드)들이 느슨하게 결합되는 것
  • 은닉(hiding): 구현은 숨기고, 동작은 노출시킴, 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
  • 느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음
    (느슨한 결합 :코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미)

2. Abstraction (추상화)

  • 추상화는 내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념
  • 클래스 정의 시, 메서드와 속성만 정의한 것을 인터페이스라고 부른다. 이것이 추상화의 본질

3. Inheritance (상속)

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

4. Polymorphism (다형성)

  • 객체 똑같은 메서드라 하더라도, 다른 방식으로 구현될 수 있다.

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

profile
함께 일하는 프론트엔드 개발자 이성은입니다🐥

0개의 댓글