Ubungsblatt 9 - TU Darmstadt

Werbung
T ELEKOOPERATION , FB 20, TU DARMSTADT
Dipl.-Ing. Gerhard Austaller
Dipl.-Ing. Andreas Hartl
EMail: {gerhard,andreas}@tk.informatik.tu-darmstadt.de
Fachgebiet Telekooperation
Technische Universität Darmstadt
Übungsblatt 9
zur Vorlesung Grundzüge der Informatik I im WS 02/03
(8. - 14. Januar 2003)
Ihnen nur eine Wahl, welche und warum?
Einleitung
Bisher wurde als einzige Möglichkeit Objekte in einer Art
Container“ zu verwalten das Array vorgestellt. Ein Nach”
teil des Arrays ist, dass die Größe bei der Initialisierung
bekannt sein muss. Die Klasse Vector bietet ein Array
(siehe Ende des Aufgabenzettels), dessen Größe sich dynamisch verändern kann.
interface IntegerVector {
public boolean add ( I n t e g e r a ) ;
public I n t e g e r f i r s t E l e m e n t ( ) ;
}
Aufgabe 9.3
Aufgabe 9.1
Casting
• Schreiben Sie eine Methode in der drei IntegerObjekte und ein String-Objekt in einem Vector
abgelegt werden.
• Nehmen Sie die Objekte wieder aus dem Vector und
weisen sie bei Integer-Objekten den Wert des
Objektes einer Variable vom Typ int zu. Die zu
verwendende Methode finden Sie im Skript V10 auf
Seite 7. Was dürfen Sie auf keinen Fall vergessen?
Aufgabe 9.2
Wrapper-Klassen & Casting
Dem Vorteil der dynamischen Größenanpassung des Vectors steht der Nachteil des teilweisen Verlusts der Typsi”
cherheit“ entgegen. Ein Vector garantiert nur“, dass ein
”
Objekt bei den Zugriffsmethoden geliefert wird. Wie Sie
beim vorherigen Beispiel gesehen haben, sind Typecasts
nötig um die spezieller Sicht auf das Objekt zu bekommen.
Schreiben Sie eine Klasse IntegerVectorImpl, die
folgendes Interface implementiert. Überlegen Sie sich,
ob Sie IntegerVectorImpl von Vector ableiten
würden (is-a) oder ob er in IntegerVectorImpl nur
benutzt wird (has-a). Die Definition des Interfaces lässt
9. Übung
Überladen von Methoden
Für komplexe Zahlen ist in Java kein eigener Typ vorgesehen. Komplexe Zahlen bestehen aus zwei Komponen”
ten“, dem Realteil und dem Imaginärteil, welche beide reelle Zahlen sind. Sie werden geschrieben als a + bi. Die
Summe zweier komplexer Zahlen a + bi und c + di ist definiert als (a + √
c) + (b + d)i, der Betrag einer komplexen
Zahl a + bi als a2 + b2 .
• Im nachfolgenden Interface sind einige überladene Methoden definiert. Es befindet sich aber zwei
nicht zulässige Methodendefinitionen im Interface.
Welche sind nicht zulässig und warum?
i n t e r f a c e Complex{
public Complex add ( Complex complex ) ;
public Complex add ( double r e a l ,
double imag ) ;
public Complex add ( double r e a l ) ;
public Complex add ( double imag ) ;
public double abs ( ) ;
public Complex abs ( ) ;
public double r e a l ( ) ;
public double imag ( ) ;
}
• Implementieren Sie die Klasse, nachdem Sie die
fehlerhaften Methodendefinitionen entfernt haben.
Seite 1
Grundzüge der Informatik I
Aufgabe 9.4
WS 02/03
D.h. implementieren sie auch eine Methode public
boolean add(Integer obj).
Konstruktoren
Implementieren Sie verschiedene sinnvolle Konstruktoren
für die komplexen Zahlen. Mit this besteht die Möglichkeit Konstruktoren der eigenen Klasse aufzurufen. Machen Sie davon ausgiebig gebraucht. Alle Konstruktoren
bis auf einer sollen mittels this implementiert werden!
Hausaufgabe 9.1
te
Interface Bag - 10 Punk-
Implementieren Sie folgende Interface in der Klasse
BagImpl. Sie dürfen in der Implementierung keine von
Java zur Verfügung gestellte Container-Klassen (auch
nicht Vector) benutzen außer ein Array. Sie können
eine fixe Kapazität annehmen. Implementieren Sie auch
mindestens einen sinnvollen Nicht-Default“ Konstruktor.
”
interface
public
public
public
public
public
public
}
Bag {
boolean add ( O b j e c t o b j ) ;
boolean c o n t a i n s ( O b j e c t o b j ) ;
String toString ( ) ;
boolean remove ( O b j e c t o b j ) ;
int size ( ) ;
boolean isEmpty ( ) ;
Hausaufgabe 9.2
- 6 Punkte
Interface AdvancedBag
Implementieren Sie folgendes Interface. Es kann ebenfalls
in BagImpl implementiert werden. In der Dokumentation zu Java finden Sie eine genaue Beschreibung der
Eigenschaften einer Enumeration. Implementieren Sie
die Enumeration in einer eigenen Klasse!
IntegerBag - 8 Punkte
eine
neue
Klasse
Überschreiben Sie die add-Methode so, dass nur mehr
Integer eingefügt werden können. Überladen Sie weiters auch die Methode mit Integer als Parameter.
9. Übung
The Vector class implements a growable array of objects.
Like an array, it contains components that can be accessed using an integer index. However, the size of a Vector
can grow or shrink as needed to accommodate adding and
removing items after the Vector has been created.
• public boolean add(Object o)
Appends the specified element to the end of this
Vector.
– Parameters: o - element to be appended to
this Vector.
– Returns: true (as per the general contract of
Collection.add).
• public Object elementAt(int index)
Returns the component at the specified index. This
method is identical in functionality to the get method (which is part of the List interface).
– Parameters: index - an index into this vector.
– Returns: the component at the specified index.
– Throws: ArrayIndexOutOfBoundsException
- if the index is negative or not less than the
current size of this Vector object given.
• public Object firstElement()
Returns the first component (the item at index 0) of
this vector.
– Returns: the first component of this vector.
Removes the element at the specified position in
this Vector. shifts any subsequent elements to the
left (subtracts one from their indices). Returns the
element that was removed from the Vector.
i n t e r f a c e AdvancedBag extends Bag {
public Enumeration elements ( ) ;
}
Leiten Sie von BagImpl
IntegerBagImpl ab.
java.util.Vector
• public Object remove(int index)
import j a v a . u t i l . Enumeration ;
Hausaufgabe 9.3
Macht es in diesem Fall Sinn add() zu überladen? Vergessen Sie nicht auf sinnvolle Tests!
– Parameters: index - the index of the element
to removed.
– Returns: element that was removed
– Throws: ArrayIndexOutOfBoundsException
- index out of range (index < 0 || index ≥ size()).
Siehe auch http://java.sun.com/j2se/1.4/
docs/api/index.html.
Seite 2
Herunterladen