01오치문

한마디로 말하면 프로그램 구조를 사람과 사람, 사람과 사물이 움직이는 것처럼 해보자는 것입니다.


역사적으로 볼때 먼저 등장한 방법은 절차지향 방법입니다. 대표적으로 C언어가 있지요.


C언어의 특징을 잘 생각해보면, 데이터와 함수가 분리되어 있다는걸 알 수 있습니다.


함수에 동작을 기술하고 파라미터로 데이터를 넘겨주어 처리하게끔 되어있죠.


그런데 객체지향방법은 데이터와 함수를 동시에 가지고 있습니다. 왜 이럴까요??


그건 말 그대로 객체(Object)를 생각해보면 됩니다. 예를 들어 "사람"을 생각해볼까요?


사람은 이름을 가지고 있고, 나이도 있고, 성별도 있고.. 이런 것들은 속성이 됩니다. --> class의 멤버변수로 디자인 됨


사람은 먹고, 싸고, 자고, 패고(?), 움직이고.. 이런 것들은 동작이 되죠. --> class의 method로 디지인 됨


이렇게 class라는 개념에 어떤 사물, 사람의 속성을 정의해서 필요할 때마다 생성해서 사용하자는 것입니다.


어떤가요? 절차지향 방법보다 객체지향 방법이 실제 사물, 사람을 좀 더 잘 표현하고 있는 것같지 않나요?


이러한 개념을 구현하기 위한, 객체지향 방법의 대표적인 언어가 C++, JAVA입니다.


그런데 C++는 C에서 발전한 언어이므로 C의 문법과 디자인 패턴 모두를 포용합니다. 물론 잘 활용하면 되는 것이지만 ㅋ


그래서 JAVA가 객체지향 냄새가 더 풍기는 것같네요.