継承を使えば既にあるクラスの機能を引き継いで新しいクラスを作る事ができます。
継承の仕方は簡単です。
class クラス名 < 継承したいクラス名 end
「<」を作成するクラス名の後に書き、つづけて継承するクラス名を書くだけです。
今回はHTMLのカレンダーを出力するメソッドを持ったクラスを作ってみます。
まず前回作ったカレンダークラスを「library.rb」という名前で保存します。
2行目の「require “library”」で保存したファイルを読み込みます。
#クラス定義
require "library"
class HtmlCalendar < Calendar
def disp_html
calendar = "<table border>\n"
calendar << "<tr><td>日</td><td>月</td><td>火</td><td>水</td><td>木</td><td>金</td><td>土</td></tr>\n"
calendar << "<tr>"
#第1週の空白セルを作成
if @firstday.wday != 0 then
for x in 1..@firstday.wday do
calendar << "<td></td>"
end
end
#1日から末日までのセル作成
for d in 1..@lastday.day do
if @firstday.wday == 0 then
calendar << "</tr>\n"
calendar << "<tr>"
end
calendar << "<td>#{@firstday.day}</td>"
@firstday = @firstday.next
end
#最終週の空白セルを作成
if @firstday.wday != 0 then
for x in @firstday.wday..6 do
calendar << "<td></td>"
end
end
calendar << "</tr>\n"
calendar << "</table>"
puts calendar
end
end
a = HtmlCalendar.new(2010,9)
a.disp_html
#a.disp
カレンダークラスにあった「initialize(y,m)」や「@firstday、@lastday」が
ありません。これは「Calendar」クラスを継承することにより、記述しなくても
利用可能になります。
45行目でコメントアウトしてある「disp」メソッドも継承しているので利用することができます。
最近のコメント