Shopping Cart Programm. Verstehe einige Zusammenhänge nicht

A

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
 
A

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
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
G While/If Programm Java Basics - Anfänger-Themen 2
G Java-Programm Terminal Java Basics - Anfänger-Themen 2
Dimax Java Programm mit exec starten Java Basics - Anfänger-Themen 5
I Java Programm sieht wie exe aus. Java Basics - Anfänger-Themen 3
J Programm vereinfachen Java Basics - Anfänger-Themen 5
G Java-Programm weitergeben Java Basics - Anfänger-Themen 14
Kirby_Sike Programm startet nachdem es compiled wurde nicht Java Basics - Anfänger-Themen 17
T Programm effizienter gestalten Java Basics - Anfänger-Themen 17
M Ein Programm erweitern, wie? Java Basics - Anfänger-Themen 3
J Fehler in Programm: Index -1 out of bounds for length 0 Java Basics - Anfänger-Themen 5
M Programm per Nutzereingabe ändern Java Basics - Anfänger-Themen 3
G Programm mit Schleife funktioniert nicht Java Basics - Anfänger-Themen 5
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
G Dezimal zu Binärcode Programm Java Basics - Anfänger-Themen 9
G Programm schreiben: Zahl (n) eingeben, 1+1/n+2/n+3/n+....+n/n Java Basics - Anfänger-Themen 8
M Problem mit meinem Programm Java Basics - Anfänger-Themen 6
L Wie teilt man ein Programm in vernünftige Klassen ein? Java Basics - Anfänger-Themen 10
R Compiler-Fehler HalloWelt-Programm korrekt abgeschrieben, trotzdem Fehlermeldungen Java Basics - Anfänger-Themen 2
W Hilfe beim Chat Programm Java Basics - Anfänger-Themen 14
A Java-Programm läuft bei installierter JDK aber nicht mit JRE? Java Basics - Anfänger-Themen 5
J Mein Programm beendet sich ohne mein Zutun Java Basics - Anfänger-Themen 9
I Datei in Programm speichern Java Basics - Anfänger-Themen 3
H Programm compilieren Java Basics - Anfänger-Themen 10
W Java Programm mit API Anbindung Java Basics - Anfänger-Themen 2
D Java Programm mit JavaScript einbinden Java Basics - Anfänger-Themen 8
O Erstes Programm: Matrizen Multiplikation Java Basics - Anfänger-Themen 10
K Programm ausführen Java Basics - Anfänger-Themen 2
X Java Programm MacOS Java Basics - Anfänger-Themen 1
O Programm verstehen :D Java Basics - Anfänger-Themen 4
A Programm in Konsole Java Basics - Anfänger-Themen 4
S Programm als Daemon ausfuehren - wie rufe ich es auf..? Java Basics - Anfänger-Themen 3
A Wie gebe ich bei android eine string im programm aus? Java Basics - Anfänger-Themen 4
A Erklärung Programm zur Kreisberechnung Java Basics - Anfänger-Themen 43
L Fehler im Programm bei Ausgabe Java Basics - Anfänger-Themen 21
F Array-Programm Java Basics - Anfänger-Themen 10
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
V Vererbung Eclipse startet das Programm nicht und rechnet nicht Java Basics - Anfänger-Themen 6
R Primzahlen Zähler Programm / Benachbarte Primzahlen Java Basics - Anfänger-Themen 30
N Verbesserungsvorschläge zu Wegfinder Programm Java Basics - Anfänger-Themen 26
D Warum gibt mir das Programm nicht den Array invertiert an ? Java Basics - Anfänger-Themen 1
J Zugriff auf Variable in anderem Programm Java Basics - Anfänger-Themen 5
L Programm lässt sich nicht starten! Java Basics - Anfänger-Themen 1
Z Montageberechnungs programm, finde leider den Fehler nicht Java Basics - Anfänger-Themen 13
J Mehrere paintComponenten in einem Programm Java Basics - Anfänger-Themen 0
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
B Tic Tac Toe - Programm Java Basics - Anfänger-Themen 2
N BitFlags Programm (switch on/off , swap und isSet) Java Basics - Anfänger-Themen 7
T Woher nimmt das Programm die Variablenwerte???? Java Basics - Anfänger-Themen 2
Hanschyo Programm schließt sich einfach Java Basics - Anfänger-Themen 2
T Brauche Hilfe um ein Programm zu verstehe Java Basics - Anfänger-Themen 4
L Programm zur Codieren nach Rotx Java Basics - Anfänger-Themen 1
x-tshainge Mein Programm lässt sich nicht Starten Java Basics - Anfänger-Themen 8
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
M Programm, das ein Wort einliest Java Basics - Anfänger-Themen 3
W Warum läuft mein Programm nicht? Java Basics - Anfänger-Themen 14
D Auswahl und Ausgabe erstes Programm Java Basics - Anfänger-Themen 8
x-tshainge Schleife für ein Würfel Programm Java Basics - Anfänger-Themen 2
N Passwort Anfrage vor Programm start Java Basics - Anfänger-Themen 1
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
I Programm tut nicht was es soll :) Java Basics - Anfänger-Themen 5
B Programm erwartungswert Java Basics - Anfänger-Themen 16
F Java Programm schließen Java Basics - Anfänger-Themen 1
M Java Methode editierbar machen im Programm Java Basics - Anfänger-Themen 62
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 12
B Mit Java anderes Java Programm starten Java Basics - Anfänger-Themen 3
A Kann mir jemand dieses Programm erklären? Java Basics - Anfänger-Themen 1
J Java Programm Java Basics - Anfänger-Themen 29
C Programm dreht extra Schleife, warum? Java Basics - Anfänger-Themen 6
K Armstrong Programm geht nur bis 1000, aber nicht weiter Java Basics - Anfänger-Themen 2
B Java Eclipse Programm in einer Batch ausführen Java Basics - Anfänger-Themen 3
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 6
P SystemTray: Programm sol im Hintergrund weiter laufen Java Basics - Anfänger-Themen 30
P Sägezahn Muster Programm Java Basics - Anfänger-Themen 2
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
W Erste Schritte Warum funktioniert mein Programm nicht ? ~if Anweisung~ Java Basics - Anfänger-Themen 4
S Bestehendes Java Programm, einen festen Wert ändern Java Basics - Anfänger-Themen 17
T Input/Output Programm terminiert nicht -> stürzt ab, wo Fehler? Java Basics - Anfänger-Themen 3
J Programm von A - Z; Kostenrechnung eines Werkstückes Java Basics - Anfänger-Themen 21
DaCrazyJavaExpert Threads Klicks pro Sekunde parallel zum Programm bekommen Java Basics - Anfänger-Themen 5
F Erste Schritte Programm wird nicht geladen Java Basics - Anfänger-Themen 2
L Java Zip-Programm Java Basics - Anfänger-Themen 16
A Erste Schritte Mein Programm erkennt die variable EinAus.readInt nicht Java Basics - Anfänger-Themen 15
das_leon Gesamtes Programm in einem Fenster Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Anzeige

Neue Themen


Oben