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]