• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/126

Click to flip

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;

126 Cards in this Set

  • Front
  • Back
Welche verschiedenen Arten der Modularisierung gibt es beim Entwurf von Softwareanwendungen?
Problemorientierte, datenorientierte und funktionsorientierte Modularisierung.
Welche verschiedenen Arten der Strukturierung werden beim Entwurf von Softwareanwendungenunterschieden?
Datenstrukturierung, algorithmische Strukturierung.
Was ist die Unified Modeling Language (UML)?
UML ist eine Sprache und Notation zur Spezikation, Konstruktion, Visualisierungund Dokumentation von Modellen von Softwaresystemen.
Was ist das Ziel der Analysephase bei der Entwicklung einer Softwareanwendung?
Das Ziel der Analyse ist es, die Wünsche und Anforderungen eines Auftraggebers an ein neues Softwaresystem zu ermitteln und zu beschreiben. Daraus wird ein Modell des Fachkonzepts erstellt, das konsistent, vollständig, eindeutig und realisierbar sein sollte, wobei alle Aspekte der Implementierung bewusst ausgeklammert werden.
Was ist das Ziel des objektorientierten Entwurfs einer Softwareanwendung?
Das Ziel des Entwurfs ist es, die spezifizierte Anwendung auf einer Plattformunter den geforderten technischen Randbedingungen zu realisieren, allerdings noch auf einem höheren Abstraktionsniveau als in der Implementierung und nach Gesichtspunkten der Standardisierung. Um die Austauschbarkeit von Programmteilenzu gewährleisten, wird versucht Fachkonzept, Benutzungsoberfläche und Datenhaltung weitgehend zu entkoppeln.
Auf welche Weise unterscheiden sich bedingte Anweisungen in den ProgrammiersprachenC und Java?
Während in C Wahrheitswerte als Zahlen repräsentiert werden, existiert inJava der primitive Datentyp boolean.
Bis zu wie viele oentliche Klassen oder Schnittstellendenitionen sollten nach Konventionin einer *.java - Datei liegen?
Genau eine.
Welche der folgenden Klassennamen sind nach Konvention schlecht? Wieso?Aufgabe2a, hund, ErstelleSystem, Meine_Erste_Klasse
Schlecht sind:
- hund - Klassennamen sollen im UpperCamelCase geschrieben werden
- ErstelleSystem - Klassennamen sollen aus Nomen bestehen
- Meine_Erste_Klasse - Klassennamen sollen keine Unterstriche enthalten
Wie sollte nach Konvention eine *.java - Datei aufgebaut sein?
Eine *.java - Datei sollte die folgenden Inhalte in der angegebenen Reihenfolge besitzen:
a) Kommentar zum Copyright / Autor
b) Eine Paket-Deklaration
c) Alle import - Anweisungen
d) Eine oder mehr Klassen / Schnittstellen
Wozu wird die Operation System.exit(status) verwendet?
Zur Ruckgabe eines Statuscodes bei Beendigung des Java-Programms an einaufrufendes Programm, z.B. ein Skriptprogramm.
Was ist ein Literal?
In Programmiersprachen ist ein Literal ein konstanter Ausdruck.
Was passiert in Java bei einer Division durch 0?
Ganze Zahlen: ArithmeticException.
Fließkommazahlen: +/-1 bzw. NaN bei 0.0 = 0.0.
Was ist der Unterschied zwischen Postx- und Praxinkrement?
Präfixinkrement: Wert der Variable wird vor der Auswertung des Ausdrucksum eins erhoht.

