Hinweise: Das ist eine unbewertete Lückenübung. Jede Frage besteht aus einem Satz, bei dem ein oder zwei Wörter fehlen. Jede Schaltfläche repräsentiert das fehlende Wort bzw. die fehlenden Wörter. Überlegen Sie welches Wort bzw. welche Wörter fehlen. Klicken Sie dann auf die Schaltfläche, um zu sehen ob Sie recht haben. Es wird keine Note für diese Übung ermittelt.
Studenten fahren sich beim Programmieren häufig deswegen fest, weil es scheinbar zu viele Wege gibt etwas zu tun und es nicht klar ist, welches der richtige Weg ist. Diese Übung zeigt verschiedene Wege, in der ein Programm geschrieben werden kann, um dieselbe Aufgabe auszuführen. Die Programme werden zunehmend komplizierter und verwenden wahrscheinlich ein zunehmend schlechteres Programmdesign für das angegebene Problem.
1. Füllen Sie die Lücken aus, so dass das folgende Programm sechsmal "Hallo Vesta" auf den Bildschirm ausgibt.
Dieses Programm zeigt wenig von der objektorientierten Art der Programmierung. Für das gestellte Problem ist es wahrscheinlich das Beste der zehn Programme, da es die Aufgabe in einer einfachen und klaren Weise löst. Aber lassen Sie uns die anderen Programme ansehen.
2. Schreiben Sie jetzt ein Programm, das ein Vesta-Objekt verwendet, um "Hallo Vesta" auf den Bildschirm auszugeben.
In diesem Programm wird ein Vesta-Objekt erzeugt und dessen
Methode sprich()
sechsmal aufgerufen.
Wenn alles was Sie wollten nur die sechsmalige Ausgabe des Satzes war, dann ist die erste Version des Programms wahrscheinlich besser als diese Version.
3. Hier ist eine Abwandlung des Programms.
Jetzt werden sechs Vesta-Objekte erzeugt und
jedes von ihnen verwendet einmal seine Methode sprich()
.
Diese Version des Programms ist weniger effizient als die vorherigen, da sie sechs Objekte erzeugt, die alle das gleiche tun und wo jedes von ihnen sofort nach der Verwendung Datenausschuss wird. Das ist ein schlechter Programmierstil.
4. Hier ist eine weitere Modifikation des Programms. Wieder werden sechs Vesta-Objekte erzeugt, aber jetzt ist jedes ein temporäres, unbenanntes Objekt.
Der new
-Operator wird verwendet, um jedes Objekt zu erzeugen
und die Methode sprich()
der neu erzeugten Objekte wird aufgerufen.
Trotz dieser Verfeinerung ist diese Version des Programms genauso unpraktisch wie die vorherige Version.
5. Jetzt ist die Klasse Vesta so verändert, dass ein Vesta-Objekt seine Mitteilung sechsmal ausgibt:
Diese Version hat den Vorteil, dass sie nur ein Objekt erzeugt und den weiteren
Vorteil, dass main()
jetzt ein einfaches Programm ist.
Wenn damit gerechnet wird, dass main()
länger wird, indem
mehr und mehr Dinge hinzugefügt werden, dann könnte das Vesta
-Objekt
vernünftig sein.
Aber für die angeführte einfache Aufgabe ist das erste Programm immer noch das Beste.
6. In dieser Version beinhaltet die Klassendefinition einen Konstruktor, der die auszugebende Mitteilung initialisiert.
Noch einmal, ob die Vesta
-Klasse vernünftig ist, hängt von der Aufgabe ab.
Wenn die Aufgabe kompliziert ist und das obige Programm erst ein kleiner Schritt in Richtung einer vollständigen Lösung, dann ist die Vesta
-Klasse vielleicht gutes Design.
7. Eine weitere Verfeinerung ist die Aufnahme der Iterationsbegrenzung in den Konstruktor.
Diese Version der Vesta
-Klasse ist flexibler als die vorherige Version.
Sie ist wahrscheinlich besser, da sie für mehr Situationen verwendet werden kann als die vorherige.
8. Bei weiterer Überlegung (was vor jeder Programmierung hätte getan werden sollen) scheint es vernünftig, dass die Anzahl für die Ausgabe der Mitteilung besser als Parameter der Methode sprich()
spezifiziert wird.
Das verbessert weiter die Flexibilität der Klasse.
Diese Version erscheint sowohl logischer als auch vielseitiger. Die Anzahl wie oft eine Mitteilung wiederholt werden soll, sollte ein Merkmal der Anfrage sein, nicht ein inhärentes Merkmal des Objekts.
9. Größtenteils sagt ein Vesta-Object "Hallo Vesta", jedes Mal wenn es verwendet wird.
Wenn es das ist was wir wollen, dann sollte es nicht die Methode main()
sagen.
Klassen können mehrere Konstruktoren mit jeweils verschiedenen Parametern haben. (Denken Sie an die Point
-Klasse.)
In der folgenden Version des Programms
gibt es zwei Konstruktoren,
der eine initialisiert die Mitteilung automatisch mit "Hallo Vesta" und
der andere initialisiert sie mit der übergebenen Mitteilung.
10. Eine weitere Verbesserung der Vesta
-Klasse ist
die Aufnahme einer Methode, die die Mitteilung verändern kann.
Das ist KEIN Konstruktor — es ist eine Methode, die ein Teil
eines existierenden Objekts ist und die Mitteilung des Objekts ändert.
Beachten Sie sorgfältig den Unterschied zwischen einem Konstruktor und einer Methode; ein Konstruktor initialisiert die Daten in einem Objekt, wenn das Objekt erzeugt wird. Jede Verwendung eines Konstruktors erzeugt ein neues Objekt. Eine Methode ist Teil eines Objekts. Sie verändert die Daten ihres Objekts. Da die Daten in einem Vesta-Objekt geändert werden können, sind sie NICHT unveränderbar.
Ende des Tests. Wenn Sie ihn wiederholen möchten, klicken Sie in Ihrem Browser auf "Aktualisieren".
Zurück zum Inhaltsverzeichnis.