간단히 저번 강좌에서 말씀을 드렸지만, 객체지향적 프로그래밍을 하다보면 객체와 클래스라는 말이 많이 나오며, 정확한 뜻도 모르고 객체지향 프로그램밍 소스를 접하게 되면 많은 어려움이 생기죠.(제가..그랬어요..ㅜ.ㅜ)
그럼 먼저 객체지향프로그래밍이 뭘까요? 미국넘이 만들었으니 영어에 무슨 뜻이 있겠죠. object oriented programming 이라고 하네요. 머리만..딱 가져오면 OOP 죠. OOP 상대적인 말은 C 언어와 같은 절차지향언어를 말한답니다.
절차~ 라고 하니 어떠한 문제가 있으면 절차에 맞게 해야 할일의 순서를 말하겠지요. 초기 고급언어들은 절차지향적 언어였죠. 프로그래머가 명령을 순서에 맞게 코드화 하면 순차적으로 명령이 실행되어 문제를 해결하는 것을 절차지향적언어라고 합니다. 영어로 쓰자면, Procedural Language 라고 하죠.
맞는지 모르겠네요. procedure 라는 말이 절차라는 뜻이니까...맞을겁니다.
보통 FORTRAN, COBOL, PASCAL, C, BASIC 이런 언어들이 절차지향언어이죠.
그럼 객체지향언어는 무엇일까요? 위에 소개했던 절차지향언어와 다른 점이 있는데요.
객체라는 것이 있고, 클래스라는 것이 있고, 상속이라는 것도 있답니다. 이점이 큰 차이점이라고 볼 수 있네요.^^;
여기서도 객체라는 말이 기어(?)나오고 있는데요. 객체는 교과서에 있는것을 옮기자면 데어터와 데이터에 관련된 연산으로 구성되어 있으며, 클래스라는 것은 객체들의 공통적인 성질을 정의한 것이고, 상속은 객체의 정보를 세분화 또는 일반화의 원칙에 맞게 조직화하는 방법이라고 기재되어 있네요.
객체는 응용프로그램 안에서 되풀이 해서 사용이 가능하고 다른 것들과 공유가 될 수 있답니다. SmallTalk ~ 들어보셨는지 모르지만, 이것이 최초로 그래픽 사용자 인터페이스를 만드는데 사용이 되었고, c++ 이것도 절차지향 언어인 c의 특성을 사용하면서 객체지향 언어를 사용할 수 있고요.
java 는 객체지향 언이이죠. 무슨 말인지 모르는 사람들이 있기 때문에 저기 객체와 클래스에 대해 다시 한번 은유를 들어서 설명을 하죠.
저는 회사 주위를 살펴보면 자동차도 보이고, 사무실도 보이고, 책도 보이고 굴러다니는 문서도 보이고, 볼펜도 보이고, 여자도 보이고.. ^^; 이런 모든 것들이 객체라고 합니다. 흠...자동차를 한번 보면 그냥 겉모양의 자동차를 볼 수 있죠. 제가 정비사가 아니라서 자동차안에 어떤 부속품들이 들어가 있는지 모르거든요. 어떻게 저 자동차가 굴러가는지 신기하게 쳐다보기만 한답니다. 볼펜 또한 쓸줄만 알지 볼펜심안의 그 물질이 뭔지, 볼심이 뭘로 구성되어 있는지 모르고 그냥..씁니다. 한마디로 관심 없이 사용한다는 의미이죠. 제가 워낙 그렇습니다. ^^;
자..제가 이런 말을 하는 이유는 이런 객체의 개념을 프로그래밍에 적용했다는 것이죠. 모든 프로그램을 작은 덩어리로 여러개로 쪼개어 이 덩어리는 무슨 역할을 하고, 저 덩어리는 무슨 역할을 하고, 어떤 각각의 덩어리에 명백한 작업을 수행할 수 있도록 디자인을 하는 것이죠. 그러면 우리 개발자들은 덩어리가 어떻게 작동하는지 신경 끄고 어떤 일을 하는지만 알면 되는
것이죠. 그러면 큰 프로젝트를 할때 많은 개발자들이 서로 모여 작업하기가 매우 수월해 진다는 점이죠.
제가 강좌를 아래에 많이 했죠? asp.net 강좌보면 TextBox, CheckBox 등등 많은 객체를 가지고 요리를 했습니다. 우리는 단지 TextBox 가 이런 역할을 하는 것이다라는 거 이외에 TextBox 를 해부한적은 없습니다. 그냥 그러가 보다~~ 하고 쓴거죠. 이것은 이미 ms 측에서 이 컨트롤에 대한 클래스를 미리 만들어 놓았기 때문에 우리는 끌어다 쓰기만 하면 된다는 거죠.
그 만큼 작업 속도가 빠르고 쉽게 작업을 할 수 있다는 장점이 되죠.
그럼 클래스는 뭘까요? 객체가 무엇인지에 관해서 정의해 놓은 것을 말하죠. 자동차는 클래스가 되고요. 빨간 자동차는 객체, 노란 자동차도 객체, 그러나 둘다 자동차 맞죠? 색깔만 다르니까요. 이제 클래스와 객체에 대해 구분이 가는지요.
그럼..이해하는 것으로 알고 다음 강좌로 넘어가겠습니다.
그럼..수고하세요.
posted by 심재운 (shimpark@gmail.com)