Postfixinkrement: Wert der Variable wir nach der Auswertung des Ausdrucksum eins erhoht.
Was ist die Signatur einer Methode?
Die Signatur einer Methode in Java besteht aus dem Methodennamen undder Parameterliste mit Namen, Typen und Reihenfolge der Parameter.
Erklaren Sie den Aufbau einer Klasse in der Java-API anhand der Klasse Double.
Der Aufbau der Klasse Double unterteilt sich wie folgt:
- Vererbungshierarchie (Object > Number > Double)
Schnittstellenliste (Serializable, Comparable) Kurze Beschreibung (Double ist eine Hullklasse für double, ...)
Attributsliste (BYTES, MAX_EXPONENT, ...) Konstruktorliste (Double(double value), Double(String s))
Methodenliste (byteValue(), doubleValue(), ...) Detaillierte Angaben zu Attributen, Konstruktoren und Methoden
Wie wird der Quellcode einer Klasse in Java üblicherweise nach Konvention aufgebaut?
Layout:a) Deklarationen statischer Attribute
b) Deklarationen nicht-statischer Attribute
c) Statische Initialisierungen
d) Deklarationen innerer, statischer Klassen
e) Deklarationen statischer Methoden
f) Nicht-statische Initialisierungen
g) Deklarationen der Konstruktoren
h) Deklaration innerer, nicht-statischer Klasseni) Deklaration nicht-statischer Methoden
Wie lassen sich Zeichenketten unabhängig von deren Reprasentation auf gleichen Inhaltüberprufen?
Zum Beispiel indem die Zeichenketten zuerst als String-Objekte mittels toString()extrahiert und anschließend mit equals() verglichen werden.
Nennen Sie drei unterschiedliche Möglichkeiten ein Objekt des Typs String zu erzeugen.
Drei Möglichkeiten zur Erzeugung eines String-Objekts: new String(); new String("eine Zeichenkette"); new String(new char[]{'a', 'b'});
Welche primitiven Datentypen sind in der UML gegeben?
Integer, Boolean, UnlimitedNatural, String, Real
Wie viele Konstruktoren kann eine Klasse besitzen und wie unterscheiden sich diese?
Eine Klasse kann beliebig viele Konstruktoren besitzen. Sie unterscheiden sichdurch ihre Signatur.
Was bedeutet Autoboxing?
Autoboxing beschreibt die automatische Umwandlung von primitiven Datentypenund zugehörigen Hüllklassen ineinander.
Durch welchen Datentyp wird eine Zeichenkette in der Klasse String intern repräsentiert?
Durch ein Feld des primitiven Typs char.
Wie kann in Java ein neues Objekt erzeugt werden?
Durch Anwendung des new-Operators in Zusammenhang mit einem Konstruktor.
Gibt es eine Typ-Anpassung zwischen String und double in Java?
Nein. Für solche Typ- Änderungen mussen API-Methoden verwendet werden.
Erklären Sie den Unterschied zwischen private und public anhand eines Beispiels.
Mit private ausgezeichnete Elemente sind nur innerhalb ihrer jeweiligen Klassesichtbar. Auf Attribute und Methoden, die mit public ausgezeichnet sind, kannauch von auerhalb zugegrien werden. Beispielsweise sind in der Klasse Hundin Aufgabe 7 alle Attribute private und die meisten Methoden public. Wirdalso in einer anderen Klasse ein Objekt des Typs Hund erzeugt, kann nicht aufdie Attribute, aber auf die Methoden zugegrien werden.
Welche Multiplizitat hat ein Attribut in UML, wenn keine angegeben ist?
[1].
Nennen Sie fünf verschiedene Arten von Tokens.
Bezeichner, Literale, Operatoren, Schlüsselworter und Separatoren.
Was bedeutet das Schlüsselwort final bei der Deklaration von Attributen?
Der Wert solcher Attribute ist nach einmaligem Setzen nicht mehr änderbar.
Was ist ein überdecktes Attribut? Geben Sie ein minimales Beispiel an.
Ein Attribut, das lokal durch ein anderes Attribut gleichen Namens überdecktwird. Beispiel:
public class Example {
private int x;
void myFunc(int x) {
System.out.println(this.x != x);
}
}
Was ist in UML-Klassendiagrammen ein Paket?
Pakete sind Sammlungen zusammengehöriger Modellelemente, mit denen dasGesamtmodell in überschaubare, kleinere Einheiten gegliedert wird. Ein Paketdefiniert einen Namensraum fur die enthaltenen Modellelemente.
Was ist die Lebensdauer im Speicher von statischen Variablen?
Solange die Klasse im Speicher existiert.
Erklären Sie den Unterschied zwischen Klassen und strukturierten Datentypen in Hinblickauf Assoziationen.
Assoziationen darf es nur zwischen Klassen geben; nicht zwischen oder in Verbindungmit einem strukturierten Datentyp.
Nennen Sie eine Klasse oder einen primitiven Datentyp in Java mit dem die Multiplizität[2..*] programmiert werden kann. Begründen Sie Ihre Entscheidung.

Zur Implementierung der Multiplizität [2..*] ist es nötig eine eigene Klassezu erstellen. Für die Multiplizitat [0..*] alleine eignet sich zum Beispiel dieKlasse ArrayList. Um die Mindestgröße 2 zu sichern, muss allerdings weitereFunktionalität in einer eigenen Hullklasse bereitgestellt werden.

Was ist der wesentliche Unterschied zwischen einer Aggregation und einer Komposition inUML?

Beide beschreiben eine Ganzes-Teile-Beziehung. Wird das Ganze gelöscht, werdenbei der Komposition auch alle Teile davon entfernt. Bei der Aggregationhingegen existieren die Teile unabhangig vom Ganzen nach dem Loschen weiter.

Was ist ein abgeleitetes Attribut in UML?

Ein Attribut, dessen Wert sich nach einer festen Vorschrift aus anderen Attributwertenberechnet.

Welche Operationen besitzt die Klasse Object? Welche anderen Klassen besitzen dieseOperationen auch?

Operationen: equals(Object obj), toString(), getClass(), hashCode(), notify(),notifyAll(), getClass(), wait(), wait(long timeout), wait(long timeout, int nanos).Da Object die Wurzelklasse aller Klassen ist, besitzen auch alle anderen Klassendiese Operationen.

Wie kann auf eine öffentliche, statische Methode außerhalb der Klasse zugegriffen werden,in der sie enthalten ist? Geben Sie ein Beispiel an.

Ein Zugriff erfolgt über den Klassennamen. Beispiel: String.valueOf()

Wie lassen sich in Java symbolische Konstanten umsetzen?

Als öffentliche, statische, finale Klassenvariablen.

Was ist der Unterschied zwischen einer flachen und einer tiefen Kopie eines Java-Objektes?

