Software-Engineering II } Aufgaben zur Vorlesung zum Thema

Werbung
{ Software-Engineering II }
Aufgaben zur Vorlesung zum Thema Objektorientierung
Frage 1: Vererbung (1 Punkt)
Wie wird in Java eine Vererbungsbeziehung zwischen zwei
Klassen notiert?
a)
b)
c)
d)
class
class
class
class
BADozent: public
BADozent extends
BADozent: realize
BADozent -> extends
BAPerson
BAPerson
BAPerson
BAPerson
{
{
{
{
…
…
…
…
}
}
}
}
Frage 2: Packages (1 Punkt)
Wozu besitzen objektorientierte Programmiersprachen packages
bzw. namespaces?
a)
b)
c)
d)
Internationalisierung der Software
Strukturierung des Programmcodes
Vermeidung von redundantem Programmcode
Sichtbarkeitseinschränkung
Frage 3: Access Modifiers (2 Punkte)
Angenommen, Sie verwenden bei der Java-Entwicklung in Ihren
eigenen Klassen weder packages noch access modifiers. Welche
(expliziten) access modifiers könnten Sie bei Ihren Methoden
und Attributen angeben, ohne dass es Auswirkungen auf das
Funktionieren der von Ihnen geschriebenen Klassen haben
könnte?
a)
b)
c)
d)
public
protected
private
static
Frage 4: Speicherung von Objekten (1 Punkt)
Wie werden in Java Objekte und primitive Datentypen
gespeichert?
a) Primitive Datentypen werden auf dem Stack gespeichert.
Objekte werden im Heap abgelegt. Die Adresse der Elemente
im Heap wird jedoch vom Stack referenziert.
b) Primitive Datentypen und Objekte werden auf dem Stack
abgelegt. Auf dem Heap wird jedoch die Adresse des
Objektes, welches auf dem Stack liegt, referenziert.
c) Der Stack dient der Speicherung der Klasseninstanzen.
Primitive Datentypen liegen auf dem Heap. Statische
Variablen werden hingegen im Static Heap abgelegt.
Timo Holzherr
TIT09AIK @ WS 2011
{ Software-Engineering II }
Frage 5: Speicherverwaltung bei Methodenaufrufen (3=2+1 Punkte)
I. Welche der folgenden Datentypen haben die Übergabe einer
Referenz auf den Inhalt der Variable zur Folge?
II. Welche dieser Datentypen können aufgrund ihrer
Eigenschaften tatsächlich bei der Übergabe an eine andere
Methode maßgeblich verändert werden? Betrachten Sie dazu
bei Klassen die Methoden, die sie zur Verfügung stellen.
a)
b)
c)
d)
int
int[]
java.lang.Integer
java.util.Vector
Frage 6: Exceptions (2 Punkte)
Betrachten Sie folgendes Code-Fragment:
public class SomethingWrong
{
public void whatsWrong( boolean nice )
{
if( !nice ) {
throw new String( "I am not nice" );
}
throw new String( "I am nice" );
System.out.println( "Everything went fine." );
}
}
Finden und beschreiben Sie die Fehler, die sich im
Programmcode versteckt haben.
Hinweis: Um das Programm lauffähig zu machen, müssten Sie 4
Stellen im Code ändern.
Frage 7: Abstrakte Klassen / Interfaces (2 Punkte)
Welche Eigenschaften besitzen abstrakte Klassen, die auf
Interfaces nicht zutreffen?
a) Mehrere dieser Entitäten können gleichzeitig eine
Vererbungsbasis bilden
b) Instanzattribute können definiert werden
c) Sie können nicht instanziert werden
d) Die Implementierung von Methoden kann einer Subklasse
aufgezwungen werden
e) Es ist möglich, Methoden zu implementieren
Timo Holzherr
TIT09AIK @ WS 2011
{ Software-Engineering II }
Frage 8: Generische Programmierung (3=2+1 Punkte)
I) Schreiben Sie folgendes Programm um, sodass es die Vorzüge
der generischen Programmierung nutzt. Markieren Sie Ihre
Änderungen. (Erhalten Sie die Struktur des Programms!)
II)Welchen Vorteil erhält man, wenn keine expliziten
Typecasts mehr notwendig sind?
import java.util.Vector;
public class Maths {
public Vector getNumbers()
{
Vector numbers = new Vector();
numbers.addElement( new Integer( 1 ) );
numbers.addElement( new Float( 1.1F ) );
return numbers;
}
public float sumUp( Vector numbers )
{
float sum = 0F;
for( int i = 0; i < numbers.size(); i++ ) {
Number n = (Number) numbers.elementAt(i);
sum
+= n.floatValue();
}
return sum;
}
public void calculate()
{
Vector numbers = this.getNumbers();
System.out.println( "Sum: " + this.sumUp( numbers ) );
}
}
Frage 9: Polymorphismus bei Generics (3 Punkte)
Welche der folgenden Klassen-Tupel stehen in einer
Vererbungsrelation?
Mit Vector und Stack sind hier die Klassen der Java API im
Package java.util.* gemeint.
a) (
b) (
c) (
d) (
e) (
f) (
Vector<?>, Stack<Integer> )
Vector<? extends Number>, Stack<Integer> )
Vector<? extends Integer>, Stack<Number> )
Vector<Integer>, Vector<Object> )
Vector<Integer>, Stack<Integer> )
Vector<Integer>, Vector<Number> )
Timo Holzherr
TIT09AIK @ WS 2011
{ Software-Engineering II }
Hinweise zur Benotung:
Bei den Multiple-Choice Fragen sind Mehrfach-Antworten
möglich. Es müssen nicht zwingend so viele Antworten richtig
sein, wie die Frage/Aufgabe Punkte vergibt.
Haben Sie bei einer Multiple-Choice Aufgabe ausschließlich
alle richtigen Antworten angekreuzt, erhalten Sie die volle
Punktzahl für die Aufgabe.
Für zu viele oder zu wenige Antworten bekommen Sie PunkteAbzug, jedoch können je Aufgabe keine negativen Punktzahlen
erreicht werden.
50% der Punkte sind nötig für das Bestehen des Aufgabeblattes.
Im Fall dieses Aufgabenblattes benötigen Sie beispielsweise
mindestens 9 Punkte zum Bestehen.
Für jedes bestandene Aufgabenblatt werden Ihnen Punkte
zusätzlich zur praktischen Aufgabe, die am Ende der Vorlesung
stattfindet, angerechnet.
Die Gewichtung der Punkte der praktischen Arbeit, die am Ende
der Vorlesung von Ihnen durchgeführt wird, und der Punkte der
Aufgabenblätter ist 70:30.
Für die Bearbeitung der Aufgaben erhalten Sie eine gewisse
Zeit in der Vorlesung. Der Rest des Blattes ist bis zur
nächsten Vorlesung zu bearbeiten.
Bitte geben Sie Ihre Lösung persönlich in Papierform zu Beginn
der jeweils nächsten Vorlesung ab.
Bitte stets Ihren Namen und Ihre Matrikel-Nummer auf den
Lösungsblättern vermerken.
Timo Holzherr
TIT09AIK @ WS 2011
Herunterladen