diff --git a/courseA/ProblemA2.html b/courseA/ProblemA2.html index d119189..7034a86 100644 --- a/courseA/ProblemA2.html +++ b/courseA/ProblemA2.html @@ -1,30 +1,17 @@ -課題A2 + 課題A2 - - - - - - - - - - - + - - + +

課題A2


@@ -32,16 +19,16 @@

課題の概要

- 課題A2では,Algo のHandsAからLoseAへのデータ転送について見ていきます. - HandsAは,プレイヤーのすべての手札を管理しているクラスで,LoseAは各ターンでプレイヤーがゲームに負けたか否かを表すクラスです.
+ 課題A2では,Algolike の HandsA から LoseA へのデータ転送について見ていきます. + HandsA は,プレイヤーのすべての手札を管理しているクラスで,LoseAは各ターンでプレイヤーがゲームに負けたか否かを表すクラスです.
この課題では, -

- HandsAの情報が更新されたときにその情報をLoseAにPUSH型で転送しているプログラムを,PULL型で転送するようにリファクタリングすること」 -
+
+ 「HandsA の情報が更新されたときにその情報を LoseA にPULL型で転送しているプログラムを,PUSH型で転送するようにリファクタリングすること」 +
-を目的とします.
-リファクタリングの詳しい作業手順は以下で説明します. + を目的とします.
+ リファクタリングの詳しい作業手順は以下で説明します.


@@ -54,13 +41,21 @@ 最初の課題から最後の課題まで一定のペースを保てるよう, 正しくリファクタリングを行うことを意識してください.
この課題で作業していただく内容は,
- 「HandsA の情報が更新されたときにその情報を LoseA にPUSH型で転送しているプログラムを,PULL型で転送するようにリファクタリングすること」 + 「HandsA の情報が更新されたときにその情報を LoseA にPULL型で転送しているプログラムを,PUSH型で転送するようにリファクタリングすること」
です.
- 下記のリンク先は,時間計測の準備ができるまでクリックしないで下さい.
- 1つ目のリンク先には,この課題に必要な部分を抜き出したソースコードが,実行の流れがわかるようデバッグ実行の形式で提示されています(デバッガ画面の操作方法についてはこちら).
- また2つ目のリンク先には,このプログラムの動作を拡張シーケンス図を用いて表現した図が提示されています.
- リンク先のソースコードを,拡張シーケンス図と照らし合わせながら最初から最後まで飛ばさずに追いかけて,全体の流れを把握してください.時間計測後,プログラムの内容と拡張シーケンス図に関する設問にお答えいただきます.
+ 開発環境を立ち上げてソースコードの確認をしていただいて構いませんが,ソースコードの変更は時間計測の準備ができるまで行わないで下さい.
+ リファクタリングの具体的な作業手順を以下に説明します. + まず,現時点での HandsA から LoseA へのデータ転送に関するクラス図とシーケンス図を以下に示します.
+ +
+ 現時点ではPULL型のデータ転送で実装されているため,HandsA クラスの getValue() メソッドを呼び出すために LoseA クラスが HandsA クラスを参照しています.
+ ここで,Algo クラスは HandsA クラスや LoseA クラスのインスタンスを生成し,それらのインスタンスを関連付ける役割を担っています.
+ また,HandsA クラスや LoseA クラスにアクセスするための入口(Facade)としての役割も担っています.
+ これを以下のクラス図とシーケンス図に示すようにPUSH型のデータ転送になるよう手作業でリファクタリングを行っていただきます.
+ +
+ 今度はPUSH型のデータ転送であるため,LoseA クラスの updateHanddsA() メソッドを呼び出すために HandsA クラスが LoseA クラスを参照していることに注意してください.
それではリンク先を開いて作業の準備ができ次第,時間計測を開始してください. 時間計測はできる限り,1分以内の単位での計測をお願いします.