Bei der flachen Kopie wird bei Referenz-Attributen nur die Referenz (Adresse)kopiert, nicht aber der Inhalt. D.h. das Original und die Kopie haben Referenz-Attribute, die auf dieselben Speicherstellen verweisen. Man kann das auch sosagen: Bei der flachen Kopie wird nur der Speicherinhalt des Originals kopiert,aber keine von Attributen referenzierten Speicherinhalte. Bei der tiefen Kopiewerden auch alle Inhalte von Referenzen (rekursiv) kopiert.

Wie kann man Klassen aus anderen Paketen als java.lang ohne import-Anweisung nutzen?

Indem der Klassenname in Deklarationen im Code in der vollen Qualizierungangegeben wird, z.B. java.util.Vector v; .

Wann sollten nach Konvention in Java-Quellcode Leerzeilen verwendet werden?

Leerzeilen werden verwendet um Code zu gruppieren, der logisch zusammengehört.




Auch sollte eine Leerzeile in folgenden Fallen verwendet werden:a) Nach dem Copyright-Kommentar, der Paket-Deklaration und nach denimports.


b) Zwischen Klassen-Deklarationen.


c) Zwischen Methoden-Deklarationen.


d) Zwischen dem letzten Attribut und der ersten Methode einer Klasse.


e) Vor Kommentaren.

Welche öffentlichen Klassenkonstanten besitzt die Klasse Math?

PI und E.

Wie werden Verwaltungsoperationen von Referenzattributen bei einer Komposition nachKonvention benannt?

addRollenname(), deleteRollenname() und getRollenname().

Wie lassen sich eigene Klassen in Pakete zusammenfassen?
Zu jedem (Unter-)Paket muss es ein entsprechendes gleichnamiges (Unter-)Verzeichnis geben. Die java-Datei muss sich im Paketverzeichnis benden undzu Beginn des Codes muss eine entsprechende package-Anweisung stehen, z.B.package gui fur Klassen im Unterverzeichnis gui des Programmverzeichnisses.

Wozu dient das Tag @param in Javadoc-Kommentaren?

Zur Parameterbeschreibung einer Methode.

Nennen und erklären Sie mindestens zwei weitere Javadoc-Tags.

Zum Beispiel: @see: Erzeugt einen Link auf ein anderes Element der Dokumentation. @return: Beschreibt den Ruckgabewert einer Methode.

Wozu dient der Aufruf super() in Konstruktoren von Java-Klassen? Welche Parameterkonnen diesem Aufruf übergeben werden?

Auf diese Weise kann ein Konstruktor der Oberklasse aufgerufen werden genaudann, wenn die übergebenen Parameter zu einem der Konstruktoren derOberklasse passen und dieser nicht als private deklariert wurde. Die Parameterdienen also zur Identizierung des gewunschten Konstruktors.

Wozu dient die Annotation @Override?

Mit dieser kann man Methoden in Unterklassen markieren, die Oberklassen-Methoden überschreiben sollen. Der Compiler überpruft dann, ob das tatsachlichder Fall ist. Das verhindert Schreibfehler sowie die Übergabe falscher Parameterund dient der Leserlichkeit des Codes.

Wie kann man verhindern, dass eine oentliche Objekt-Methode einer Oberklasse in einerihrer Unterklassen uberschrieben wird? Geben Sie ein Beispiel an, in dem es sinnvoll ist,ein solches Uberschreiben zu verhindern.

Man deklariert die Methode als final. Das macht Sinn z.B. bei set()-Methoden,die Datenstruktur-Invarianten sicherstellen (das sollen Unterklassen nicht aushebelnkönnen).

Was ist der Unterschied zwischen equals() und == ? Erklären Sie den Unterschied jeweilsfur primitive Datentypen und Referenzdatentypen.

Primitive Datentypen: Für diese existiert kein equals().


== prüft zwei Variablenprimitiven Datentyps auf Gleichheit.


Referenzdatentypen: equals() überprüft zwei Objekte auf Gleichheit.== prüft zwei Referenzen auf Gleichheit (d.h. zwei Objekte auf Identität).

Was muss fur X jeweils gelten, damit entweder X.length oder X.length() ein gültigerAusdruck ist? Welche Rolle spielen die Klammern?

X.length: Gibt die Anzahl der Elemente eines Feldes zurück, X muss alsoein Feld sein.




X.length(): length() heißt eine Methode der Schnittstelle CharSequence.


Xkann also zum Beispiel den Typ String haben, da String diese Schnittstelleimplementiert.Die Klammern zeigen an, dass es sich um eine Methode einer Klasse handelt. Eskann naturlich auch andere Klassen als String geben, die eine Methode length()besitzen bzw. andere Klassen als den Feld-Typ, die ein Attribut length haben.

Nehmen wir an, eine Unterklasse überschreibt die Methode test() der Oberklasse. Wiekann man in der Unterklasse trotzdem die Implementierung der Oberklasse aufrufen?
Mit super.test().

Welchen Nachteil haben Felder gegenüber dynamischen Containern wie Vector?

Ist die Größe eines Feldes einmal festgelegt, kann diese nicht mehr verändertwerden.

Bei welcher der folgenden Implementierungen dynamischer Listen ist der wahlfreie Zugriffauf Elemente schneller: ArrayList oder LinkedList? Wie unterscheiden sich deren Implementierungen?

