OOP

윤2·2023년 3월 16일
0

JavaScript

목록 보기
2/2

OOP 개념 정리

OOP 개념 정리를 하기 전에 객체 지향 프로그램이 무엇인지 알고 넘어가 보자.


절차 지향 프로그램

  • 객체 지향 프로그램이 등장 하기전, 초기에는 절차 지향 프로그램을 사용해 왔다.
  • 초기의 프로그래밍 언어는 절차적 언어로 불리어 왔다.
  • 절차적 언어는 순차적인 명령의 조합이다.

객체 지향 프로그램

  • 객체 지향 프로그램이 등장하고, class 를 이용하여 단순히 별개의 변수와 함수로 순차적으로 작동하는 것을 넘어, 데이터의 접근과, 데이터의 처리 과정에 대한 모형을 만들어 내는 방식을 사용할 수 있게 되었다.
  • 데이터와 기능을 한번에 묶어서 처리할 수 있게 되었다.
  • javascript는 객체 지향 언어는 아니지만, 객체 지향 패턴으로 작성이 가능하다.

OOP 특징

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

OOP 4가지 주요 개념

Encapsulation (캡슐화)

데이터와 기능을 하나의 단위로 묶는 것

   - 데이터(속성)와 기능(메서드)들이 느슨하게 결합되는 것

은닉(hiding): 구현은 숨기고, 동작은 노출시킴

   - 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
   

느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있음

   - 은닉화의 특징을 살려서 코드를 작성하면 객체 내 메서드의 구현만 수정하고,
	 노출된 메서드를 사용하는 코드 흐름은 바뀌지 않도록 만들 수 있다. 

2. Inheritance (상속)

클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것이다.

	-  클래스 정의 시, 메서드와 속성만 정의한 것을 인터페이스라고 부르는데, 이것이 추상화의 본질이다.

3. Abstraction (추상화)

부모 클래스의 특징을 자식 클래스가 물려받는 것

	- 특징을 자세하게 설명하는 용어는 "기본 클래스(base class)의 
	  특징을 파생 클래스(derived class)가 상속받는다"로 표현하는 것이 적합하다.

4. Polymorphism (다형성)

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

	- 만일 언어 자체에서 다형성을 제공하지 않는다면, 기본(부모) 클래스에 종류별로 분기를 시켜서 
	  하나하나 다르게 만들어야 한다.

OOP 정리

OOP

  • 객체들이 서로 유기적으로 동작하는 프로그래밍 이론

  • 코드의 재사용성과 중복제거가 가장 큰 목적

  • 추상화
    - 목적과 관련이 없는 부분을 제외해서 필요한 부분을 포착하는 기법
    - 객체의 공통된 속성들 중 필요한 부분을 포착해서 클래스로 정의하는 설계 기법

  • 캡슐화
    - 외부에 노출할 필요가 없는 정보들은 은닉 (정보은닉)

  • 상속
    - 상속 관계에 있는 두 클래스에 대해, 부모 클래스가 자손 클래스에게 속성을 물려주는 것
    - 코드의 재사용이 목적

  • 다형성
    - 같은 형태이지만 다른 기능을 하는 것
    - 오버라이딩은 이와 관련된 기능임


profile
프론트엔드 개발 공부중

0개의 댓글