객체지향 프로그래밍

Joy·2022년 10월 4일
0

JavaScript

목록 보기
9/15

객체지향프로그래밍

객체지향프로그램(Object Oriented Programing)은 좀 더 나은 프로그램을 만들기 위한 프로그래밍 패러다임으로 기능별로 로직을 구분해서 정리하는 방식 중 하나이다.

즉, 프로그래밍하려는 대상을 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다.

객체지향의 특성

1) 부품화 : 프로그램의 로직들을 기능별로 나눠 부품화 하는 것
2) 은닉화, 캡슐화 : 로직을 온전히 부품화 하기 위해 내부동작법은 숨기고 사용방법만 노출하는 것 (= 내부의 동작 방법을 '객체' 안으로 숨기고 사용자에게는 그 부품의 사용방법인 '메소드'만을 노출하는 것)
3) 추상화 : 현실 또는 가상의 존재를 프로그램에서 사용할 용도에 맞게 설계하는 것

생성자와 new

'객체'란 서로 연관된 변수와 함수를 그룹핑한 그릇이라고 할 수 있다.

일반적으로 객체를 만드는 방법이다.

var person = {}; // 빈 객체 생성
person.name =  'a';   
person.introduce = function(){
return 'My name is' + this.name;
}
console.log(person.introduce());

위의 코드는 객체를 정의하는 부분에 분리가 되어 있어 코드의 집중도가 다소 떨어진다.
객체를 정의 할 때 값을 셋팅하는 코드로 쓰는 것을 지향한다.

	var person = {
    	'name' : 'egoing',
        'introduce' : function(){
        	return 'My name is '+this.name;
        }
    }

그런데 (만약 다른 사람의 이름을 담을 객체가 필요하다면) 유사한 객체의 정의를 여러번 반복해야 할 때가 있다.
객체의 구조를 재활용할 수 있는 방법이 필요하고 '생성자'를 사용하면 된다.

생성자(constructor)는 객체를 만드는 역할을 하는 함수이다.

함수를 호출할 때 new를 붙이면 '생성자'라고 하며 비어있는 객체를 만든 후에 이를 리턴한다.
즉, 함수 앞에 new가 붙으면 리턴 값은 객체가 된다.

	function Person(){}
    var p = new Person(); // var p = Person();일 때 p에 담기는 값은 undefined로 존재하지 않는다.
    p.name = 'egoing';
    p.introduce = function(){
    	return 'My name is ' +this.name;
    }
    console.log(p.introduce()); // My name is egoing

var p = new Person();은 생성자가 되고 변수 p에는 Person{}이라는 빈 객체가 담기게 된다.
이 코드는 객체 리터럴을 통해 객체를 만들었을 때와 같다.
여러번 반복해야 할 때 코드 중복이 일어난다.

function Person(name){  // 생성자로 쓰일 함수 정의 //this = {}; 암시적으로 빈 객체가 만들어짐
	this.name = name;
    this.introduce = function(){
    	return 'My name is' + ' ' + this.name;
    } 
};
// 이런 초기 세팅을 '초기화'라고 부름 (Person이라는 생성자가 만들어 놓은 빈 객체가 어떤 프로퍼티, 메소드를 가져야 하는지를 생성자 함수 안에 기술하는 것을 통해 객체에 대한 정보등을 셋팅 해 주고 이걸 초기화)

var p1 = new Person('a'); // 생성자 person의 인자로 a를 전달한다.
console.log(p1.introduce()); // 생성자 person에서 프로퍼티 name을 'a'로 정의

var p2 = new Person('b');
console.log(p2.introduce());

생성자 내에서 이 객체의 프로퍼티를 정의하고 있다.
생성자 함수는 일반함수와 구분하기 위해 첫글자를 대문자로 표시한다.

생성자의 특징

자바스크립트에서 객체를 만드는 주체는 함수이다.
함수에 new를 붙이는 것을 통해 객체를 만들 수 있다.
객체 리터럴 문법으로 객체를 만드는 것 보다 간단하고 읽기 쉽게 만들 수 있다.

전역객체

전역객체(Global object)는 특수한 객체이다.

function f(){
	console.log('hello');
    }
f();
window.f(); // window가 객체이며 점 뒤의 f()는 속성이 된다. 속성에 함수가 왔으므로 메소드이고 f()함수는 사실 window라고 하는 전역객체의 메서드이다.

결과적으로 f();와 window.f();는 모두 실행이 된다.
객체를 명시하지 않으면 암시적으로 window의 프로퍼티로 간주됨.
자바스크립트에서 모든 객체는 기본적으로 전역객체의 프로퍼티이다.

전역객체 API

API

Application Programming Interface의 약자로,
프로그램이 동작하는 환경을 제어하기 위해서 환경에서 제공되는 조작 장치이다.
이 조작 장치는 프로그래밍 언어를 통해서 조작할 수 있는데 자바스크립트의 API는 크게 자바스크립트 자체의 API와 자바스크립트가 동작하는 호스트 환경의 API로 구분된다.

전역객체의 API는 호스트 환경에서 필요에 따라서 추가로 정의하고 있다.
전역객체의 이름도 호스트환경에 따라서 다른데, 웹브라우저에서 전역객체는 window이지만 node.js에서는 global이다.
즉 node.js와 같은 경우 자바스크립트 문법의 window와 같은 전역 객체 역할을 하는 것이 global인것이다.

profile
🐣

0개의 댓글