learn-ruby-in-kansai:1681
From: "ISHIKAWA Takayuki" <topstone@y...>
Date: Sun, 15 Jul 2007 05:10:07 +0900
Subject: [learn-ruby-in-kansai:1681] 次回のための解説 (Re: 分属処理 script)
こんにちは、石川です。
私が提供した分属処理 script が都合により今回の勉強会で添削され
なかったのは残念ですが、また次回があることを期待して、解説を
入れておきます。
-----------------------------------------------------------------
この script には、
・全ての学生を管理する「Students」class ($AllStudents)
・学生1人1人を表す「Student」class
・全ての教員を管理する「Teachers」class ($AllTeachers)
・教員1人1人を表す「Teacher」class
の4種類の classes があります。
script 末尾の9行が main program です。特に最後から3行目の
$AllStudents.Assign
によって、主要な処理が行われます。これによって $AllStudents の
def Assign
for i in 0..(@NumberOfStudents - 1) do
@StudentList[i].Assign(@PrevPoint)
@PrevPoint = @StudentList[i].GetPoint
end
end
が呼び出されます。ここでは、学生 (@StudentList[i]) が優先順位の
順序で呼び出されて (Assign) います。@PrevPoint は直前の学生の順位
が格納されています (同順位の学生がいたらその旨を出力するため)。
「Student」class の「def Assign(prev)」では、$AllTeachers に
対して「○○研究室を希望しているのですが、OK ですか?」と問い
合わせています。
def Assign(prev)
#前処理
@assigned = nil
for t in 0..(NumberOfApplyList - 1) do
if ((@assigned == nil) && (@order[t] != nil))
print "第" + (t + 1).to_s + "希望 "
$AllTeachers.Apply(@order[t], self)
end
end
# 後処理
end
$AllTeachers では、対象教員を文字列で探し出し (target_teacher)、
それに対して「まだ定員に余裕がありますか?」と問い合わせています。
def Apply(t, student)
#教員探し処理
if (target_teacher == nil)
#例外処理
elsif
a = target_teacher.Apply(student)
end
end
「Teacher」class の「def Apply(student)」では、定員 (@capacity)
が既に埋まっているかどうか判断しています。
def Apply(student)
if (@count < @capacity)
print @name + "は" + student.GetName + "を受け入れました。\n"
@count += 1
@slist.push(student)
student.SetTeacher(@name)
true
elsif
print @name + "は満員のため" + student.GetName + "を受け入れませんでした。\n"
false
end
end
-----------------------------------------------------------------
次回こそはぜひ添削をよろしくお願いします。
--
大阪国際大学経営情報学部講師 石川高行 ???-???-????(ex.2307)
573-0192 大阪府枚方市杉3丁目50番1号 大阪国際大学2号館307
E-mail ishikawa@m... / rechka.takayuki@n...
PGP fingerprint:A0A9 7239 2701 3B46 7F86 3F1A 6997 0EFA 03A2 71B6
--
ML: learn-ruby-in-kansai@r...
使い方: http://QuickML.com/
1650 2007-06-30 19:21 [tagahiro@p... ] Ruby添削コーナーについての補則事項 1655 2007-07-05 12:32 ┣[konami@k... ] 1662 2007-07-08 21:00 ┃┗[ujihisa@g... ] 1664 2007-07-09 20:19 ┗[topstone@y... ] 添削候補、今回は断念 (Re: Ruby添削コーナーについての補則事項) 1665 2007-07-10 11:34 ┗[nanki@m... ] @ 1666 2007-07-10 19:48 ┗[topstone@y... ] 分属処理 script (Re: 添削候補、今回は断念) -> 1681 2007-07-14 22:10 ┗[topstone@y... ] 次回のための解説 (Re: 分属処理 script) 1683 2007-07-15 04:26 ┗[konami@k... ]