top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_457

Ruby:◇クラスを使ったプログラム(1) ・・・ 【童話で学ぶ Ruby:19歩目】

 2008-11-14
第19歩
 ◇クラスを使ったプログラム(1)

  ・リンゴを運ぶ小人さん(?)
   ※クラス定義を書いて実感するための
    例題プログラムが続く
   ※少しづつ登場人物を増やしている
    ようだなぁ。
   ・もっと面白くなるように、少し変えていく
  物語を

   ◎ コロボックルのいる森 ◎ とし

   イラストを探してきて
   童話で学ぶ Ruby にした。(はは。なんてね)

    
    ※イラストは「アンの小箱」という
    かわいらしいイラストを無料提供されている方から
    お借りした。ありがとうございました。
    今度、娘にも頼むことにしよう・・・


  [ 第一話:ヒイラギノヒコ の仕事 ]

  ※出演者の名前は
   敬愛する ファンタジー作家「佐藤さとる」さん
   

・「だれも知らない小さな国
 の登場人物から
 (無断で)お借りした。
 大変すみません。
 ・他の名称は私の勝手な創作


長いので、追記に ▼

※この連載は、はじめて「Ruby」に取り組んだmetaboyが、
 PHPなどとの違いを考慮しつつ、ゆっくりと
 良書「はじめてのRubyプログラミング」を基に
 学んでゆく、詳細な記録です。
                      (本日の参照:179頁


FC2ブログランキングにほんブログ村 IT技術ブログ Webサイト構築へブログ王ランキング人気ブログランキング人気ホームページランキングへ


more  [ 第一話:ヒイラギノヒコ のこと ]

 森の奥深く、ヒイラギノヒコは住んでいた。
彼の仕事は、クサカレノヤマに流れる小川から
毎日、ハタノメウオ を捕まえてくることだった・・・


 ●登場人物・物(オブジェクト)
  ・ヒイラギノヒコ
  ・クサカレノヤマの小川
  ・ハタノメウオ
  ・ハタノメウオを入れるびく

 ●セット(クラス)
  ・ハタノメウオ
  ・ヒイラギノヒコ


    ・やってみる
class Hatanome
def initialize # 初期化(一度だけ実行)
@hits = rand(10); # 魚の番号 確定
end

def hits
@hits
end
end
 と
class Hiiragi
# いまのところ未
end



 ◆設定(オブジェクト生成)

・小川には3匹の「ハタノメウオ」が
 住んでいる ※配列で準備
river = {Hatanome.new, Hatanome.new, Hatanome.new}

 ※書き方は▼これでもOK
river = Array.new(3){Hatanome.new}



・おじいさんにもらった「びく」にはたくさんの
 魚が入る ※配列で準備
biku = {}



 ◆仕事内容1(メソッドの定義)
  ※Hiiragi(ヒイラギノヒコ)に組み込む

・ヒイラギノヒコは、川(river) から、
 ハタノメウオ(Hatanome)を獲る
 ※配列から先頭の要素をひとつ取り出す
  shiftメソッドを使う
  (取り出したオブジェクトを、戻り値として
   返す)
class Hiiragi
def hitting(a) # メソッドの定義
a.shift # 先頭の要素をひとつとりだす
end
end


 ◆仕事する(メソッド実行)

fishing = Hiiragi.new # ヒイラギノヒコ
p river.size #=> 3 川にいる匹数、最初は3匹(確認)
hiiragi.hitting(river) # 川から「ハタノメウオ」を獲る
p river.size #=> 2 川にいる匹数、残り2匹(確認)
> 確認した

 ◆仕事内容2(メソッドの定義)
  ※びくに入れるまでの定義に改造

・ヒイラギノヒコは、川(river) から、
 ハタノメウオ(Hatanome)を獲り、「びく(biku)」に入れる
 ※Hiiragiクラスの
  メソッドを追加
class Hiiragi
def hitting(a) # 初期化(一度だけ実行)
a.shift
end
# 「びくに入れる」メソッドの定義
def carry(a,b)
sakana = hitting(a) # 先頭の要素をひとつとりだす
b.push sakana # 取り出した要素を格納
puts "ほい" # しゃべる
end
end

 ※配列の末尾に要素を追加する
  pushメソッドを使う

ほい。ここまで確認。


 ●本日の脚本(ソース)
class Hatanome
def initialize # 初期化(一度だけ実行)
@hits = rand(10); # 魚の番号 確定
end

def hits
@hits
end
end
class Hiiragi
def hitting(river) # メソッドの定義
river.shift
end
def carry(river,biku)
sakana = hitting(river) # 先頭の要素をひとつとりだす
biku.push sakana # 取り出した要素を格納
puts "ほい" # しゃべる
end
end


river = Array.new(3){Hatanome.new}
biku = []
hiiragi = Hiiragi.new # ヒイラギノヒコ

while river.size > 0
hiiragi.carry(river, biku)
p biku.size #=> 獲って「びく」に入れた
end



今日の 留意!
・ハッシュの取り扱い
 最初、
 biku = {} などとやって
 ちょこっとはまった。
 「undefined method `push' for {}:Hash (NoMethodError)」

・変数のスコープが少し不鮮明
・ついつい
 class Hiiragi{ などと { をつけてしまう・・・

commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/457-077b9e8b
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。