객체지향

프로그래밍 2007/10/03 02:56
C를 먼저 접하고 나서 JAVA를 알게 되었던 나의 슬픔ㅠㅠ


예전에 내가 만들었던 코드들을 다시 볼 기회가 있었는데

아니, 이게 왠걸....;;;


JAVA로 C코드처럼 만들어 놨잖아!!


제 블로그에 예전에 JAVA로 다이아몬드 만들기 라던가

가끔 생각나서 올려둔 JAVA코드들 좀 보세요ㅜㅜ

객체는 없고, 메소드를 C의 함수를 호출해 쓰듯이 썼잖아요..;;;



시간이 지나고나서 뒤돌아 보면 가끔 창피한 일들이 많이 있다.

나중에 또 과거의 나를 보면 창피 할 수도 있으니까

앞으로는 블로그에다 소스를 작성하는 것은 자제해야 하겠다.S


그런데 블로그에 올렸을 때 좋은건.. 내가 잘못 올려 놓으면 잘못된걸 바로 잡아주시는 분들이 많더라. 그건 무쟈게 좋다^^ㅋ
top

트랙백 주소 :: http://signpen.net/blog/trackback/2510832

High Cohesion, Loose Coupling

프로그래밍 2007/10/03 02:40

상속과 인터페이스

여러분은 OO 하고 있습니까??



High Cohesion, Loose Coupling

높은 응집도 그리고 낮은 결합도(또는 느슨한 결합)


  학교에서 소프트웨어 공학 시간을 통해서 배웠고, 또한 '임백준의 소프트웨어 산책'이라는 책을 읽으면서 다시한번 개념 다지기에 들어갔다. 그리고 나는 은근히 이것들에 집착(?)한다.

  소프트웨어에게도 수명이라는 것이 있다. 시간이 지날수록 나이는 먹어가고.. 그러다가 많은 시간이 흘러 나이를 많이 먹으면 죽는거다.(단순히 나이를 많이 먹어서 죽는 것은 아니지만)


  건강하게 태어난 소프트웨어는 살아가는 동안 쉼없이 자신을 확장하게 된다. 새로운 능력이 더 필요하다면 그는 얼마든지 자신을 확장한다. 부족한 부분이 있다면 그것에 대한 보완도 하며 그는 열심히 살아간다. 아~주~ 오래오래 행복하게 살아간다. 오래오래 행복하게 살아가는 소프트웨어를 보고 있자면 그를 태어나게한 개발자들도 그를 기특하게 여기며 뿌듯해 한다.


  탄생하면서 스파게티 소스를 간직하고 태어난 허약한 소프트웨어는 수명이 매우 짧다. 비운의 소프트웨어다. 아.. 상상하니 눈물이 마구 흘러내린다.ㅠㅠ

  어느날 허약한 소프트웨어에게 앞으로 해야 할 일은 오른팔을 많이 사용해야 하니 오른팔을 단련해 두라는 지시가 내려왔다. 그는 열심히 팔의 근육을 확장해서 새로운 업무에 필요한 튼튼한 오른팔을 만들어냈다. 그런데 이게 왠일인가. 오른팔만을 확장했을 뿐인데 갑작스레 왼발이 저려온다. 이유는 알 수 없지만 왼발이 자꾸 저려서 그는 쩔뚝쩔뚝 다리를 절어 가면서 일을하게 된다. 일단 일은 할 수 있으니 다행이다. 다음번엔 왼팔을 확장했는데 오른쪽 다리가 저려온다. 자꾸자꾸 몸에 원인모를 이상증세가 찾아오다 결국 그는 일을 할 수 없게 되었고 그는 얼마 지나지 않아 죽게되었다. 스파게티 소스때문에..ㅠㅠ 불쌍한 친구..ㅠㅠ

  그가 계속 살아갈 수 있는 방법은 있었다. 리팩토링(Refactoring)이라는 수술을 받으면 그는 살아갈 수 있다고 했다. 하지만 비교적 작은 수술로 재기할 수 있었던 건강한 소프트웨어와는 다르게 그는 큰 수술을 필요로 했고 수술비도 만만치가 않았다. 태어나면서부터 선천적으로 가진 '스파게티 소스'라는 병 아닌 병 때문에 말이다.


  건강한 소프트웨어를 만들고 싶다. 건강하게 오래오래 사는 소프트웨어는 높은 응집도와 낮은 결합도를 가지고 있다. 그는 유연해서 어떤 일이든 어렵지 않게 배운다. 유연하고 모든 쉽게 잘 할 수 있는 이런 녀석이 정말 튼튼하고 건강한 놈이다.

  그래서 나는 코드를 만들때 결합도와 응집도에 대한 많은 고민을 한다. 그가 다른것에 의지하지 않도록 다른 객체와는 느슨하게 결합하고, 응집도는 높게 독립적으로 만들려고 고민을 한다. 그런데 슬프게도 난 고민만 열심히 했지 High Cohesion, Loose Coupling을 충족하게 만들지는 못하고 있다. 다만 스파게티를 뽑아내지 않으려 노력하고 있을 뿐이다. 나는 요리사가 아니니까 말이다.

  여러분은 OO하고 있습니까?.... 뜬금없다..ㅋㅋㅋS

