본문 바로가기
junior developer :)/JS_JavaScript

객체지향 프로그래밍 1. 클래스와 인스턴스

by ㅁ윤슬ㅁ 2022. 9. 21.
728x90
반응형

객체지향 프로그래밍을 이해하기 위해서는 클래스와 인스턴스의 이해가 필요합니다.

그렇기 때문에 객체지향 프로그래밍에 대해 본격적으로 공부 해보기 전에 클래스와 인스턴스에 대해서 정리하고 넘어가려고 합니다.

 

클래스

정의 : 객체를 만들기 위한 틀을 잡아주는 문법(ex.붕어빵 틀)

클래스를 만드는 방법은 두가지가 있습니다

두가지 방법 전부 다른 일반적인 함수와 구분하기 위해 클래스는 대문자로 시작하는 일반명사로 만든다

- 일반적인 함수를 정의하듯 만드는 법(ES5클래스 작성 문법)

function Computer (brand, name, version, color){
	this.color = black;
    	.
    	.
    	.
    }

- ES6에 도입된 문법
최근에 주로 사용되는 방식으로 class 생성자를 이용하여 정의한다

class Computer {
	constructor(brand, name, version, color) {
    		this.color = black;
    		.
    		.
    		.
    	}
    }

이 함수를 '생성자(constructor) 함수'라고 해요
생성자 함수란 클래스 기반으로 인스턴트 (객체)를 생성할 때 처음 호출되는 함수를 말합니다.
생성자 함수는 return값을 만들지 않습니다.

 

인스턴스

정의 : 클래스(틀)을 바탕으로 한 객체(ex. 붕어빵)

새로운 인스턴스를 만들기 위해서는 new 키워드를 사용 하면 됩니다.
DOM에서도 createElement 키워드를 이용해서 인스턴스를 생성할 수 있다

let div = document.creatElement('div')

인스턴스를 생성하고 나면 생성자 함수가 실행되며, 변수에 새로운 객체 즉, 인스턴스가 할당됩니다.

 

각각의 인스턴스는 클래스의 고유한 속성과 메서드를 갖게 됩니다.

* 속성은 위의 예시에 brand, name 등과 같은 컴퓨터의 '속성'을 나타내는 것

let mac = new Computer ('apple','mac air','m2','gray');

또는 클래스 예시처럼 this로 정의하여 인스턴스를 할당할 수 있습니다
this는 간단하게 인스턴스 객체를 의미하며 만들어진 인스턴스에 this를 이용해 해당 브랜드, 이름등을 부여하겠다는 의미


* 메서드는 속도, 용량등의 기능을 나타내는 객체에 딸린 함수

run() {
	console.log(this.name + "가 부팅되었습니다")
    }

ES6방식으로 생성한 클래스에서는 위의 방식으로 메서드를 정의할 수 있지만 
ES5방식으로 생성한 클래스에서는 prototype을 이용해야 합니다

Computer.prototype.run = function () {
	console.log(this.name + "가 부팅되었습니다")
}

클래스와 인스턴스에 대해 공부하면서 this 키워드를 처음 접하게 되었는데 , 이 부분도 공부해서 포스팅해야겠다.

 

728x90
반응형