Getrankeautomat Instantzen setzen



  • Nein für mich war des eher der Anstoß, weil ich keine Ahnung habe wie ich die Klassen schreiben soll. Tut mir leid 🙄



  • Dann fangen wir doch mal an... bevor es an den Code geht, musst du dir erstmal überlegen, was ein "Getraenk" überhaupt ist.

    * Hat es einen Namen?
    * Hat es vielleicht auch einen Preis?
    * Muss das Getränk wissen, zu welchem Automaten es gehört?
    * Muss das Getränk wissen, wie viele Einheiten noch im Automaten sind?
    * ...

    Mit den Antworten auf diese Frage kannst du dann schonmal das Grundgerüst der Klasse bauen. Das kannst du hier vorstellen, dann helfen wir dir bei den Syntaxfehlern 😉



  • Also muss ich die Klasse für jedes Getränk sepperat schreiben?
    Nehmen wir mal an ich habe:
    *Als den Namen : Limonade
    *Der Preis: 50
    *Die Anzahl der Flaschen: 10

    wie soll ich das in eine Klasse umwandeln?



  • ok, du hast also überhaupt gar keine Ahnung von C++?



  • Erstmal beantworte die Fragen direkt. Mit ja/nein.
    Wenn du das hast, erstelle eine Klasse (oder in dem Fall vielleicht eine struktur) mit den entsprechenden Attributen. Attribute, bei denen du dachtest du brauchst sie, sind dann Teil der Klasse. Du solltest übrigens nicht alle Fragen von daddy_felix mit ja beantworten:

    class /*oder struct*/ Getränk {
    int volume; //in millileter
    //... andere attribute hier
    };
    

    Dann überlegst du dir, was du mit der Klasse tun musst, und schreibst entsprechende Methoden.



  • Nein, du machst eine Klasse für alle Getränke mit allen Angaben darin (Name, Preis, Anzahl, ...) und den gewünschten Zugriffsmöglichkeiten. Für jedes Getränk (Limonade, Cola, Whiskey, ...) bildest du eine Instanz dieser Klasse und arbeitest damit separat, eben mit den Instanzen.

    Mehr zu erklären macht wenig Sinn. Dir fehlen die wesentlichen Kenntnisse, was eine Klasse ist und wie man sie einsetzt. Genau dies ist aber der Lernzweck der gestellten Aufgabe. Wir sind hier keine Hausaufgabenlöser und keine Ablieferer fertig programmierter Lösungen dafür!



  • Also das mit den Instanzen hat jetzt geklappt.

    Hat mir vielleicht jemand eine Idee wie ich das mit dem Rueckgeld schaffen könnte?



  • RealFeejay schrieb:

    Hat mir vielleicht jemand eine Idee wie ich das mit dem Rueckgeld schaffen könnte?

    Wenn ich ein Getränk am Automaten kaufe, sieht das etwas so aus:

    * Ich entscheide, welches Getränk ich haben möchte
    * Der Automat zeigt mir den zu zahlenden Betrag an
    * Ich werfe eine Münze ein
    * Der Automat zeigt mir den Restbetrag an
    * Ich werfe noch eine Münze ein
    * Der Automat zeigt mir den Restbetrag an
    * Das geht dann solange, bis ich genug Münzen eingeworfen habe.
    * Dann zeigt mir der Automat das Rückgeld an
    * Das Rückgeld wird ausgeworfen
    * Das Getränk wird ausgeworfen

    So in etwa müsste das dann ja auch in deinem Code aussehen...



  • Deine Unterteilung stimmt, aber halt leider nur nicht mit dem Listing überein.

    Hier wird erst das Geld eingeworfen bevor man überhaupt ein getränk gewählt hat.

    Wäre es möglich dass ich die Klasse muenzeinheit am Anfang vom Listing Zeile 6 auf Zeile 130 ablege. Dann wird erst die Getränkeauswahl vonstatten gehen und danach die Münzen einwerfen.

    edit...
    Neine geht leider nicht und würde auch nichts bringen



  • RealFeejay schrieb:

    Wäre es möglich dass ich die Klasse muenzeinheit am Anfang vom Listing Zeile 6 auf Zeile 130 ablege.

    Nein, das ist absoluter Blödsinn. Es ist völlig wurscht, wo du die Klasse "muenzeinheit" definierst.

    So, wie ich das sehe, fehlt lediglich dder Aufruf der Methode "rueckgeldgeben"



  • Die Klassenmethoden gehören in die Klasse und sind im Aufruf (also der Benutzung der Klasse) unabhängig voneinander. Die Reihenfolge darf keine Rolle spielen. Die Vorbesetzung der Daten machst du zweckmässig über den Konstruktor oder die Konstruktoren. Für die Veränderungen des Getränkeautomaten durch den Aufsteller (Getränkebestand, Münzen nach Sorten) machst du neue Methoden.

    Dringender Rat: Buch oder Tutorial mit Beispiel lesen und verstehen.


Anmelden zum Antworten