JavaScript 객체지향 프로그래밍

JavaScript OOP

스터디 모임 때 객체지향 프로그래밍의 개념에 대해 이야기를 나누었습니다.
진행할 프로젝트에서 객체지향으로 짜보고 싶어 좀 더 깊게 공부해보려합니다.

객체지향 프로그래밍(Object-Oriented Programming)

절차지향 프로그래밍과 비교해 보자

절차지향은 문제를 순차적으로 호출해 처리하는 방식으로, 함수 단위 코딩을 하는 경우가 대표적인 예입니다.
전역 데이터를 매개변수 값으로 공유해서 사용하는 구조이기 때문에 데이터가 보호되지 않는다는 치명적인 단점이 있습니다.
또한 하나의 프로젝트를 여러사람이 작업할 경우에도 적합하지 않습니다.
이러다보니 비교적 간단한 프로젝트에 주로 사용합니다.

객체지향이란?

문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로 오늘날 가장 많이 사용하는 대표적인 프로그래밍 방식입니다.
객체지향 프로그래밍의 기본 단위는 클래스 단위 프로그래밍으로서
클래스를 이용해 연관 있는 데이터부분(변수, 프로퍼티)과 처리부분(함수, 메소드)을 하나로 묶어 객체(인스턴스)를 생성해 사용합니다.

4가지 특징인 추상화, 캡슐화, 상속, 다형성을 골고루 사용해 코딩하는 프로그래밍을 객체지향이라고 합니다.
프로그래밍 선배님들이 어떻게 하면 유지보수하기 쉽고 중복되지 않는 멋진 코드를 만들 수 있을까 하고 노력한 끝에 완성한 최상의 결과물!

장점 : 프로젝트를 독립적인 객체 단위로 분리해서 작업할 수 있으므로 여러 개발자와 협업해 규모가 큰 프로젝트를 진행할 수 있습니다.

추상화(abstraction)

설계하는 작업 자체를 나타냅니다. 프로퍼티와 메서드를 정의 하는 작업으로 이름을 작성하는 선언 부분만 만들 뿐 소스는 구현하지 않습니다.

캡슐화(encapsulation)

어떤 프로퍼티와 메서드는 외부에서 접근가능(public), 외부에서 접근하지 못하게(private) 하는 작업을 말합니다.

상속(inheritance)

부모 클래스의 프로퍼티와 메서드를 자식클래스가 물려 받는 것입니다. 즉, 자식클래스에서 부모클래스의 기능을 사용할 수 있습니다.

다형성(polymorphism)

객체지향의 핵심입니다. 선언 부분과 구현 부분을 나눠 다양하게 처리할 수 있습니다.
다형성을 적용해 코드를 만들게 되면 특정 작업을 소스 수정을 거의 하지 않고 다양한 방법으로 연결해서 만들 수 있습니다.

참고 자료

웹 프론트엔드 개발자를 위한, 자바스크립트+jQuery 완전정복 스터디 - 김춘경(딴동네)

Share