프로그래밍하는데 있어 객체라는 말은 계속적으로 쓰이는데, 그냥 추상적으로만 관념적으로만 그 이해를 하고 있고 누군가나한테 객체가 무엇인지 물어본다면 제대로 답을 못하겠다. 그래서 한번 그 정의를 내려보고자 이 글을 쓴다.
객체(Object)를 설명하기에 앞서 클래스(Class)에 대해서 설명하자면, 클래스는 객체를 정의하는 수단이다. 객체는 속성(attribute)와 함수(function)으로 이루어져 있다. 속성(attribute)은 객체를 나타내거나, 객체가 소유하고 있는 데이터로, 사람에 비유를 들면, 사람이라는 객체(Object)가 있을 때 나(me)라는 사람을 나타내고 표현할 수 있는 여러가지 특징이나 데이터(?)들이 있는데 나의 성별속성(attribute)는 남자이고, 키속성(attribute)는 170이고, 나의 월급속성(attribute)는 200 이다. 이렇게 3가지의 속성이 있을 때 이 속성들에 대해서 변화를 주고 싶다, 혹은 무언가를 하고싶다면 이 때 만들어지는 것이 함수(function)이다. 물론, 객체(Object)안에 있는 속성(attribute)만을 사용해야 한다거나, 무조건 1개 이상을 사용해야 한다는 것은 아니지만, 주로 속성(attribute)들을 다루기 위해서 함수(function)가 객체(Object)내에 정의된다. 함수(function)의 또 다른 목적으로는 객체(Object)의 행위적인 특징들을 나타내기 위해서도 정의된다.
이 내용들을 가지고 사람이라는 객체를 클래스를 통해서 정의를 하면 다음과 같다.
class Person:
sex = "남자"
height = 170
salary = 200
account = 2000
def shake():
if partners_key >= height:
print("손을 좀 더 높이 올리세요")
else:
print("손을 평상시와 같은 높이로 올리세요")
def working():
account += salary
그렇다면, 객체는 무엇일까?!?!?!?!?! → 개념적으로 보면 사람이라는 객체안에 있는 성별이라는 속성도 어찌보면 하나의 객체가 될 수 있다. 외형적인 부분이 아니라, 염색체를 분석해서 보면, XY염색체(attribute)를 가지고 있으면 남자인 객체가 되는거고 XX염색체(attribute)를 가지고 있으면 여자인 객체가 되는거고.. 그렇기 때문에 객체의 정의를 해당 객체가 가지고 있는 실질적인 의미를 가지고 설명하는 것은 옳지 않다. 그렇다면 컴퓨터 하드웨어 적인 관점에서 보자면 어떤게 객체(Object)일까? 객체(Object)안에 정의되어 있는 속성(attribute)들은 보통 언어들을 처음 배울 때 접하는 Data Type의 하나의 정의된다. sex라는 attribute는 String Type이고, salary라는 attribute는 Integer Type 혹은 Float Type이다. 이렇게 각 언어에서 정의하는 기본적인 변수들의 Data Type으로 나타내어 지는 것을 속성(attribute)라고 한다면, 이러한 속성들(attributes)과 함수들(functions)을 클래스(Class)라는 방법을 통해서 모와서 정의한 것이 객체라고 볼 수 있다.
…… 그래서 3줄 요약좀