[JS] 객체지향 프로그래밍

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

객체지향 프로그래밍은 함수들의 집합 혹은 단순한 컴퓨터의 명령어들의 목록이라는 전통적인 절차지향 프로그래밍과는 다른, 여러 개의 독립된 단위, 즉 관계성있는 객체들의 집합이라는 관점으로 접근하는 소프트웨어 디자인으로 볼 수 있다.
각 객체는 메시지를 받을 수도 있고, 데이터를 처리할 수도 있으며, 또다른 객체에게 메시지를 전달할 수도 있다. 각 객체는 별도의 역할이나 책임을 갖는 작은 독립적인 기계 또는 부품으로 볼 수 있다.

(서로 연관되어있는 값과 연관되어있는 데이터와 연관되어있는 어떤 처리를 하나의 그릇안에 모아서 그룹해놓은 프로그래밍 스타일)


[예제]

var grades = {
    'list' : {'shinninja': 10, 'k8805': 6, 'sorialgi': 80}, // 'grades'라는 객체 안에 'list'라는 객체를 또 생성했다.
    'show' : function(){ // 함수를 담을 수도 있다.
        console.log('Hello world');
    }
};

console.log(grades['list']); // 객체를 가져오는 방법 (결과값 : {'shinninja': 10, 'k8805': 6, 'sorialgi': 80})
console.log(grades['list']['shinninja']); // key값을 가져오는 방법 (결과값 : 10)
console.log(grades['show']()); // 함수 호출 하는 방법 1
grades['show'](); // 함수 호출 하는 방법 2
grades.show(); // 함수 호출 하는 방법 3


this

var grades = {
    'list' : {'shinninja': 10, 'k8805': 6, 'sorialgi': 80}, 
    'show' : function(){
        console.log(this);
        console.log(this.list); // 결과값 : {shinninja: 10, k8805: 6, sorialgi: 80}
    }
};

grades['show']();

결과값 : object {shinninja: 10, k8805: 6, sorialgi: 80}

this는 javascript에서 약속 되어 있는 정해져 있는 변수다.
위 코드에서의 this는 함수(show)가 속해있는 객체(grades)를 가리키는 변수다.


var grades = {
    'list' : {'shinninja': 10, 'k8805': 6, 'sorialgi': 80}, 
    'show' : function(){
        for(var name in this.list){
            console.log(name, this.list[name]);
        }
    }
};

grades.show(); 

결과값    
shinninja 10
k8805 6
sorialgi 80

‘grades’라는 객체는 서로 연관되어 있는 ‘list’라고 하는 데이터와 ‘show’라고 하는 함수를 그룹핑한 그릇이라고 할 수 있다. 이런것들을 객체지향 프로그래밍이라고 한다.


객체지향 프로그래밍의 장, 단점

장점

단점


객체지향 프로그래밍 키워드 5가지

출처 : 생활코딩, 블로그1, 블로그2, 블로그3, 블로그4, 위키백과