본문으로 바로가기


객체 지향 프로그래밍 - OOP

객체지향 프로그래밍이란 캡슐화, 다형성, 상속을 이용하여 코드 재사용을 증가시키고, 유지보수를 감소시키는 장점을 얻기 위해서 객체들을 연결시켜 프로그래밍 하는 것 입니다.

이 내용은 책, 검색을 통해서 무수히 나오는 개념들입니다. 하지만 퍼블리셔란 직군에서 스타트한 제게는 이런 개념이 생소하기만 하며 어렵게 느껴집니다. 이 포스팅에서는 간단히 퍼블리셔 직군에서 자바스크립트를 사용하여 OOP 에 좀 더 가깝게 다가가 보자란 의미로 접근해 보도록 하겠습니다.





먼저 객체란 무엇인가?

객체는 실제 세계(real world) 를 모델링 하는 것입니다.

OOP 는 실세계르 모델링 하기 위해 추상화(Abstraction)을 사용하는 프로그래밍 패러다임입니다.

추상화란 말 그대로 상세한 정보는 무시하고 필요성에 의해 있어야할 정보들만 간추려서 구성하는 것입니다.


마우스를 예를 들어보겠습니다. 

지금은 실제 셰계에 마우스가 모델링되어 있지만 마우스가 만약 없다면 그것을 모델링 하고 싶다고 가정해보겠습니다.

컴퓨터를 좀 더 편하게 다루기 위해 클릭을 했으면 하고 스크롤도 있으면 좋겠다란 생각으로 정의를 시작할 수 있습니다.

좀 더 추상화를 해보자면 왼쪽 클릭영역, 오른쪽 클릭영역, 스크롤영역등... 이런 식으로 설계를 하는 것이 추상화 작업입니다.

단순히 있어야할 정보들을 간추려서 구성하는 것입니다.


이렇게 마우스의 추상화 작업으로 인해 왼,오른쪽 영역, 스크롤 등을 프로그래밍에서는 속성,프로퍼티라고 부릅니다.


다른 예로 사람을 추상화 작업한다고 하면


■ 사람 객체

1. 심장

2. 눈, 코, 입

3. 이름

4. 성별

5. 신장(키)

6. 생각한다

7. 뛴다

8. 잔다.


등등 사람을 객체화하여 추상화를 할 수 있습니다. 하지만 사람은 날 수 없으므로 '날다' 라고 추상화를 할 수는 없겠죠!

이렇게 공통적으로 가질 수 있는 정보들을 추상화한다고 하며 프로그래밍의 세계로 접근,접목 시킨 것이 객체지향 프로그래밍에서의 추상화입니다.

위의 사람 객체에서 정의한 리스트들을 프로그래밍적으로 프로퍼티(속성)이리고 하며 프로퍼티 중에 '생각하다', '뛴다', '잔다' 라는 동사적인 행위들을 프로그래밍에서는 메서드라고 부르는 것입니다. ( method(방법) - 뛰게하는 방법, 생각하게 하는 방법 )

이렇듯 추상화란 모든 객체에 공통적인 성질들만 담고 있어야 합니다!!


추상화란 공통점을 뽑아내는 것입니다.

- 객체 지향 프로그래밍에서 추상화(Abstraction)는 객체들의 공통적인 프로퍼티와 메서드를 뽑아내는 작업

- 코드상에서 구현(로직) 부분을 제외한 오직 선언 부분만을 설계하는 것을 말합니다.




자바스크립트에서의 추상화란

자바스크립트에서는 추상 클래스와 인터페이스를 제공하지 않기 때문에 오직 클래스 만을 이용해서 추상화 작업을 해야 합니다.  클래스만을 사용해야 하기 때문에 인터페이스의 기능인 클래스가 구현하고 있어야 하는 규약 등을 적용할 수 없습니다.


자바스크립트는 클래스와 비슷하게 만들어서 사용하는 방법 세 가지를 제공합니다.

1) 리터럴 방식

2) 함수활용 방식

3) 프로토타입 방식




Jaehee's WebClub