Use LEFT and RIGHT arrow keys to navigate between flashcards;
Use UP and DOWN arrow keys to flip the card;
H to show hint;
A reads text to speech;
45 Cards in this Set
- Front
- Back
Wie sieht das Programmiermodell Javas aus? |
* Programme werden als Quelltext in Dateien gespeichert, die - jede für sich - immer als Ganzes übersetzt werden. |
|
Welche Arten von Typen werden in Java unterschieden? |
* primitive Typen (mit Sprachdefinition festgelegt) |
|
Was sind Wrappertypen in Java? |
* für jeden primitiven Typ gibt es einen gleichnamigen Referenztypen (Ausnahme: int (Integer) und char (Character)) |
|
Wie wird in Java zwischen Gleichheit und Identität von Objekten unterschieden? |
- Gleichheit: equals - identität: == |
|
Gibt es in Java Wert- oder Referenzsemantik? |
- In JAVA gibt es Variablen mit Referenz‐ und mit Wertsemantik. - Welche Semantik eine Variable hat, richtet sich nach ihrem Typ. - Typen, die zu Variablen mit Wertsemantik führen, sind die primitiven - Variablen, die mit einem anderen Typ deklariert werden, haben Referenzsemantik |
|
Gibt es in Java call-by-reference? |
- Es gibt in JAVA genau wie in SMALLTALK keine Möglichkeit, Pointervariablen ex‐ - es gibt also insbesondere beim Methodenaufruf (und den damit verbundenen impliziten Zuweisungen) auch in JAVA kein Call by reference, sondern nur ein Call by value. - Daran ändert auch nichts, dass Variablen, die mit Referenztypen deklariert sind, Referenzsemantik haben - bei den impliziten |
|
Was bedeutet es, dass eine Sprache mit einem strengen Typsystem ist? |
- in JAVA alle Typfehler werden entweder schon während der Übersetzung vom Compiler oder aber während der Ausführung vom Laufzeitsystem, dann aber schon zum frühest möglichen Zeitpunkt, nämlich bei einer Wertzuweisung (bei der ja die Verletzung einer Typinvariante entsteht), abgefangen |
|
Was sind innere Klassen in Java? |
- Neben Feldern und Methoden kann eine Klassendefinition in JAVA geschachtelte, sog. innere Klassendefinitionen besitzen. man kaum außerhalb einer Liste verwenden wollen |
|
Was sind Klassenvariablen und -methoden in Java? |
- Member können auch mit dem Zusatz static deklariert werden. |
|
Werden statische Methoden dynamisch gebunden? |
- Da in JAVA im Gegensatz zu SMALLTALK Klassen selbst keine Objekte, sondern während der Programmausführung dauerhaft existierende, unveränderliche Gebilde sind, die nicht in Variablen gespeichert werden können, werden als static deklarierte Member auch nicht dynamisch gebunden |
|
Wie verhindert man, dass in Java von Klassen abgeleitet werden kann? |
- Schlüsselwort final |
|
Was bedeutet das Schlüsselwort final bei Methoden? |
Die Methode kann in einer Unterklasse nicht überschrieben werden |
|
Was ist Überschreiben in Java? |
In JAVA ist die Möglichkeit der Redefinition auf die Möglichkeit des Überschreibens eingeschränkt - eine Methode kann mit der gleichen Signatur (bestehend aus Methodenname und formalen Parametertypen) noch einmal mit geänderter Implementierung definiert werden - Auch darf die Methode den Rückgabetyp kovariant, also nach unten, abändern - Dass die überschreibende Methode über die Einhaltung der Typinvarianten, die mit ihren (geerbten) Parametern verbunden sind, hinaus nur etwas tut, das mit der überschriebenen Methode kompatibel ist, dass sie also nicht mit dem erwarteten Verhalten bricht, kann durch die Sprachdefinition JAVAs nicht erzwungen werden |
|
Was ist Überladen in Java? |
Zwei Methoden haben den gleichen Namen aber verschiedene Parametertypen |
|
Was ist der wichtigste Unterschied zwischen Überladen und Überschreiben? |
Beim Überladen wird eine neue Methode eingeführt, beim Überschreiben wird eine bereits bestehende redefiniert |
|
Welche Bedingungen muss eine Methodendeklaration erfüllen, damit ein dynamisch gebundener Methodenaufruf an sie gebunden wird? |
1. Sie hat den gleichen Namen und die gleiche Anzahl Parameter wie die aufgerufene Methode. 2. Sie ist in der Klasse, die zu dem deklarierten Typ des Ausdrucks gehört, der das Empfängerobjekt liefert, deklariert oder wird von einer ihrer Superklassen geerbt. 3. Die deklarierten Parametertypen des Aufrufs sind jeweils Subtypen der deklarierten Parametertypen der Methodendeklaration |
|
Wie funktioniert der Bindealgorithmus bei Java? |
- Die oberste Wurzel einer Menge von Methoden wird ermittelt, die möglicherweise in Subklassen überschrieben wird und an eine von denen der Methodenaufruf dann dynamisch gebunden wird - Zur Laufzeit wird dann nur noch der tatsächliche Typ des Empfängerobjekts bestimmt. - Dieser muss ein Subtyp des deklarierten Typs des Ausdrucks sein, der das Empfängerobjekt liefert. - Mit diesem aktuellen (auch dynamisch ge‐ |
|
Was ist der Method Ambigious Error? |
- Wird geworden, wenn bei der Suche nach einer Methode zur Übersetzungszeit eine oder mehrere andere Methodendefinitionen gleich weit von der aufgerufenen entfernt sind - die aufgerufene Methode ist durch den Aufruf nicht eindeutig bestimmt |
|
Was ist ein Modul? |
- eine Einheit von Programmelementen, die (bzw. deren Funktion) von außen nur über die Schnittstelle des Moduls zugänglich sind. - Damit behält ein Modul einen Teil seiner Implementation für sich — es hütet quasi ein Implementationsgeheimnis. - Der Teil, den es (über seine Schnittstelle) nach außen trägt, gilt als öffentlich. |
|
Was ist ein wesentlicher Grund für die Unterscheidung des öffentlichen und privaten Teils von Modulen? |
- Programmierer eines Moduls wollen die Hoheit darüber behalten, wie sie das Modul programmieren - Indem sie sich auf eine Schnittstelle festlegen und alles andere hinter der Schnittstelle verbergen, ist es ihnen möglich, jederzeit die verborgenen Teile zu ändern, |
|
Welche zwei Arten von Modulen gibt es in Java? |
- die Klassen, die hinter ihrer öffentlichen - Pakete, die in ihrer Struktur hierarchischen Ordnern eines Betriebssystems entsprechen, die im wesentlichen Namensräume darstellen und deren Bedeutung als Module lediglich daher rührt, dass es einen Zugriffsmodifikator gibt, der auf sie Bezug nimmt, nämlich der fehlende |
|
Welche Vorteile hat die Verquickung von Typ- und Zugriffsbeschränkungen? |
- sprachliche Knappheit (Typ‐ und Schnittstellendeklaration in einem)
|
|
Welche Nachteile hat die Verquickung von Typ- und Zugriffsbeschränkungen? |
- nur sehr grobe Einstellung von Zugriffbeschränkungen möglich - es ist insbesondere nicht möglich, dass zwei (inhaltlich eng zusammengehörende) Klassen gegenseitig einen freieren Zugriff gestatten als - zwei unterschiedliche Konzepte der Programmierung werden zusammengeworfen und dadurch von Programmierern und u. U. nicht mehr als unterschiedlich wahrgenommen werden. |
|
Was bedeutet Abhängigkeit von Modulen? |
Wenn in einem Modul eine Änderung vorgenommen wird, müssen Änderungen in anderen Modulen durchgeführt werden |
|
Welche Formen der Abhängigkeit gibt es in Java? |
1. Dass eine Klasse von (der Schnittstelle) einer anderen abhängt, erkennt man an der Tatsache, dass auf Objekte der anderen Klasse zugegriffen wird 2. Dass eine Klasse manche Teile ihrer Member anderen zur Benutzung anbietet und diese damit von ihr abhängig werden können, erkennt man an der Verwendung von anderen Zugriffsmodifikatoren als private sowie an der Implementierung von Interfaces. 3. Abhängigkeit zwischen einer Klasse und ihren Superklassen |
|
Was ist die öffentliche Schnittstelle einer Klasse in Java? |
Die Menge aller als public deklarierten Eigenschaften |
|
Welche Zugriffsmodifizierer können in Interfaces verwendet werden? |
nur public |
|
Was sind Typ-Wildcards? |
- ? - können bei der Instanziierung eines generischen Typs den Platz des aktuellen Typparameters einnehmen - können dort zunächst für einen beliebigen Typ stehen |
|
Was sind nach oben beschränkte Typ-Wildcards? |
Beschränkung mit Hilfe von <? extends Typ> |
|
Was sind nach unten beschränkte Typ-Wildcards? |
Beschränkung mit Hilfe von <? super Typ> |
|
Wie wird in Java beschränkter parametrischer Polymorphismus umgesetzt? |
Einschränkung einer Typvariable E mittels extends und super Beispiel: interface SortedList<E extends Comparable> |
|
Welche Arten von Casts unterscheidet man in Java? |
- Up casts: der Zieltyp ist ein Supertyp des Ausgangstyps |
|
Warum können Down- und Cross-Casts zu Laufzeitfehlern führen? |
sind nur zulässig, wenn das Objekt tatsächlich nicht ein direktes Element des Ausgangstyps ist, sondern eines Subtypen, der mit dem Zieltyp |
|
Welche Einsatzmöglichkeiten gibt es für Interfaces? |
- ermöglichen verschiedene Sichten auf ein Objekt - Zugriffsbeschränkung durch Implementierung verschiedener Zugriffsmöglichkeiten (z.B lesend und schreibend) in unterschiedlichen Interfaces - Austauschbarkeit - Tagging oder Marker Interfaces |
|
Was sind Tagging oder Marker Interfaces? |
- haben keine eigenen Methodendeklarationen - dienen der Filterung von Variablenwerten - Da in JAVA die vom Compiler statisch geprüfte Zuweisungskompatibilität Namenskonformität verlangt, kann die Typisierung einer Variable mit dem Interface Markiert erzwingen, dass dieser Variable nur Instanzen solcher Klassen zugewiesen werden, die das Interface Markiert zu implementieren deklarieren. - Da das Interface aber keine Auflagen macht, ist die Implementierung des Interfaces für die Klasse zunächst ohne Konsequenzen. - Die durch das Interface erfolgte Markierung der Klassen |
|
Was ist ein Beispiel für ein Marker Interface in Java? |
Serializable |
|
Was ist die Voraussetzung für die Verwendung der for-each-Schleife? |
- Collectionklasse muss das Interface Iterable implementieren - dieses bietet die Methode Iterator iterator() an - Der zurückgelieferte Iterator wird zur Produktion der Elemente verwendet |
|
Was sind checked Exceptions? |
- verlangen ein Abfangen innerhalb einer Methode oder eine Deklaration im Methodenkopf - können sehr mühsam sein, wenn Exceptions sehr häufig auftreten können |
|
Was sind unchecked Exceptions? |
- es ist nicht nötig, dass innerhalb einer Methode abgefangen wird oder eine Deklaration im Methodenkopf erscheint - Alle von RuntimeException abgeleiteten Exceptions |
|
Was sind Errors? |
- Werden nicht abgefangen, sondern führen zu sofortigem Programmabbruch - sind unchecked - sollten nur während Testphase eingesetzt werden |
|
Was sind Threads? |
- parallele Ausführungsstränge - sind im Gegensatz zu den Prozessen eines Betriebssystems leichtgewichtig, was soviel heißt wie dass sich Threads die getrennte Allokierung von - Es können also mehrere Threads innerhalb eines Prozesses laufen. - Der Preis dafür ist, dass die Mechanismen zur Synchronisation bei Threads selbst realisiert werden müssen; - bei Prozessen sind sie über die Inter‐Prozess‐Kommunikation des Betriebssystems geregelt |
|
Wie wird ein neuer Thread gestartet? |
In JAVA wird ein neuer Thread gestartet, indem man eine neue Instanz der Klasse aufruft. |
|
Wie kann man Threads mit Funktion versehen? |
1. Man definiert eine neue Subklasse von Thread und überschreibt darin die |
|
Was sind Monitore? |
- Semaphore in Java - jeder Monitor ist mit einem Objekt verbunden - wenn ein Thread einen Monitor eines Objektes sperrt („lockt“), dann kann kein anderer Thread den Monitor sperren, bevor die Sperre |
|
Wie kann die Synchronisation erzwungen werden? |
1. mittels der Synchronized‐Anweisung. Die Anweisungen eines Blocks können nur ausgeführt werden, wenn sie nicht gerade von einem anderen Thread ausgeführt werden. Das 2. Die zweite Möglichkeit ist, eine ganze Methode mit synchronized zu deklarieren. Wenn es sich dabei um eine Instanzmethode handelt, wird die Sperre auf |