Aufgabe 5: Methoden mit Feldparameter, Sortieren, Testtreiber

Werbung
Technische Informatik Ba.: IN3, Zug 2 – Informatik III (Java) im WS 08, Prof. Knabe, 2008-10-28
Aufgabe 5: Methoden mit Feldparameter, Sortieren, Testtreiber binden mit Testling, Ausnahme auslösen
JUnit
Abgabetermin: Di 11. 11. 2008
Schreiben Sie in Eclipse eine Klasse LongArrayService, die folgende Methoden zur Feldbehandlung
zusammenfasst.
/**Liefert die Summe der Elemente von zahlen.
* @throws IllegalArgumentException zahlen ist null*/
long summe(final long[] zahlen)
/**Sortiert die Elemente von zahlen aufsteigend.
* @throws IllegalArgumentException zahlen ist null*/
void sortieren(final long[] zahlen)
/**Liefert von den Elementen von zahlen das kleinste.
* @throws FeldLeer wenn das Feld zahlen leer ist.
* @throws IllegalArgumentException zahlen ist null*/
long min(final long[] zahlen)
/**Liefert von den Elementen von zahlen das größte.
* @throws FeldLeer wenn das Feld zahlen leer ist.
* @throws IllegalArgumentException zahlen ist null*/
long max(final long[] zahlen)
Die Methoden min und max müssen durch Auslagerung sowohl der Prüfung für die Ausnahmen als auch
des eigentlichen Algorithmusses redundanzfrei formuliert werden. Dazu empfehle ich, eine
verallgemeinerte Methode extremum zu schreiben, die einen zusätzlichen booleschen Parameter erhält,
gemäß dessen Wert die Vergleichsbedingung negiert wird oder nicht.
Die Sortiermethode soll nach dem im Skript besprochenen bubbleSort-Verfahren sortieren.
1. Testen Sie Ihre Implementierung in Eclipse mittels des JUnit-Testtreibers LongArrayTest. 2. Den
von mir bereitgestellten Dialogtesttreiber LongArrayDialog.java benutzen Sie für einen Dialogtest.
Die Ausnahme deklarieren Sie wie folgt: static class FeldLeer extends Exception {} und lösen
Sie aus mittels: throw new FeldLeer();
Bsp.-Dialog (Eingaben kursiv):
Z:\>java LongArrayDialog
Zahl ? 5
Zahl ? 3
Zahl ? 1
Zahl ? 2
Zahl ? 4
Zahl ? ^Z
Anzahl
: 5
Summe
: 15
Sortiert : 1 2 3 4 5
Minimum : 1
Maximum : 5
Z:\>java LongArrayDialog
Zahl ? ^Z
Anzahl
: 0
Summe
: 0
Sortiert :
Exception in thread "main" LongArrayService$FeldLeer
at LongArrayService._groessePruefen(LongArray.java:55)
at LongArrayService.min(LongArray.java:38)
at LongArrayDialog.main(LongArrayDialog.java:30)
Z:\>
Für die Ehre: Wer möchte, kann auch noch das Sortierverfahren redundanzfrei gegenüber min und max
lösen. Dabei soll nicht explizit mit geschachtelten Schleifen gearbeitet werden, sondern in sortieren
die Berechnung des Indexes des kleinsten Elementes des Restteilfeldes einer Dienstmethode übertragen
werden, die auch in min verwendet wird.
[C:\knabeTFH\Java\pjc3\08w05_LongArray_SumSortMinMax_Exc\_\LongArray_Aufgabe.odt]
Herunterladen