Übungsaufgabe Online Shop

pg1337

Bekanntes Mitglied
Huhu,

hab ne Übungsaufgabe gefunden und hätte da ne Frage:

Es wird ein System für einen Online Shop benötigt. Der Laden verkauft Artikel wie Fernseher, DVD Player, Laptops. Jeder Artikel hat eine Beschreibung, einen Preis und eine Kategorie. Der Online Shop braucht einen "Einkaufswagen", zu dem die Artikel zum späteren Checkout hinzugefügt werden können. Der Einkaufswagen erstellt eine Bestellung. Aus der Bestellung kann man den gesamten Preis berechnen. Der Preis wird wie folgt berechnet: Die Summe von allen Artikeln der Bestellung plus die Lieferung. Es gibt drei Arten von Lieferungen: Schnelle-, Overnight- und Standard-Lieferung. Die Standard-Lieferung kostet €3. Die Schnelle-Lieferung addiert 3% zu dem gesamten Preis der Artikel und die Overnight-Lieferung ein 5%.


Habe bis jetzt mir 3 Klassen erstellt. Sieht wie folgt aus:

Java:
public class Artikel{

	String beschreibung;
	double preis;
	String kategorie;
	

	public Artikel(String beschreibung, double preis, String kategorie)
	{
		this.beschreibung= beschreibung;
		this.preis=preis;
		this.kategorie= kategorie;
		
	}

	public String getBeschreibung() {
		return beschreibung;
	}


	public void setBeschreibung(String beschreibung) {
		this.beschreibung = beschreibung;
	}

	
	public double getPreis() {
		return preis;
	}

	
	public void setPreis(double preis) {
		this.preis = preis;
	}


	public String getKategorie() {
		return kategorie;
	}


	public void setKategorie(String kategorie) {
		this.kategorie = kategorie;
	}
	
	public double standardLieferung(){
		
		preis= preis+3;
		return preis;
	}
	
	public double schnelleLieferung() {
		
		preis= preis*1.03;
		return preis;
	}
	
	public double overnightLieferung() {
		
		preis= preis*1.05;
		return preis;
	}
	
	
}

Java:
public class Test {
	
	

	public static void main(String[] args)
	{
		
		double endbestellung;
		
		Artikel laptop= new Artikel("Neu", 500,"5");
		Artikel dvdPlayer= new Artikel(null, 0, null);
		Artikel fernseher= new Artikel(null, 0, null);
		Einkaufswagen bestellung= new Einkaufswagen();
		
		endbestellung= laptop.standardLieferung()+dvdPlayer.standardLieferung()+fernseher.standardLieferung();
		
		System.out.println(bestellung.getEndbestellung());
		
//		
//		laptop.standardLieferung();
//		dvdPlayer.schnelleLieferung();
	
		
	
	}
	
	
	
}

Und zu guter letzt:
Java:
public class Einkaufswagen{
	
	double endbestellung;

	
	public double getEndbestellung() {
		return endbestellung;
	}

	public void setEndbestellung(double endbestellung) {
		this.endbestellung = endbestellung;
	}


}


Nun weiss ich nicht genau wie ich weiter machen soll.. mehr Objekte erstellen?:(
Soll nur eine Main-Methode geben-

Regards :)
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
du sollst nicht (nur) in Bahnen von 'Objekte erstellen, Klassen schreiben' denken,
sondern zunächst einmal über die Aufgabe und die konkrete fachliche Arbeit nachdenken,
was fehlt denn noch, was ist zu tun, was soll im Programm noch passieren?

meiner Ansicht nach bist du sogar schon im Grundablauf fertig,
ein Endpreis wird berechnung und ausgegeben, mehr steht doch gar nicht in der Aufgabe?
ok, Auswahl der Lieferungsart usw. wäre wohl nicht schlecht, da ist die Aufgabe schwammig, nun ja,
mehr Objekte in der main in einem zweiten Einkaufswagen wäre durchaus interessant als Test

vorerst:
wiederum bezogen auf die Klassen ist dir aber ein schwerer Fehler in der Umsetzung unterlaufen,
die Klasse Einkaufswagen wird bisher fast nicht genutzt bzw. für das wenige (ein double-Wert)
auch noch falsch, im Einkaufswagen steht nur 0, der berechnete endbestellung-double aus der main wird dagegen nicht ausgegeben

wichtig ist dass du die einfache Anforderung, die Artikel in den Einkaufswagen zu legen, auch umsetzt,
dort muss es eine Liste von Artikeln geben oder ähnliches,
auch die Berechnung muss unbedingt in diese Klasse und darf sich nicht statisch auf drei einzelne Artikel beziehen,
sondern muss mit der internen Liste mit beliebiger Befüllung funktionieren, Schleifenverarbeitung!
 

pg1337

Bekanntes Mitglied
Was soll ich denn in die Klasse Einkaufswagen reinschreiben?

kann ja von da aus schlecht auf das Objekt bestellung zugreifen?
 
G

Gast2

