Benutzer-Werkzeuge

Webseiten-Werkzeuge


anhang:unittests:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
anhang:unittests:start [2024/12/11 10:06] – [Definitionen] Martin Pabstanhang:unittests:start [2025/04/09 09:00] (aktuell) – [Aufgabe 1] Martin Pabst
Zeile 73: Zeile 73:
       return f;       return f;
    }    }
 +}
 +</script>
 +
 +
 +</div>
 +
 +</HTML>
 +
 +
 +
 +===== Aufgabe 1 =====
 +Gegeben ist die Klasse TicTacToeModel (s.u.). 
 +  * a) Versehen Sie jede Methode mit einem aussagekräftigen JavaDoc-Kommentar.
 +  * b) Schreiben Sie eine Test-Klasse ''TicTacToeTest'' mit Testmethoden, die die Methoden der Klasse ''TicTacToe'' ausführlich testen, d.h. so, dass möglichst jeder Fehler ausgeschlossen werden kann.
 +  * c) Vereinfachen Sie die Methode ''getWinner''.
 +
 +<HTML>
 +<div class="java-online" style="height: 80vh; width: 100%" data-java-online="{'withBottomPanel': true, 'id': 'TicTacToe1'}">
 +<script type="text/plain" title="TicTacToeTest.java">
 +
 +</script>
 +<script type="text/plain" title="TicTacToeModel.java">
 +class TicTacToeModel {
 +   /**
 +    * die Werte der Spielfelder haben folgende Bedeutung:
 +    * 1: Kreuz
 +    * 0: Feld unbesetzt
 +    * 2: Kreis
 +    */
 +   private int[][] board = new int[3][3];
 +
 +   /**
 +    * Wer ist als nächstes am Zug? 
 +    * 1: Kreuz
 +    * 2: Kreis 
 +    */
 +   private int nextPlayer = 1;
 +
 +   TicTacToeModel() {
 +      reset();
 +   }
 +
 +   public void reset() {
 +      for (int column = 0; column < 3; column++) {
 +         for (int row = 0; row < 3; row++) {
 +            board[column][row] = 0;
 +         }
 +      }
 +   }
 +
 +   int getNextPlayer() {
 +      return nextPlayer;
 +   }
 +
 +   public int getFieldContent(int column, int row) {
 +      checkCoordinates(column, row);
 +      return board[column][row];
 +   }
 +   
 +   public void checkCoordinates(int column, int row) {
 +      if(column < 0 || column > 2 || row < 0 || row > 2) {
 +         throw new RuntimeException("Die Koordinaten (" + column + ", " + row + ") gibt es nicht.");
 +      } 
 +   }
 +
 +   public void setStone(int column, int row) {
 +      checkCoordinates(column, row);
 +      if(board[column][row] != 0) {
 +         throw new RuntimeException("Die Position (" + column + ", " + row + ") ist schon besetzt.");
 +      }
 +      board[column][row] = nextPlayer;
 +      nextPlayer = 3 - nextPlayer;
 +   }
 +
 +   int getWinner() {
 +      for (int column = 0; column < 3; column++) {
 +         int product = board[column][0] * board[column][1] * board[column][2];
 +         if(product == 1) return 1;
 +         if(product == 8) return 2;
 +      }
 +      for (int row = 0; row < 3; row++) {
 +         int product = board[0][row] * board[1][row] * board[2][row];
 +         if(product == 1) return 1;
 +         if(product == 8) return 2;
 +      }
 +      int product1 = 1;
 +      int product2 = 1;
 +      for (int i = 0; i < 3; i++) {
 +         product1 *= board[i][i];
 +         product2 *= board[i][3 - i];
 +      }
 +      if(product1 == 1) return 1;
 +      if(product1 == 8) return 2;
 +      if(product2 == 1) return 1;
 +      if(product2 == 8) return 2;
 +      return 0;
 +   }
 +   
 } }
 </script> </script>
anhang/unittests/start.1733911616.txt.gz · Zuletzt geändert: 2024/12/11 10:06 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki