Section 2 객체 지향 프로그래밍

44523·2023년 1월 13일

JavaScript 개념 정리

목록 보기
2/4

객체 지향 프로그래밍

실세계에 존재하고 인지하고 있는 객체(Object)를 소프트웨어의 세계에서 표현하기 위해 객체
의 핵심적인 개념 또는 기능만을 추출하는 추상화(abstraction)를 통해 모델링하려는 프로그래밍
패러다임을 말한다.

단순히 별개의 변수와 함수로 순차적으로 작동하는 것을 넘어, 데이터의 접근과 데이터의 처리 과정에 대한 모형을 만들어 내는 방식, 따라서 데이터와 기능이 별개로 취급되지 않고 한 번에 묶여서 처리 가능

OPP

프로그램 설계 철학이며 모든 것은 ‘객체’로 그룹화 되며 OPP의 4가지 주요 개념을 통해 재사용성을 얻을 수 있다.

이 객체는 한번 만들고 나면 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지된다.

객체 내에는 "데이터와 기능이 함께 있다"라는 원칙에 따라 메서드와 속성이 존재

캡슐화 Encapsulation

외부에서 데이터(속성)와 기능(메서드)을 따로 정의하는 것이 아닌, 하나의 객체 안에 넣어서 묶는 것. 데이터와 기능들이 느슨하게 결합되는 것.

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

ex) 느슨한 결합을 추구하는 코드 작성법이란, 마우스 구동을 위한 코드작성을 하면 스위치가 눌리고 전기 신호가 생겨 전선을 타고 흐르는 등의 과정을 나누어서 작성하는 것이 아니라, 마우스의 상태를 속성(property)으로 정하고 클릭, 이동을 메서드(method)로 정해서 코드만 보고도 인스턴스 객체의 기능을 상상할 수 있게 작성하는 것.

‘은닉화’의 특징도 포함하고 있는데, 은닉화는 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것. 따라서 디테일한 구현이나 데이터는 숨기고 객체 외부에서 필요한 동작(메서드)만 노출시켜야 한다. 은닉화의 특징을 살려 코드를 작성하면 객체 내 메서드의 구현만 수정하고 노출된 메서드를 사용하는 코드 흐름은 바뀌지 않도록 하여 유지보수에 도움을 준다.

추상화 Abstraction

내부 구현은 아주 복잡한데, 실제로 노출되는 부분은 단순한게 만드는 개념. 이러한 추상화를 통해 인터페이스가 단순해지고 예기치 못한 사용상의 변화가 일어나지 않게 할 수 있다.

추상화와 캡슐화는 종종 헷갈리는 개념일 수 있는데 캡슐화는 코드, 데이터의 은닉에 포커스가 맞춰져 있다면 추상화는 클래스를 사용하는 사람이 필요하지 않은 메서드 등을 노출시키지 않고 단순한 이름으로 정의하는것에 포커스가 맞춰져 있다.

상속 Inheritance

부모 클래스의 특징을 자식 클래스가 물려받는 것. ‘기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속 받는다 가 적합한 표현

ex) 사람(Human)이라는 클래스가 있으면 사람은 기본적으로 이름, 성별, 나이와 같은 속성과 먹다, 자다 등의 같은 메서드가 있다. 추가적으로 학생(Student)라는 클래스를 작성하면 학생의 본질은 사람이므로 상속을 이용하여 학생 클래스는 사람 클래스를 상속받을 수 있다. 또한 학생은 학습내용, 공부하다 등의 같은 속성/메서드를 추가할 수 있다.

다형성 Polymorphism

다양한 형태를 가질 수 있는 것, 객체는 똑같은 메서드라 하더라도 다른 방식으로 구현될 수 있다

ex) 각기 다른 동물들이 ‘말할 때’ 제 각각의 소리를 내는 것

HEMLElement

TextBox render() / Select render() / CheckBox render()

위의 모든 엘리먼트들은 모두 객체이므로 내부적으로 모양을 그리고 화면에 뿌리는 메서드가 존재한다. 이 메서드를 render로 가정할때, 공통의 부모인 HEML Element라는 클래스에 render라는 메서드를 만들고 상속을 받게 만들 수 있다. 다형성의 핵심은 이 같은 이름의 render라는 메서드가 조금씩 다르게 작동한다는 것에 있다.

주요 개념에 대한 장점!

  1. 캡슐화는 코드를 복잡하지 않게 만들고 재사용성을 높힌다.
  2. 추상화는 코드를 복잡하지 않게 만들고 단순화된 사용으로 변화에 대한 영향을 최소화한다.
  3. 상속은 불필요한 코드를 줄여 재사용성을 높힌다.
  4. 다형성은 동일한 메서드에 대해 객체의 특성에 맞게 달리 작성하는 것이 가능해진다.

0개의 댓글