Gast
Naja, zumindest ne Methode
Code:
addArtikel(Artikel artikel)
braucht der Einkaufswagen, du willst ja was reinlegen.
Den Endpreis der Bestellung kann dann z.b. der Einkaufswagen ausrechnet, weil der ja weiß was alles in ihm drin liegt.

EDIT:
In der main() sollte der Code dann ungefähr so ausschauen:
Java:
Artikel laptop= new Artikel("Neu", 500,"5");
Artikel dvdPlayer= new Artikel(null, 0, null);
Artikel fernseher= new Artikel(null, 0, null);

Einkaufswagen einkaufswagen = new Einkaufswagen();
einkaufswagen.addArtikel(laptop);
einkaufswagen.addArtikel(dvdPlayer);
einkaufswagen.addArtikel(fernseher);

System.out.println("Der Bestellwert beträgt: " + einkaufswagen.getBestellwert());
 
Zuletzt bearbeitet von einem Moderator:

pg1337

Bekanntes Mitglied
Naja, zumindest ne Methode
Code:
addArtikel(Artikel artikel)
braucht der Einkaufswagen, du willst ja was reinlegen.
Den Endpreis der Bestellung kann dann z.b. der Einkaufswagen ausrechnet, weil der ja weiß was alles in ihm drin liegt.

EDIT:
In der main() sollte der Code dann ungefähr so ausschauen:
Java:
Artikel laptop= new Artikel("Neu", 500,"5");
Artikel dvdPlayer= new Artikel(null, 0, null);
Artikel fernseher= new Artikel(null, 0, null);

Einkaufswagen einkaufswagen = new Einkaufswagen();
einkaufswagen.addArtikel(laptop);
einkaufswagen.addArtikel(dvdPlayer);
einkaufswagen.addArtikel(fernseher);

System.out.println("Der Bestellwert beträgt: " + einkaufswagen.getBestellwert());

Das hört sich schonmal gut an, nur was soll ich in der addArtikel Methode schreiben:

Java:
 public void addArtikel(Artikel artikel)
   
   {
	   
   }
 
G

Gast2

Gast
Zumindest nicht das was du da aktuell stehen hast ;)

Der Einkaufswagen muss sich merken was in ihm drin liegt, also müsstest du die artikel in nen Array oder ne Liste legen.
 

pg1337

Bekanntes Mitglied
Java:
  List<Test> einkaufsListe = new ArrayList<Test>();
 
   public void addArtikel(Artikel artikel)
   
   {
	   einkaufsListe.add(laptop);
	   
   }



so stimmt das aber nicht..
 
Zuletzt bearbeitet:

pg1337

Bekanntes Mitglied
Die Objekte habe ich jedoch in der Klasse Test angelegt. In der Klasse Artikel stehen nur die Attribute und Methoden sowie Konstruktor.

Diese Methode jetzt steht aber in der Klasse Einkaufswagen?

Das klappt nicht mit dem hinzufügen so:

Java:
import java.util.ArrayList;
import java.util.List;


public class Einkaufswagen{
    
    double endbestellung;
 
    
    public double getEndbestellung() {
        return endbestellung;
    }
 
    public void setEndbestellung(double endbestellung) {
        this.endbestellung = endbestellung;
    }
    
    List<Artikel> einkaufsListe = new ArrayList<Artikel>();
 
   public void addArtikel(Artikel artikel)
   
   {
	   einkaufsListe.addArtikel(dvdPlayer);
		einkaufsListe.addArtikel(fernseher);
		einkaufsListe.addArtikel(laptop);
		
   }
}
 

diggaa1984

Top Contributor
ach jetzt erst gesehen:

Java:
public void addArtikel(Artikel artikel) {
    einkaufsListe.add(artikel);
}

du brauchst ja nur das übergebene Objekt darin ablegen, nichts aus anderen Klassen!

EDIT: dvdPlayer, laptop etc. sind in der Klasse Einkaufswagen nicht bekannt, da hilft auch keine identische Schreibweise, was über diese Methode in den Einkaufswagen kommt ist in dem Parameter enthalten. Und der wird bei Methodenaufruf angegeben (wie in deiner Main-methode).
 
Zuletzt bearbeitet:

pg1337

Bekanntes Mitglied
Jetzt sind in der Liste alle drei Artikel drin?
Laptop, fernseher, dvdPlayer?

EDIT:

So nun oder?

Java:
public class Test {
	
	

	public static void main(String[] args)
	{
		
		double endbestellung;
		
		Artikel laptop= new Artikel("Neu", 500,"5");
		Artikel dvdPlayer= new Artikel(null, 2, null);
		Artikel fernseher= new Artikel(null, 2, null);
		Einkaufswagen einkaufswagen= new Einkaufswagen();
		
		endbestellung= laptop.standardLieferung()+dvdPlayer.standardLieferung()+fernseher.standardLieferung();
		
		einkaufswagen.addArtikel(fernseher);
		einkaufswagen.addArtikel(dvdPlayer);
		einkaufswagen.addArtikel(laptop);

		System.out.println(endbestellung);
		
	}	
}
 

diggaa1984

