心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

初めてのRuby8章「オブジェクトとクラス」

   


2章「配列とハッシュ」の次はいきなり8章「オブジェクトとクラス」に行ってしまいます。

Ruby自体にたくさんのクラス定義済であり、たいていのプログラムはArrayとHashで済むとのことですが、自分でクラス定義をする場合の書き方です。

クラス定義

class Duration

end
クラスの中には、インスタンスメソッドの定義が大概の場合書かれている。

8.1.1 継承

class Duration < Range 式 end < で継承を表す。

8.1.2 インスタンスメソッドの定義

class Duration
 def display
  puts self
 end
end

duration = Duration.new
duration.display

本では、def display;puts self end
って書いてあるのですが、セミコロンは改行として使えるそうです。

classの中にdef式を書くと、そのメソッドはインスタンスメソッドになる。

8.1.3 クラスメソッドの定義

クラスメソッドとは、C++やJavaのstaticメソッドのこと。

class Duration
 def Duration.print(x)
  p x
 end
end

Duration.print(1) #=> 1

インスタンスを生成しなくても実行できました。静的関数ですね。

class Duration
 def self.print(x)
  p x
 end
end

Duration.print(1) #=> 1

と書いても同じ。

8.1.4 インスタンス化

クラスをインスタンス化するにはnewをする。newすると入力値がinitializeに渡る。でもって、newしたときにinitializeは必ず実行される。
例8-6

class Duration
  def initialize(since,till)
    @since = since
    @until = till
  end
  attr_accessor :since, :until
end

duration = Duration.new(Time.now, Time.now+3600)
p duration.until
p duration.since = Time.now

8.1.5 属性

「オブジェクトの属性とは、オブジェクトに属していて取得・設定が可能な値」とのことです。
例8-6の場合、インスタンス変数として@sinceと@untilが設定されていて、さらにattr_accessor で外から読み書きできるようにしているから、この2つが属性ってことでいいのでしょうか?
sinceもuntilもまるでクラスメソッドのように読み出していますが、値、変数ですね。

8.1.6 クラス定義の追加

class String
  def ceasar
    tr 'a-zA-Z', 'n-za-mN-ZA-M'
  end
end

puts "Learning Ruby".ceasar

これはStringクラスにceasarというメソッドを勝手に追加しています。

追加じゃなくて上書きも、上書きの禁止もできます。

8.1.7 スーパークラスの呼び出し

これはいつどう使うかよくわからないので追々勉強する。

次は8.2 変数と定数

【送料無料】初めてのRuby [ Yugui ]

【送料無料】初めてのRuby [ Yugui ]
価格:2,310円(税5%込、送料込)

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

attr_accessorでRuby文法を噛み締める

作りたいwebアプリがあって、プログラムやろう!となって現在にいたってる訳です。 …

吉瀬美智子さんが美しすぎて、新サイト作りました

以前からやりたいと思っていたのですが、吉瀬美智子さんが美しすぎてやる気がでました …

no image
RailsTutorial4.0を高速で復習する。9.3.2章。

9.3.2サンプルのユーザー、です。 Faker gemで、実際にありそうなユー …

コンビニで切れないiPhone充電ケーブル買った

iPhone充電に使うライトニングケーブルって高いのに切れ易く涙目。 こんな感じ …

no image
formatはどこから取ってくる?

ruby on rails3プリケーションプログラミングの本の内容をruby2. …

no image
IBActionのIBって?

railsもやってますが、xcodeも再開しています。 ところで、 IBActi …

iPadのiBooksで自炊とかしたPDFの電子書籍を読む

手順覚えないのでブログに書きます。 Bookscan使用して手持ちPDF電子書籍 …

ブログをアプリを使ってiPhoneから更新

この前の投稿と、前の前の投稿はiphoneから行いました。ノートPCだとブログ投 …

no image
RailsTutorial4.0を高速で復習する。3.5章。最後の問題。

3.5演習、3もんめ、最後の問題です。 3.(上級者向け)「Heroku pag …

no image
RailsTutorial4.0を高速で復習する。3.3.4章。

3.3.4レイアウトを使って重複を解消する、です。 ここでapplication …