컴퓨터 공학 & 통신

[개념 정리] 클래스, 객체, 인스턴스

왈왈디 2023. 6. 30. 14:25
728x90

객체 지향 프로그래밍을 처음 접했을 때 클래스인스턴스, 그리고 객체의 개념이 와닿지 않아 이해가 어려웠다.

셋의 개념을 정리해보자.

 

클래스 (class)

클래스객체를 만들기 위한 이다.

틀로 찍어낼 객체의 속성과 메서드의 집합이 담겨 있다.

 

객체 (object)

객체란 클래스로부터 만들어지는 실체, 클래스로 선언된 변수이다.

 

인스턴스 (instance)

인스턴스란 객체가 메모리에 할당된 상태이며, 런타임에 구동되는 객체를 말한다.

객체와 같은 의미로 쓰이기도 한다.

(참고로, AWS에서 클라우드의 가상 서버를 인스턴스라고 부르기도 한다.)

 

예시

클래스와 인스턴스(객체)의 관계를 설명할 때 가장 많이 사용되는 예시로는 붕어빵 틀이 있다.

붕어빵을 만들어 낼 때 붕어빵 틀에 반죽과 소를 넣어 붕어빵을 만들어낸다.

 

모두 붕어빵이라는 공통점이 있지만,

팥이 100g 들어간 붕어빵, 팥이 아닌 슈크림이 100g 들어간 붕어빵, 반죽이 200g 들어간 붕어빵 등

각 속성에는 차이점이 있을 수 있다.

 

이때 붕어빵을 찍어내는 틀이 클래스이고, 각각 만들어진 붕어빵이 인스턴스(객체)라고 할 수 있다.

붕어빵 예시를 자바스크립트 코드로 만들어보면 다음과 같다.

class Bungeoppang {
	constructor(doughQuantity = 100, sauceType = '팥', sauceQuantity = 100){
    	this.dougnQuantity = doughQuantity;
        this.sauceType = sauceType;
        this.sauceQuantity = sauceQuantity;
    }
    
    ready(){
    	console.log('주문하신 ' + this.sauceType + ' 붕어빵 나왔습니다.')
    }
}

const pizzaBung = new Bungeoppang(120, '피자', 120);

pizzaBung.ready();//'주문하신 피자 붕어빵 나왔습니다.'

Bungeoppang 클래스는 반죽 양(dougnQuantity), 소 종류(sauceType), 소의 양(suaceQuantity) 등

붕어빵이라면 가지고 있을 공통된 속성을 가지고 있고, 

준비 완료를 알리는 ready()는 메서드를 포함하고 있다.

 

pizzaBung은 붕어빵 틀이 되는 Bungeoppang 클래스를 활용해 만들어진 붕어빵, 즉, 인스턴스이다.

인스턴스는 클래스에 포함된 ready() 메서드를 사용할 수 있다.

 

참고: inflearn 강의 'CS 지식의 정석 - 큰돌'

728x90