プログラミング入門(2015年度夏学期)?
- まず,添削方法が変わったので,次回はなるべくBlueJのプロジェクトをまるごと提出してください.(こちらがBlueJで開きやすいように)
- テスト用のクラスが与えられている問題がありますが,提出する際には,これらのソースコードやクラスも含めてください.でないと,動作確認しづらいです.
以下,問題ごとのコメントです.(井上添削分のみ)
3-1 †
3-2 †
- rotateAngle() の挙動を間違えている人が多かったです.
3-3 †
- beAngry()などを呼び出す側でcanvas.clear()をしている人が結構いますが,これは良くないです.たとえば,うっかりcanvas.clear()を忘れてしまうと,Angryの部品とSadの部品が混ざって表示されたりしますね.ですから,beAngry() メソッドの中で,他の表情に関係するパーツを非表示にさせるべきです.
3-4 †
- 一周ずつ書く処理をループさせる,だけでもOK.それだけでなく,頑張って中まで詰めようとしていた人もいました.
3-5 †
3-6,7 †
- 設計方針としては,クラスの分け方や,各クラスにどのような役割や機能を与えているのか,またそれによる恩恵などを説明してほしかったです.
- 切り口としては,例えば,ボタンや箱が増えたときに,どこを修正しなければならないでしょうか?
3-6 †
- 大きく,「見えない箱クラス」を定義している人と,「見えない3つの箱を管理するクラス」を定義している人に分かれました.前者は,箱クラスを使い回せる点で利点がありますし,後者は,初期化や箱をランダムに生成するなどの処理を分離できるでしょう.
3-7 †
- ボタンクラスに,それがどの番号や記号を表すボタンなのか,という情報をフィールドとして保持するようにしている人が多く,これは良かったです.しかし,そうでない人もいました.ボタンに関する情報をどこで管理すると煩雑ではなくなるでしょうか?
- 表示盤クラスを作るか否か,電卓の計算に関するロジックをどのクラスに封じ込めるか,といった辺りで設計が分かれていたように思います.
- 配列やリストを使わずにこれをやった方,ボタンの管理が大変だったと思います.とはいえ,習ってないですから仕方ないですよね.楽に書こうと思うと,まずはこういったデータ構造を使うとよいです.
|