본문 바로가기

공부한 내용/javascript

객체지향 프로그래밍

객체지향 프로그래밍이란?

 

프로그래밍을 명령어 또는 함수의 목록으로 보는 전통적인 명령형 프로그래밍(imperative prograaming)의 절차지향적 관점에서 벗어나

여러개의 독립적 단위, 즉 객체(obejct)의 집합으로 프로그래밍을 표현하려는 프로그래밍 패러다임

 

객체지향 프로그래밍은 실세계의 실체(사물이나 개념)을 인식하는 철학적 사고를 프로그래밍에 접목하려는 시도에서 시작합니다. 실체는 특징이나 성질을 나타내는 속성(attribute/property)을 가지고 있고, 이를 통해 실체를 인식하거나 구별할 수 있습니다.

 

예를 들어, 사람은 이름, 주소, 성별, 나이, 신장, 체중 등 다양한 속성을 갖고, "이름이 홍길동이고 나이는 30세인 사람"과 같이 속성을 구체적으로 표현하면 특정한 사람을 다른 사람과 구별하여 인식할 수 있습니다.

 

이러한 방식을 프로그래밍에 접목시켜보면, 우리가 구현하려는 프로그래밍에서 사람의 "이름"과 "나이"라는 속성에만 관심이 있다고 가정할 때(이처럼 다양한 속성 중 프로그램에 필요한 속성만 간추려 내어 표현하는 것을 추상화라고 합니다.), person이라는 객체는 다음과 같이 표현할 수 있습니다.

const person = {
  name: '홍길동',
  age: 30,
}

이처럼 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조객체라고 합니다.

 

이번에는 원(circle)이라는 개념을 객체로 만들어보겠습니다. 원은 반지름이라는 속성이 있고, 반지름을 통해 원의 지름, 둘레, 넓이를 구할 수 있습니다. 이때

  • 반지름은 원의 상태,
  • 원의 지름, 둘레, 넓이를 구하는 것은 동작입니다.
const circle = {
  radius: 5, // 반지름
  
  // 지름
  getDiameter() {
    return 2 * this.radius;
  }
  
  // 둘레
  getPerimeter() {
    return 2 * Math.PI * this.radius;
  }
  
  // 넓이
  getArea() {
    return Math.PI * this.radius ** 2;
  }
};

 

이처럼 객체지향 프로그래밍은 

  • 객체의 상태(state)를 나타내는 데이터와
  • 상태 데이터를 조작할 수 있는 동작(behavior)

을 하나의 논리적인 단위로 묶어 생각합니다.

 

즉, 객체는 상태 데이터와 동작을 하나의 논리적인 단위로 묶은 복합적인 자료구조라고 할 수 있습니다. 이때,

  • 객체의 상태 데이터를 프로퍼티(property),
  • 동작을 메서드(method)

라고 부릅니다.

 

 

'공부한 내용 > javascript' 카테고리의 다른 글

프로퍼티 어트리뷰트  (0) 2022.03.04
스코프  (0) 2022.03.03
함수  (0) 2022.03.02
객체 리터럴  (0) 2022.03.01
문(statements) (ex. 선언문, 반복문..)  (0) 2022.02.28