Skip to content

Latest commit

 

History

History
108 lines (92 loc) · 7.63 KB

report5.md

File metadata and controls

108 lines (92 loc) · 7.63 KB

課題レポート5: リファクタリングしてみよう&Gradleに慣れよう


過去のレポート課題で作成したプロジェクトに、Gradleを導入してみよう。


  • IntelliJでGradleプロジェクトを新規作成。
    • GroupID/ArtifactIdは「report5」とする。
    • プロジェクト名も上記同様。
  • 課題レポート3で作成したjavaファイルを、src/main/javaとsrc/test/javaに配置する。
    • src/main/java/package名/以下に置くべきファイル
      • LivingThing.java, Enemy.java, Hero.java, Main.java
    • src/test/java/package名/以下に置くべきファイル
      • EnemyTest.java
        • JUnit5パッケージを追加するため、Enemyクラスを開いた状態で、「Go to から create new test」を選択した方がベター。
    • 補足: 課題レポート3を終えてない人は、まずそれを終えよう
  • 動作確認。
    • Main.javaが動作することを確認しよう。
    • EnemyTest.javaが動作することを確認しよう。
    • 上記2件が動作するなら、git管理に設定し、add+commit+push.
      • build.gradleも含めて、プロジェクト内の設定ファイルは全てaddすること。
      • push先のgithubリポジトリも作成しておこう。リポジトリ名は 「report5」とする。
        • report3時のリポジトリに上書きするのではなく、新規にreport5というリポジトリを作成し、そこにpushしよう。
  • レポート報告事項
    • ステップ1に関しては、pushしたリポジトリURL(作業用URL)を報告するだけで良い。

  • 仕様
    • build.gradleを編集し、jarファイルを生成するように設定せよ。
      • 条件1: mainメソッドを含むMain.javaをコンパイルするように設定すること。
      • 条件2: sourceCompatibilityを10にすること。
  • 動作確認
    • IntelliJからでも、ターミナルからでもどちらでも構わないので、gradleを使ってjarファイルが生成できることを確認しよう。
    • jarファイル生成できたら、jarファイルを実行しよう。この出力結果がMainクラスと同等であることを確認しよう。
      • 動作確認できたら、add+commit+pushしよう。build.gradleのaddを忘れないように。
  • レポート報告事項
    • jarファイルを実行した際の出力結果。

  • 仕様
    • Heroクラス
      • 「public void attack(LivingThing opponent)」を、次の条件を満足するようにオーバーライドせよ。
        • 条件1: 0ダメージだった時には「%sの攻撃!,,,だが、%sは攻撃を回避した!」と出力するようにせよ。出力後は改行すること。
          • 補足: %sが2回出て来るが、1回目の%sは攻撃者。2回目の%sは攻撃対象とする。
        • 条件2: 40%の確率でopponentに与えるダメージを2倍にせよ。また、その時の出力を「%sの攻撃!会心の一撃!!%sに%dのダメージを与えた!!」となるように変更せよ。(「会心の一撃!!」を追加)
    • Enemyクラス
      • 「public void attack(LivingThing opponent)」を、次の条件を満足するようにオーバーライドせよ。
        • 条件1: 0ダメージだった時には「%sの攻撃!,,,だが、%sは攻撃を回避した!」と出力するようにせよ。出力後は改行すること。
          • 補足: %sが2回出て来るが、1回目の%sは攻撃者。2回目の%sは攻撃対象とする。
        • 条件2: 30%の確率でopponentに与えるダメージを2倍にせよ。また、その時の出力を「%sの攻撃!痛恨の一撃!!%sに%dのダメージを与えた!!」となるように変更せよ。(「痛恨の一撃!!」を追加)
  • 動作確認&レポート報告事項
    • 上記4件の修正は、全て確率に伴う処理になるため、必ずしも出力結果からは動作を確認できるとは限らない。複数回実行して構わないので、「Heroクラスの変数が会心の一撃を出す」まで実行し、その際の結果を掲載すること。
    • また、Hero.attack()のコードを掲載し、工夫した点を解説せよ。
      • 補足: 掲載するコードは20行までとする。コードが20行を超えるようなら、重要な点に絞って掲載&解説せよ。

  • おまけ課題(余裕のある人向け)
    • Hero.wounded()やEnemy.wounded()のコードは、LivingThing.wounded()と重複している箇所が多いと思われる。これをどうにかして重複コードを減らすことはできないだろうか?

  • ペアや友人らと話し合って取り組んで構わないが、コード解説を加えるなど「自分自身の報告書」となるように取り組むこと。試して分かったこと、自身で解決できなかった部分等についてどう取り組んだか、といった過程がわかるように示すこと。(考えを図表や文章を駆使して表現して報告する練習です)
  • レポート作成は好きなツール(ソフトウェア)を使って構わない。ただし下記を含めること。
    • タイトル
      • 今回は「プログラミング2、レポート課題5: 「リファクタリングしてみよう&Gradleに慣れよう」」。
    • 提出日: yyyy-mm-dd
    • 報告者: 学籍番号、氏名
      • 複数人で相談しながらやった場合、相談者らを「協力者: 学籍番号、氏名」として示そう。
    • 課題説明(概要のみでOK)
    • 結果と考察
      • 課題への取り組みを通し、課題の意義、課題から分かったこと、今後の展望などを述べる。失敗やつまづきがあれば、それらについての失敗分析を含めること。
      • 参考リンク: 実験レポートの書き方
    • その他
      • 通常は感想等をレポートには含めませんが、練習なので課題に取り組みながら何か感じたこと、悩んでいること等、書きたいことがあれば自由に書いてください。(なければ省略OK)

  • 提出物は「レポート」の1点である。
  • レポートは電子ファイルで提出するものとする。
  • 提出先:
    • 「Google ドキュメント」のreport5。
  • 締切: 調整中。