Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Grundlagen der Programmierung: Objektorientiertes Design

Lebensdauer eines Objekts

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
In der objektorientierten Programmierung stehen Konstruktor- und Destruktormethoden zur Verfügung, welche der Instanziierung von Objekten sowie deren Löschung dienen.

Transkript

Klassen und Objekte hängen ja so zusammen, dass ich eine Klasse in meinem Programm schreibe und von dieser Klasse dann Objekte instanziere, also ins Leben rufe, um dann mit ihnen zu arbeiten. Wenn wir uns das Ganze mal etwas genauer anschauen, wie diese Instanzierung von statten geht, dann haben viele Sprachen etwas gemeinsam, nämlich dieses kleine Wort New. Das habe ich sowohl in Java, C#, VB. NET, in Ruby, in C++. In Objective-C, da habe ich dieses Wort New nicht, aber in vielen anderen Sprachen. Und wenn ich also eine Klasse mit dem Namen Customer habe, das ist also der Kunde, den ich anlegen möchte, dann kann ich von dieser Klasse ein Objekt instanzieren und das nenne ich in diesem Beispiel dann Fred. Das ist der Name meines Kunden und ich übergebe eben jeweils den Klassennamen. Was passiert aber jetzt genau, wenn ich mit New ein neues Objekt von einer Klasse instanziere? Wenn wir uns noch mal das Beispiel mit dem Spaceship, also mit dem Raumschiff anschauen, dann habe ich hier ein Raumschiff, ich habe einen Namen, ich habe eine shieldStrength, also wie stark ist mein Schutzschild, ich kann etwas abfeuern und ich kann das Schutzschild herunterfahren. Und in dem Moment, in dem ich jetzt dieses Spaceship instanziere, also ein neues Raumschiff mit dem Namen Excelsior starte, dann hat dieses Objekt den Namen null, also leer, weil ich habe ja keinen Namen übergeben und die shieldStrength, die ist auch null. Das heißt, ich muss jetzt eine Möglichkeit finden, wie ich, wenn ich ein Objekt instanziere, diesem ganzen Objekt auch sinnvolle Werte übergebe. Das könnte also hier rechts im Bild dargestellt so sein, dass ich sage, ich möchte, dass mein Raumschiff grundsätzlich, wenn es erzeugt wird als Objekt, den Namen unnamed ship hat, also unbenanntes Raumschiff, und dass die shieldStrength grundsätzlich 100 sein soll. Schauen wir uns mal an, wie wir das Ganze im Java Code in diesem Beispiel hier links machen. Ich habe also diese öffentliche Klasse Spaceship, die ist mit geschweiften Klammern hier oben und ganz hier unten umschlossen, ich habe meine Instanzvariablen und dann habe ich hier eine Methode, die wird hier als Konstruktormethode bezeichnet, und die hat denselben Namen wie meine Klasse. Und das ist der entscheidende Moment, an dem das Java Programm erkennt, das ist die Konstruktormethode, also derselbe Name, wie die beinhaltende Klasse. Und diese Konstruktormethode wird eben in dem Moment ausgeführt, in dem ein Objekt instanziert wird, hier mit dem Begriff New. Diese Konstruktormethode, die gibt meinem Raumschiff eben diesen Namen, unnamed ship, und die sagt auch noch, das Ganze soll diese shieldStrength von 100 haben. Das heißt, ich komme niemals in die Verlegenheit, dass ich ein Raumschiff instanziere, das überhaupt keinen Namen hat und das auch keine shieldStrength hat. Wie schaut das Ganze jetzt in UML aus? Da habe ich ja in UML oben den Klassennamen, ich habe hier die Attribute und hier unten die Methoden. Da füge ich einfach nur die Methode ein, die hier eben denselben Namen wie die entsprechende Klasse hat, und damit signalisiere ich, es gibt eine Konstruktormethode. Es geht aber noch ein bisschen komplizierter, nämlich mit verschiedenen Konstruktormethoden. Neu ist hier dieser gelb umrandete Kasten und ich habe jetzt etwas ganz Besonderes in der Programmierung. Ich habe zweimal die gleiche Funktion. Einmal Public Spaceship und hier unten auch noch mal Public Spaceship und ich kann hier entweder einen String übergeben, dann bin ich in dieser unteren Methode oder ich übergebe keinen String. Was bedeutet das? Ich kann mich also später beim Instanzieren eines Objektes entscheiden, möchte ich meinem Spaceship einen Namen geben, Excelsior 2 beispielsweise, dann erkennt Java, dass diese untere Konstruktormethode aufgerufen werden soll. Das heißt, der Name wird hier übernommen von dem, was ich hier angegeben habe und die shieldStrength wird auf 200 gesetzt. Wenn ich das nicht mache, dann springt Java automatisch in diese obere Konstruktormethode und setzt den Namen eben auf unnamed ship. Schauen wir uns das auch mal als UML an. Wir haben hier also ein Spaceship und dann Spaceship(String). Man erkennt in UML genauso wie später beim Coden die Konstruktotmethode daran, dass sie denselben Namen hat, wie die entsprechende Klasse. Wenn es Konstruktoren gibt, dann gibt es auch Destruktoren, die nennt man manchmal auch Finalisierer. Das sind Funktionen, die aufgerufen werden, wenn ein Objekt gelöscht wird. Die sind nicht ganz so wichtig wie die Konstruktoren und je nachdem in welcher Sprache, in welcher Umgebung Sie arbeiten, können Sie in vielen Fällen auch vielleicht drauf verzichten. Der größte Vorteil ist, es werden Ressourcen freigegeben, die dann von anderen Teilen der Anwendung verwendet werden können. Also beispielsweise, wenn Sie ein Dokument öffnen, um damit zu arbeiten und die Bearbeitung abgeschlossen ist, dann können Sie dieses Objekt auch wieder löschen, destruieren oder finalisieren. Oder wenn Sie beispielsweise eine Datenverbindung aufmachen, dann können Sie sie später auch wieder schließen.

Grundlagen der Programmierung: Objektorientiertes Design

Lernen Sie alle Grundbegriffe und Methoden von objektorientiertem Design kennen und holen Sie sich das Rüstzeug, um bald Ihre eigene Softwareprojekte zu starten.

2 Std. 43 min (45 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!