Eisautomat



  • naja gut ok danke trotzdem



  • für 50Euro, kein Thema....



  • Wie Krux schon sagte, ist es wichtig, dass du dir selbst überlegst, welche Klassen praktisch wären und wie ihre Objekte zusammen arbeiten könnten.
    Hier ist dennoch ein kleiner Vorschlag für einen Anfang:

    #include <iostream>
    #include <iomanip>
    #include <string>
    #include <vector>
    using namespace std;
    
    class Eis
    {
        string m_sorte;
        double m_preis;
    
    public:
    
        Eis(const string &sorte, double preis)
            : m_sorte(sorte), m_preis(preis)
        {
        }
    
        string sorte() const
        {
            return m_sorte;
        }
    
        double preis() const
        {
            return m_preis;
        }
    };
    
    ostream &operator<<(ostream &ausgabestrom, const Eis &e)
    {
        return ausgabestrom << e.sorte() << ": " << setw(20 - e.sorte().size()) << setprecision(2) << setiosflags(ios::fixed) << e.preis() << " Euro\n";
    }
    
    class Eisautomat
    {
        vector<Eis*> m_eis;
    
    public:
    
    	Eisautomat()
    	{
    	    eisEinfuegen("Magnum", .99);
    	    eisEinfuegen("Magnum Deluxe", 1.2);
    	    eisEinfuegen("Schoko Baer", 5.43);
    	    eisEinfuegen("Marzipaneis", 1.88);
    	    eisEinfuegen("Eiskonfekt", .64);
    	}
    
    	~Eisautomat()
    	{
    	    //Eis Objekte entsorgen
    	    for(vector<Eis*>::iterator eis = m_eis.begin(); eis != m_eis.end(); ++eis)
                delete (*eis);
    	}
    
    	void eisEinfuegen(const string &sorte, double preis)
    	{
    	    m_eis.push_back(new Eis(sorte, preis));
    	}
    
    	void praesentiereAngebot() const
    	{
    	    cout << "========================================\n";
    	    cout << "Unser Eisangebot\n\n";
    	    for (vector<Eis*>::const_iterator eis = m_eis.begin(); eis != m_eis.end(); ++eis)
    	    	cout << (**eis);
            cout << "========================================";
    	}
    };
    
    int main()
    {
    	Eisautomat a;
    	a.eisEinfuegen("Flutschfinger", 1.5);
    	a.praesentiereAngebot();
    }
    


  • es soll ja offensichtlich objekt orientiert sein, also würd ich in der hinsicht noch mehr objektorientiertheit nutzen, polymorphie und so. auch wenns bisschen überflüssig erscheint, es soll ja was beibringen.

    enum Sorte {
     MAGNUM, FLUTSCHFINGER, ... ;
    };
    
    class Eis {
     int preis;
     Sorte sorte;
     std::string name;
    
     public:
     Sorte getSorte();
     virtual std::string getName() = 0;
    };
    
    class Magnum : public Eis {
    };
    
    ... // noch mehr sorten
    
    class Fach {
     std::vector<Eis*> inhalt;
    
     public:
     int getAnzahl();
     void removeEis();
    };
    
    class Eisautomat {
     std::vector<Fach> sorten;
    
     public:
     std::vector<Sorten> getSorten();
     void removeEis(Sorte sorte);
    };
    


  • Was fürn Quatsch für jede Sorte ne Klasse ...



  • oop schrieb:

    Was fürn Quatsch für jede Sorte ne Klasse ...

    troll?

    beispielprogramme sollen viele beispiele abgreifen. nen "eisautomat" ist nen 2 zeiler. aber halt nicht, wenns was beibringen soll.



  • das einzige was quatsch ist ist deine Aussage



  • Troll ?

    Und welchen Sinn macht es für jede Eissorte ne Klasse abzuleiten ?
    Beispiel hin und her ...



  • oop schrieb:

    Und welchen Sinn macht es für jede Eissorte ne Klasse abzuleiten ?

    Damit man in jedem Eis die passende Geschmacksrichtung implementieren kann.



  • Lol
    Hat nicht jedes Eis nen anderen Geschmack ... ??? 🙄



  • oop schrieb:

    Lol
    Hat nicht jedes Eis nen anderen Geschmack ... ??? 🙄

    Ein Eis hat ja nicht ein "Magnumgeschmack", sondern es gibt Krischgemack, Orange, usw. oder auch cremig, erfrischend... aber ist doch jetzt eh wurscht...


Anmelden zum Antworten