Montag, 10. März 2014

 

Aufgabe zu Unit-Tests (POS1: 2BHIF)

In einem Online-Shop wird unter anderem ein Warenkorb benötigt. Schreiben Sie Unit-Tests zu folgendem Interface (welches Sie natürlich auch implementieren müssen):

import java.util.Iterator;
/**
 * @author (c) 2009, Harald R. Haberstroh 23.04.2009
 */
public interface ShoppingCart {

    /**
     * legt die übergebene Anzahl von Elementen in den Warenkorb
     *
     * @param anItem
     *          Element
     * @param quantity
     *          Anzahl
     * @throws NegativeCountException
     *           negative Anzahl gibt's nicht
     */
    public void addItems(Item anItem, int quantity) throws NegativeCountException;

    /**
     * entfernt die Anzahl von Elementen vom Warenkorb.
     *
     * @param anItem
     *          welches Element
     * @param quantity
     *          Anzahl
     * @throws NegativeCountException
     *           negative Anzahl gibt's nicht
     * @throws NoSuchItemException 
     *           das Element existiert nicht im Warenkorb
     */
    public void deleteItems(Item anItem, int quantity)
         throws NegativeCountException, NoSuchItemException;

    /**
     * wieviele Element gibt's überhaupt
     *
     * @return Anzahl Elemente
     */
    public int itemCount();

    /**
     * Iterator für alle Elemente (siehe Collection-API).
     *
     * @return Iterator über alle Elemente
     */
    public Iterator<Item> iterator();
}

Denken Sie bei der Erstellung der Tests an Grenzfälle, Sonderfälle und erst dann an den "Normalfall".

Links:

  1. Testen mit JUnit
  2. Softwaretest

Labels: , , ,


Donnerstag, 6. März 2014

 

Liste von ganzen Zahlen (POS1: 2BHIF)

Erstellen Sie eine Klasse IntList, welche beliebige viele ganze Zahlen aufnehmen kann.
IntList soll die Zahlen in einem Array der Länge capacity (default: 8) speichern.Sollte beim Aufnehmen einer neuen Zahl (mit add()) die Länge des Arrays überschritten werden, so ist ein neues Array mit der doppelten Größe anzulegen und die Werte des alten Arrays zu übernehmen und dann die neue Zahl aufzunehmen.
IntLIst soll das Interface Comparable implementieren:
public class IntList implements Comparable {
}

Dieses Interface verlangt eine Methode compareTo().

Funktionsweise der Methoden:

Konstruktor IntList(int capacity) legt ein Array der Größe capacity
Konstruktor IntList() legt ein Array der Größe 8
void add(int value) hängt den Wert an. Ist die Kapazität erschöpft, so ist die Größe des internen Arrays zu verdoppeln.
int compareTo(Object other) vergleicht das Objekt mit einem anderen Objekt vom Typ IntList. Dabei liefert die Methode 0, wenn alle Elemente gleich sind, einen Wert kleiner 0, wenn das Objekt vor dem anderen zu "sortieren" ist, also wenn irgend eine Zahl kleiner ist als die entsprechende des anderen Objekts oder wenn das Objekt weniger Zahlen enthält (die aber gleich sind). compareTo() liefert einen Wert größer 0, falls das Objekt nach dem anderen Objekt zu "sortieren" ist.
boolean equals(Object other) liefert true, wenn die Anzahl der Zahlen und die Zahlen selbst identisch sind (oder wenn es sich tatsächlich um das selbe Objekt handelt).
int get(int index) liefert die Zahl an der Stelle index. Es soll IndexOutOfBoundsException geworden werden, falls es sich um einen ungültigen Index handelt (Arraygrenze genügt nicht, die tatsächliche Anzahl der Elemente zählt).
int hashCode() soll einen "eindeutigen" Wert, der vom Inhalt bestimmt wird, zurückliefern.
void set(int index, int value) soll value an der Stelle index setzen. Es soll IndexOutOfBoundsException geworden werden, falls es sich um einen ungültigen Index handelt (Arraygrenze genügt nicht, die tatsächliche Anzahl der Elemente zählt).
int size() liefert die Anzahl der tatsächlich gespeicherten Zahlen.
int[] toArray() liefert ein int-Array mit den gespeicherten Werten. Das Array muss genau so lang sein, als es Zahlen in dem Objekt gibt (vgl. size()).
String toString() liefert alle Zahlen in einem String, der so aussieht: "[1, 23, 99, 0, 12]" oder "[]", falls das Objekt keine Zahl enthält.
void clear() setzt IntList wieder in den Anfangszustand zurück (mindestens die Anzahl der Elemente auf 0 setzen).

Labels: , ,


 

Gleitender Mittelwert (POS1: 2BHIF)

Erstellen Sie eine Klasse Averager, welche den Durchschnitt beliebig vieler Zahlen berechnen kann:
add() soll eine Zahl aufnehmen
getAverage() liefert den Mittelwert
getSum() liefert die Summe der Zahlen
getNum() liefert die Anzahl der Zahlen
reset() setzt alles zurück, d.h. ab reset() kann ein neuer Mittelwert einer Folge von Zahlen bestimmt werden.

Schreiben Sie eine passende Testklasse.

Labels: , ,


This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]