Besprechung der Hausaufgabe und Implementieren eigener Ideen für KorT

Zu Beginn der Stunde besprachen wir die Hausaufgaben der letzten Stunde. Wir sollten die Aufgabe 2 der Übungen auf inf-schule erledigen. Die Lösung sah aus wie folgt :

Bei Aufgabe 2.1 sollte man eine Codezeile in ein Objektdiagramm verwandeln. Die Lösung sah wie folgt aus :

Mensch mann = new Mensch("Anton", "Aachen");
Mensch frau = new Mensch("Barbara", "Bonn");
Paar paar = new Paar(mann, frau);
paar.getPartner(mann).name
"Barbara"   (String)
Mensch m = new Mensch("Charly", "Cochem");
paar.getPartner(m)
null

Bei Aufgabe 2.2 sollte man das ganze noch einmal als Klassendiagramm darstellen. Dieses sah wie folgt aus :

Hierbei zu beachten ist, dass die Klasse Paar per Typenvariabel für alle Arten von Paaren anwendbar ist.

Nun sollte man das ganze in ein Grundgerüst eines Programmes umschreiben und einige JUnit Test’s anfertigen. Nun folgen die Test’s und einige nennenswerte Ausschnitte aus dem Code.

    @Test
    public void testeGetPartner()
    {
        Mensch frau = new Mensch("Barbara", "Bonn");
        Mensch mann = new Mensch("Anton", "Aachen");
        Mensch mann2 = new Mensch("Harald", "Hamburg");
        Paar<Mensch> paar2 = new Paar<Mensch>(mann, frau);
        assertEquals(frau, paar2.getPartner(mann));
        assertEquals(null, paar2.getPartner(mann2));
    }

Dies ist der erste Test, der die Methode getPartner() testet. Zu beachten ist das <Mensch> beim erzeugen eines Paar Objektes. Das <Mensch> bestimmt den Typen der Objekte, welche akzeptiert werden sollen.

    @Test
    public void testeObVariabel()
    {
        Hund hund1 = new Hund("Bello", "Bern");
        Mensch mensch1 = new Mensch("Harald", "Hamburg");
        Paar<Object> paar1 = new Paar<Object>(mensch1, hund1);
        assertEquals(mensch1, paar1.getPartner(hund1));
        Hund hund2 = new Hund("Anton", "Aachen");
        assertEquals(null, paar1.getPartner(hund2));
    }

Dies ist der zweite Test, er testet ob das paar theoretisch Variabel ist. Hierfür muss als Typenvariabel <Object> angegeben werden, da Hund und Mensch zwei verschiedene Objekte sind. (Alternativ besteht die Möglichkeit zwei Typenvariabeln zu verwenden jedoch wird dies sehr kompliziert.)

public class Paar<T>
{
    T partner1;
    T partner2;
    
    public Paar(T partner1, T partner2){
        this.partner1 = partner1;
        this.partner2 = partner2;
    }
    
    public T getPartner(T m){
        if(m == partner1)
            return partner2;
        else if (m == partner2)
            return partner1;
        else 
            return null;
    }
}

Dies ist der Code der Paar Klasse, nennenswert ist hierbei die Typenvariabel <T> . Das T kommt immer dann vor, wenn eine Definition eines Objektes erforderlich ist, beispielsweise bei dem Konstruktor, bei dem partner1 und partner2 vom Typ T benötigt werden.

Den Rest der Stunde verbrachten wir damit an unseren Versionen von K or T weiterzuarbeiten.

Hausaufgabe : Eine eigene Idee in K or T implementieren

Schreibe einen Kommentar