Shopping Cart Programm. Verstehe einige Zusammenhänge nicht

Alpinwhite

Aktives Mitglied
Hallo, für ein Shopping Cart Programm habe ich die Klassen "Article", "Grocery", "ShoppingCart" und "Item", sowie die main-methode "ShoppingMall". Dort wird ein Objekt der Klasse ShoppingCart übergeben, sodass dort in der Methode "toAdd" die jeweilige Menge hinzugefügt werden kann.
Welchen Nutzen dann haben die Methoden "toAdd" in Grocery und Article?? Ich habe Grundgerüst nach der Angabe aufgebaut wie es sein soll, nur einigie Methoden sind noch nicht ausgefüllt.

Code:
{
public class Article extends Item {

    float draht;
    float fließen;
    String unit;
    float amount;
 
Article(){}

Article(int pid, String signif, float pricePerUnit, String unit, float amount){
    super(pid, signif, pricePerUnit);
    this.unit=unit;
    this.amount=amount;
}

public void addItem(Item toAdd) {

}


public void removeItem(Item toRemove) {
 
}

public String getUnit() {
 
}

public boolean isEmpty() {
 
}

public float getPrice(int menge, int pricePerUnit) {
    return menge*pricePerUnit;
}

}

Code:
public class Grocery extends Item{

    int butter=0;
    int milch=0;
    int packetCount=0;
    int expiryDate=0;
    int amount;
    String  pck;
Grocery(){}

Grocery(int pid,String signifier,float pricePerUnit,int expiryDate,int packetCount){
    super(pid, signifier, pricePerUnit);
    this.expiryDate=expiryDate;
    this.packetCount=packetCount;
}

int getPacketCount() {
    return this.packetCount;
}
int getExpiryDate() {
    return this.expiryDate;
}
void setPacketCount(int packet) {
    this.packetCount=packet;
}

public void addItem(Item toAdd) {
pid=toAdd.pid;
signifier=toAdd.signifier;
pricePerUnit=toAdd.pricePerUnit;
this.expiryDate=toAdd.expiryDate;
}

Code:
public abstract class Item {

    protected int pid; //eindeutige Produktkennzeichnung
    protected String signifier; //Name des Produkts, z.B. Butter
    protected float pricePerUnit; //Preis pro Einheit
 
    Item(){}
 
    Item(int pid, String signifier, float pricePerUnit){
        this.pid=pid;
        this.signifier=signifier;
        this.pricePerUnit=pricePerUnit;
    }
 
 
 
    int getPid() {
        return this.pid;
    }
    String getSignifier() {
        return this.signifier;
    }
    float getPricePerUnit() {
        return pricePerUnit;
    }
    void setPricePerUnit(int newprice) {
        this.pricePerUnit=newprice;
    }
 
    public String toString() {
        return "This is the Base Class";
    }
 
    abstract public void addItem(Item toAdd);
    abstract public void removeItem(Item toRemove);
    abstract public String getUnit();
    abstract public boolean isEmpty();
    abstract public float getPrice();
}

Code:
public class ShoppingCart {

    public String[] cart = new String[3];
 
    public ShoppingCart() {
    
    }
 
     public void addItem(Item toAdd) {
     
         //Waren hinzufügen bzw. Menge erhöhen
     }
     public void removeItem(Item toRemove) {
         //Waren entfernen/Menge reduzieren
     }
 
     public String toString() {
         return //gibt den Warenkorb als String zurück
     }
 
}

Die Angabe nur der Vollständigkeit halber (vorsicht viel Text)

In diesem Beispiel modellieren Sie einen einfachen digitalen Warenkorb ( Klasse ShoppingCart ) eines Online Händlers ( Klasse ShoppingMall ). Der Online Händler vertreibt, der Einfachheit wegen, nur vier verschiedene Artikel die sich in zwei Gruppen aufteilen lassen. 1. Zwei Lebensmittel (Klasse Grocery) nämlich Butter und Milch, diese werden nur in ganzen Packungen verkauft. 2. Zwei „Waren“ ohne Verfallsdatum (Klasse Article), dies sind Draht und Fliesen. Der Draht wird per laufendem Meter ( „lfdm“ ) verkauft wobei auch Bruchteile eines „lfdm“ erhältlich sind. Die Fliesen werden pro Quadratmeter („qm“) verkauft erhältlich in Bruchteilen von „qm“. Die Klassen Article und Grocery enthalten die vom Kunden gewünschte Menge in Grocery dargestellt durch eine Ganzzahl (int) in Article durch eine Gleitkommazahl (float). Um die gekauften Waren in einem Array bzw. „Container“ speichern zu können und bei der Rechnungserstellung bzw. der Ausgabe des Warenkorbes alle Waren gleich behandeln zu können müssen alle Waren- Klassen (Article und Grocery) die gleiche Schnittstelle (Interface) zur Verfügung stellen. Dies wird erreicht durch eine Basis Klasse (Klasse Item) von der sowohl Grocery als auch Article erben. Von der Basisklasse Item sollen keine Objekte instanziiert werden können, sie dient dazu das benötigte „Interface“ zu erzwingen und Grundfunktionalität aller Waren zu implementieren. Da lediglich vier Waren im Angebot sind benötigt ShoppingCart ein Array der Länge vier um die Produkte zu speichern. Funktionalität der abstrakten Klasse Item: Die Klasse Item ist die Basisklasse aller angebotenen Waren, da sie „nicht vollständig“ ist soll kein Objekt der Klasse Item instanziiert werden können. Dies wird erreicht durch das Schlüsselwort abstract bei der Klassendefinition:
public abstract class Item .
Die Klasse erhält folgende Instanzvariablen:  protected int pid // eindeutige Produktkennzeichnung  protected String signifier // der Name des Produkts, zBsp. „Butter“  protected float pricePerUnit // Preis pro Einheit

Konstruktor der Klasse Item:  Item(int pid, String signifier, float pricePerUnit) Methoden der Klasse Item:  Implementieren Sie für jede der Instanz Variablen eine getter- Methode.  Nur der Preis soll nach dem Instanziieren eines Objekts veränderbar sein. Implementieren Sie die nötige setter- Methode  Implementieren Sie folgende Methode: public String toString(){ return “This is the Base Class“; }  Zusätzlich erhält die Klasse abstrakte Methoden die lediglich deklariert werden aber nicht definiert, das heißt sie werden in Item nicht implementiert. Deklarieren Sie folgende abstrakte Methoden: abstact public void addItem(Item toAdd); abstact public void removeItem(Item toRemove); abstact public String getUnit(); abstact public boolean isEmpty(); abstact public float getPrice(); addItem(Item toAdd): erhöht die Warenmenge in this um die in toAdd gespeicherte Menge; removeItem(Item toRemove): entnimmt aus this die in toRemove gespeicherte Warenmenge; getUnit(): gibt die Einheit in der die Ware verkauft wir zurück, zBsp: „Pkg“, „qm“, „lfdm“; isEmpty(): gibt „true“ zurück wenn die Warenmenge auf 0 gefallen ist; getPrice(): gibt den Gesamtpreis zurück (= Menge * pricePerUnit ); Funktionalität der Klasse Grocery: Die Klasse Grocery modelliert Lebensmittel. Lebensmittel sind Waren die im Warenkorb gespeichert werden, Grocery erbt also von Item. Zusätzlich haben Lebensmittel ein Ablaufdatum (expiry Date) und werden nur in Packungen verkauft, Bruchteile von Packungen sind nicht erhältlich. Damit benötigt die Klasse Grocery eine ganzzahlige Instanzvariable für die Anzahl der gekauften/gewünschten Packungen (packetCount) und eine Instanz Variable für das Ablaufdatum mit dem Format „yyyymmdd“, zum Beispiel 20180618 für den 18. Juni 2018, also eine ganzzahlige Variable mit dem Bezeichner expiryDate. Eines der grundlegenden Konzepte der OOP ist die Datenkapselung, das heißt beschränken Sie den Zugriff auf die Instanvariablen so stark wie möglich über die Zugriffsmodifizierer. Methoden der Klasse Grocery:  Implementieren Sie einen Konstruktor der alle Instanzvariablen als Parameter übernimmt und als erstes den Konstruktor der Basisklasse aufruft. Grocery(int pid,String signifier,float pricePerUnit,int expiryDate,int count)  Implementieren Sie getter Methoden für die beiden zusätzlichen Instanzvariablen.  Nur die Anzahl der Packete soll änderbar sein, das Ablaufdatum sollte nicht mehr geändert werden dürfen. Implementieren sie die setter Methode.

Da es von Grocery Objekte geben soll und Grocery von Item erbt müssen alle abstrakten Methoden von Item in Grocery definiert bzw. implementiert werden (ohne das Schlüsselwort abstract).  Überschreiben Sie die Methode public String toString() von Item in Grocery. Der zurückgegeben String soll beispielhaft folgendes Format haben: „Butter 12 Pck 1.59/Pck 19,08“ Hinweise zu den Methoden von Grocery:  Die Methode getUnit() gibt den String „Pck“ zurück, da Lebensmittel nur päckchenweise verkauft werden.  Beim Hinzufügen von Waren über addItem(Item toAdd) müssen natürlich pid von toAdd und this übereinstimmen. Sinnvoll ist es zuerst zu überprüfen ob this und toAdd Instanzen der selben Klasse sind ( instanceof ) um anschließend einen “downcast“ durchführen zu können. Gleiches gilt beim Entfernen von Waren über removeItem(Item toRemove)  Bei der Instanz Variablen packetCount ist darauf zu achten dass diese niemals negative Werte annehmen darf. Es können natürlich maximal so viele Päckchen dem Warenkorb entnommen werden wie im Warenkorb bereits vorhanden sind. Wird versucht mehr zu entnehmen sinkt der packetCount auf 0. Funktionalität der Klasse Article: Die Klasse Article modelliert Waren ohne Verfallsdatum die in beliebigen Bruchteilen einer Einheit, zum Beispiel Quadratmeter („qm“), verkauft werden. Entsprechend der Klasse Grocery erbt auch Article von Item. Allerdings benötigt Article andere zusätzliche Instanzvariablen als Grocery. Das sind ein String, Bezeichner unit, für die Einheit in der die Ware verkauft wird ( zum Beispiel „qm“, „lfdm“) und eine Gleitkommazahl, Bezeichner amount, für die Menge der Ware. Analog zu Grocery beschränken Sie den Zugriff auf die Instanzvariablen soweit als möglich. Methoden der Klasse Article: Implementieren Sie die Methoden der Klasse Article analog zur Klasse Grocery. Natürlich müssen Sie die Methoden an die geänderten Instanz Variablen anpassen. Der Konstruktor erhält folgende Signatur: Article(int pid, String signif, float pricePerUnit, String unit, float amount

Funktionalität der Klasse ShoppingCart: Die Klasse ShoppingCart modelliert den Warenkorb in den Waren vom Typ Grocery und/oder Article hinzugefügt oder auch wieder entfernt werden können. Da der Online Händler nur vier Waren anbietet ist ein Array von Objekten der Klasse Item mit Länge 4 (= Instanzvariable) ausreichend als Datenspeicher des Warenkorbs. Der Bezeichner des Arrays muss cart lauten, ansonsten wird der automatisierte Test nicht bestanden! Methoden der Klasse ShoppingCart: public ShoppingCart() //Default- Konstruktor public void addItem(Item toAdd) //Waren hinzufügen bzw. Menge erhöhen public void removeItem(Item toRemove) //Waren entfernen/Menge reduzieren public String toString() //gibt den Warenkorb als String zurück
 

AndiE

Top Contributor
Erstmal ist in der Klasse ShoppingCart ein Fehler drin:

Item[] cart= new Item[4];

Das heißt, du musst die Produkte den vier Platzen in diesem Array zuordnen.

Von der Idee her würde ich die Sache mal als Schreibtischtest durchführen, um mal zu sehen, wie das Programm funktionieren soll. Überlege dir einfach, was geschehen soll und was geschieht, wenn du Butter, Milch, Draht oder Fliesen in den Korb legst und entnimmst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Delay erzeugen, ohne Programm zu blockieren Java Basics - Anfänger-Themen 7
Ü Dead Code im Programm? Java Basics - Anfänger-Themen 13
M Java Mail Programm Java Basics - Anfänger-Themen 4
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
M Mini Jar-Programm Java Basics - Anfänger-Themen 51
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
M Das Programm stellt nichts dar Java Basics - Anfänger-Themen 2
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
Z Programm Ideen Java Basics - Anfänger-Themen 8
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
T Programm stürzt ab Java Basics - Anfänger-Themen 40
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
D Java Programm mit Batch-Datei starten Java Basics - Anfänger-Themen 32
Jul1n4tor Programm mit Scanner und If-Statements Java Basics - Anfänger-Themen 2
D Wie sehe ich ein Java-Programm? Java Basics - Anfänger-Themen 27
K Ist das Programm schlecht bzw. schlampig programmiert ? Java Basics - Anfänger-Themen 9
Zrebna Kann Java Programm nicht in Konsole ausführen Java Basics - Anfänger-Themen 1
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
M Von Eclipse zum richtigen Programm Java Basics - Anfänger-Themen 1
nbergmann IntelliJ: Wie lade ich ein fertiges Programm aus dem Lehrbuch? Java Basics - Anfänger-Themen 26
D Anfängerfrage zu meinem Programm. Java Basics - Anfänger-Themen 15
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 22
I Jetty starten von Programm (Main) Java Basics - Anfänger-Themen 27
Kydo Programm Beschreibung Java Basics - Anfänger-Themen 3
nbergmann Eclipse: Lehrbuch-Programm startet nicht Java Basics - Anfänger-Themen 7
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
D JAVA Programm schreiben Java Basics - Anfänger-Themen 46
P exportiertes Programm funktioniert nur teilweise Java Basics - Anfänger-Themen 7
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Wo hält das Programm an? Java Basics - Anfänger-Themen 11
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
Fugover Programm funktioniert nicht Java Basics - Anfänger-Themen 11
Fugover Kopfrechnen-Programm Java Basics - Anfänger-Themen 6
NadimArazi Wie kann ich eine collision detection für die Paddles in meinem Pong Programm hinzufügen? Java Basics - Anfänger-Themen 4
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
J selbst erstellte Datei mit Programm öffnen Java Basics - Anfänger-Themen 10
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
A wie kann ich es in meinem Programm rein tun Java Basics - Anfänger-Themen 8
S Fehler beim Programm Java Basics - Anfänger-Themen 2
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
F Kann mir jemand kurz dieses Programm erklären? Java Basics - Anfänger-Themen 22
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
J Kann ich mein Programm so schreiben? Java Basics - Anfänger-Themen 4
A Lotto Programm Java Basics - Anfänger-Themen 3
S Programm erstellen Java Basics - Anfänger-Themen 3
A Verarbeiten einer Excel Datei durch das java-Programm Java Basics - Anfänger-Themen 3
S MinMax Programm erstellen Java Basics - Anfänger-Themen 4
J Interpreter-Fehler Programm gibt nicht gewünschtes Ergebnis aus Java Basics - Anfänger-Themen 11
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129
B Java Programm soll mit Python kommunizeren Java Basics - Anfänger-Themen 1
SpigBin Programm läuft nicht weiter... Java Basics - Anfänger-Themen 10
M JAVA Programm in Website einbinden Java Basics - Anfänger-Themen 19
B Programm, dass alle 3 Tage eine Webseite öffnet? Java Basics - Anfänger-Themen 20
B Programm beendet sich nicht und weiteres seltsames Verhalten Java Basics - Anfänger-Themen 9
N Eclipse Programm normal ausführen Java Basics - Anfänger-Themen 1
D Programm auf Enter warten lassen Java Basics - Anfänger-Themen 2
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
OSchriever Jar-Programm läuft auf Windows aber nicht auf Linux(Raspberri Pi4) Java Basics - Anfänger-Themen 22
G Programm Code Java Basics - Anfänger-Themen 5
CptK Achsenskalierung in Koordinatensystem hängt Programm auf Java Basics - Anfänger-Themen 5
H Kann eine while-Schleife ein Programm blockieren? Java Basics - Anfänger-Themen 8
TimoN11 Mail Programm mit Java? Java Basics - Anfänger-Themen 1
Sajeel Chattha Dieses Programm umschreiben Java Basics - Anfänger-Themen 5
J Programm beenden ohne System.exit() oder Runtime.exit() Java Basics - Anfänger-Themen 5
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
A Programm Histogram Java Basics - Anfänger-Themen 2
C Was ist nötig für ein Java-Programm auf Server für Website Java Basics - Anfänger-Themen 18
CT9288 Interaktion mit laufendem Programm -Fachbegriffe Java Basics - Anfänger-Themen 2
Gaudimagspam Assertions im Programm hinzufügen Java Basics - Anfänger-Themen 4
G Weiß jemand wie man dieses Programm schreibt? Java Basics - Anfänger-Themen 84
C Programm ausführen ohne JRE? Java Basics - Anfänger-Themen 3
justemii Gehalt berechnen - Aufgabe Java-Programm Java Basics - Anfänger-Themen 9
N Best Practice How can I creat a programm with java under windows 10 in order to open an spreadsheet in libreoffice calc format Java Basics - Anfänger-Themen 11
W Programm dass Palindrome erkennt Java Basics - Anfänger-Themen 6
K Erste Schritte Programm geht aus Schleife, warum? Java Basics - Anfänger-Themen 2
P Wie für EIN Java Programm von 64bit Java (=Standard) auf 32bit Java Installation (Windows) umschalten? Java Basics - Anfänger-Themen 6
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
X Kurzes Java-Programm, das sich komisch verhält Java Basics - Anfänger-Themen 6
Zrebna Programm kann aus der Konsole nicht gestartet werden (in der IDE läuft es) Java Basics - Anfänger-Themen 2
K Error bei meinem Programm - Hilfe Java Basics - Anfänger-Themen 8
J Programm schreiben Java Basics - Anfänger-Themen 5
T Kann jemand kurz das Programm testen? Java Basics - Anfänger-Themen 13
T Programm Schleife/if Java Basics - Anfänger-Themen 2
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben