Die grundlegenden Begrifflichkeiten rund um Klasse und Objekt sind
die Inhalte der dreiundvierzigsten Episode des
Anwendungsentwickler-Podcasts. TL;DR Mit Beispielen aus meiner
Lernzielkontrolle kannst du die Grundlagen der Objektorientierung
für deine Prüfung und deinen Alltag als Fachinformatiker:in
Anwendungsentwicklung wiederholen. Eine Klasse beschreibt als
Bauplan die Attribute und Methoden ihrer Objekte, deren eigene
Werte den jeweiligen Zustand bilden. Dazu gehören die Begriffe
Instanz und Kapselung sowie das Prinzip YAGNI, nach dem du nur
benötigte Eigenschaften und Funktionen programmierst. Du erfährst
außerdem, wie du mit Instanzvariablen und statischen Membern
arbeitest, welche Probleme null verursacht und wie du Klassen mit
Java-Packages beziehungsweise .NET-Namespaces gruppierst.
Kapitelmarken [00:00:01] Erste Lernzielkontrolle zur
Objektorientierung [00:00:26] Objektorientierung in Prüfung und
Berufspraxis [00:01:36] Die Zahl 42 und Per Anhalter durch die
Galaxis [00:02:08] Klassen und Objekte am Beispiel eines Monitors
[00:05:09] Die Domäne passend zur Anwendung modellieren [00:07:00]
YAGNI: Nur benötigten Code programmieren [00:07:45] Instanz als
anderer Begriff für Objekt [00:08:22] Objekte mit new erzeugen
[00:09:09] Instanzvariablen definieren und verwenden [00:11:02]
Individuelle Werte und der Zustand eines Objekts [00:12:05]
Seiteneffekte durch veränderlichen Zustand [00:13:08] Daten und
Methoden gemeinsam kapseln [00:14:29] Standardwerte von
Instanzvariablen [00:15:29] Null-Pointer-Fehler und ihre Ursachen
[00:17:12] Die Bedeutung von null bei Referenztypen [00:19:21]
Zugriff auf Instanzvariablen mit dem Punktoperator [00:19:58]
Statische Variablen und der Begriff Feld [00:22:24]
Klassenvariablen über den Klassennamen ansprechen [00:23:19]
Methoden aufrufen und ihre Signatur bestimmen [00:24:42]
Methodenaufrufe als Nachrichten an Objekte [00:26:08] Statische
Methoden und der statische Kontext [00:27:30] Member als
Oberbegriff für Felder und Methoden [00:28:25] Zusammengehörige
Klassen in Java-Packages gruppieren [00:29:41] Klassen aus anderen
Packages importieren [00:31:23] Namespaces in C# und Visual Basic
[00:32:13] Weihnachtspause und weitere Lernmaterialien [00:33:18]
Feedback und Kontaktmöglichkeiten [00:34:19] Fachgespräch
vorbereiten und Legacy-Systeme weiterentwickeln [00:35:04]
Newsletter und Ausblick auf die nächste Lernzielkontrolle Inhalt
Objektorientierung Was ist eine Klasse? Eine Klasse ist ein Bauplan
für Objekte. Sie definiert alle Attribute und Methoden ihrer
Objekte. Was ist ein Objekt? Ein Ding der realen Welt, das
Eigenschaften und Funktionen besitzt. Was ist eine Instanz? Ein
anderes Wort für Objekt. Was bedeutet Instantiierung? Das Erzeugen
eines Objekts aus einer Klasse. Was macht das Schlüsselwort new?
Instantiiert ein Objekt. Was ist eine Instanzvariable und wie
definiert man sie? Eine Variable mit individuellem Wert für jedes
Objekt. Sie werden auf Ebene der Klasse definiert. Wie werden
Instanzvariablen initialisiert? Mit Standardwerten, wenn man keine
eigenen angibt. Was ist null? Der Standardwert für Referenztypen.
Wie greift man auf Instanzvariablen zu? Objektname + . +
Variablenname + Parameter Was ist ein Feld? Der Oberbegriff für
alle Variablen einer Klasse (static und Instanzvariablen). Was ist
eine Methode? Funktionen von Objekten heißen Methoden. Wie ruft man
eine Instanzmethode auf? Objektname + . + Methodenname + Parameter
Was ist die Methodensignatur? Der Name der Methode sowie Datentyp
und Position ihrer Parameter bilden die Signatur einer Methode. Was
bedeutet es, eine Nachricht an ein Objekt zu senden? Eine Methode
aufzurufen. Was sind statische Methoden und wie ruft man sie auf?
Statische Methoden sind über eine Klasse aufrufbar und benötigen
kein Objekt. Sie werden über den Klassennamen und den .-Operator
aufgerufen. Was sind die Member einer Klasse? Oberbegriff für
Felder und Methoden (static und Instanzvariablen) einer Klasse. Was
ist ein Package? Ein Package dient der Gruppierung
zusammengehöriger Klassen und ist vergleichbar mit einem Ordner im
Dateisystem. Was macht das Schlüsselwort import? Importiert ein
Package und macht seine Inhalte in der aktuellen Klasse verfügbar.
Literaturempfehlungen 3 Klassen und Objekte - Rheinwerk Computing
:: Java ist auch eine Insel Lesson: Classes and Objects (The Java
Tutorials > Learning the Java Language) *(direkt beim
Rheinwerk-Verlag bestellen*) *(direkt beim Rheinwerk-Verlag
bestellen*) * * Links Permalink zu dieser Podcast-Episode RSS-Feed
des Podcasts Java Fields | tutorials.jenkov.com Vorbereitung auf
das Fachgespräch Innovationen in Legacy-Systemen Der schlimmste
Fehler in der Informatik Zusammenfassung Objektorientierung in der
IT-Ausbildung Für dein Fachgespräch als angehende:r
Fachinformatiker:in Anwendungsentwicklung solltest du die Begriffe
der Objektorientierung sicher beherrschen. Dazu lassen sich viele
Fragen stellen, mit denen Prüfer:innen auch dein tieferes
Verständnis prüfen können. In meinem Ausbildungsalltag greife ich
das Thema regelmäßig auf, weil es ebenso beim Programmieren
gebraucht wird. Viele verbreitete Programmiersprachen arbeiten
objektorientiert. Klassen und Objekte An meinem Monitor kannst du
nachvollziehen, was ein Objekt ausmacht: Er hat Eigenschaften wie
seine Helligkeit und bietet Funktionen, etwa das Einschalten. In
der Objektorientierung heißen diese Eigenschaften Attribute,
während die Funktionen als Methoden bezeichnet werden. Eine Klasse
ist der Bauplan für solche Objekte. Sie legt fest, welche Attribute
und Methoden alle zugehörigen Objekte besitzen. Wenn ich mehrere
Monitore in einem Raum betrachte, hat jeder eine Helligkeit, deren
konkreter Wert je nach Monitor unterschiedlich sein kann. Die
Klasse Monitor beschreibt die gemeinsamen Eigenschaften und
Funktionen dieser einzelnen Monitorobjekte. Für ein Telefon würde
ich eine eigene Klasse mit den dazu passenden Attributen und
Methoden modellieren. Auf diese Weise lassen sich die Dinge des
fachlichen Bereichs, der Domäne eines Programms, in Software
abbilden. Welche Teile der Domäne gehören ins Programm? Bei einer
Autowaschanlage brauche ich die Maße eines Autos, damit sich die
Bürsten passend bewegen können. Für eine Autovermietung ist
beispielsweise der Mietpreis relevant. Welche Attribute und
Methoden eine Klasse Auto erhält, hängt deshalb davon ab, was die
jeweilige Anwendung braucht. Als Entwickler:in wählst du die
passenden Teile der Domäne aus. Dein Modell enthält die
Eigenschaften und Funktionen, mit denen dein Programm arbeiten
soll. Das Prinzip YAGNI, ausgeschrieben "You ain't gonna need it",
hilft dir dabei: Programmiere etwas erst, wenn feststeht, dass es
gebraucht wird. Jeder zusätzliche Teil des Codes bringt später
Arbeit mit sich, etwa wenn du ihn pflegen oder überarbeiten musst.
Instanzen erzeugen Wenn du in einer Prüfungsfrage auf das Wort
Instanz stößt, ist damit ein Objekt gemeint. Die Begriffe werden
gleichwertig verwendet; entsprechend kannst du eine Instanzmethode
auch Objektmethode nennen. Bei der Instanzierung erzeugst du aus
einer Klasse ein Objekt. Dafür wird in vielen objektorientierten
Sprachen new verwendet. In meinen Beispielen sieht das so aus: Java
oder C#: new Auto() Ruby: Auto.new Die Schreibweise hängt von der
Programmiersprache ab. Instanzvariablen und der Zustand eines
Objekts Damit mein Monitor seine Helligkeit speichern kann, braucht
er eine Variable für diesen Wert. Eine Instanzvariable gehört zu
einem konkreten Objekt. Jedes Monitorobjekt besitzt damit seinen
eigenen Helligkeitswert, auch wenn die Klasse für alle dieselbe
Variable mit demselben Datentyp definiert. Im gezeigten
Klassenaufbau deklarierst du Instanzvariablen direkt im
Klassenblock. Auf sie können die Methoden des Objekts zugreifen. Ob
die Variable am Anfang oder am Ende der Klasse steht, spielt dabei
keine Rolle. Eine innerhalb einer Methode deklarierte lokale
Variable gilt im Bereich dieser Methode. Aus den aktuellen Werten
seiner Instanzvariablen ergibt sich der Zustand eines Objekts. Wenn
sich diese Werte ändern, können spätere Methodenaufrufe andere
Ergebnisse liefern. Bei komplexen Objekten mit voneinander
abhängigen Attributen wird es dadurch schwierig, Fehler
nachzuvollziehen. Die funktionale Programmierung versucht, solche
veränderlichen Zustände und die damit verbundenen Seiteneffekte zu
vermeiden. Kapselung In meiner Klasse kann ich die Daten zusammen
mit den Methoden definieren, die mit diesen Daten arbeiten. Dieses
Zusammenfassen zu einer Einheit beschreibt hier den Begriff
Kapselung. Dadurch lässt sich eine Klasse mitsamt ihren Daten und
Funktionen an anderer Stelle wiederverwenden. Standardwerte und
null Bei einer Instanzvariable wie int a wird in den besprochenen
Beispielen automatisch ein Standardwert gesetzt. Welcher Wert das
ist, hängt vom Datentyp und von der Programmiersprache ab: |
Datentyp | Genannter Standardwert | | --- | --- | | Zahlentyp | 0 |
| Boolescher Typ | false | | Referenztyp | null | Lokale Variablen
brauchen vor dem Lesen einen gesetzten Wert. Bei den beschriebenen
Instanzvariablen übernimmt die Sprache das Setzen des
Standardwerts, sofern du selbst keinen Wert angibst. Mit null
drückst du bei einer Referenz aus, dass sie auf kein Objekt
verweist. Wenn ich dann beispielsweise über diese Referenz die
Länge eines Autos abfragen möchte, entsteht ein
Null-Pointer-Fehler. In größeren Programmen können die Stellen, an
denen eine Variable deklariert, gesetzt und später gelesen wird,
weit auseinanderliegen. Das erschwert die Suche nach der Ursache.
Ich empfehle dir deshalb, den Umgang mit null möglichst zu
vermeiden. Für Java werden dazu folgende Beispiele behandelt:
String ist ein Referenztyp. Ein leerer String ist ein gültiger
String; eine Referenz mit dem Wert null verweist auf kein
Stringobjekt. Auch Integer mit großem I ist ein Referenztyp....
Kommentare (0)
Melde dich an, um einen Kommentar zu schreiben.