OO: Object Oriented
top

트랙백 주소 :: http://signpen.net/blog/trackback/2510831

요섭이와 이야기한 객체지향 프로그래밍

프로그래밍 2007/07/29 23:56
  개미수열을 완성하고 요섭이와 메신저로 이런저런 이야기를 나누었다. 개미수열로 시작한 이야기는 최근 각자 공부하고 있는 부분들에 대한 이야기로 이어졌고 객체지향(Object Oriented Programming)에 대한 이야기도 나오기 시작했다. 다형성, 은닉성, 추상성, 상속 이런 이야기들...

  그 때 요섭이가 해 준 짧막한 이야기가 있었는데 참 재미있어서 블로그에 남겨본다.


  학기중에 PHP수업을 할 때 교수님이 과제를 내 주었다. PHP코드를 작성해오는 과제였는데 요섭이는 평소때 처럼 혼자서 열심히 코드를 완성해서 제출을 했다. 그에 반해 몇몇 친구들은 인터넷에 공개되어 있는 코드를 그대로 가져다가 제출을 했는데 교수님은 그 친구들을 보고 이런 말씀을 하셨다고 한다.

"너희가 해 온 그게 바로 객체지향이야."

  당시에 학생들은 이해를 했을지 모르겠다. 나 역시도 지금에서야 무슨 말씀을 하시고자 한 것인지 대략 이해가 되는데 당시였다면 무슨 소린지 몰랐을 것이다.

  이런 재미난 에피소드를 요섭이를 통해 처음 듣는 이야기 일 수 밖에 없는것이 PHP수업을 진행했던 학기에 난 양손이 다 부러지는 사고가 있어서 학기 내내 양손에 깁스를 하고 다녔고, 수업을 제대로 들어가지 못했기 때문에 PHP수업을 제대로 받지 못했다. 당연히 교수님이 하신 말씀들이나 수업 내용들에 대해서는 아는것이 없다. 이런 알찬유머(?)를 구사하시는 교수님의 수업이었는데..ㅎㅎ


  교수님이 말씀하시고자 했던것이 아마 객체지향의 잇점 중에 재사용성에 대한 이야기를 하시려 했던 것 같다.

  객체지향프로그래밍의 세계에선 프로그램의 모든 것들을 혼자서 처음부터 만들 필요성이 없다. 하나의 단단한 형태로 프로그램을 만드는 것이 아니라 잘게 쪼개진 프로그램들(객체)을 가져다 제 위치에 집어넣고 짜 맞추고 접합해서 커다란 하나의 프로그램을 만드는 것이다. 필요한 조각이 있고 그 필요한 완성된 조각이 있다면 가져다 필요한 부분에 붙여 넣으면 된다. 교수님은 그런 것을 말씀하시려 했던 것 같다.

  인터넷에 필요한 완성된 것이 있다면 그걸 가져다 내 필요한 부분에 가져다 쓰면 그 자체가 객체지향이라는 그런 말씀을...

로보트 부품

부품들을 결합해서 로보트를 완성하쟈!!


  로보트 장난감을 조립하려 한다. 그런데 로보트의 부품을 모두 만들 필요는 없다. 예전에 만들었던 로보트가 있다면 예전 로보트 장난감의 팔을 떼어다 지금 만드는 로보트의 팔로 붙이면 된다. 요론게 객체지향의 느낌이 아닐까?S
top
     TAG 객체지향

트랙백 주소 :: http://signpen.net/blog/trackback/2510801

  1. 트랙백 발송지 : Firen's Diary 2007/07/30 20:17 삭제

    제목 : 객체지향적인 프로그래밍이란 것은 무엇일까?

    고등학교시절 C++을 알게 되면서 객체지향 프로그래밍(Object Oriented Programming, 줄여서 OOP) 에 대해 궁금증을 가지게 되었습니다. 도대체 이런 게 왜 필요하지? -_-?? 일의 순서에 따라 작업을 처리하는 절차 지향적 프로그래밍 언어를 공부했던 저는 그래도 C의 신 버전이라는 착각 속에 공부를 시작했지만, 이놈에 Class에서 막히는 것이었습니다. 막힌 이유는 바로 대체 이걸 왜 써? 머리에 완벽히 절차지향으로 고정이 되..