Schnellerer Zugriff bei ArrayList. Implementierung bei ArrayList durch einFeld, dessen Große bei Bedarf angepasst wird, bei LinkedList durch eine doppeltverkettete Liste.

Was ist der"K & R"-Klammerungsstil?

Der"K & R\-Klammerungsstil ist durch folgende Regeln speziziert:


a) Die öffnende Klammer steht am Ende der ersten Zeile des zugehörigenBlocks.


b) Die schließende Klammer steht alleine in einer Zeile am Ende des Blocksund wird auf dieselbe Spaltenhöhe eingerückt wie der Anfang des Blocks.c) Die Ausdrücke innerhalb der Klammern werden um ein Level eingerückt.

Wie kann man verhindern, dass von einer Klasse Unterklassen gebildet werden?

Man deklariert die Klasse als final.

Was versteht man unter einem kovarianten Ruckgabetyp?

Das ist ein Rückgabetyp einer Methode einer Unterklasse, die eine Methodeder Oberklasse überschreibt, welcher ein Untertyp des Rückgabetyps derOberklasse ist.

Welche Arten von Methoden können nicht in Unterklassen uberschrieben werden?

Private, finale und statische Methoden.

Ist es in Java möglich, dass Felder einen abstrakten Datentyp haben? Geben Sie im positivenFall ein Beispiel an.

Ja. Beispiel (in Anlehnung an Übungsblatt 4):public class AbstractDatatypeTest {


private Fahrzeug[] fahrzeuge = new Fahrzeug[10];


public AbstractDatatypeTest(){fahrzeuge[0] = new Auto(2);}}

Nennen Sie alle Schnittstellen, die die Klasse StringBuilder implementiert.

(In API gucken)

Serializable, Appendable und CharSequence.

Aus welchen Klassen stammen die für alle grafischen Objekte verwendbaren MethodensetLayout() und setVisible()?

setLayout(): Container


setVisible(): Component

Welche Oberklassen hat die Klasse Button?

Object und Component.

Was versteht man unter mnemonischen Kürzeln?
Mnemonische Kürzel in graphischen Benutzerschnittstellen sind eindeutige Tastenkombinationenfür den Zugriff auf Menüeintrage innerhalb eines Menüs,angegeben als unterstrichene Buchstaben im Menueintrag.

Welches Ziel hat die Software-Ergonomie?

Menschengerechte Gestaltung von Software-Systemen: Anpassung von Softwarean die Eigenschaften und Bedürfnisse von Benutzern.

Zum Demo-Programm vom 19.05: Wozu dient die Methode checkVorgesetzterZyklus()in der Klasse Angestellter und wann wird sie verwendet?

Diese Methode testet fur ein übergebenes Objekt des Typs Angestellter, ob einZyklus vorliegt. Das heit, sie überpruft rekursiv aufsteigend für ein übergebenesObjekt des Typs Angestellter all dessen Vorgesetzte und gibt genau dann falsezurück, wenn der Angestellte, dessen Vorgesetzter zu setzen ist (this), bereitsals Vorgesetzter vorkommt.Sie wird verwendet in den Methoden linkMitarbeiter() und linkVorgesetzter().

Zum Demo-Programm vom 19.05:Wozu dient das Attribut subject der Klasse AngestellterGUI?Wann wird es gesetzt?
subject ist ein Referenzattribut, das zur Anbindung der GUI an die Fachkonzept-Klasse Angestellter dient.Es wird in der Methode load() gesetzt, die aufgerufen wird, wenn ein Objektdes Typs Angestellter geladen werden soll. Auch wird es in der Methodedelete() gesetzt, die verwendet wird, wenn ein Objekt des Typs Angestelltergeloscht werden soll. Schließlich wird es auf null gesetzt, wenn die MethodeclearAnzeige() zum Entfernen der Anbindung aufgerufen wird.
Zum Demo-Programm vom 19.05: Welche Parameter werden an super() übergeben in derKlasse AngestellterGUI und wozu dienen diese?
An den super()-Aufruf werden folgende Parameter ubergeben:
f: Das Fenster, welches dem Dialog-Fenster AngestellterGUI als Vaterfensterzugeordnet wird.
"Angestellte anlegen, andern und loschen": Der Titel des Dialog-Fensters.
false: Ein Wahrheitswert, der anzeigt, dass dieses Dialog-Fenster nichtmodal ist.

Sind SQL-Anweisungen abhängig von Groß- und Kleinschreibung?

Nein.

Was bedeutet Entitäts-Integritat im relationalen Datenmodell?

Schlüsselattribute müssen immer einen Wert besitzen und ein Tupel eindeutigidentizieren.

Was bedeutet referenzielle Integrität im relationalen Datenmodell?

Korrespondiert ein Fremdschlüssel zu einem Schlüsselattribut, so muss jederWert des Fremdschlüssels als Wert des Schlüsselattributs vorkommen.

Erläutern Sie kurz die drei Möglichkeiten eine einfache Vererbungshierarchie von Datenklassender Tiefe 2 (also bestehend aus einer Oberklasse und mehreren Unterklassen) aufeine relationale Datenbank abzubilden.

a) Eine Tabelle fur alle Klassen der Vererbungshierarchie; aus jedem Attributeiner der Klassen wird eine Spalte der Tabelle.


