요즘 여자친구에게 루비와 레일즈를 가르쳐주고 있습니다.
국가 고시 시험 준비를 하던 저번주까지는 그냥 엄선(?)한 교제를 주고 우선 읽어보라고 했지요. 뭐, 영어로 되어있는터라 쉽게 눈에도 잘 안들어오고 바로바로 실험해보면서 익히는게 아니니까 좀 지루해 하는 것 같더라구요. 그래서 어제 저녁에는 TextMate와 함께하는 편리한 작업환경도 맛보여줄 겸 저의 맥북으로 강의가 시작되었습니다.
제 여자친구가 이제까지 해본 프로그래밍은 GW-Basic과 Visual Basic, C 그리고 얼마전에 홈페이지 손본다고 살짝 익힌 PHP정도. 그래도웹페이지는 많이 만들어봐서 HTML이나 CSS는 잘 알지요. Java와 같은 객체지향프로그래밍을 해본 적이 없으니 어떻게 객체 지향 프로그래밍을 설명해 줘야 하나 고민하다가 Head First Java에서 인상적인 설명방법을 이용했습니다. Dog, Cat 클래스를 만들어서 강아지에게 이름도 지어주고, 밥도 먹이고, 잠도 재우고... 매우 현실적이고 아기자기한 예제라 맘에 들어하더라구요. 심지어 저한테 키보드 입력 받는 방법을 알려달라더니 강아지가 새로 탄생할 때 마다 사용자 입력을 받아서 이름을 지어주더라구요. 다음 처럼요.
적당히 기본적인 내용을 설명해주다가 레일즈로 넘어갔습니다. 루비의 탄탄한 기본을 만들고 넘어가는 것이 정도겠지만, 역시 재미를 위해서라면 웹페이지를 당장 눈앞에 만들어봐야 루비를 더 배워보고 싶은 마음이 생길테니까요. 우선 다음처럼 모델을 만들었지요.
저는 뭐하러 어렵게 Inheritance와 Overriding의 철학을 이야기해주려고 했을까요. 그냥
혹시.. 객체지향을 설명하실 일이 있다면, CSS를 빗대어 설명해보세요. :)
(뭐 물론 엄밀한 의미에선 좀 차이가 있습니다만, CSS로 시작해 보는 것도 나쁘지 않겠죠. ㅎㅎ)
국가 고시 시험 준비를 하던 저번주까지는 그냥 엄선(?)한 교제를 주고 우선 읽어보라고 했지요. 뭐, 영어로 되어있는터라 쉽게 눈에도 잘 안들어오고 바로바로 실험해보면서 익히는게 아니니까 좀 지루해 하는 것 같더라구요. 그래서 어제 저녁에는 TextMate와 함께하는 편리한 작업환경도 맛보여줄 겸 저의 맥북으로 강의가 시작되었습니다.
제 여자친구가 이제까지 해본 프로그래밍은 GW-Basic과 Visual Basic, C 그리고 얼마전에 홈페이지 손본다고 살짝 익힌 PHP정도. 그래도웹페이지는 많이 만들어봐서 HTML이나 CSS는 잘 알지요. Java와 같은 객체지향프로그래밍을 해본 적이 없으니 어떻게 객체 지향 프로그래밍을 설명해 줘야 하나 고민하다가 Head First Java에서 인상적인 설명방법을 이용했습니다. Dog, Cat 클래스를 만들어서 강아지에게 이름도 지어주고, 밥도 먹이고, 잠도 재우고... 매우 현실적이고 아기자기한 예제라 맘에 들어하더라구요. 심지어 저한테 키보드 입력 받는 방법을 알려달라더니 강아지가 새로 탄생할 때 마다 사용자 입력을 받아서 이름을 지어주더라구요. 다음 처럼요.
class Dog이제는 for문을 알려달래서 루비에서 for문을 잘 안쓰는 이유를 알려주면서 each를 알려주었지요. 물론 배열도 말이죠. 처음에는 이해하는데 어려워하더니 제가 each문 알려줄때 잘 써먹은 3종세트를 좀 째려보더니 다음부턴 3마리의 강아지를 for문으로 만들더군요.
def initialize(name)
@name = name
end
def sleep
puts "#{@name} : I'm sleeping~~"
end
end
a = Dog.new(gets)
a.sleep
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작은 것 하나 그냥 넘어가지 않는 제 여자친구가 물어봅니다. < 뒤에 있는 저건 뭐냐고. 그래서 다시 루비로 돌아가 Inheritance의 개념을 설명하기 시작했습니다. 아까의 그 강아지와 고양이의 이름은 Animal 클래스에 만들고, 특색있는 메소드는 Dog, Cat 각각의 클래스에 만들어서 보여주었지요. 내친김에 Overriding의 개념을 설명해주었습니다. 그랬더니..
end
어 오빠. 그러니까 CSS같은거지?티잉~~ *0*
저는 뭐하러 어렵게 Inheritance와 Overriding의 철학을 이야기해주려고 했을까요. 그냥
CSS에서 그 덮어쓰는거 알지? 그런거야. 공통적인거는 p 에만 써두고이거 하나면 되었을 것을..
세세한건 p .comment에 덮어서 쓰지. 그거랑 비슷한거야~ 간단해~
혹시.. 객체지향을 설명하실 일이 있다면, CSS를 빗대어 설명해보세요. :)
(뭐 물론 엄밀한 의미에선 좀 차이가 있습니다만, CSS로 시작해 보는 것도 나쁘지 않겠죠. ㅎㅎ)





