Object — Oriented Programming, Js
OOP 란 무엇인가
JS 에서 Object를 생성하는 여러가지 방법
JS 에서 Prototype 은 무엇이고, 왜 사용 해야하는가
OOP 란 무엇인가
Object Oriented Programming 이란 말 그대로, 객체 지향 프로그래밍 이라고 할 수 있다.
객체지향 프로그래밍 … 한글로 작성했음에도 불구하고 무슨 뜻인지 이해가 되지 않았고, 이 개념을 이해하기 위해서도 많은 레퍼런스들을 참고하였다. 하지만 너무 많은 정보들을 본 탓에 더 헷갈려진 것은 아니였던가 하는 생각으로 작성을 시작하겠다.
객체지향 프로그래밍을 간단하게 말한다면,
프로그램에 필요한 여러가지 행위와 기능들로 이루어진 객체들을 모아서, 레고처럼 조립하여 만든 하나의 프로그램을 만드는 것을 객체지향 프로그래밍이라고 할 수 있을 것 같다.
하나의 프로그램을 만들었다면 이를 Class 라고 생각을 하고,
이 Class 안에는 다양한 객체 (클래스의 인스턴스) 들이 있을 것이다.
그리고 이 객체들은 속성(property) 과 기능(method) 을 가지고 있을 것이다.
이게 무슨 말인가 하면 예를들어
Class: 자동차공정
객체(속성과 기능을 가지고 있음) : 소프트웨어
자동차 공정에는 자동차를 만들 때 필요한 소프트웨어를 가지고 있다고 생각하면 된다.
따라서 class 에서 설정값을 조절한다면 그에 대한 새로운 객체들을 만들어 낼 수 있을 것이다.
Class 에서 설정값을 조절하면 새로운 자동차들을 찍어낼 수 있다는 것으로 이해하면 된다.
즉, 객체지향 프로그래밍의 장점은 일련의 프로그램을 만드는 과정을 객체 단위로 작업을 할 수 있다는 것이며,
이미 만들어진 객체들을 통하여 재사용이 용이하다는 장점이 있다.
이에 대해 4가지의 OOP Basic Concepts 이 있다.
OOP , Basic Concepts
1. Encapsulation 캡슐화
제대로 구현이 된것은 어떻게 만들어졌는지를 모른다하더라도 사용할 수 있어야 한다.
따라서 사용자로 하여금, 내부의 동작방법에 접근하지 못하게 하고, 사용방법만을 노출하고 사용하게 하는 것이다.
즉, 변수들을 외부에서 접근하지 못하게하고,함수를 통해서만 접근하게 해야하는 것이 캡슐화이다.
숨겨준다는 의미에서 은닉화라고도 한다. >> 재사용성
2. Inheritance : 상속
클래스의 정보를 다른 클래스에 전달이 가능함으로,
정보를 전달한 클래스를 부모클래스, 정보를 받은 클래스를 자식클래스로 의미를 두고
자식클래스는 부모클래스의 속성과 메소드 (객체) 를 정의하지않고 사용이 가능하다. >> 재사용성, 코드의 불필요 감소
3. Abstraction : 추상화
이 개념은 스마트폰의 내부를 생각하자.
스마트폰의 사용자는 기기의 내부가 복잡하게 되어있는 것을, 알 필요가 없다.
따라서 복잡하게 되어있는 것을 사용자는 간편하게 사용하는 것이라고 생각하였다. >>불필요한 코드제거
예를들어, 공통의 속성이나 기능을 묶어 이름을 임의로 지정해줄 수 있다
코끼리, 하마, 사자, 호랑이 >>> 동물
4. Polymorphism : 다형성
상속과 비슷한 개념이지만, 자식클래스는 부모클래스의 메소드를 그대로 받지않고, 자신의 속성에 맞게 메소드를 수정하여 재 사용한다.
다음으로는 “JS 에서 Object를 생성하는 여러가지 방법” 에 대해 작성해보도록 하겠다.