본문 바로가기
Essay/Programming

오브젝트(객체)에 대해서

by hanstar17 2011. 9. 5.

오브젝트(Object)의 반대말로 서브젝트(Subject)가 있다. 서브젝트는 주체란 뜻이고, 오브젝트는 객체란 뜻이다. 주는 주인 주 자이고 객은 손님 객 자이다. 쉬운 말로 하면 서브젝트는 '나'이고 오브젝트는 '나를 제외한, 나의 관념으로 들어온 손님이다. 연필도 객체고 책도 객체고 친구도 객체고 거울도 객체다. 나를 제외한 내가 인식하는 모든 것은 객체이다.

지금은 객체지향 프로그래밍의 시대다. 객체지향 프로그래밍은 객체를 중심으로 프로그래밍한다는 뜻이다. 객체지향 프로그래밍의 시대가 오기 전에는 절차지향 프로그래밍의 시대였다. 어떤 일을 특정한 순서대로 처리해 나간다. 절차지향 프로그래밍은 함수 중심의 프로그래밍 패러다임이고 객체지향 프로그래밍은 객체 중심의, 즉 클래스 중심의 프로그래밍 패러다임이다.

객체는 자신을 표현하는 정보를 가지고 있다. 예를 들어서 책은 여러장의 페이지, 제목, 저자, 출판사, 소비자가격, 그리고 수만글자의 텍스트와 그림들을 가지고 있다. 그리고 자신에게 특수화된 행동을 하거나 행동이 행해질 수 있다. 책은 펴질 수 있으며, 각 페이지는 접힐 수 있고, 제목 옆에 주인의 이름을 기입할 수도 있다. 연필은 펴질 수 없다. 거울에는 이름을 기입할 수 없다. 객체를 표현하는 정보 하나하나를 객체의 Instance variable 이라고 하고, 객체가 가할 수 있거나 객체에 가해질 수 있는 특수한 행위들을 그 객체의 Instance methods라고 한다.

다음은 학생 객체의 가벼운 예시다.

// 학생 타입의 hanbyeol이란 이름의 객체 선언
Student hanbyeol = [[Student alloc] init];
// hanbyeol 객체의 instance variable 'name'을 "한별"로 셋팅
hanbyeol.name = @"한별";

// instance variable 'age' 셋팅
hanbyeol.age = 23;

// 'major' 셋팅
hanbyeol.major = @"Computer Scinece";

// hanbyeol이 'takeExam' 이라는 instance method를 통해 시험을 침. 총 세 번 침.
[hanbyeol takeExam];
[hanbyeol takeExam];
[hanbyeol takeExam];

// hanbyeol 자신이 지금까지 친 시험의 평균 성적을 계산해 돌려줌.
char grade = [hanbyeol calculateAverageGrade];