b) Zu jeder Unterklasse eine eigene Tabelle; deren Spalten entsprechen denAttributen der jeweiligen Unterklasse zuzuglich der Attribute der Oberklasse.


c) Zu jeder Klasse eine Tabelle.

Was ist ein natürlicher Verbund von Tabellen in SQL?

Beim natürlichen Verbund werden Tabellen über übereinstimmende Spaltennamenverbunden. Doppelt vorkommende Spalten werden dabei nur einmal indie Zieltabelle übernommen.

Wofur wird das Schlüsselwort DISTINCT in SQL verwendet?

Der Einsatz des Schlüsselwortes DISTINCT fuhrt dazu, dass gleichwertige Tupelin der Zieltabelle nur einmal vorkommen.

Welche Schnittstellen bietet Java fur den Vergleich von Objekten (im Sinne einer zu implementierendenOrdnung, z.B. der alphabetischen Ordnung auf Zeichenketten)?

Comparable und Comparator.

Erklären Sie den Unterschied zwischen statischen und nicht-statischen Attributen einerKlasse in Java.

Statische Attribute einer Klasse in Java sind Eigenschaften der Klasse, dieunabhängig von ihren erzeugten Instanzen gelten.Nicht-statische Attribute auf der anderen Seite sind Eigenschaften der Objekteder Klasse, die fur jede erzeugte Instanz unterschiedliche Werte innerhalbeines gleichen Werteraums annehmen konnen.

Zum Demo-Programm vom 19.05: Die Beziehung Vorgesetzter<->Mitarbeiter ist bi-direktional.Welchen Einfluss hat dies auf den Code der Klasse Angestellter?

Die Bi-Direktionalität hat in diesem Fall folgende Ein flüsse:


Es ist ein Referenzattribut vorgesetzter notwendig, das den TypAngestellter hat. Es ist ein Referenzattribut mitarbeiter notwendig, das den TypArrayList hat.


Es müssen Methoden linkVorgesetzter(), unlinkVorgesetzter()und getLinkVorgesetzter() existieren zur Verwaltung des Vorgesetzten einesAngestellten. Es müssen Methoden linkMitarbeiter(), unlinkMitarbeiter()und getLinkMitarbeiter() existieren zur Verwaltung der Mitarbeiter einesAngestellten.

Zum Demo-Programm vom 19.05: Erklären Sie den Code der Methode toString() derKlasse Angestellter.

Diese Methode gibt die wichtigsten Attributwerte eines Angestellten formatiertals Zeichenkette zuruck. Zur formatierten Ausgabe des Datentyps java.util.Datewird dabei die Methode format() der Klasse java.text.DateFormat benützt.

Zum Demo-Programm vom 19.05: Welche Datenstruktur-Invarianten muss das Attributname eines Objekts des Typs Angestellter erfüllen?

Das Attribut name muss aus mehr als einem Zeichen bestehen und mit einemGroßbuchstaben beginnen.

Zum Demo-Programm vom 19.05: Die Datenklassen sind an die Fensterklassen über Referenzattributeangebunden. Umgekehrt ist das nicht der Fall. Welchen Grund hat dies?

So kann man Fensterklassen anbinden, ohne den Code der Datenklassen nochmal ändern zu mussen (Open-Closed-Principle). Außerdem benotigen die Datenklassenfur ihre Funktionalitat keine Kenntnisse über die grafische Benutzerschnittstelle.

Von wem stammt das Standardwerk über Entwurfsmuster"Design Patterns"?
Das Standardwerk uber Entwurfsmuster wurde von Erich Gamma, RichardHelm, Ralph E. Johnson und John Vlissides 1994 geschrieben. In der Literaturwerden die Autoren dieses Werks auch als GoF ("Gang of Four") bezeichnet.

Welche wesentlichen Klassizierungen von Entwurfsmustern gibt es?

Klassizierung nach der Aufgabe eines Entwurfsmusters in Erzeugungs-, Struktur undVerhaltensmuster. Klassizierung in klassenbasierte und objektbasierteMuster.

Zu welchen Entwurfsmuster-Klassen gehort nach diesen Klassizierungen das Singleton-Muster?

Das Singleton-Muster ist ein objektbasiertes Erzeugungsmuster.

Welche Argumente sprechen für den Einsatz einer relationalen Datenbank im Vergleich zueiner objektorientierten Datenbank?

- Es sind relativ einfache, formatierte Datenbestande zu verwalten. Diestrifft in der Regel auf betriebswirtschaftlich-administrative Anwendungenzu.


- Im Fehlerfall kann auf die Tabellen immer direkt zugegriffen werden.


- Sie sind in der Industrie weit verbreitet.

Was versteht man unter"Model-View-Architektur"?

Eine grundlegende Idee der Schichten-Architektur ist, dass keine andere Schichtdirekt auf die Benutzungsoberfläche (View) zugreifen kann. Das bedeutet insbesonderefur die Fachkonzeptschicht (Model), dass sie keinerlei Wissen über ihreBenutzungsoberfläache besitzen darf. Oft spricht man auch von einer"Model-View-Architektur".

Welche fünf wesentlichen Arbeitsschritte mussen beim Übergang vom objektorientiertenAnalyse-Modell zum Entwurfsmodell ausgeführt werden?

a) Modikation der Klassenstruktur


b) Verfeinerung von Attributen


c) Verfeinerung der Assoziationen


d) Verfeinerung der Operationen


e) Verfeinerung der Vererbungsstruktur

Was versteht man unter einer sog. Peer-Klasse?
Eine Peer-Klasse ist der Partner der speziellen Benutzeroberache zu einergraschen Java-Komponente. Die Peers sind nativ fur die einzelnen Betriebssystemeimplementiert und dienen der graschen Darstellung.

In welchen Fallen erzeugt die Methode getString() der Schnittstelle ResultSet eineSQLException?

- Wenn der übergebene Spaltenindex ungültig ist.


- Wenn ein Datenbankfehler auftritt.


- Wenn getString() auf einem geschlossenen ResultSet aufgerufen wird.

Welchen Wert gibt die Methode getBoolean() der Schnittstelle ResultSet zurück, wennder gelesene Datenbankeintrag null ist?

Sie gibt den Wert false zurück.

Ist die Methode createStatement() der Schnittstelle Connection überladen? Falls ja, gebenSie alle zugehörigen Operationen an.

Ja, nämlich durch: - createStatement()


- createStatement(int resultType, int resultSetConcurrency)


- createStatement(int resultType, int resultSetConcurrency, int resultSetHoldability)

Erklären Sie den Nutzen der Klasse DatenContainer aus der Vorlesung.

Der DatenContainer dient als Hullklasse fur die Container, die konkrete Objekteenthalten. Der Vorteil davon ist die Erweiterbarkeit. Wenn ein neuer konkreterContainer hinzukommt, muss dieser lediglich im DatenContainer aufgenommenwerden, um eine Verbindung zur Datenhaltung herzustellen.

Weshalb ist der DatenContainer mit der Schnittstelle Datenhaltung statt direkt mit derKlasse Datei assoziiert?

Dies gewährleistet die einfache Austauschbarkeit der Datenhaltungsmethode.

Was ist ein"Stacktrace" in Java?

Ein"Stacktrace" in Java ist eine Folge von Methodenaufrufen, die zur Beschreibungdes Auftretens eines Throwable-Objekts dient. Intern ist dabei ein einzelnerMethodenaufruf dargestellt als ein Objekt des Typs StackTraceElement, dasgenaue Angaben zu jedem Methodenaufruf enthalt.

Welche Oberklassen hat die Ausnahmeklasse ArithmeticException?

Object, Throwable, Exception und RuntimeException.

Erklären Sie den Unterschied zwischen den Java-Klassen Throwable, Error und Exception.

Throwable:


- Oberklasse aller Objekte, die von der JVM oder mit dem Schlüsselwortthrows geworfen werden können.


- Error: Unterklasse von Throwable. Zeigt einen fatalen Programmfehler an,von dem sich das Programm nicht zur Laufzeit erholen kann.


- Exception: Unterklasse von Throwable. Zeigt eine aufgetretene Ausnahmean, von der sich das Programm ggf. erholen kann.

"Guter Code-Stil verlangt, in catch-Blocken immer Throwable zu benutzen, damit auchwirklich alle Fehler, die auftreten können, abgefangen werden".Stimmen Sie mit dieser Aussage uberein? Begrunden Sie Ihre Antwort.

Von dieser Aussage ist im Allgemeinen abzuraten. Guter Code-Stil verlangtim Gegenteil, dass Ausnahmen immer so speziell wie möglich abgefangen undbehandelt werden.

Wie unterscheidet sich eine RuntimeException von anderen Unterklassen der KlasseException? Nennen Sie zwei Unterklassen der Klasse RuntimeException und beschreibenSie, wann diese auftreten können.

Eine RuntimeException ist eine sogenannte unchecked Exception, die zwar geworfenwerden kann, aber nicht abgefangen werden muss. Im Allgemeinen solltenAusnahmen des Typs RuntimeException nur verwendet werden, um Programmierfehleranzuzeigen.




-NullPointerException: Tritt auf, wenn versucht wird (implizit) null an einerStelle zu verwenden, an der ein Objekt verwendet werden sollte.


-ArrayIndexOutOfBoundsException: Tritt auf, wenn versucht wird auf ein Feldelementauerhalb des Feldbereichs zuzugreifen.

Kann es nicht-erreichbare catch-Blocke geben? Falls ja, geben Sie ein Beispiel an.

Ja, Beispiel:public class UnreachableExceptionTest {
public static void main(String args[]) {
try {func();func2();
}
catch (MyException e) {
System.out.println("Wird immer erreicht.");} catch (MyException2 e2) {
System.out.println("Wird nie erreicht");
}
}
public static final void func() throws MyException {throw new MyException();}public static final void func2() throws MyException2 {throw new MyException2();}}

Wie können in Java mehrere verschiedene Unterklassen der Klasse Exception im selbencatch-Block abgefangen werden?

Mit dem | - Operator.Beispiel: catch(Exception1 | Exception2 e)

Wie lasst sich - neben den in der Vorlesung besprochenen Notationen - auerdem in einemSequenzdiagramm darstellen, dass eine Operation abhängig von einer Bedingung wiederholtausgefuhrt wird?

