[OOP] 클래스와 인스턴스

젬마·2022년 9월 21일
0

codestates

목록 보기
4/18

객체 지향 프로그래밍이란?

  • 하나의 모델이 되는 청사진(blueprint)을 만들고, 그 청사진을 바탕으로 한 객체를 만드는 프로그래밍 패턴. 자동차 틀을 만들고, 그 틀로 수많은 자동차를 찍어내는 것과 같다. 다른 포스팅에서 더 자세히 다룰 예정
  • 여기서 자동차 틀을 클래스(class), 자동차를 인스턴스(instance object / instance)라고 부른다.

클래스 정의 방법

//ES5
function Car(brand, name, color) {
	//인스턴스가 만들어질 때 실행되는 코드
}
//ES6
class Car{
	constructor(brand, name, color) {
    	//인스턴스가 만들어질 때 실행되는 코드
    }
}
  • 최근에는 ES6 방법을 더 많이 사용함
  • 생성자(constructor) 함수란 인스턴스가 만들어질 때 실행되는 코드를 뜻함
  • 생성자 함수는 return 값이 없음

new 키워드

let avante = new Car('hyundai', 'avante', 'black')
  • new 키워드를 사용하여 인스턴스를 만듦. 이때 즉시 생성자 함수가 실행되며, 변수에 클래스의 설계를 가진 새로운 객체, 즉 인스턴스가 할당됨
  • 각각의 인스턴스는 클래스의 고유한 속성과 메서드를 가짐

속성과 메서드?

  • 혹자는 객체 지향 프로그래밍을 '사람이 세계를 보고 이해하는 방법을 흉내낸 방법론'이라고도 말한다. 즉 실제 세계의 사물에 빗대면 훨씬 이해하기 쉬워진다.
  • 속성은 객체가 가진 특징이다. 자동차의 브랜드, 이름, 색 등이 이에 해당한다.
  • 메소드는 "객체에 딸린 함수", 즉 객체와 관련된 행위이다. 자동차에 연료를 주입하고, 속력을 설정하고, 운전을 하는 등.

this

//ES6 기준
class Car{
	constructor(brand, name, color) {
    	this.brand = brand;
        this.name = name;
        this.color = color;
    }
}
  • 함수가 실행될 때, 해당 scope마다 생성되는 고유한 실행 context
  • 즉 위 예시에서 this는 인스턴스 객체를 의미함. parameter로 넘어온 브랜드, 이름, 색상 등은 인스턴스 생성 시 지정하는 값.
  • 위와 같이 this에 할당한다는 것은 만들어진 인스턴스에 해당 브랜드, 이름, 색상을 부여하겠다는 의미

메서드의 정의

//ES5
function Car(brand, name, color) {
	//(생략)
    Car.prototype.refuel = function(){
    };
}
//ES6
class Car{
	constructor(brand, name, color)
    //생략
    refuel() {
    }  
}
  • ES5는 prototype을 이용하여 메서드를 정의함(다른 포스팅에서 자세히 다룰 예정)
  • ES6에서는 생성자 함수와 함께 class 키워드 안쪽에 묶어서 정의함

한 장 정리

profile
취준생은 프론트엔드의 꿈을 꾸는가

0개의 댓글