Object Oriented Programming

Computer Programming

알고리즘이 모여 특수목적을 갖게 되면은 프로그램이 된다
컴퓨터 프로그램에는 크게 3가지가 존재한다.

1. Machine Languages(기계어)
2. Assembly Languages(어셈블리어)
3. High-Level Languages(고급언어)

고급언어에 가까울 수록 사람의 언어와 점점 비슷해지는 특징이 있다.

Machine Languages

0과 1만으로 이루어져 있는 언어 그래서 사람이 알아 듣기가 매우 어렵다.

Assembly Languages

기계어를 사람이 사용할 수 있게 변환시켜준 언어이다
하지만 소수의 명령어, 변수 밖에 없기 때문에 매우 불편하다

High-Level Languages

line by line 으로 읽으면서 바로 컴퓨터에서 볼 수 있도록 변환을 해준다
고급언어에도 크게 2가지로 볼 수 있다 

Procedural Languages(절차지향 언어): C, COBOL,Fortran, LISP, Perl, HTML, VBScript...
Object-Oriented Languages(객체지향 언어): Java, C++, Python, JavaSCript...

객체 지향의 특징과 장점으로는 크게 4가지가 있다

1. Encapsulation(캡슐화) 복잡성을 줄여주고 재사용성을 높여준다
2. Ingeritance(상속) 똑같은 코드가 겹치지 않게 해준다.
3. Abstaction(추상화) 복잡성을 줄여준다.
4. Polymorphism(다향성) switch/case 문을 쓰지 않고 깨끗하게 코드를 사용할 수 있게 해준다

Instantiation Patterns
말 그대로 인트턴스를 만드는 과정을 뜻한다.
자바스크립트에서의 Class가 나오기 전 사용하던 Class선언 방식으로 4가지가 있다

1. Functional
2. Functional Shared
3. Prototypal
4. Pseudoclassical

Functional

var Car = function(position){
  var someInstance = {};
  someInstance.position = position;
  someInstance.move = function(){
    this.position += 1;
  }
  return someInstance;
}

var car1 = Car(5);

Functional Shared

var extend = function( to, from){
	for( var key in from ){
    	to[key] = from[key];
    }
}

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

var Car = function(position){
	var someInstance = {
    	position : position;
    };
    extend(someInstance, someMethods);
    return someInstance;
}

var car1 = Car(5);
var car2 = Car(10);

Function Shared 방식을 사용하면 someMethods라는 객체에 있는 메소드들이 메모리 주소만을
참조하기 때문에 메모리 효율이 좋다.


Prototypal

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

var Car = function(position){
  var someInstance = Object.create(someMethods)
  someInstance.potition = position;
  return someInstance;
}

var car1 = Car(5);
var car2 = Car(10);

여기서 Object.create의 역활은 특정 객체를 프로토타입으로 하는 객체를 생성해 주는 함수이다.

Pseudoclassical

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

Car.prototype.move = function(){
	this.postion += 1;
}

var car1 = new Car(5);
var car2 = new Car(10);

가장 많이 사용하는 방식이다


댓글

이 블로그의 인기 게시물

[Unity] Fade in 쉽게 사용해보기

[C#] 다른 파일에 있는 클래스 불러오기

[Git] Visual Studio 2022 에서 git command 사용해보기