JAVA & Objektorientiertes Programmieren

Eine Einführung in das objektorientierte Programmieren mit JAVA Diese Kartei baut auf dem Stoff des Moduls OOP an der HSLU geleitet von Roland Gisler auf.

Eine Einführung in das objektorientierte Programmieren mit JAVA Diese Kartei baut auf dem Stoff des Moduls OOP an der HSLU geleitet von Roland Gisler auf.


Set of flashcards Details

Flashcards 500
Students 19
Language Deutsch
Category Computer Science
Level University
Created / Updated 04.12.2016 / 16.08.2024
Weblink
https://card2brain.ch/box/java_objektorientiertes_programmieren
Embed
<iframe src="https://card2brain.ch/box/java_objektorientiertes_programmieren/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Was ist speziell bei finalisierten Klassen?

Finalisierte Klassen können nicht mehr spezialisiert (vererbt) werden.
Alle enthaltenen Methoden sind damit implizit auch final

Was ist der Zweck einer finalisierten Klasse?

Man verhindert damit explizit die Spezialisierung von Klassen, wenn Sie dafür nicht vorgesehen oder ungeeignet sind.

Tipp: Klassen entweder für Vererbung auslegen, oder andernfalls explizit verhindern (finalisieren) - Aber ist ein (essentieller) Desingentscheid

Was ist (gemäss Faustregel) besser:

Zu viel als zu wenig oder zu wenig als zu viel finalisieren?

Analog zur Datenkapselung (so privat wie möglich, so öffentlich wie nötig) finalisiere besser zu viel als zu wenig! Etwas wieder veränderbar zu machen ist kein Problem, etwas nachträglich zu finalisieren hingegen fast unmöglich!

Klasse explizit für Spezialisierung entwerfen, oder aber final machen!

Was ist eine Enumeration?

Mit einer Enumeration wird sowohl ein eigener Typ, als auch eine Menge von logisch zusammenhängenden, konstanten Werten dieses Typs deklariert.

(siehe Bild)

Was ist der Hauptvorteil von Enumerationen?

Neben ihrer leichten Verständlichkeit, Aussagekräftigkeit ist ihr Hauptvorteil jedoch, dass sie typsicher sind.

Wie deklariert man in einem UML Enumerationen?

mit dem Stereotyp <<enum>>

Wo werden Enumerationen eingesetzt?

Sie können wie jede andere Klasse als Typen verwendet und eingesetzt werden. Beispiel:

Season current = Season.AUTUMN;

Sie können auch in switch-Statements als Typ verwendet werden.

Enumerationen sind normale Klassen mit welchen vier Ausnahmen?

- sie werden mit dem Schlüsselwort enum deklariert (statt class)
- sind implizit finalisiert (keine Spezialisierung)
- besitzen einzelne Enum-Werte implizit als final und static (Klassen-)Attribute
- werden automatisch instanziiert (privater Konstruktor)

Enumerationen können, weil sie (fast) normale Klassen sind, auch zusätzliche Attribute und Methoden besitzen. Zeige ein Beispiel

(siehe Bild)

Wie liefert man für Enumerationen eine String-Repräsentation (z.B. für Persistierung in eine Datei o.ä.)?

mit der toString()-Methode

Wie liefert man für eine String-Repräsentation den passenden Enumerationswert?

mit der Methode valueOf(...)

Enumerationen sollten tendenziell 1.)_______ eingesetzt werden. Nutzen und Eleganz von Enumerationen wird oft 2.)__________

Wie ist das Interface Collection aufgebaut?

Abfragemethoden, Mutatormethoden & Massenverarbeitung

Dieses "Muster" ist für praktisch alle Datenstrukturen typisch (kann eine Orientierungshilfe sein)

(siehe Bild)

Wie ist das Interface Set aufgebaut

Sehr ähnlich zur Collection (ist ja eine Spezialisierung).
Es sind keine Duplikate (im Sinne von equals) erlaubt!

(siehe Bild)

Was sind die Haupteigenschaften einer Set<E>?

Definiert eine Menge von Objekten des Typs E

- Jedes Objekt kann nur ein einziges Mal enthalten sein (equals() und hashCode() für Gleichheit. Spezialfall: null ist (im Set aber auch nur einmal) erlaubt!
- Objekte, die in einem Set eingefügt sind, sollten nicht mehr verändert werden!

Objekte, die in einem Set eingefügt sind, sollten nicht mehr verändert werden! Weshalb?

Durch die Veränderung könnten identische Objekte entstehen, was die Semantik verletzen würde

Empfehlung: Objekte für/vor Veränderung entnehmen und danach neu einfügen!

Nenne ein paar Implementationen (Beispiele) für Set<E>

HashSet, LinkedHashSet, TreeSet, EnumSet etc

Wie sieht die Implementation einer HashSet<E>?

Der Versuch ein Duplikat einzufügen misslingt und liefert als Resultat false zurück: Weiterhin sind nur drei Werte enthalten

Hinweis: Der Typ Collection ist hier vollständig ausreichend!

(siehe Bild)

Wie sieht die Implementation des Interface List<E> aus?

Ergänzend zur Collection kann bei der List über einen Index direkt auf die einzelnen Elemente zugegriffen werden

(siehe Bild)

Was sind Eigenschaften von List<E>?

- Geordnete Datenstruktur von Elementen vom Typ (Geordnet: Elemente halten ihre Position, sind aber nicht sortiert)
- Eine Liste kann mehrmals das gleiche Objekt enthalten
- Der Nutzer hat die Kontrolle, an welcher Stelle der Liste die Elemente eingefügt werden -> Index
- Zero-base Index: Das erste Element hat den Index 0