주체가 바라보는 모든 대상이 객체입니다
그렇다면 객체는 무엇일까요? 주체의 반대말입니다. 그럼 주체는 무엇이고 객체는 무엇일까요? 이는 이미 국어 시간을 통해서 우리가 숱하게 익혀온 개념입니다.
'나는 사과를 먹는다.'에서 주체는 무엇입니까? '나'입니다. 그럼 객체는 무엇입니까? '사과'입니다. 이 정도 내용은 국어시간을 통해서 숱하게 배운 것입니다. 내가 주체가 되어 객체를 바라보거나 객체를 다룹니다. 주체인 '나'가 사과를 보기도 하고, 던지기도 하고, 먹기도 합니다.
'나는 칼로 사과를 깎는다'에서 주체는 '나'입니다. 그렇다면 객체는 '사과'뿐일까요? '사과'와 '칼'이 객체가 되죠. 주체인 나를 제외한 모든 사물을 객체가 됩니다. 다시 말해서 주체가 인식할 수 있는 객관적인 사물은 모두 객체라고 부릅니다.
프로그램에서 주체는 프로그램이고 객체는 자료입니다
그렇다면 프로그램에서 주체는 무엇이고 객체는 무엇일까요? 성적관리 프로그램을 예로 들어보겠습니다. 언어를 배우게 되면 가장 많이 짜보는 예제 프로그램이 성적관리 프로그램입니다. 데이터베이스의 기초개념을 익힐 수 있으며, 파일 입출력을 비롯한 대부분의 언어 개념을 응용해야 하기 때문입니다. 성적관리 프로그램에서 주체는 무엇이고 객체는 무엇일까요? 성적표 즉, 과목과 점수가 객체 입니다. 그리고 이들 객체를 다루는 프로그램 즉, 함수 부분이 주체가 됩니다.
사람의 입장에서 생각해보시기 바랍니다. 선생님이 성적표를 관리합니다. 과거에는 선생님이 일일이 손으로 점수를 매기고 계산기를 두드려서 평균을 내고, 순위를 매겼죠. 이때 점수를 계산하고 등수를 매기는 일을 하는 선생님이 주체입니다. 그리고 모든 학생의 점수는 객체가 됩니다. 그래서 주체인 선생님이 객체를 다루게 되는 것입니다. 설마 선생님이 객체고 점수가 선생님을 다루어서 조정한다는 생각을 하시는 분은 없겠죠?
컴퓨터 프로그램에서도 마찬가지입니다. 선생님이 채점할 때 점수가 객체인 것처럼 컴퓨터 프로그램에서도 점수가 객체가 됩니다. 그렇다면 점수를 다루어 합계와 평균을 내고 등수를 내는 선생님 역할을 누가 합니까? 프로그램이 하죠. 따라서 성적관리 프로그램에서 주체는 점수를 계산하는 프로그램입니다.
객체 지향 프로그램은 객체 입장에서 생각하는 프로그램입니다
과거에는 주체 위주로 프로그램을 만들었습니다. 따라서 어떻게 주체인 프로그램을 짜느냐가 주안점이었습니다. 어떻게 해야 합계를 내는 함수를 만들고 어떻게 해야 평균을 내고, 등수를 매기는 함수를 만들 것인가가 프로그래머가 고민하는 내용이었습니다.
그러나 객체지향 프로그램이 되면서 이런 개념이 완전히 뒤바뀝니다. 객체를 중심으로 프로그램을 짜게 되니까요. 객체지향 프로그램에서는 어떻게 합계를 내는 함수를 만들 것인지가 고민거리가 아닙니다. 어떻게 해야 점수를 잘 활용할 수 있을까? 어떻게 점수의 형태를 정할 것인가 하는 일이 고민거리입니다.
프로그램 역시 달라지겠죠? 과거에는 선생님이 점수를 합산하고 평균을 냈습니다만, 이제는 점수가 선생님으로 하여금 어떤 일을 시킬 것이가 고민하는 것입니다. 점수가 선생님을 부려먹는다는 개념이 이해가 안되죠? 한낱 자료에 불과한 점수가 거꾸로 주체인 사람의 행동을 결정하다니? 그러나 이것이 객체지향 프로그램의 특징입니다. 분명 객체는 점수이고 객체 위주로 프로그램을 짜는 것이 객체지향 프로그램이니까요.
사람 사는 세상에서도 객체지향 중심의 제도가 많이 활용되고 있습니다. 법을 예로듭시다. 법이 처음 만들어질 때는 '주체인 사람들이 어떻게 해야 세금을 걷고, 국회의원을 만들며, 범죄를 예방하고, 자동차를 구입해서 활용하는가'를 생각합니다. 그러나 사람들이 많아지면 제각각 목소리가 달라집니다. 누구는 세금을 올리자 하고 누구는 내리자고 합니다. 그래서 사회가 복잡해질수록 주체 중심으로 법률이 만들어지지 못하고 객체 위주로 만들어집니다. 다시 말해서 사람이 법을 만드는 것이 아니라 법의 성격을 규정하고 사람이 그 법에 맞추어 움직이는 것입니다.
휴대폰 사용이 늘어서 교통사고가 증가할 경우, 사람들이 법의 적용을 마음대로 하여 형을 정하는 것이 아닙니다. 도로교통법의 성격을 바꾸고 여기에 운전중 휴대폰 사용에 관한 형벌이라는 함수를 추가합니다. 그래서 도로교통법은 운전중 휴대폰 사고에 관한 내용을 다룰 수 있는 자료가 되고, 또한 이를 처리할 수 있는 각종조치를 포함한 객체가 됩니다. 그리고 이렇게 정의된 객체에 맞추어 사람들의 행동이 변화해야 합니다. 성격이 변화된 도로교통법에 따라서 사람들은 운전중 휴대폰 사용을 금지해야 하는 것입니다. 이때 주체인 사람들의 개성이 모두 다르겠지만 예외 없이 통용됩니다. 주체의 성격이나 특징은 완전히 무시됩니다. 주체는 객체인 도로교통법에 의해서 좌우될 뿐입니다.
이처럼 객체지향이란 객체의 관점에서 바라보는 프로그램 방식을 뜻합니다. 어렵게 생각할 필요 없습니다. 객체를 어떻게 규정할 것인가가 객체 지향 프로그램의 주안점이라고 생각하면 됩니다.
--- p.433~435
주체가 바라보는 모든 대상이 객체입니다
그렇다면 객체는 무엇일까요? 주체의 반대말입니다. 그럼 주체는 무엇이고 객체는 무엇일까요? 이는 이미 국어 시간을 통해서 우리가 숱하게 익혀온 개념입니다.
'나는 사과를 먹는다.'에서 주체는 무엇입니까? '나'입니다. 그럼 객체는 무엇입니까? '사과'입니다. 이 정도 내용은 국어시간을 통해서 숱하게 배운 것입니다. 내가 주체가 되어 객체를 바라보거나 객체를 다룹니다. 주체인 '나'가 사과를 보기도 하고, 던지기도 하고, 먹기도 합니다.
'나는 칼로 사과를 깎는다'에서 주체는 '나'입니다. 그렇다면 객체는 '사과'뿐일까요? '사과'와 '칼'이 객체가 되죠. 주체인 나를 제외한 모든 사물을 객체가 됩니다. 다시 말해서 주체가 인식할 수 있는 객관적인 사물은 모두 객체라고 부릅니다.
프로그램에서 주체는 프로그램이고 객체는 자료입니다
그렇다면 프로그램에서 주체는 무엇이고 객체는 무엇일까요? 성적관리 프로그램을 예로 들어보겠습니다. 언어를 배우게 되면 가장 많이 짜보는 예제 프로그램이 성적관리 프로그램입니다. 데이터베이스의 기초개념을 익힐 수 있으며, 파일 입출력을 비롯한 대부분의 언어 개념을 응용해야 하기 때문입니다. 성적관리 프로그램에서 주체는 무엇이고 객체는 무엇일까요? 성적표 즉, 과목과 점수가 객체 입니다. 그리고 이들 객체를 다루는 프로그램 즉, 함수 부분이 주체가 됩니다.
사람의 입장에서 생각해보시기 바랍니다. 선생님이 성적표를 관리합니다. 과거에는 선생님이 일일이 손으로 점수를 매기고 계산기를 두드려서 평균을 내고, 순위를 매겼죠. 이때 점수를 계산하고 등수를 매기는 일을 하는 선생님이 주체입니다. 그리고 모든 학생의 점수는 객체가 됩니다. 그래서 주체인 선생님이 객체를 다루게 되는 것입니다. 설마 선생님이 객체고 점수가 선생님을 다루어서 조정한다는 생각을 하시는 분은 없겠죠?
컴퓨터 프로그램에서도 마찬가지입니다. 선생님이 채점할 때 점수가 객체인 것처럼 컴퓨터 프로그램에서도 점수가 객체가 됩니다. 그렇다면 점수를 다루어 합계와 평균을 내고 등수를 내는 선생님 역할을 누가 합니까? 프로그램이 하죠. 따라서 성적관리 프로그램에서 주체는 점수를 계산하는 프로그램입니다.
객체 지향 프로그램은 객체 입장에서 생각하는 프로그램입니다
과거에는 주체 위주로 프로그램을 만들었습니다. 따라서 어떻게 주체인 프로그램을 짜느냐가 주안점이었습니다. 어떻게 해야 합계를 내는 함수를 만들고 어떻게 해야 평균을 내고, 등수를 매기는 함수를 만들 것인가가 프로그래머가 고민하는 내용이었습니다.
그러나 객체지향 프로그램이 되면서 이런 개념이 완전히 뒤바뀝니다. 객체를 중심으로 프로그램을 짜게 되니까요. 객체지향 프로그램에서는 어떻게 합계를 내는 함수를 만들 것인지가 고민거리가 아닙니다. 어떻게 해야 점수를 잘 활용할 수 있을까? 어떻게 점수의 형태를 정할 것인가 하는 일이 고민거리입니다.
프로그램 역시 달라지겠죠? 과거에는 선생님이 점수를 합산하고 평균을 냈습니다만, 이제는 점수가 선생님으로 하여금 어떤 일을 시킬 것이가 고민하는 것입니다. 점수가 선생님을 부려먹는다는 개념이 이해가 안되죠? 한낱 자료에 불과한 점수가 거꾸로 주체인 사람의 행동을 결정하다니? 그러나 이것이 객체지향 프로그램의 특징입니다. 분명 객체는 점수이고 객체 위주로 프로그램을 짜는 것이 객체지향 프로그램이니까요.
사람 사는 세상에서도 객체지향 중심의 제도가 많이 활용되고 있습니다. 법을 예로듭시다. 법이 처음 만들어질 때는 '주체인 사람들이 어떻게 해야 세금을 걷고, 국회의원을 만들며, 범죄를 예방하고, 자동차를 구입해서 활용하는가'를 생각합니다. 그러나 사람들이 많아지면 제각각 목소리가 달라집니다. 누구는 세금을 올리자 하고 누구는 내리자고 합니다. 그래서 사회가 복잡해질수록 주체 중심으로 법률이 만들어지지 못하고 객체 위주로 만들어집니다. 다시 말해서 사람이 법을 만드는 것이 아니라 법의 성격을 규정하고 사람이 그 법에 맞추어 움직이는 것입니다.
휴대폰 사용이 늘어서 교통사고가 증가할 경우, 사람들이 법의 적용을 마음대로 하여 형을 정하는 것이 아닙니다. 도로교통법의 성격을 바꾸고 여기에 운전중 휴대폰 사용에 관한 형벌이라는 함수를 추가합니다. 그래서 도로교통법은 운전중 휴대폰 사고에 관한 내용을 다룰 수 있는 자료가 되고, 또한 이를 처리할 수 있는 각종조치를 포함한 객체가 됩니다. 그리고 이렇게 정의된 객체에 맞추어 사람들의 행동이 변화해야 합니다. 성격이 변화된 도로교통법에 따라서 사람들은 운전중 휴대폰 사용을 금지해야 하는 것입니다. 이때 주체인 사람들의 개성이 모두 다르겠지만 예외 없이 통용됩니다. 주체의 성격이나 특징은 완전히 무시됩니다. 주체는 객체인 도로교통법에 의해서 좌우될 뿐입니다.
이처럼 객체지향이란 객체의 관점에서 바라보는 프로그램 방식을 뜻합니다. 어렵게 생각할 필요 없습니다. 객체를 어떻게 규정할 것인가가 객체 지향 프로그램의 주안점이라고 생각하면 됩니다.
--- p.433~435