Indem dem Namen der zugehörigen Botschaft *[Bedingung] vorangestellt wird.

Zum Demo-Programm vom 09.06: Was ist eine ParseException und wann wird diese inder Klasse AngestellterGUI geworfen?

Eine ParseException zeigt an, dass ein Fehler beim Zerlegen und Interpretierenvon Daten aufgetreten ist.Sie wird in der Klasse AngestellterGUI von der Methode parse() der KlasseDate geworfen, wenn versucht wird ein String-Objekt in ein Date-Objekt umzuwandeln.

Zum Demo-Programm vom 09.06: Erklaren Sie den Aufbau der KlasseIllegalInputException. Wozu dient der super-Aufruf?
Die Klasse IllegalInputException ist eine Unterklasse von Exception und bestehtneben der package-Deklaration und den Kommentaren lediglich aus einerKonstruktor-Denition. Der super-Aufruf wird genutzt, um den KonstruktorException(String message) der Oberklasse aufzurufen, der die Fehlernachrichtsetzt.

Zum Demo-Programm vom 09.06: Erklären Sie den Aufbau und die Funktionalität der Methodechange() der Klasse AngestellterGUI. Gehen Sie insbesondere auf die Behandlungder Ausnahmen ein.

In der Methode change() der Klasse AngestellterGUI wird versucht den Nameneines Angestellten zu verändern.Dazu wird versucht, das Textfeld auszulesen und den Namen des in subjectassoziierten Angestellten zu modizieren.


Folgende Ausnahmen konnen auftreten:


- Eine LoadSaveException, wenn es Probleme mit der Datenbankverbindunggibt.


- Eine IllegalInputException, wenn ein ungültiger Name ausgelesen wurde.Außerdem kann es passieren, dass aktuell kein Angestellter geladen war.

Zum Demo-Programm vom 09.06: Erklären Sie den Aufbau und die Funktionalitat derMethode load() der Klasse Datei.

In der Methode load() der Klasse Datei wird versucht Objekte des TypsAngestellter zu erzeugen, die auf Daten aus einer relationalen Datenbank basieren.Diese erzeugten Objekte werden im Erfolgsfall dem übergebenen Containerhinzugefugt.Der außere try-catch-Block enthalt die gesamte Schleife, um im Falle einesDatenbankfehlers das Auslesen komplett abzubrechen. Die inneren try-catch-Blocke dahingegen sind minimal gestaltet, um auch dann weitere Tupel auszulesen,wenn ein fehlerhafter Eintrag aufgetreten ist.In einer zweiten Schleife wird schließlich die Beziehung Mitarbeiter <->Vorgesetzter hergestellt.

Zum Demo-Programm vom 09.06: Erklären Sie den Nutzen des finally-Blocks anhandder Methode insert() der Klasse Datei.
Ein finally-Block wird unabhängig vom Auftreten einer Ausnahme immer nacheinem try-catch-Block ausgefuhrt. Dies kann zum Beispiel genutzt werden, umwie hier sicherzustellen, dass ein Statement-Objekt immer geschlossen wird.

Zum Demo-Programm vom 09.06: An welcher Stelle des Programms wird ein Objekt desTyps Datei erzeugt? Wie viele Verbindungen zur Datenbank konnen pro Programmaufrufaufgebaut werden?

Ein Objekt des Typs Datei wird in der Klasse AngestellterContainer in der Methodeinstance() erzeugt, wenn noch kein Objekt des Typs AngestellterContainer3erzeugt wurde. Es kann nur genau eine Verbindung hergestellt werden, da derContainer das Singleton-Muster implementiert.

Zum Demo-Programm vom 09.06: Erklaren Sie den Aufbau der Klasse LoadSaveException.

Objekte der Klasse LoadSaveException dienen zur Kapselung spezischer Ausnahmen,die in der Datenhaltungsschicht auftreten konnen.Dazu erbt die Klasse von der Oberklasse Exception und hat ein AttributException cause, das die spezische Datenhaltungsausnahme enthalt. DiesesAttribut wird im Konstruktor gesetzt und kann uber die Methode details()abgefragt werden.

Wie sollte nach Konvention ein try-catch-Block in Java aussehen?
try {
statements;
}
catch (exception-declaration) {
statements;
}

Welche Aufgabe hat die Klasse File des API-Pakets java.io?

Plattformunabhängige Durchführung von Dateioperationen.

Welche plattformabhängigen Besonderheiten gibt es bei der Erstellung von Dateipfaden?

- Trennzeichen zwischen Verzeichnissen( / in Unix, n in Windows, : bis MAC OS X 9 )




- Wurzelverzeichnis(Laufwerksbuchstabe in Windows, / in Unix)

Wie kann man abfragen, wann eine Datei zuletzt verändert wurde?

Durch einen Aufruf der Methode lastModified der Klasse File.

Welche grundsätzlichen Moglichkeiten gibt es, aus Dateien zu lesen und diese zu modizieren?

- Sequentiell als (Byte-)Datenstrom


- Mit wahlfreiem Zugriff

Gibt es Ausgabeströme, mit denen neue Daten an das bisherige Dateiende angehängt werdenkönnen?

Ja, zum Beispiel FileWriter oder FileOutputStream.

Welche Bedeutung hat das Attribut serialVersionUID, das häufig im Kontext der Objektserialisierungverwendet wird?

