티스토리 뷰

먼저 이 글을 Head First Java에서 배운 내용을 잊지않기 위해서 정리차원에서 제가 적어두는 것입니다.
오해없으시길 바랍니다


이전 포스트에서는 코드를 전부 main() 메소드에 집어넣었습니다. 그 방법은 정확하게 말하자면 객체지향적인 방법은 아닙니다.사실, 객체지향적인 면이 전혀 없다고 할 수 있지요. 자동 구문 생성기를 만들기 위해 String의 배열 같은 것을 쓰긴 했지만, 직접 객체 유형을 만들지는 않았습니다.

이제 절차적인 프로그래밍 세계는 완전히 제쳐두고 main()을 벗어나서 직접 객체를 만들어보기로 합시다. 자바 객체지향(OO, Object-Oriented) 개발이 얼마나 재미있는지를 확인할 수 있을 것입니다. 우선 클래스(class)와 객체(Object)가 어떻게 다른지 알아보고 객체를 사용함으로써 삶의 질(물론, 프로그래밍과 관련된 삶의 질이겠죠. 패션 감각을 향상시킨다거나 하는데는 별 도움이 않됩니다)을 어떻게 향상시킬 수 ㅇ있는지도 알아보겠습니다. 주의! 일단 한 번 객체 마을로 옮기고 나면 다시 돌아오고 싶지 않을 것입니다.

의자전쟁
(객체가 어떻게 삶을 바꿀 수 있을까?)

옛날에 어떤 소프트웨어 회사에서 팀장이 두 프로그래머에게 똑같은 스펙을 주고는 프로그램을 만들라고 지시했습니다. 두 프로그래머를 경쟁시키기 위해 둘 중에서 프로그램을 더 빨리 완성한 사람에게 실리콘 밸리에 있는 사람이라면 누구나 가지고 있는 에어론™(Aeron™)의자를 주겠다고 했습니다. 절차적 프로그래밍을 선호하는 래리(Larry)와 객체지향적인 방법을 구사하는 브래드(Brad)는 둘다 이 프로그램을 만드는 것이 식은 죽 먹기라고 생각했습니다.

래리 사무실에 앉아서 곰곰히 생각했습니다. "이 프로그램에서 어떤 일을 해야 할까? 어떤 프로시저(Procedure)가 있어야 할까?" 그리고는 "(rotate 프로시저를 써서) 돌린 다음(playSound 프로시저를 써서) 사운드를 재생하면 된다"는 결론을 내렸습니다. 그리고는 잽싸게 프로시저를 만들었습니다. 프로그램이라는 것이 결국은 프로시저를 모아놓은 것이 아닐까요?

그 동안 브래드는 카페에 가서 궁리를 했습니다. "이 프로그램에서 어떤 일을 해야 할까? 그 중에서 어떤 것이 가장 중요한 역활을 할까?"  그래서 "도형이 가장 중요한 역활을 하지 않을까?"라는 결론을 내렸습니다. 물론, 사용자, 사운드, 클릭 이벤트와 같은객체도 생각해 봤습니다. 하지만 그런 객체와 관련된 고드는 이미 가지고 있었기 때문에 도형에 대한 코드만 신경 쓰면 됐습니다. 브래드와 래리가 각각 어떻게 프로그램을 만들었는지, 그리고 결국 누가 에어론 의자를 차지할지 계속 살펴 봅시다.


'Develop Story > Head First Java' 카테고리의 다른 글

1 껍질을 깨고  (0) 2011.03.25