Objektorientierte Programmierung

queenlui

Mitglied
Hallo liebe Leute,

dies ist mein erster Beitrag hier, in diesem Forum. Ich studiere Informatik im zweiten Semester und wir müssen immer mal was programmieren, auf das es Punkte gibt.
Diesmal ist es ein Burger Konfigurator, unser Problem liegt hauptsächlich darin, die Burgerklasse zu Programmieren, in der mit Schleifen, Methoden und Arrays, gearbeitet wird. Leider stehen wir einfach dermaßen auf dem Schlauch und wissen nicht, wie wir ansätzen sollen.

In der Burgerklasse müssen die einzelnen Preise der Zutaten verrechnet werden, die Zubereitung und die Höhe müssen überschrieben werden. Hättet ihr Tipps wie man dieses Problem angehen kann? Wir haben Klassen für die einzelnen Zutaten erstellt und eine Zutatenklasse, in der die einzelnen Klassen erben. Die Methoden in den Klassen haben wir schon geschrieben, uns fehlt, wie gesagt, hauptsächlich nur noch die Burgerklasse.

Über jegliche Tipps würd ich mich sehr freuen, vielen Dank schonmal!
 

MoxxiManagarm

Top Contributor
In der Burgerklasse müssen die einzelnen Preise der Zutaten verrechnet werden, die Zubereitung und die Höhe müssen überschrieben werden.

Heißt das in der Burger soll Zubereitung und Höhe überschrieben werden oder bezieht sich das auf eine Zutat?

Wir haben Klassen für die einzelnen Zutaten erstellt und eine Zutatenklasse, in der die einzelnen Klassen erben.

Das Klingt doch schon mal gut. Wie ist euer Ansatz? Für mich wäre spontan ein Burger nichts anderes als eine Liste von Zutaten wobei ein Burgerbrötchen immer Pflicht wäreö Dann kann über diese Zutaten iteriert werden für Gewicht, Höhe, Kalorien, Zubereitungsschritte, zutatenpreise und was weiß ich.

Besser ist es in den meisten Fällen Interfaces zu verwenden, anstatt zu erben. Ihr könnte dann auch weitere Interfaces ergänzen, wenn ihr z.B. zusätzlich eine Soße unterscheiden wollt, welche streichbar ist, oder Zutaten, welche erhitzt werden müssen in der Zubereitung.
 

queenlui

Mitglied
Vielen Dank schonmal für deine Antwort!

Die Zubereitung und die Höhe des Burgers selbst, soll überschrieben werden können, da, die bestellten Burger, nicht alle die selbe Höhe haben. Sprich, jede Zutat hat eine eigene bestimmte Höhe.
Wir haben für jede Zutat (Brötchen, Bratlinge, Gemüse, Salat und Saucen)
Gemüse als Beispiel:
Java:
public class Gemuese extends Zutaten{
      
       int scheibenAnzahl;
       int scheibenDicke; //In mm
      

       public Gemuese(float preis, int nummer, String name, boolean klassisch, boolean vegan, boolean vegetarisch, int scheibenAnzahl, int scheibenDicke) {
           super(preis, nummer, name, klassisch, vegan, vegetarisch);
           this.scheibenAnzahl = scheibenAnzahl;
           this.scheibenDicke = scheibenDicke;
          
          
       }
und dann haben wir noch eine Klasse "Zutaten", wo die von erben.
Die Klasse sieht bisher so aus:
Java:
public class Zutaten {
   float preis;
   int nummer;
   String name;
   boolean klassisch;
   boolean vegan;
   boolean vegetarisch;
  

   public Zutaten(float preis, int nummer, String name, boolean klassich, boolean vegan, boolean vegetarisch) {
       this.preis = preis;
       this.nummer = nummer;
       this.name = name;
       this.klassisch = klassich;
       this.vegan = vegan;
       this.vegetarisch = vegetarisch;
   }
Ich weiß nicht, wie das funktioniert, haben zur Zeit das Thema Vererbung, wo diese Aufgabe drauf aufbaut..
Ebenfalls haben wir eine Anwendungsklasse, in der die Arrays drin stehen:
Java:
public class Anwendung {

