Today’s Key 🔑


고차원 프로그래밍 언어를 위한 객체 지향 프로그래밍

고차원 언어는 인간의 말과 비슷한 형태로 컴퓨터가 동작하게 만드는 프로그래밍 명령어를 의미한다. 영어로 구성되고, 절차 지향 언어(C언어 등)와 객체 지향 언어로 나누어진다. 절차 지향 언어는 말 그대로 프로그래밍의 순차적인 처리가 중시된다. 프로그램이 유기적으로 연결되게 하는 기법이다. 객체지향보다 이전에는 더 빠르게 처리되었지만, 지금은 하드웨어와 컴파일러의 발달로 객체 지향으로 프로그래밍을 처리하고 있다.

객체 지향적 프로그래밍은 사용하고자 하는 객체의 Proto(청사진)를 그리고 그것에 대한 속성들을 정의하여 프로그래밍 전반적으로 사용할 수 있게 만들어주는 기법이다. 이렇게 생성된 객체는 재사용성이 높고, 유지성이 높다. 클래스를 기반으로 인스턴스를 복제하는 공장의 개념이라고 볼 수 있다.


Instance를 생산하는 방법, instantation

Functional : 함수 내부에서 인스턴스에 대한 속성을 정의해주는 방법

var Car = function (position) {
  // 클래스에서 찍어낼 인스턴스 정의
  var someInstance = {};

  // 초기값 부여
  someInstance.position = position;

  // 메소드 부여
  someInstance.move = function () {
    this.position += 1;
  };

  return someInstance;
};


Functional Shared : 메소드와 인스턴스를 각각 정의해주어 메모리 참조만 하는 방법

// someInstance와 someMethod를 연결하는 extend 함수 생성
var extend = function (to, from) {
  for (var key in from) {
    to[key] = from[key];
  }
};

// 메소드를 담는 객체 생성
var someMethod = {};
someMethod.move = function () {
  this.position += 1;
};

// 객체 생성
var Car = function (position) {
  var someInstance = {
    position: position,
  };

  extend(someInstance, someMethod);
  return someInstance;
};


Prototypal : Object.creat()함수를 사용하여 인스턴스를 생성하는 방법

var someMethod = {};
someMethod.move = function () {
  this.position += 1;
};

var Car = function (position) {
  // Object.create 함수를 사용해서 someMethod를 가진 인스턴스 생성
  var someInstance = Object.create(someMethod);
  someInstance.postion = postion;

  return someInstance;
};


Pseudoclassical : 프로토타입을 사용하여 메소드를 지정해주는 방법.

var Car = function (position) {
  this.position = position;
};

// prototype으로 객체와 메소드를 연결
Car.prototype.move = function () {
  this.position += 1;
};

// new 키워드를 사용해주어야 한다.
var car1 = new Car(5);