Klassendiagramm Software Engineering II Übung 4 Anmerkungen zur Lösung Bestellung Posten Ware int nr Vector posten int anzahl Ware ware Bestellung best String Bezeichnung int stueckpreis Vector posten 1 * neuerPosten() gesamtPreis() friendPostenAdd() Bestellung() * Posten() getWare() getAnzahl() getBestellung() 1 friendPostenAdd() Ware() getStueckpreis() getBezeichnung() Weitere get- und set-Methoden können sinnvoll sein. Ware Posten (I) /* Klasse Ware */ import java.util.Vector; /* Klasse Posten */ public class Ware { protected String bezeichnung; protected int stueckpreis; protected Vector posten; public class Posten { protected int anzahl; protected Ware ware; protected Bestellung best; /* Konstruktor Ware */ public Ware(String bezeichnung, int stueckpreis) { this.bezeichnung = bezeichnung; this.stueckpreis = stueckpreis; } /* Methode getBezeichnung */ public String getBezeichnung() { return bezeichnung; } } /* Methode getStueckpreis */ public int getStueckpreis() { return stueckpreis; } Posten (II) } /* Methode friendPostenAdd */ void friendPostenAdd(Posten p) { posten.addElement(p); } /* Konstruktor Posten */ public Posten(Bestellung b, Ware w, int anzahl) { // Parameter übergeben. this.best = b; this.ware = w; this.anzahl = anzahl; // Posten bei Bestellung und Ware registrieren. best.friendPostenAdd(this); ware.friendPostenAdd(this); } Bestellung (I) /* Methode getBestellung */ public Bestellung getBestellung() { return bestellung; } /* Klasse Bestellung */ /* Methode getWare */ public Ware getWare() { return ware; } public class Bestellung { protected int nr; protected Vector posten; /* Methode getAnzahl */ public int getAnzahl() { return anzahl; } import java.util.Vector; import java.util.Enumeration; /* Konstruktor Bestellung */ public Bestellung(int nr) { this.nr = nr; posten = new Vector(); } 1 Bestellung (II) /* Methode neuerPosten */ public void neuerPosten(int anzahl, Ware w) { // Posten-Objekt neu erzeugen // Assoziationsaufbau in Klasse Posten new Posten(this, w, anzahl); } /* Methode friendPostenAdd */ void friendPostenAdd(Posten p) { posten.addElement(p); } Bestellung (III) /* Methode gesamtPreis */ public int gesamtPreis() { int summe = 0; Enumeration e = posten.elements(); } while (e.hasMoreElements()){ Posten p = (Posten) e.nextElement(); summe += p.getAnzahl() * p.getWare().getStueckpreis(); } return summe; Anmerkungen Punktwertung Mehr Kommentare notwendig! (hier zur besseren Lesbarkeit nicht abgedruckt) Aufbau geht nicht vom Posten aus -8 Diagramm fehlt -10 Methoden fehlen in Diagramm -1 oder mehr (nicht bei absichtlichem und kommentiertem Weglassen von get- und set-Methoden) Direktzugriff auf Attribute aus anderer Klasse -1 Aufgabenstellung genau beachten! Weitere Zusatzfunktionalitäten möglich, etwa automatische Bestellnummernvergabe, … Keine Abzüge für zusätzliche Funktionalität 2