継承を使えば既にあるクラスの機能を引き継いで新しいクラスを作る事ができます。
継承の仕方は簡単です。

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」メソッドも継承しているので利用することができます。

2024年4月
« 4月    
 123456
78910111213
14151617181920
21222324252627
282930  

カテゴリー

広告

現在の住まい、将来はVPSへ引越します。 ロリポップの上位版です。

広告

広告

最近のコメント

    広告

    Railsを動かす予定のVPS。無料キャンペーン中。

    広告