Übungsblatt 11

Werbung
Technische Universität München
Institut für Informatik
Lehrstuhl für Bioinformatik
Einführung in die Programmierung für Bioinformatiker
Prof. Dr. B. Rost, L. Richter
WS 15/16
Übungsblatt 11
11.1.2016
Aufgabe 11.1 (P) Jasminchen
Themengebiet: Jasmin
Welche Ausgabe erzeugt das Programm Test.java?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Test {
public static void main ( String [] args ) {
B varB = new B ( " AString " , " BString " ) ;
varB . setAndPrint ( " CString " ) ;
}
}
class A {
private String name ;
public A ( String name ) {
this . name = name ;
}
public String getName () {
return name ;
}
public void setAndPrint ( String name ) {
this . name = name ;
System . out . println ( getName () ) ;
}
}
class B extends A {
private final String name ;
public B ( String nameA , String nameB ) {
super ( nameA ) ;
this . name = nameB ;
}
@Override
public String getName () {
return name ;
}
}
Überlegen Sie zuerst und überprüfen Sie dann Ihre Antwort, indem Sie das Programm
ausführen. Argumentieren Sie, warum die Antwort "BString" richtig ist, indem Sie den
entscheidenden Zustand des Programms in JASM.IN darstellen.
Ergänzen Sie im folgenden Diagramm die Namenstabelle(n) für varB.
Welche Auswirkung hat die Ausführung von Statement 19? Aktualisieren Sie dazu das folgende Diagramm.
2
Der nächste Call-Eintrag ist nun getName(), unverändert aufgerufen auf dem durch varB
referenzierten Objekt. Geben Sie den dazugehörigen JASM.IN-Schnappschuss dazu an.
Aufgabe 11.2 (P) Iteratoren
Themengebiet: Iteratoren
Erstellen Sie einen Iterator MyListIterator<T>, der das ListIterator<T>-Interface implementiert für die Klasse MyList<T>. Es sollen alle Methoden des Interfaces ListIterator<T> (auch die optionalen) implementiert werden. Die genaue Funktionalität, Besonderheiten und benötigte Fehlerbehandlung können Sie der Java-Dokumentation https:
//docs.oracle.com/javase/7/docs/api/java/util/ListIterator.html entnehmen.
Testen Sie Ihre Implementierung ausführlich.
Hinweis: Zum besseren Verständnis der Operationen empfiehlt es sich, Zeichnungen für
kleine Beispiele anzufertigen. Es ist außerdem empfehlenswert, sich die aktuelle Position des
Iterators in einem Integer zu merken. Überlegen Sie sich den Zusammenhang zwischen der
Position des Iterators und der Position von Listenelementen. Um sich zu merken, welche
Operationen zuletzt ausgeführt wurden bzw. welche Operationen als nächstes ausgeführt
werden dürfen, können Sie Variablen vom Typ Boolean verwenden. Damit können die Abhängigkeiten zwischen den einzelnen Methoden kontrolliert werden.
Herunterladen