CSS를 통해 루비의 Inheritance 설명하기

요즘 여자친구에게 루비와 레일즈를 가르쳐주고 있습니다.
국가 고시 시험 준비를 하던 저번주까지는 그냥 엄선(?)한 교제를 주고 우선 읽어보라고 했지요. 뭐, 영어로 되어있는터라 쉽게 눈에도 잘 안들어오고 바로바로 실험해보면서 익히는게 아니니까 좀 지루해 하는 것 같더라구요. 그래서 어제 저녁에는 TextMate와 함께하는 편리한 작업환경도 맛보여줄 겸 저의 맥북으로 강의가 시작되었습니다.
제 여자친구가 이제까지 해본 프로그래밍은 GW-Basic과 Visual Basic, C 그리고 얼마전에 홈페이지 손본다고 살짝 익힌 PHP정도. 그래도웹페이지는 많이 만들어봐서 HTML이나 CSS는 잘 알지요. Java와 같은 객체지향프로그래밍을 해본 적이 없으니 어떻게 객체 지향 프로그래밍을 설명해 줘야 하나 고민하다가 Head First Java에서 인상적인 설명방법을 이용했습니다. Dog, Cat 클래스를 만들어서 강아지에게 이름도 지어주고, 밥도 먹이고, 잠도 재우고... 매우 현실적이고 아기자기한 예제라 맘에 들어하더라구요. 심지어 저한테 키보드 입력 받는 방법을 알려달라더니 강아지가 새로 탄생할 때 마다 사용자 입력을 받아서 이름을 지어주더라구요. 다음 처럼요.
class Dog
  def initialize(name)
    @name = name
  end
 
  def sleep
    puts "#{@name} : I'm sleeping~~"
  end
end

a = Dog.new(gets)
a.sleep
이제는 for문을 알려달래서 루비에서 for문을 잘 안쓰는 이유를 알려주면서 each를 알려주었지요. 물론 배열도 말이죠. 처음에는 이해하는데 어려워하더니 제가 each문 알려줄때 잘 써먹은 3종세트를 좀 째려보더니 다음부턴 3마리의 강아지를 for문으로 만들더군요.
a = [1,2,3]

for i in 0..2
  puts a[i]
end

a.each do |i|
  puts i
end

a.each {|i| puts i}

적당히 기본적인 내용을 설명해주다가 레일즈로 넘어갔습니다. 루비의 탄탄한 기본을 만들고 넘어가는 것이 정도겠지만, 역시 재미를 위해서라면 웹페이지를 당장 눈앞에 만들어봐야 루비를 더 배워보고 싶은 마음이 생길테니까요. 우선 다음처럼 모델을 만들었지요.
./script/generate model Person
뭐 잘 아시다시피 모델 파일을 열면 다음과 같이 되어있죠.
class Person < ActiveRecord::Base
end
작은 것 하나 그냥 넘어가지 않는 제 여자친구가 물어봅니다. < 뒤에 있는 저건 뭐냐고. 그래서 다시 루비로 돌아가 Inheritance의 개념을 설명하기 시작했습니다. 아까의 그 강아지와 고양이의 이름은 Animal 클래스에 만들고, 특색있는 메소드는 Dog, Cat 각각의 클래스에 만들어서 보여주었지요. 내친김에 Overriding의 개념을 설명해주었습니다. 그랬더니..
어 오빠. 그러니까 CSS같은거지?
티잉~~ *0*
저는 뭐하러 어렵게 Inheritance와 Overriding의 철학을 이야기해주려고 했을까요. 그냥
CSS에서 그 덮어쓰는거 알지? 그런거야. 공통적인거는 p 에만 써두고
세세한건 p .comment에 덮어서 쓰지. 그거랑 비슷한거야~ 간단해~
이거 하나면 되었을 것을..

혹시.. 객체지향을 설명하실 일이 있다면, CSS를 빗대어 설명해보세요. :)
(뭐 물론 엄밀한 의미에선 좀 차이가 있습니다만, CSS로 시작해 보는 것도 나쁘지 않겠죠. ㅎㅎ)

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 정목 | 2007/01/13 16:02 | Ruby & Rails | 트랙백 | 덧글(8)
트랙백 주소 : http://niceview.egloos.com/tb/2934529
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 코카스 at 2007/01/13 17:40
흑.. 여자친구에게 루비를..
Commented by superkdk at 2007/01/13 17:45
ㅋㅋㅋ... 이러다가 정목씨 주변의 모든 사람이 rubyist되는거 아닌가요? ^^
Commented at 2007/01/13 19:42
비공개 덧글입니다.
Commented by 정목 at 2007/01/13 20:55
코카스님 // 헤헷 그게 이 포스팅의 핵심인거죠~ ㅎㅎ

superkdk님 // ^-^ 좋은건 서로 알려주고 나눠써야죠~
Commented by 테이_ble at 2007/01/14 23:01
부럽네요 ^^
Commented by visang at 2007/01/16 15:25
멋집니다. 전 남자친구한테 ruby라는게 있다고 알려주었는데. -_-; 여긴 여친에게 루비를... 부럽. >_<
Commented by 프리버즈 at 2007/01/16 17:22
흑.. 여자친구에게 루비를..2
Commented by 정목 at 2007/01/17 01:32
테이_ble님 // ^-^v

visang님 // 오오~ 커플 루비스트로 세미나에서 만나뵈면 즐거울 것 같아요.

프리버즈님 // ^-^v

:         :

:

비공개 덧글