Die Klasse Entfernungstabelle
Zielsetzung
Bei der Optimierung einer Tour müssen immer wieder Entfernungen zwischen zwei Städten berechnet werden. Dies ist ein sehr rechenintensiver Prozess. Es wäre daher unklug, wenn man die Entfernung zwischen Stadt A und Stadt B immer wieder neu berechnen müsste. Viel sinnvoller ist es, die Entfernungen zwischen den Städten einmal zu berechnen und dann in einer zweidimensionalen Tabelle zu speichern.
Die neue Klasse Entfernungstabelle
Attribute
Es gibt nur ein einziges Attribut, nämlich den zweidimensionalen Array tabelle.
Methoden
Der Konstruktor benötigt eine Stadtliste als Parameter, damit er überhaupt weiß, was berechnet werden soll.
Die Methode entfernung liefert die Entfernung zwischen zwei Städten zurück.
Quelltext
public class Entfernungstabelle { double[][] tabelle; public Entfernungstabelle(Stadtliste s) { tabelle = new double[16][16]; for (int v = 0; v < 16; v++) for (int n = 0; n < 16; n++) tabelle[v][n] = entfernung(s.liste[v],s.liste[n]); } public double entfernung(Stadt von, Stadt nach) { double dx = nach.x - von.x; double dy = nach.y - von.y; return Math.sqrt(dx*dx + dy*dy); } }
Erläuterung
Es werden 16 x 16 Entfernungen berechnet und in dem Array gespeichert. Mit Hilfe der Methode entfernung() kann jede einzelne Zelle des Arrays ausgelesen werden.
Die Klasse Anwendung
Zielsetzung:
Diese Klasse steht für das Hauptprogramm des Projektes. Hier wird alles verwaltet und am Ende - im Teil 5 - wird die berechnete "optimale" Tour graphisch dargestellt.
Die Entfernungstabelle wurde mit Hilfe der Konsole und des Objektinspektors von BlueJ getestet. Daher macht es hier wenig Sinn, auf die Anwendung einzugehen. Diese wurde in dieser dritten Version nicht verändert.
Aus Zeit- und organisatorischen Gründen konnte ich diesen Workshop leider noch nicht fortsetzen. Ich hoffe aber, dass er in diesem Schuljahr fertig wird, wenn ich das Thema wieder im Informatikunterricht behandle.