Generierte Dokumentation der praktischen Arbeit von Simon Tiffert

Hauptseite | Pakete | Klassenhierarchie | Alphabetische Liste | Auflistung der Klassen | Auflistung der Dateien | Klassen-Elemente

# main.verarbeitung.Verarbeitung Klassenreferenz

Zusammengehörigkeiten von main.verarbeitung.Verarbeitung:

[Legende]
Aufstellung aller Elemente

## Ausführliche Beschreibung

Die Klasse Verarbeitung sucht einen Weg von Rösselsprüngen in der angegebenen Matrix.

Dazu wird die Matrix übergeben, in der die einzelnen Schritte gespeichert werden.
Hier ist der Kernalgorithmus des Programms zu finden, der das Problem löst.

Version:
  Revision
    1.17

Autor:
  Simon Tiffert

Definiert in Zeile 30 der Datei Verarbeitung.java.

## Öffentliche Methoden
| Verarbeitung (Matrix matrix) throws MatrixNotInitialisedException
| Der Konstruktor speichert die Matrix und ruft die Rösselsprünge auf.
## Private Methoden
boolean | roesselSprung (int zaehler, int y, int x)
| Diese Funktion führt das Backtracking durch.
## Private Attribute
Matrix | matrix
| Feld für Matrix.

## Beschreibung der Konstruktoren und Destruktoren

main.verarbeitung.Verarbeitung.Verarbeitung | ( | Matrix | matrix | ) | throws MatrixNotInitialisedException

  | Der Konstruktor speichert die Matrix und ruft die Rösselsprünge auf. Dabei wird abgefangen, ob die Rekursion erfolgreich war und ein Weg gefunden wurde. Parameter:
  matrix | Zentrale Datenstruktur mit Matrix
  Ausnahmebehandlung:
  MatrixNotInitialisedException | Matrix nicht initialisiert
Definiert in Zeile 43 der Datei Verarbeitung.java. Benutzt main.verarbeitung.Matrix.getStartpunkt(), main.verarbeitung.Punkt.getX(), main.verarbeitung.Punkt.getY(), main.verarbeitung.Matrix.isInitialisiert, main.verarbeitung.Verarbeitung.roesselSprung() und main.verarbeitung.Matrix.setWegGefunden().
    00045   {
    00046     // zentrale Datenstruktur
    00047     this.matrix = matrix;
    00048
    00049     // Überprüft, ob die Matrix initialisiert wurde.
    00050     // Wenn die Verarbeitung als Modul eingebunden wird, könnte es
    00051     // dort zu Problemen kommen
    00052     if (!matrix.isInitialisiert())
    00053     {
    00054       throw new MatrixNotInitialisedException();
    00055     }
    00056
    00057     // Rekursiver Aufruf des Kernalgorithmus, mit Überprüfung, ob ein
    00058     // Weg gefunden wurde
    00059     if (roesselSprung(1,
    00060       matrix.getStartpunkt().getY(),
    00061       matrix.getStartpunkt().getX()))
    00062     {
    00063       // markiere den Weg als gefunden
    00064       matrix.setWegGefunden();
    00065     }
    00066   }

Hier ist der Graph aller Aufrufe für diese Funktion:

## Dokumentation der Elementfunktionen

boolean main.verarbeitung.Verarbeitung.roesselSprung | ( | int | zaehler,
|  | int | y,
|  | int | x
| ) | `[private]`

  | Diese Funktion führt das Backtracking durch. Dabei wird über Rösselsprünge festgelegt, in welchen Richtungen das nächste Feld gesucht wird. Parameter:
  zaehler | Rekursionstiefe sowie aktuelle Sprunganzahl
  y | y-Wert der aktuellen Position
  x | x-Wert der aktuellen Position
Rückgabe: ob die Rekursion erfolgreich war Definiert in Zeile 78 der Datei Verarbeitung.java. Benutzt main.verarbeitung.Matrix.getFeldAnzahl(), main.verarbeitung.Matrix.getWert(), main.verarbeitung.Matrix.isInMatrix() und main.verarbeitung.Matrix.setWert(). Wird benutzt von main.verarbeitung.Verarbeitung.Verarbeitung().
    00079   {
    00080     // überprüfen, ob der aktuelle Punkt innerhalb der Matrix ist
    00081     if (!matrix.isInMatrix(y, x))
    00082     {
    00083       return false;
    00084     }
    00085
    00086     // überprüfen, ob der aktuelle Punkt besetzt ist
    00087     if (matrix.getWert(y, x) != 0)
    00088     {
    00089       return false;
    00090     }
    00091
    00092     // setze auf die aktuelle Position den Wert von zaehler
    00093     matrix.setWert(y, x, zaehler);
    00094
    00095     // wenn zaehler die Maximalanzahl erreicht hat, ist die Rekursion
    00096     // fertig und kann mit true abgebrochen werden
    00097     if (zaehler == matrix.getFeldAnzahl())
    00098     {
    00099       return true;
    00100     }
    00101
    00102     // Rekursionskern:
    00103
    00104     // Richtung NNO - Nordnordost
    00105     if (roesselSprung(zaehler + 1, y - 2, x + 1))
    00106     {
    00107       return true;
    00108     }
    00109
    00110     // Richtung ONO - Ostnordost
    00111     if (roesselSprung(zaehler + 1, y - 1, x + 2))
    00112     {
    00113       return true;
    00114     }
    00115
    00116     // Richtung OSO - Ostsüdost
    00117     if (roesselSprung(zaehler + 1, y + 1, x + 2))
    00118     {
    00119       return true;
    00120     }
    00121
    00122     // Richtung SSO - Südsüdost
    00123     if (roesselSprung(zaehler + 1, y + 2, x + 1))
    00124     {
    00125       return true;
    00126     }
    00127
    00128     // Richtung SSW - Südsüdwest
    00129     if (roesselSprung(zaehler + 1, y + 2, x - 1))
    00130     {
    00131       return true;
    00132     }
    00133
    00134     // Richtung WSW - Westsüdwest
    00135     if (roesselSprung(zaehler + 1, y + 1, x - 2))
    00136     {
    00137       return true;
    00138     }
    00139
    00140     // Richtung WNW - Westnordwest
    00141     if (roesselSprung(zaehler + 1, y - 1, x - 2))
    00142     {
    00143       return true;
    00144     }
    00145
    00146     //  Richtung NNW - Nordnordost
    00147     if (roesselSprung(zaehler + 1, y - 2, x - 1))
    00148     {
    00149       return true;
    00150     }
    00151
    00152     // es wurde kein Weg gefunden, somit besetze die aktuelle Position
    00153     // wieder mit 0, sodass das Feld wieder als freies Feld erkannt
    00154     // wird.
    00155     matrix.setWert(y, x, 0);
    00156
    00157     // Es wurde keine Richtung gefunden
    00158     return false;
    00159   }

Hier ist der Graph aller Aufrufe für diese Funktion:

## Dokumentation der Datenelemente

Matrix main.verarbeitung.Verarbeitung.matrix`[private]`

| Feld für Matrix. Definiert in Zeile 33 der Datei Verarbeitung.java.

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:

- Verarbeitung.java

Documentation created with Doxygen 1.3.6 | Fri May 14 11:16:00 2004