[前][次][番号順一覧][スレッド一覧]

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