Bei der Serialisierung wird in Java nicht nur der Objektinhalt geschrieben,sondern zusätzlich eine eindeutige Kennung der Klasse. Diese UID kann beispielsweiseals Hashcode aus Namen, Attributen, Parametern, Sichtbarkeit undso weiter bestimmt werden.

Erklaren Sie den Nutzen des Java-Modizierers transient.

Der Modizierer transient kennzeichnet Attribute einer Klasse, die im Zugeder Objektserialisierung nicht serialisiert werden sollen.

In UML-Sequenzdiagrammen: Wofür steht die Bezeichnung :<Klasse> im Kopfelement einerLebenslinie?
Diese Bezeichnung steht für ein anonymes Objekt der Klasse .

In UML-Sequenzdiagrammen: Wie konnen Aufrufe statischer Methoden modelliert werden?

Indem Botschaften zu einer Lebenslinie mit Kopfelement <Klasse> gesendetwerden.

Erklären Sie den wesentlichen Unterschied zwischen leichtgewichtigen und schwergewichtigenGUI-Komponenten in Java.

Während schwergewichtige Komponenten mit einer Peer-Klasse assoziiert sind,haben leichtgewichtige Komponenten keinen nativen Bildschirmpartner. DasZeichnen schwergewichtiger Komponenten wird also maßgeblich vom gewähltenBetriebssystem bestimmt; leichtgewichtige Komponenten werden plattformunabhängig in Java gezeichnet.

Nennen sie zwei Beispiele für leichtgewichtige Java-GUI-Komponenten.

JLabel, JButton.

Erklären Sie den Unterschied zwischen anwendungsgesteuertem und systemgesteuertemZeichnen in Java.

Während bei systemgesteuertem Zeichnen das Betriebssystem ein Neuzeichnenvon Komponenten anfordert (z.B. bei erstmaligem Zeichnen der Komponenteoder bei Maximierung des Fensters), entscheidet bei anwendungsgesteuertemZeichnen die Komponente selbst, dass sie neu gezeichnet werden muss, weil sichihr interner Zustand verändert hat (kann z.B. durch Aufruf der asynchronenMethode repaint angestoßen werden).

Erklären Sie wie in Java inkrementell auf Komponenten gezeichnet werden kann.

Indem die Methode update der Klasse java.awt.Component passend überschriebenwird. Ohne Überschreiben wurde diese die Komponente zuerst"leeren" unddann paint aufrufen. Mit Überschreiben kann das"Leeren" verhindert undunter Bedingungen gezeichnet werden.

"Programme sollten immer dann die paint-Methode aufrufen, wenn anwendungsgesteuertein Neuzeichnen der ausgewählten Komponente erfolgen soll."Stimmen Sie mit dieser Aussage uberein? Begründen Sie Ihre Antwort.

Diese Aussage ist falsch. Prinzipiell sollte nie die Methode paint direkt, sondernimmer die asynchrone Methode repaint verwendet werden.

"Programme sollten bei Komponenten mit komplexem Inhalt vermeiden, die parameterloseVariante der repaint-Methode zu verwenden."


Stimmen Sie mit dieser Aussage uberein? Begründen Sie Ihre Antwort.

Diese Aussage ist korrekt. Auf Komponenten mit komplexem Inhalt kann zumBeispiel mit der Methode repaint(int x, int y, int width, int height) nurdas Rechteck neu gezeichnet werden, das eines Neuzeichnens bedarf.

Was ist die initiale Farbe mit der ein Graphics-Objekt arbeitet? Wie kann eine andereFarbe ausgewahlt werden?

Die initiale Farbe eines Graphics-Objekts ist die Vordergrund-Farbe der Komponenteauf der gezeichnet werden soll.Eine andere Farbe kann durch den Aufruf g.setColor(Color c) gesetzt werden.

Was ist der Unterschied zwischen den Methoden mouseClicked und mousePressed derSchnittstelle MouseListener?

Die Methode mouseClicked wird ausgelöst, wenn ein Drucken und Loslassender Maus ohne Verschiebung des Mauszeigers erfolgt ist.Die Methode mousePressed hingegen wird ausgelöst, wenn eine Maustaste gedrückt wurde.

Zum Demo-Programm vom 23.06: Erklären Sie die Implementierung der Methode mouseOveraus der Klasse Kreis.
Um zu bestimmen, ob der übergebene Punkt innerhalb des Kreis-Objekts liegt,wird die euklidische Distanz zwischen dem ubergebenen Punkt und dem Kreismittelpunktbestimmt. Diese Distanz muss kleiner als der Radius des Kreisessein, damit der Punkt innerhalb des Kreises liegt.

Zum Demo-Programm vom 23.06: Erklären Sie den rekursiven Aufruf der Methode loeschenaus der Klasse GeometrischesObjektZeichenfläche.

Die Methode loeschen sucht nach einem Objekt des Typs GeometrischesObjektim Container, welches markiert ist. Im Erfolgsfall wird dieses Objekt aus demContainer entfernt und ein neuer loeschen-Aufruf ausgeführt. Die Methode ruftsich also solange auf, bis alle markierten Objekte des Typs GeometrischesObjektaus dem Container entfernt sind.