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... ]