본문 바로가기

(비정기) Dlbo's Post

객체지향 이야기 1. 객체지향이 뭐야?

갑작스레 시작하는 객체지향 이야기.

그것도 시리즈물 이에요 -_-;

---------------------------------------------------------------------------------------------------

처음 프로그래밍이 탄생한 순간, 기계에 천공카드를 원하는 규칙에 맞춰 뚫어서 넣어 컴퓨터를 가동하던 그 때.

무식하게 느린 컴퓨터이지만 복잡하고 귀찮은 계산들을 손쉽게 처리해 주었기에, 수많은 사람들이 열심히

천공카드에 하나 하나 구멍을 뿅 뿅 뚫어가며 프로그램을 만들었습니다.

이 후, 기계어 단위로 0, 1을 직접 우겨넣다 못해, 어셈블리 언어가 생겼지요. 정말 단순했습니다.

그냥 순서대로 컴퓨터가 해야 할 일을 프로그래머가 알아먹을 수 있도록 기계어와 1 : 1로 매칭시켰으니깐요.

기계코드로 0, 1을 일일이 우겨넣던 옛날과는 많이 달랐습니다. 알아 보기가 매우 쉬워졌고,

프로그램을 만드는 시간이 상당히 빨라졌지요.

설사 코드에서 틀린 부분이 있더라도, 예전보다 손쉽게 고칠 수 있었습니다.

이 어셈블리어가 더 간결해지고, 사용하기 쉽게 변해가면서 자주 사용하는 라이브러리 등을 합쳐 놓은 것이

바로 C언어. 시스템을 강력하게 컨트롤 할 수 있으면서도 다루기 쉬운 언어였지요.

자. 여기까지가 바로 절차지향 언어의 역사입니다.

위의 언어들은 "시작과 끝은 하나, 여러 조건과 상태의 분기에 따라 다른 가지를 타고 흐를 뿐".

이라는 공통점을 가지고 있습니다.

순차적으로 하나 하나 처리되는 형식이 되어, 데이터는 하나의 "취급 대상"일 뿐이었고,

그로 인해 코드 또한 점점 엽기적으로 변해갑니다.

마치 구멍난 독에 반창고 바르듯, 원천적 구조 변형 보다는 필요한 부분만 조금 조금 고쳐나가는

사람들이 생겨나고, 그로 인해 아래 사진처럼 언밸런(-_-?)스한 상황이 벌어지지요.

사용자 삽입 이미지


.....

저거야 잘 만들어 졌으니 그렇다 칩시다.

-_-;;

사용자 삽입 이미지

......

많이 언밸런스 하지요?;;;

이런 프로그래머들의 "귀차니즘"에 의해, "자주 쓰는 부분들은 따로 모아놓자!"라는 의견이

내세워집니다.

이리 하여 "모듈화" 라는 방식으로, 자주 쓰는 라이브러리 아닌 개인 라이브러리들(-_-?)을 따로 묶어놓고

DLL 등으로 끌어 쓰거나 함수를 잘게 잘게 쪼개버리는 시도가 성행합니다.

그.러.나.

사용자 삽입 이미지

티코에다 람보르기니 마크 붙여도 티코는 티코입니다 -_-;

결국 프로그래머들은 "객체"를 만들어서, 메모리상에 둥~둥~ 띄워두고,

객체 간의 상호 작용으로 원하는 데이터를 얻자! 라고 합니다.

이 객체는 "데이터"를 중심으로 "데이터"가 뭔가를 "하는" 것으로 다른 객체들과 소통합니다.

혹은 그 자체로서 들어온 인풋에 따라 아웃풋을 내 뱉지요.

이런 방식을 채택함으로써 프로그램에 문제가 생길 경우 문제가 있는 객체만 고치면 되므로,

완전히 환골탈태 한 것이지요.

자. 참 쉽죠?-_-?

--------------------------------------------------------------------------------------------------

오늘의 결론. "객체지향"은 프로그래머들의 "귀차니즘"에서 생겨났습니다. -_-