본문 바로가기

JAVASCRIPT

객체지향 프로그래밍이란 무엇인가?

반응형

웹디자이너로 공부를 시작했지만 프론트엔드로 넘어가고싶어 자바스크립트를 시작했다.

그런데 이 프로그래밍 개념이라는게 쉽게 이해가는 영역이 아니더라.

 

 

프로그래밍을 접하면서 가장 뜬구름 잡는 개념이다 생각했던 것이 바로 '객체지향 프로그래밍'.

 

그렇다면 정말 객체지향 프로그래밍, Object-oriented programming(줄여서 OOP)은 뭘까.

자바스크립트를 비롯해 자바, C#, C++, 파이썬, PHP 등등 현재 많이 쓰이고 있는 언어들 대부분이 객체지향 프로그래밍을 지원하고 있다.

 

이 객체지향 프로그래밍을 아주 기똥차게 설명해주는 유튜브 영상이 있어 잠시 소개한다.

 

 

영상에서 설명한 것을 단순하게 정리해보자면,

작동시키고자 하는 객체(Object)를 클래스(Class)로 묶어 명령을 처리하는 과정을 말한다.

코드는 반복되는 것을 줄여야하므로, 편의상 그 과정들을 유연하게 변형시키면서 다양한 코드가 완성된다. 결국 객체지향 프로그래밍은 불필요한 반복을 줄이고 코드를 단순화하기 위해 고안된 방법이라고 볼 수 있다. 

위의 영상에서는 객체를 학생으로, 클래스를 청소하는 묶음으로 예를 들며 설명했다.

 

그런데 자바스크립트는 프로토타입 기반의 언어(Prototype-based programming)이기 때문에 클래스Class를 지원하지 않는다.  (용어가 어려울땐 그냥 외운다..필기 필기..)

대신 function 함수를 사용하는데 자바스크립트에선 function이 class 대신이다. 

하지만 ECMAScript2015 부터는 class 문법이 도입되었다. class 접근 방식은 다른 언어의 클래스와 비슷하다. 

 


 

객체지향 프로그래밍에서 중요한 개념 

 

Property : 객체 Object가 지닌 속성을 정의한다 (객체의 색깔, 생김새..)

Method : 객체 Object에 특정한 기능을 부여한다

Constructor : 객체 Object가 인스턴스화될 때 호출되는 메서드 Method

Inheritance : 클래스의 상속 능력 (부모로부터 이어 받음)

Encapsulation : 클래스는 해당 객체의 특성들만 정의할 수 있고, 메서드는 그 메서드가 어떻게 실행되는지만 정의할 수 있다.

Abstraction : 상속, 메서드, 객체의 속성 결합은 반드시 현실에 시뮬레이션할 수 있어야 함

Polymorphism : 다른 클래스들이 같은 메서드나 속성으로 정의될 수 있다.

 

참고 사이트 : https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects

반응형