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

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

  関連記事

no image
RailsTutorial4.0を高速で復習する。5.1.2章の途中から。

5.1.2章の途中、 リスト5.6 すべてのページに適用される共通のスタイルをC …

Mac mini買いました。

Appleの新製品発表が近づいているというのに、Mac mini買ってしまいまし …

Railsを立ち上げる

RubyのアップデートとRailsのインストールが無事終わったので、いよいよRa …

twitterと連携した写真のライブラリー

iPhoneを使うようになってから気軽に写真撮影し、そのままtwitter投稿す …

no image
Rubyの%を使う記法のうち、 %w

Rubyで%を使う記法は、たのるー(たのしいRuby)によると、以下の6通り % …

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

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

Chromeでの文字化けを対処しました。

WordPressで自作テンプレを作ってみたのはよいものの、困った問題が2つ。 …

詳解 Objective-C 2.0 第3版 CHAPTER4 オブジェクトの型と動的結合

CHAPTER4は「オブジェクトの型と動的結合」なんだけど、 動的結合ってなに? …

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

3.1章は静的ページの追加。これをトップページとして後で色々追加していきます。 …

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

7.1.2ユーザーリソース、です。 /user/newを/signupで表示させ …