心はいつも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を高速で復習する。7.2章

7.2ユーザー登録フォーム、です。 ユーザー認証も登録も、モデルは作ってあるので …

Google Webfont使ってみたよ

地元に戻ってきてまず思ったのは「観光サイトを立ち上げたい」ということ。いや、観光 …

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

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

RailsTutorial4.0を高速で復習する。8.1.2章。

8.1.2サインインをテストする、です。 Signin(ログイン)失敗の場合 ロ …

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

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

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

8.1.3サインインのフォーム、です。 ログイン画面を作る 入力フォームをfor …

カスペルスキーを使っています

PCのウィルススキャンは、多くの人が使っているかと思います。 大手3社のソフトを …

no image
ブログのデザイン開発、着手から完成まで今日1日でやります

久々のブログです。 昨日アクセス解析も1年ぶりに見たのですが、何がなくとも一定の …

Rubyの聖地、松江でRailsGirls Matsueに参加しました

旧暦神在月にRubyイベントに参加したい!と思ったところ、狙ったようにRubyW …

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

6.3セキュアなパスワードを追加する、です。 パスワードはセキュアであるべきと思 …