Hallo, laut der gegebenen main-Methode wird in diesem Shopping Cart Programm ein Konstruktor "addItem" der Klasse ShoppingCart aufgerufen. Diese Methode hat in der Klasse ShoppingCart aber nur 3 Parameter. Übergeben wird in der main-Methode aber ein Objekt "Grocery" mit 5 Variablen. Wie kann man nun mit den übrigen 2 Parametern arbeiten?
Es lässt sich nur mit "toAdd.pid" "toAdd.signifier" und toAdd.PricePerUnit" arbeiten, aber ich brauche die anderen 2 Variablen auch noch, um sie im Array "Item[] cart = new Item" zu speichern.
Außerdem stellt sich mir die Frage mit welchen Add-Methoden ich was genau machen soll. Es gibt in Grocery, Article und ShoppingCart eine Add-Methode.
In der Aufgabe steht:
Bei den Methoden addItem und removeItem ist darauf zu achten dass jede der vier möglichen Waren (Butter, Milch, Draht, Fliesen) als Objekt nur einmal im Warenkorb liegt. Das Hinzufügen bzw. Entfernen erfolgt über die Manipulation der Mengenangabe (Instanzvariable). Nutzen Sie dazu die überschriebenen Methoden von Item indem Sie Objekte der Klassen Grocery/Article instanziieren die jeweils die Mengen enthalten welche hinzugefügt/entfernt werden sollen. Diese Objekte übergeben Sie anschließend der Methode Item.addItem(..) / removeItem(..) (Polymorphismus).
main-Methode
Klasse ShoppingCart
Klasse Item
public class Grocery extends Item{
static int packetCount=0;
static 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) {
}
public void removeItem(Item toRemove) {
-toRemove.
}
public String getUnit() {
return Pck;
}
public boolean isEmpty() {
}
public float getPrice(int menge, int pricePerUnit) {
return menge*pricePerUnit;
}
public float getPrice() {
return
}
public String toString() {
return
}
}
Klasse Grocery
Klasse Article
Es lässt sich nur mit "toAdd.pid" "toAdd.signifier" und toAdd.PricePerUnit" arbeiten, aber ich brauche die anderen 2 Variablen auch noch, um sie im Array "Item[] cart = new Item" zu speichern.
Außerdem stellt sich mir die Frage mit welchen Add-Methoden ich was genau machen soll. Es gibt in Grocery, Article und ShoppingCart eine Add-Methode.
In der Aufgabe steht:
Bei den Methoden addItem und removeItem ist darauf zu achten dass jede der vier möglichen Waren (Butter, Milch, Draht, Fliesen) als Objekt nur einmal im Warenkorb liegt. Das Hinzufügen bzw. Entfernen erfolgt über die Manipulation der Mengenangabe (Instanzvariable). Nutzen Sie dazu die überschriebenen Methoden von Item indem Sie Objekte der Klassen Grocery/Article instanziieren die jeweils die Mengen enthalten welche hinzugefügt/entfernt werden sollen. Diese Objekte übergeben Sie anschließend der Methode Item.addItem(..) / removeItem(..) (Polymorphismus).
main-Methode
Code:
public class ShoppingMall {
public static void main(String[] args){
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Ihr digitaler Warenkorb:");
boolean loop = true;
int item = 0;
String action = "";
int pckg;
float amount = 0.0f;
ShoppingCart basket = new ShoppingCart();
while (loop) {
System.out.println("\nWelcher Artikel soll bearbeitet werden");
System.out.println("------------------------------");
System.out.println("1 Butter");
System.out.println("2 Milch");
System.out.println("3 Draht");
System.out.println("4 Fliesen");
System.out.println("\nSie haben den Einkauf abgeschlossen?\nWaehlen Sie zwischen: ");
System.out.println("------------------------------");
System.out.println("5 Warenkorb ausgeben");
System.out.println("0 Exit\n");
System.out.print("Ihre Eingabe bitte: ");
try{
item = Integer.valueOf(input.readLine());
if((item < 5) && (item > 0))
{
//System.out.println("\n------------------------------");
do{
System.out.print("Waehlen Sie + fuer hinzufuegen oder - fuer entfernen. ");
action = input.readLine();
}while(!action.equals("+") && !action.equals("-"));
}
//if(action.equals("+") || action.equals("-"))
//{
switch (item) {
case 1: {
System.out.print("Wieviele Packungen Butter ? ");
pckg = Integer.valueOf(input.readLine());
Grocery groc = new Grocery(1,"Butter",1.59f,20180618,pckg);
if(action.equals("+"))
basket.addItem(groc);
else
basket.removeItem(groc);
break;
}
case 2: {
System.out.print("Wieviele Packungen Milch ? ");
pckg = Integer.valueOf(input.readLine());
Grocery groc = new Grocery(2,"Milch",1.09f,20180618,pckg);
if(action.equals("+"))
basket.addItem(groc);
else
basket.removeItem(groc);
break;
}
case 3: {
System.out.print("Wieviele laufende Meter (lfdm) Draht? ");
amount = Float.valueOf(input.readLine());
Article art = new Article(3,"Draht",0.36f,"lfdm",amount);
if(action.equals("+"))
basket.addItem(art);
else
basket.removeItem(art);
break;
}
case 4: {
System.out.print("Wieviele Quadratmeter (qm) Fliesen ? ");
amount = Float.valueOf(input.readLine());
Article art = new Article(4,"Fliesen",20.00f,"qm",amount);
if(action.equals("+"))
basket.addItem(art);
else
basket.removeItem(art);
break;
}
case 5: {
System.out.println("\nIn Ihrem Warenkorb befindet sich:\n");
System.out.println("Artikel Menge Preis/Einheit Preis");
System.out.println("----------------------------------------------------------");
System.out.println(basket);
System.out.print("\nWeiter mit beliebiger Taste!");
input.readLine();
break;
}
case 0: {
loop = false;
System.out.println("\nProgramm beendet");
break;
}
default:
System.out.println("Ihre Eingabe wurde nicht erkannt!\n");
}
//}
//else
// System.out.println("Ihre Eingabe wurde nicht erkannt!\n");
}
catch(Exception e){
System.out.println("\nFalsche Eingabe:\nLebensmittel werden nur in ganzen Packungen abgegeben!\n"
+ "Non- Food Produkte auch in Bruchteilen der jeweiligen Einheit\n"
+ "Geben sie eine ganze Zahl bei Lebensmitteln ein oder eine \n"
+ "Gleitpunktzahl bei Non- Food Produkten.");
}
}
}
}
Klasse ShoppingCart
Code:
public class ShoppingCart {
public static Item[] cart;
int temporary;
private int capacity;
public ShoppingCart() {
}
public void addItem(Grocery toAdd) {
cart[0]=new Grocery(toAdd.pid, toAdd.signifier, toAdd.pricePerUnit, toAdd.expiryDate, toAdd.packetCount);
if(toAdd instanceof Grocery) {
if(toAdd.pid==1) {
toAdd.
cart[0]=new Grocery(toAdd.pid, toAdd.signifier, toAdd.pricePerUnit);
System.out.println(cart[0]);
}
if(toAdd.pid==2) {
}
}
if(toAdd.pid==3) {
}
if(toAdd.pid==4) {
}
}
public void removeItem(Item toRemove) {
//Waren entfernen/Menge reduzieren
}
Klasse Item
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();
}
public class Grocery extends Item{
static int packetCount=0;
static 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) {
}
public void removeItem(Item toRemove) {
-toRemove.
}
public String getUnit() {
return Pck;
}
public boolean isEmpty() {
}
public float getPrice(int menge, int pricePerUnit) {
return menge*pricePerUnit;
}
public float getPrice() {
return
}
public String toString() {
return
}
}
Klasse Grocery
Code:
public class Grocery extends Item{
static int packetCount=0;
static 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) {
}
public void removeItem(Item toRemove) {
-toRemove.
}
public String getUnit() {
return Pck;
}
public boolean isEmpty() {
}
public float getPrice(int menge, int pricePerUnit) {
return menge*pricePerUnit;
}
public float getPrice() {
return
}
public String toString() {
return
}
}
Klasse Article
Code:
ublic 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;
}
}