心はいつも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

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

  関連記事

つながらないWimaxの電波倍返し

googleが見つかりませんと言われると、対外電波切れ。 本日は多発しています。 …

no image
MacBookAir 1日め

ようやくMacBookAir を購入しました。Dellノートがずっと調子悪かった …

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

11.2.3「フォローしているユーザー」ページと「フォロワー」ページ、です。 仕 …

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

9.3すべてのユーザーを表示する、です。 いろいろ細かい実装するまえにこれやるべ …

no image
wordpressはじめます

ブログを立ち上げるのは久しぶりです。 以前から、ブログメディアをやりたいと思って …

民●党批判したら検索順位が落ちたのか?

このブログ、airpucciのドメインも元のwww.airpucci.comに戻 …

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

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

no image
@で始まるのが インスタンス変数

@ で始まるのが インスタンス変数 大文字で始まるのが 定数 文法書のどこに書い …

no image
Ruby 1.9系をインストールする

Rubyのバージョン管理ができるrbenvをインストールしたらいよいよRubyの …

no image
iPhoneのKindleアプリでChip Conley氏の本を読んでみました。その1

GWで電子本も文庫本も読み終え、「新しい本に入れ替えないと~」と思いながらすっか …