   public static void main(String[] args) {

       String command[] = new String[2];

       String line;

       Zutaten[] menuearray = new Zutaten[18];

       menuearray[0] = new Broetchen(0.85f, 10, "Hamburger (Standart)", true, false, false, 90, 27);
       menuearray[1] = new Broetchen(0.95f, 11, "Hamburger Sesam", true, false, false, 90, 28);
       menuearray[2] = new Broetchen(0.55f, 12, "Vegan-Broetchen", false, true, false, 240, 34);
       menuearray[3] = new Broetchen(0.45f, 13, "Ciabatta", false, false, true, 330, 41);
ist jetzt nur ein Teil davon.

In der Aufgabenstellung, für die Burgerklasse steht:
Bei der Ausgabe, eines Burgers sollen folgende Informationen ausgegeben werden:
Burgername, Zutaten-Liste, Preis, Höhe, Zutateninformationen: klassisch, vegan, vegetarisch, Geschmacksrichtung: scharf/süß/salzig oder klassich.
Methoden müssen so umgesetzt werden, dass man den Namen des Burgers speichern kann (Nutzer sucht sich selbst einen Namen aus), die Zutaten zubereitet werden, den Burger mit ausgewählten Zutaten belegen, berechnete Zeit für die Zubereitung des Burgers bestimmen und die Höhe des Burgers berechnen. Ein Burger darf nur aus genau einem Brötchen bestehen und aus maximal 8 weiteren auszuwählenden Zutaten.

Sind einfach am verzweifeln. :(
 
Zuletzt bearbeitet von einem Moderator:

temi

Top Contributor
Was unterscheidet denn die Klasse Gemüse von der Klasse Sauce? Wozu braucht es überhaupt abgeleitete Klassen von Zutat?
Java:
Zutat salat = new Zutat("Salat", usw.);
Zutat gurke = new Zutat("Gurke", usw.);

Wenn alle Zutaten eine Dicke haben, warum ist diese dann nicht in der Klasse Zutaten enthalten (die besser "Zutat" heißen sollte, weil es sich um eine und nicht um mehrere Zutaten handelt)?

Dann würde z.B. so etwas gehen:
Java:
Zutat[] zutaten = new Zutat[8];
//...
zutaten[0] = new Zutat("Gurke", usw.);
//...
int hoehe = 0;
for (Zutat zutat : zutaten) {
   hoehe += zutat.dicke;
}
 
Zuletzt bearbeitet:

queenlui

Mitglied
Die Klasse Gemüse unterscheidet sich beispielsweise von der Scheibenanzahl und Scheibendicke. Die Klasse Sauce beinhaltet die Menge in ml und den Schmack, Bratlinge bspw unterscheiden sich von der Bratzeit und Brötchen von der Backzeit. Die Variablen, die alle gemeinsam haben, sprich, Bestellnummer, preis, etc, befinden sich in der Klasse "Zutaten".
 

temi

Top Contributor
Wenn man sich die Aufgabe anschaut, dann geht es offenbar darum in einer Klasse "Burger" eine Liste von Zutaten zu erstellen, über diese zu iterieren und Höhe, Zubereitungszeit, usw. zu berechnen. Dazu müssen aber alle in der Liste gespeicherten Zutaten über die gleichen Zugriffsmöglichkeiten auf die Werte dazu verfügen (also mindestens für die Zeit und für die Dicke).
Das können Methoden wie "gibDicke()" (um mal im Deutschen zu bleiben) oder wie in deinem Fall Variablen die von außen zugreifbar sind. Es gilt die Regel, dass in der objektorientierten Programmierung die Klassen nur benötigte Informationen nach außen geben sollten, alles weitere sollte verborgen (= private) sein.
Bei einer Zutat wie "Sauce" liefert die Methode "gibDicke()" dann einfach Null zurück.
 

queenlui

Mitglied
Ich hab einfach mal die Datei mit der Aufgabenstellung hochgeladen, falls du Interesse daran hast, um es evtl. besser verstehen zu können. :/
 

Anhänge

  • PII_Projekt_01_MeinBurger(1).pdf
    3,9 MB · Aufrufe: 30

temi

Top Contributor
Hast du vielleicht einen Plan davon, wie man das Problem am Besten angehen könnte?
Eigentlich ist ja alles ziemlich gut beschrieben und wie es grundsätzlich geht steht hier schon etwas weiter oben. Die Basisklasse Zutat hat ja eine Methode "berechneHöhe". Die Berechnung der Gesamhöhe ist also:
Java:
int hoehe = 0;
for (Zutat zutat : zutaten) {
   hoehe += zutat.berechneHoehe();
}

In der Basisklasse solltet ihr bei "berechneHoehe()" Null zurückgeben und die Methode in den entsprechenden Unterklassen überschreiben. Zutatenarten, wie Sauce, verwenden weiterhin die Methode der Basisklasse und werden mit dem Wert Null verrechnet.

Beachte noch alle Hinweise: z.B. Geheimnisprinzip => die Variablen sollten alle mit "private" gekennzeichnet werden und *nur* bei Bedarf über getter/setter zugreifbar gemacht werden.
 

queenlui

Mitglied
Muss ich auch in dem Konstruktor
Bsp:
public Bratlinge(float preis, int nummer, String name, boolean klassich, boolean vegan, boolean vegetarisch, int bratzeit, int hoehe) {
super(preis, nummer, name, klassich, vegan, vegetarisch);
this.bratzeit = bratzeit;
this.hoehe = hoehe;
vor den Variablen private schreiben, also:
public Bratlinge(private float preis, private int nummer, private String name, private boolean klassich,private boolean vegan, private boolean vegetarisch, private int bratzeit, private int hoehe) {
super(preis, nummer, name, klassich, vegan, vegetarisch);
this.bratzeit = bratzeit;
this.hoehe = hoehe;

oder nur außerhalb des Kontruktor?
 

queenlui

Mitglied
Ok, gut.
Letzte Frage noch:
Wenn der Nutzer eine Bestellnummer eingibt, muss diese mit einem return gespeichert und in dem Array gesucht werden, wie geht man da vor? Mit einer Schleife?
 

temi

Top Contributor
muss diese mit einem return gespeichert und in dem Array gesucht werden, wie geht man da vor? Mit einer Schleife?
Ja. Durch das Array gehen und jedes Element anschauen, bis eines davon die richtige Bestellnummer hat. Da die Bestellnummer privat ist, brauchst du dafür schon mal einen getter "getBestellnummer()".

Es gäbe zwar besser geeignete Strukturen, wie Map, aber ich gehe mal davon aus, dass ihr das nicht verwenden sollt.
 

queenlui

Mitglied
Okey, gut, vielen Dank!
Nein, damit sollen wir nicht arbeiten..

Ich hab das mit der hoehe mal eingefügt, mir wird angezeigt, ich solle "private static final String Zutaten = null;" einfügen, jedoch wird nachdem weiterhin alles rot.

Tut mir wirklich Leid, so nervige Fragen stellen zu müssen, jedoch finde ich im Internet bezüglich dessen so gut wie nichts und unsere Zeit drängt. :/
 

Devanther

Top Contributor
@queenlui

Kannst du mir das (Eclipse) Projekt senden, wenn du fertig bist?
Das mit den Burgern sieht interessant aus, ich würde gerne aus einer möglichen Lösung lernen!

Und verwende bitte, wenn du Code postest, das mit der Einfügen->Code Methode,
liest sich viel besser.
 

Javinner

Top Contributor
@queenlui
In etwa so?
Java:
public class SubWay
{

  
    public static void main(String[] args)
    {
        Caffee blackToMuchSugar = new Caffee(new Milk(0), new Sugar(7));
        System.out.println(blackToMuchSugar.getEuro().getValue());
      
        Caffee justBlack = new Caffee(new Milk(0), new Sugar(0));
        System.out.println(justBlack.getEuro().getValue());
      
        Caffee milkAndSugar = new Caffee(new Milk(3), new Sugar(2));
        System.out.println(milkAndSugar.getEuro().getValue());
    }
  
}
/** Konsolenausgabe */
2.41
1.5
2.06

edit: ich habe mir gerade den Flyer angesehen und auf den ersten Blick sieht es für mich so aus:

McObject (double burgerHeight, VarietyOfBurger vob, boolean spice)
VarietyOfBurger (Klassisch, Vegetarisch, Vegan)
Klassisch: ProduktKlassisch
Vegetarisch: ProduktVegetarisch
Vegan: Staub
Scharf oder auch nicht

Also würde ich mir a) paar Pakete erstellen und diese als feste Bestandteile der Karte anbieten und b) ein Sonderding anbieten.

Ebenso sieht es für mich aus, als müsstest du alle Zutaten usw als eigenständige Klasse anbieten, aber eventuell irre ich mich hier.
 
Zuletzt bearbeitet:

MoxxiManagarm

Top Contributor
Ich finde die PDF ja toll x) Hat er sich richtig ausgetobt der gute Professor. Ich persönlich finde die Aufgabe schon umfangreich (aber auch gut) für ein Stegreifprojekt als Anfänger, aber wenn ihr im Team arbeitet bekommt ihr das schon hin.

Ich finde aber eigentlich, dass alles prima beschrieben ist. Geht doch von vorne nach hinten durch.

Beispiel Controller:
‣ Der Bestellprozess soll über die Tastatureingabe erfolgen:
--> Eingabehandling, ich schätze das bedarf nicht viel Erklärung

‣ „menu“ -> Anzeige der gesamten Karte
--> ihr braucht also eine Methode showMenu(), welche alle Zutaten aus der Zutatenliste anzeigt. Die Zutatenliste ist im Controller bekannt.

‣ „zutat“ Bestelltnummer -> Zutat
--> ihr braucht also eine Methode findIngredientByOrdernumber(int number):Ingredient und eine Methode addIngredient(Ingredient) welche die Zutat zum Burger im Bearbeitungsmodus hinzugefügt wird. Das sollte ein eigenständiges Objekt sein, sagen wir "editBurger"

‣ „meine burger“ -> Anzeige der aktuellen Bestellung
--> Ihr braucht also eine Methode showBurger() welche alle Burger aus dem Array der Größe 10 ausgibt

‣ „ok“ -> Abschluss des aktuell zusammengestellten Burgers
--> ihr braucht also eine Methode finishBurger(), welcher den editBurger in das BurgerArray ergänzt. editBurger wird wieder null

‣ „bestellen“ -> Bestellung abschließen
--> ihr braucht also eine Methode order(), welche intern folgendes tut...
hier werden dann die bestellten Burger zubereitet, der Gesamtpreis und die Gesamtzubereitungszeit ausgegebenen
makeBurger() ... getTotalPrice() ... getTotalPreparationTime()


Und natürlich überall die geforderten Ausgaben
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Rechnen mit Brüchen - objektorientierte Programmierung Java Basics - Anfänger-Themen 18
D Objektorientierte Programmierung Java Basics - Anfänger-Themen 13
T Objektorientierte Programmierung - Kein Plan wieso das nicht funktioniert! Java Basics - Anfänger-Themen 6
N Objektorientierte Programmierung: Erben von 2 Klassen - wie ist korrekte Vorgehensweise? Java Basics - Anfänger-Themen 16
W objektorientierte Programmierung Java Basics - Anfänger-Themen 25
W objektorientierte Programmierung - String in andere Klasse übergeben Java Basics - Anfänger-Themen 13
T Objektorientierte Programmierung, わからない です Java Basics - Anfänger-Themen 6
S Objektorientierte Programmierung Java Basics - Anfänger-Themen 21
C Objektorientierte Programmierung Java Basics - Anfänger-Themen 11
X Objektorientierte Java Programmierung - 3 Fragen zum Code Java Basics - Anfänger-Themen 5
M objektorientierte programmierung Java Basics - Anfänger-Themen 5
J Objektorientierte Programmierung Java Basics - Anfänger-Themen 5
B Java Objektorientierte Datenbank - Assoziation Hilfe Java Basics - Anfänger-Themen 4
S OOP Objektorientierte Frage Java Basics - Anfänger-Themen 5
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
F Automat-Programmierung Java Basics - Anfänger-Themen 30
N Lambdas, Methodenref, fkt Programmierung ? Java Basics - Anfänger-Themen 10
districon Dynamisch Programmierung/Backtracking/Memoization Java Basics - Anfänger-Themen 3
S Buchstaben Programmierung Bedeutung Java Basics - Anfänger-Themen 4
S Hilfe bei Programmierung einer Hotelabrechnung Java Basics - Anfänger-Themen 5
enjoykimii Strukturierte Programmierung Hilfe Java Basics - Anfänger-Themen 29
A Frage zur programmierung Java Basics - Anfänger-Themen 12
Nerdinfekt Programmieranfänger, Schwierigkeiten mit der Programmierung Java Basics - Anfänger-Themen 6
U Compiler-Fehler Programmierung einer Drehkugel Java Basics - Anfänger-Themen 8
L Programmierung mit Hash Java Basics - Anfänger-Themen 3
C Wie habt Ihr angefangen mit der Java Programmierung, ohne Programmiervorkenntnisse Java Basics - Anfänger-Themen 8
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
S GUI-Programmierung Sudoku-Rätsel lösen Java Basics - Anfänger-Themen 1
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
S Programmierung simulieren - aber wie?! Java Basics - Anfänger-Themen 3
H Java Programmierung Java Basics - Anfänger-Themen 3
W Problem bei Programmierung von Monte-Carlo-Integration Java Basics - Anfänger-Themen 12
D Guten Tag mache gerade eine Umschulung zum FiSi war leider jetzt 2 Wochen Krank und wir hatten Prozendurale Programmierung. Java Basics - Anfänger-Themen 3
F Attribute bei Objektorientierter Programmierung Java Basics - Anfänger-Themen 11
F Ich brauche Hilfe bei Objektorientierter Programmierung... Java Basics - Anfänger-Themen 19
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
J Texte für Java Programmierung besser verstehen? Java Basics - Anfänger-Themen 2
C GUI Programmierung unter Windows mit Java womit? Java Basics - Anfänger-Themen 11
D Collections Aufgaben Java-Programmierung Überforderung Java Basics - Anfänger-Themen 36
A GUI Programmierung mit Textfield Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 3
J Programmierung Quiz Spiel Java Basics - Anfänger-Themen 2
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
L Dynamische Programmierung Java Basics - Anfänger-Themen 0
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
A Methoden Habe ein Problem bei folgender Programmierung Java Basics - Anfänger-Themen 15
slejden Erste Schritte Frage zur OOP (objektorientierten Programmierung Java Basics - Anfänger-Themen 4
V Threads Nebenläufige Programmierung Java Basics - Anfänger-Themen 6
V Nebenläufige Programmierung Java Basics - Anfänger-Themen 5
Henri Paare Frage über Java Programmierung Java Basics - Anfänger-Themen 10
S Programmierung eines Geldwechselautomaten! Java Basics - Anfänger-Themen 2
R Einige Neulingsfragen (Wrapper, GUI-Programmierung) Java Basics - Anfänger-Themen 4
D JavaBeans und die visuelle Programmierung Java Basics - Anfänger-Themen 2
M Dringend Experten für Scala-Play basierte Programmierung!!!! Java Basics - Anfänger-Themen 0
Z Programmierung eines Stacks Java Basics - Anfänger-Themen 19
A Programmierung herangehensweise Java Basics - Anfänger-Themen 9
G 3D-Spiele-Programmierung Java Basics - Anfänger-Themen 3
I Programmierung-Hausaufgabe: Hilfe benötigt Java Basics - Anfänger-Themen 8
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
T Nachhilfe JAVA Programmierung Java Basics - Anfänger-Themen 1
R Schaffe es nicht Random-Programmierung zu vollenden. Wo liegt der Fehler in diesem Code? Java Basics - Anfänger-Themen 13
N Socket-Programmierung Java Basics - Anfänger-Themen 4
kaoZ Android Programmierung / Erstellen einer neuen Instanz Java Basics - Anfänger-Themen 2
O OOP Input & Output in der GUI-Programmierung Java Basics - Anfänger-Themen 2
O Java Grafik-Programmierung? Java Basics - Anfänger-Themen 16
F Fehler bei Array und Index Programmierung Java Basics - Anfänger-Themen 18
K Objektorientierten Programmierung Java Basics - Anfänger-Themen 3
R Einstieg in Programmierung Java Basics - Anfänger-Themen 8
W Problem bei MineSweeper Programmierung Java Basics - Anfänger-Themen 10
D Best Practise für Programmierung Java Basics - Anfänger-Themen 7
D Erste Schritte Einstieg in die Java Spiel Programmierung Java Basics - Anfänger-Themen 7
E Algorithmen und Programmierung - Datum und Zeit ausgeben? Java Basics - Anfänger-Themen 8
Grejak OOP Einstieg in Objekt-Orientierte-Programmierung Java Basics - Anfänger-Themen 3
D Frage zu Bit Operatoren in der Programmierung Java Basics - Anfänger-Themen 9
U Geräte-Programmierung ? Java Basics - Anfänger-Themen 15
S 2 kurz Fragen zur Möglichkeit der Programmierung Java Basics - Anfänger-Themen 7
J Allgemeine Fragen zur Programmierung Java Basics - Anfänger-Themen 36
N Grafische Programmierung mit jeweils anderen Bildern bei versch. Ergebnissen Java Basics - Anfänger-Themen 9
M Gui Programmierung Java Basics - Anfänger-Themen 21
J Spielevorschläge für Programmierung Java Basics - Anfänger-Themen 3
O Eisenbahn-Programmierung Java Basics - Anfänger-Themen 8
S Schlechte Programmierung Java Basics - Anfänger-Themen 5
O Probleme bei OO-Programmierung mit Vererbung Java Basics - Anfänger-Themen 18
M Programmierung kürzen??? Java Basics - Anfänger-Themen 5
N Umstieg auf objektorintierte Programmierung Java Basics - Anfänger-Themen 2
N Probleme mit meiner Programmierung Java Basics - Anfänger-Themen 5
M Meine erste Java Programmierung funzt nicht :-( Java Basics - Anfänger-Themen 34
H Programmierung Ampelsteuerung Java Basics - Anfänger-Themen 4
J [Erledigt] Applet Programmierung Java Basics - Anfänger-Themen 4
T Gui Programmierung lernen Java Basics - Anfänger-Themen 3
E Toolkit (Scanner) Programmierung Java Basics - Anfänger-Themen 5
D Programmierung Profi Java Basics - Anfänger-Themen 18
G Problem bei Programmierung Java Basics - Anfänger-Themen 15
G Problem bei Programmierung Java Basics - Anfänger-Themen 2
G thread programmierung für ANFÄNGER Java Basics - Anfänger-Themen 2
S generic programmierung "ne:w T[X]" Java Basics - Anfänger-Themen 2
A Einstieg in die Programmierung Java Basics - Anfänger-Themen 20
I Frage wegen Wörterbuch Programmierung Java Basics - Anfänger-Themen 13
X Programmierung mit geometrischen Figuren Java Basics - Anfänger-Themen 3
G Opjektorientierte Programmierung (OOP). einfach für euch Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben