心はいつも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
wordpressはじめます

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

WordPressの管理画面真っ白問題に対処しました

WordPressの自作テンプレを作ったはいいものの、管理画面が真っ白になって投 …

no image
iTunesをMacBookAirからWindowsに戻しました。

2月にMacBookAirを購入し、今までWindows上にあったiTunesを …

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

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

no image
RailsTutorial4.0を高速で復習する。5.6章。演習2問目。

5.6演習、2問目です。これをやったら、すっ飛ばしているリンク貼り作業をします。 …

パーフェクトRuby 2章Rubyの基礎 2-7-3 シンボル

p61 2-7-3 シンボル シンボル好きです。Ruby始めた頃の一番最初の疑問 …

WordPressのテンプレートを自分で作ってみました

ブログ更新は久々になりました。この2週間、ずっとこのブログ用にWordPress …

no image
ブログは独自ドメインの方が強いかもね

すっかり月一ペースで更新するブログになってしまい焦ります。 震災直後に政権批判し …

no image
iPad vs. VAIO P 持ち歩き編。

旅に出かけるときはケーブルと一緒です。ドコモ携帯、VAIO P、iPhone、W …

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

第10章ユーザーのマイクロポスト、です。 has_many、belongs_to …