303
Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304
305
for-schleifen sind in Aktivitätsdiagrammen nicht von while-schleifen unterscheidbar, was auch die enge Verwandtschaft dieser Schleifenarten zeigt. 306
307
Wenn wirklich alle Elemente einer Collection durchlaufen werden sollen und man nicht die Position eines Elementes in der Collection ausgeben muss, ist das die deutlich beste Möglichkeit, über die Collection zu iterieren. 308
309
Die Folgenden Folien zeigen den typischen Ablauf einer Programmentwicklung für ein nicht triviales Programm. Generell muss zunächst die Aufgabe verstanden werden, danach wird typischerweise schrittweise das Programm entwickelt. Dabei wird zunächst eine einfache Lösung für den typischen Fall programmiert und dann schrittweise alle zu beachtenden Alternativen ergänzt. Man spricht von einer iterativen Entwicklung. 310
Hinweis: es gibt viele andere Varianten zum Sortieren, die eine wird hier nur als Beispiel gezeigt. 311
Verfahren wird auch Insert-Sort genannt, siehe auch http://www.youtube.com/watch?v=roalu379l3u Sortier-Verfahren sind die wahrscheinlich am meisten animiert dargestellten Verfahren der Welt. 312
313
314
315
316
317
318
319
320
321
Das Beispiel zeigt mit wo1 die Möglichkeit der direkten Initialisierung, die auch die Array-Größe auf sieben festlegt. Mit wo2 wird gezeigt, dass es auch einen Konstruktor für Arrays mit einer etwas besonderen Syntax gibt, die auch die Array-Größe festlegt. Durch diese Objekt-Erstellung haben alle Array-Elemente den Wert null. Man kann auch Variablen vom Typ Array deklarieren und ihnen später passende Arrays zuweisen. Eine direkte Initialisierung mit Werten ist dabei allerdings nicht möglich. Arrays können natürlich auch Typen von lokalen Variablen sein. 322
323
324
325
Man erinnere sich an das Verfahren, das beim Polygonzug verwendet wurde. Die Idee ist identisch, nur der Zugriff auf die Punkte sieht anders aus. Weiterhin wird immer der erste und der letzte Punkt verbunden. 326
Da es im zweiten Fall undefinierte Punkte, also null-werte, gibt, auf denen Methoden aufgerufen werden sollen, gibt es NullPointer-Fehler. Um dies zu vermeiden, kann man in anzeigen immer zunächst prüfen, ob der Punkt existiert oder null ist. Man überlege sich weiterhin, warum die Methode anzeigen grundsätzlich nicht mit Einecken, also nur einem Punkt oder einem Array der Größe null funktioniert. Die benötigten Korrekturen können zur Übung genutzt werden. 327
Zum Verschieben des N-Ecks werden wieder alle Punkte verschoben. Beide vorgestellten Methoden machen genau das Gleiche, die untere Methode zeigt, dass die vereinfachte for-schleife zum Durchlaufen aller Elemente genauso bei Arrays genutzt werden kann. 328
Man beachte, dass beim Verschieben das ursprüngliche Dreieck wie sonst auch, nicht vom Interaktionsbrett gelöscht wird. Es wird damit ein Dreieck dreimal gezeichnet und man sieht drei Dreiecke. 329
330
Man beachte, dass jedes Pferd aus seinen eigenen Punkt-Objekten besteht. Würde man die Methode verschieben hier nutzen, würde immer nur dasselbe Pferd verschoben werden. Will man ein Pferd aus mehreren n-ecken zusammensetzen, ist es sinnvoll eine eigene Klasse für eine solche Figur zu schreiben. 331
Generell fällt auf, dass im Programm viele Konstanten mitten in die Methoden hinein programmiert wurden, was gerade für große Programme ein sehr schlechter Stil ist. Besser wäre es, für die Position der Ziellinie und den Abstand der Pferde konstante Objektvariablen zu definieren. 332
333
Wenn man z. B. mehrere Strings zusammen verwalten will, kann man kurz darüber nachdenken, diese zeilenweise in einem Array zu verwalten. Dies soll vermieden werden, da die Grundregel gilt, dass zusammengehörige Daten in einem Objekt zusammengefasst sein sollen. 334
In mehrdimensionalen Arrays kann jedes Teilarray eine unterschiedliche Länge haben, die immer mit.length abgefragt werden kann. 335
336
337
338
339
340
341
Der Compiler-Aufruf erfolgt für jedes Betriebssystem mit javac. Der Compiler hat einige optionale Parameter, die hier noch nicht weiter betrachtet werden. Man erkennt, dass alle benötigten Klassen übersetzt werden. Zu jeder dieser Klassen existiert eine Datei mit ".class" am Ende. Diese Dateien sind unter jedem Betriebssystem nutzbar. Abhängig von der inneren Struktur der Klasse, können durchaus mehrere ".class"-dateien entstehen. 342
Java-Programme werden unter jedem Betriebssystem mit java aufgerufen. Als Parameter wird der Name einer vorher übersetzten Klasse übergeben, d. h. es muss eine Datei Main.class geben. Man beachte, dass niemals ".class" beim Aufruf mit angegeben wird. Es können nur ausführbare Klassen, also mit main-methode, zum Programmstart genutzt werden. 343
344
345
346
347
348
349
350