구색을 갖춰놓은 정보 집합, class
클래스는 다양한 의미를 갖고 있는 단어이다.
단순한 단어 의미로 '학급, 수업, 강좌' 의 뜻이 있고
사회학적으로 직업, 신분, 재산등에 의해 구별되는 사람들의 집단. 즉, '계급'의 의미도 있다.
통계학적으로 변량의 값을 나눈 '구간'을 의미한다.
하지만, 프로그래밍에서는 객체 내부의 데이터 구조와 그 조작을 정리하여 '정의'한 것.
동일한 속성, 오퍼레이션, 관계 등을 갖고 있는 객체들의 집합을 나타낸 것이다.
짧게말해 속성과 행동을 모아놓은 것이다.
이렇게 설명하니 어려운것 같다.
일단 한 단어로 말해서 클래스는 '정의'라고 할 수 있다.
속성와 행동을 정의한것.
어떤 속성이 있는지, 동작은 어떻게 이루어지는지 기본 설정을 하는 것이라 할 수 있다.
클래스 { (속성1), (속성2), (속성3), (동작1), (동작2), (동작3) }
클래스로 기본적인 내용을 정의해두고, 클래스를 이용해 객체를 만드는 것이다.
즉 객체를 만들기 위해서는 객체의 바탕이 되는 클래스를 미리 만들어야 한다.
개별적인 실제 사례, instance
인스턴스는 단순한 단어 의미로 '사례, 경우, 예시'의 뜻이 있다.
지리적으로 '지리 정보와 지물 특성'을 말한다.
하지만, 프로그래밍에서는 어떤 집합에 대해서, 그 집합의 개별적인 요소 또는 어떤 등급에 속하는 각 객체를 인스턴스라고 한다.
역시 이렇게 말하면 어렵다.
일단 한 단어로 말해서 인스턴스는 '사례'라고 할 수 있다.
클래스를 기반으로 각각 살을 붙여 다양한 예시들을 생성할 수 있는 것이다.
object, class, instance
객체, 클래스, 인스턴스 이 셋의 관계를 예시를 들어 설명하겠다.
코끼리가 있다.
코끼리는 객체이다.
코끼리에 관하여 '코 길이', '키', '귀 크기' 같은 속성들과 '음식을 먹는 법', '코를 휘두르는 법' 같은 행동을 정의할 수 있다.
이렇게 정의한 것이 클래스이다.
아직은 코끼리의 특징을 정의한 것일 뿐 진짜 코끼리는 아니다.
정의한 클래스를 불러와 메모리를 할당해 사례를 만들면 이것을 인스턴스라고 부른다.
이때 사례를 만들때 단순히 '코끼리1', 코끼리2' 라고 사례를 만들 수 있지만, 여기에 개별적인 특성을 더해
'아프리카 코끼리', '인도 코끼리' 같은 각각의 사례들을 만들어낼 수 있는데 이 각각을 인스턴스라고 한다.
정리하자면
우리가 '차'라고 하는 객체는 생각할 수 있지만
실제로 세상에 '차'라고 하는것은 없다. '벤츠', '아우디', '제네시스'는 있을지 몰라도 그냥 '차' 는 없다는 말이다.
우리는 여러 '벤츠', '아우디', '제네시스'의 특징중 공통적인 특징을 가리켜 '차'라고 개념상을 한데 묶어 분류한 것이다.
공통적인 부분 외에도 많은 차이가 있는데 객체가 '추상'이라면 인스턴스는 '실제'라는 것이다.
그리고 클래스는 인스턴스를 만들기 위해, 객체를 표현한 '기본적인 설계도' 이다.
객체 : 코끼리
클래스 : 코끼리 설계도 (속성, 행동 정의)
인스턴스 : 클래스를 바탕으로 만든 '인도 코끼리', '아프리카 코끼리' 등
'클래스로 객체를 만든다.' 와 '클래스로 인스턴스를 만든다.' 는 엄밀히 같은 말은 아니지만 사용하는데 큰 문제는 없다.
객체는 모든 것이기 때문에 클래스를 바탕으로 실체화한 인스턴스 각각을 객체라고 할 수 있다.
하지만 엄밀하게는 인스턴스라고 하는 것이 더 정확한 표현이다.
왜냐하면 객체는 추상이지만 인스턴스는 실제이기 때문이다.
용어에 관하여 어떻게 관계되어 있고 어떤 것을 지칭하는지 개념을 명확히 해두어야 할 필요가 있다.
'CS & CE & DS & DA 공통 > 객체 지향 프로그래밍(Object Oriented Programming)' 카테고리의 다른 글
메소드 (by 파이썬) (0) | 2022.07.07 |
---|---|
인스턴스 변수(by 파이썬) (0) | 2022.07.06 |
객체 지향 프로그래밍_개념 (0) | 2022.07.01 |