diff --git a/courseA/ProblemA2.html b/courseA/ProblemA2.html index 7034a86..34c765b 100644 --- a/courseA/ProblemA2.html +++ b/courseA/ProblemA2.html @@ -45,49 +45,58 @@ です.
開発環境を立ち上げてソースコードの確認をしていただいて構いませんが,ソースコードの変更は時間計測の準備ができるまで行わないで下さい.
- リファクタリングの具体的な作業手順を以下に説明します. + Algo,HandsA,LoseA クラスのいずれも resources パッケージの中に入っています.
+ リファクタリングの作業手順を以下に説明します. +

+

まず,現時点での HandsA から LoseA へのデータ転送に関するクラス図とシーケンス図を以下に示します.

- 現時点ではPULL型のデータ転送で実装されているため,HandsA クラスの getValue() メソッドを呼び出すために LoseA クラスが HandsA クラスを参照しています.
- ここで,Algo クラスは HandsA クラスや LoseA クラスのインスタンスを生成し,それらのインスタンスを関連付ける役割を担っています.
+ 現時点ではPULL型のデータ転送で実装されているため,LoseA クラスの getValue() メソッドから HandsA クラスの getValue() メソッドを呼び出すために LoseA クラスが HandsA クラスを参照しています.
+ ここで Algo クラスは,初期化時に HandsA クラスや LoseA クラスのインスタンスを生成し,それらのインスタンスを関連付ける役割を担っています.
また,HandsA クラスや LoseA クラスにアクセスするための入口(Facade)としての役割も担っています.
- これを以下のクラス図とシーケンス図に示すようにPUSH型のデータ転送になるよう手作業でリファクタリングを行っていただきます.
+

+

+ これを,以下のクラス図とシーケンス図に示すようなPUSH型のデータ転送になるよう,手作業でリファクタリングを行っていただきます.

- 今度はPUSH型のデータ転送であるため,LoseA クラスの updateHanddsA() メソッドを呼び出すために HandsA クラスが LoseA クラスを参照していることに注意してください.
- それではリンク先を開いて作業の準備ができ次第,時間計測を開始してください. 時間計測はできる限り,1分以内の単位での計測をお願いします.
+ 今度はPUSH型のデータ転送であるため,HandsA クラスの updateResultBy...() メソッドから LoseA クラスの updateHandsA() メソッドを呼び出すために HandsA クラスが LoseA クラスを参照していることに注意してください.

- -
-

ArgoUMLの削除機能で実行されるソースコード(一部)

-
-
- 課題A1の拡張シーケンス図による表現 -
+

+ リファクタリングの作業手順の詳細を以下に示します.
+

    +
  1. テストプログラムを実行して正しく動作することを確認する.
  2. +
  3. HandsA クラスに,LoseA クラスのインスタンスを参照するフィールド LoseA loseA を追加する.
  4. +
  5. HandsA クラスのコンストラクタを,LoseA クラスのインスタンスを引数に取るように書き換える.
  6. +
  7. LoseA クラスのコンストラクタを,HandsA クラスのインスタンスを引数に取らないように書き換える.
  8. +
  9. LoseA クラスのフィールド handsA を削除する.
  10. +
  11. Algo クラスのコンストラクタ内で,HandsA クラスのインスタンスが LoseA クラスのインスタンスを参照するよう,インスタンスの生成順や生成方法を変更する.
  12. +
  13. LoseA クラスにプレイヤーの勝敗結果を保存するためのフィールド boolean value を追加する.
  14. +
  15. LoseA クラスに void updateHandsA(List<Card> handsA) メソッドを追加する.
  16. +
  17. HandsA クラスの updateResultBy...() メソッド(4つある)を,最後に LoseA クラスの updateHandsA() メソッドをフィールド value を引数として呼び出すように書き換える.
  18. +
  19. LoseA クラスの getValue() メソッド内で行っていた,プレイヤーの手札の情報をもとに勝敗判定を行う処理を,updateHandsA() メソッドに移動し,判定結果を value フィールドに保存するようにする.
  20. +
  21. LoseA クラスの getValue() メソッドを value フィールドの値を返すように書き換える.
  22. +
  23. テストプログラムを実行して正しく動作することを確認する.
  24. +
+

+

+ 作業に着手する前に,メッセージでお伝えした自分専用のブランチ(user??)を切って,一度プッシュを行ってください.
+ プッシュを行った後,開発環境の準備ができれば,時間計測を開始してください. 時間計測はできる限り,1分以内の単位での計測をお願いします.
+ テストプログラムが正しく動作するまでは作業完了とは見なされないので注意してください. +

- プログラム理解の作業について以下のアンケートにお答えください. + リファクタリングの作業が完了したら作業時間を記録し,その後,作業結果を自分専用のブランチにコミット&プッシュしてください.
+ ただし,main ブランチには決してマージをしないように,また自分専用のブランチを決して削除しないように注意してください.
+ プッシュ後に,以下のアンケートにお答えください.

- アンケート回答 + アンケート回答

-

プログラムと可視化に関する設問

- -

- 課題A1のプログラムと可視化について,以下のリンク先の複数の設問にお答えいただきます.その際にも時間計測をお願いいたします.
- 解答の際には,ソースコードと拡張シーケンス図を何度ご覧いただいてもかまいません.時間が掛かってもかまいませんので,できる限り正確な解答をお願いいたします.
- 以下のリンク先をクリックしてから,すべての設問の解答を終えるまでの時間を計測してください.こちらもできる限り,1分以内の単位での計測をお願いします.
-

- -
- 設問およびアンケート回答 -
-

-次へ +次へ