Top Contributor
bezüglich der Aufgabenstellung muss die Sache mit den Lieferungen und der Berechnung des Endpreises ja noch anders gelöst werden, aber das Problem mit den Artikeln im Einkaufskorb sollte gelöst sein?!
 

diggaa1984

Top Contributor
ja denke schon, gibt ja keine fehler weiter? :D Nun musst du dich darum kümmern ne "Bestellung" zu erstellen, anhand der Artikelliste im Einkaufskorb ... und so wie ich das verstehe, is die bestellung eigentlich ne Art Liste von Artikeln, denn auf der Bestellung wird der Preis berechnet unter Berücksichtigung der Lieferart. Ich finde den Teil der Aufgabe ein wenig schwammig oder unvorteilhaft beschrieben.
 

pg1337

Bekanntes Mitglied
Bestellung ist also kein eigenes Objekt?

Sprich so dann:

Java:
List<Artikel> bestellung = new ArrayList<Artikel>();

In welche Klasse soll ich dies dann schreiben?
In den Einkaufswagen?
 

diggaa1984

Top Contributor
Bestellung erscheint mir gerade ein Objekt, laut Beschreibung aber es muss auch die Liste an Artikeln kapseln, die Info wäre damit redundant. Sicherlich steht aufm Kassenbon das drauf was im Einkaufskorb lag, aber irgendwie erscheint es mir nich schön, in einer Klasse Bestellung ebenfalls eine List<Artikel> zu führen.
 

pg1337

Bekanntes Mitglied
Hat sich erledigt.. musste das sowieso mit ner HashMap machen etc.

Danke trotzdem für jede Hilfe funktioniert jetzt :)
 

pg1337

Bekanntes Mitglied
Also die Frage:

Java:
	List<Artikel> einkaeufe= new ArrayList<Artikel>();
		
	
		public void listefuellen(Artikel artikel, double preis)
		{
			einkaeufe.add(e)
		}



Wie fülle ich in die Liste einkaeufe meine eingekauften Objekte, sprich Laptop etc. + ihren Preisen, sodass ich in der Main-Methode einer anderen Klasse dann die Einkäufe aufsteigend nach Preis ausgeben kann.

Gruß
 
Zuletzt bearbeitet:
S

SlaterB

Gast
Listen füllt man allein durch Einfügen,

Sortieren ist ein Thema für sich und nicht ganz ohne,
da gibts aber in der Tat extra Lehrbuch-Kapitel
 

pg1337

Bekanntes Mitglied
Java:
public List<Artikel> getEinkaeufe()
		{
			List<Artikel> einkaeufe= new ArrayList<Artikel>();
			
			Set<Artikel> artikels = einkaufsListe.keySet();
			
			// for each
			for(Artikel a: artikels){
				einkaeufe.add(a);	
			}
			
			Collections.sort(einkaeufe, new PreisComparator());
			return einkaeufe;
		}
		
		public class PreisComparator implements Comparator<Artikel> {

			@Override
			public int compare(Artikel a1, Artikel a2) {
				return (int)( a2.getPreis() -a1.getPreis());
				
			}
			
		}

so passts.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Mit Generics arbeiten - Übungsaufgabe Allgemeine Java-Themen 3
T Übungsaufgabe: Abzählspiel Allgemeine Java-Themen 3
A Vererbung Übungsaufgabe Vererbung - Erstellung Klassenhierarchie Allgemeine Java-Themen 1
FireHorses Online Aktivität getten Allgemeine Java-Themen 17
Q Möglichkeit Online-Programmieren üben. Allgemeine Java-Themen 9
V Compiler-Fehler Online Compiler Probleme Allgemeine Java-Themen 4
A Kein Online-Zugang mögl.! Allgemeine Java-Themen 4
L Benutzbarkeit kryptografischer APIs - Online Studie Allgemeine Java-Themen 3
R Android Daten online senden Allgemeine Java-Themen 0
J Java Projekt, Online-Datenabfrage, Visualisierung Allgemeine Java-Themen 3
S HTTP Online-Konfigurator Allgemeine Java-Themen 9
L Java Applet - ClassNotFound online, offline korrekt Allgemeine Java-Themen 13
H Problem mit Applet (online / offline) Allgemeine Java-Themen 8
S ID3-Tag eines Online-Radios auslesen Allgemeine Java-Themen 28
eskimo328 Offline/Online Web-Anwendung, Datensynchronisation etc. Allgemeine Java-Themen 9
T Online-Hilfe Allgemeine Java-Themen 3
S Applet funktioniert online - nur nicht lokal..? Allgemeine Java-Themen 2
B PrintService - Wie prüfen ob Drucker online ist? Allgemeine Java-Themen 2
S Datum einer Datei online? Allgemeine Java-Themen 6
B ZipDatei direkt online auslesen? Allgemeine Java-Themen 8
Z GWT Online Shop erstellen ? Allgemeine Java-Themen 3
W Suche ein Applet zur Bildbearbeitung online Allgemeine Java-Themen 4
Chucky Java Buch - nur welches? online oder kaufbuch? Allgemeine Java-Themen 18
V Mit Java einen Shop programmieren ? Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben