Objekt Fernseher programmieren



  • Danke AGS`ler... 🙂

    Konstruktor darf ich noch nicht anwenden.
    Wie kann oder muss ich denn "setlautstaerke" ändern damit Lautstaerke nur ausgegeben wird wenn der Fernseher an ist?
    Und für was ist bool??? Hatte ich bis jetzt nicht...



  • Ich hab mir den Code da oben jetzt nicht angeschaut, ist mir zu unübersichtlich ohne die Tags^^

    Aber bool ist eine Variable, die nur 2 Werte besitzen kann: True oder False.

    Also z.b. bool is_on = false...

    Überprüfen geht dann entweder über if(is_on) [Ist an] oder if(!is_on) [ist nicht an]



  • Indem du den gesamten Abschnitt in ein if(einaus){...} (btw, der Variablenname ist Unsinn - 'ein' reicht völlig) einschließt.

    PS: Übrigens sollte die Methode getan() auch den Member 'einaus' setzen 😉



  • #if !defined(TELEVISION_H__INCLUDED)
    #define TELEVISION_H__INCLUDED
    
    #include <string>
    #include <algorithm>
    
    class Television
    {
    public:
    	Television()	{}
    	~Television()	{}
    
    public:
    	unsigned short	get_volumn() const	{ return m_nVolumn;		}
    	std::string		get_channel() const { return m_sChannel;	}
    	bool			power_on() const	{ return m_bPower;		}
    
    public:
    	void			set_volumn(const unsigned int& volumn)		{	m_nVolumn = std::max<unsigned int>(volumn, 100);	show_information(std::cout);	}
    	void			set_channel(const std::string& channel)		{	m_sChannel = channel; show_information(std::cout);					}
    	void			switch_on(const bool on)					{	m_bPower = on; show_information(std::cout);							}
    	void			init()										{	m_nVolumn = 10; m_sChannel = "CNN";									}
    
    public:
    	void			show_information(std::ostream& of_stream) const {	of_stream << "Fehrnseher ist " << (m_bPower == true ? "an" : "aus") << "!" << std::endl << "Kanal: " << m_sChannel << std::endl << "Lautstaerke: " << m_nVolumn << std::endl;	}
    
    private:
    	unsigned short	m_nVolumn;
    	std::string		m_sChannel;
    	bool			m_bPower;
    };
    
    #endif // TELEVISION_H__INCLUDED
    

    😃 Wenn du Fragen dazu hast ... nur zu 😉



  • Danke für die Erklärung The-Kenny...
    Gut CStoll verstanden hab ich das aber an der Umsetzung hapert es da ich noch am Anfang mitm Programmieren stehe... 😕



  • Hallo (D)Evil.
    Netter Quelltext aber viel versteh ich davon leider noch nicht 😞



  • m_bPower = on;

    Das ist doch bool 😮

    Ich denke eher, m_bPower = true; ist gemeint^^



  • nein? Somit kannst du den auch mit der Funktion ausschalten ... erst denken dann schreiben 😃

    @Gohst Rider: guck es dir in Ruhe an und Frag dann, wenn du noch Sachen nicht verstehst ...



  • (D)Evil schrieb:

    nein? Somit kannst du den auch mit der Funktion ausschalten ... erst denken dann schreiben 😃

    @Gohst Rider: guck es dir in Ruhe an und Frag dann, wenn du noch Sachen nicht verstehst ...

    Argh bin ich blöd *g*

    Stimmt, ich sollte wirklich erst denken, dann schreiben^^



  • Was noch nicht berücksichtigt wurde:

    Das Einstellen soll zudem nur dann möglich sein, wenn der Fernseher eingeschaltet ist.

    -->

    void set_volume(unsigned volume)
        {
            if (m_bPower)
            {
                m_nVolume = std::min<unsigned>(volume, 100);
                show_information(std::cout);
            }
        }
        // etc.
    

    @(D)Evil: man sollte nicht "max" schreiben wo man "min" meint 😉

    p.S.: ein "unsigned int" als const-Referenz übergeben ist ... IMO komplett sinnfrei.



  • hustbaer schrieb:

    ein "unsigned int" als const-Referenz übergeben ist ... IMO komplett sinnfrei.

    Wunderschön gesagt! 👍
    @Gohst Rider:
    Btw, wo lernst du???



  • Ich lerne bei der Studiengemeinschat Darmstadt...Warum ist das wichtig AGS`ler?



  • Sagt mal wie greife ich von "::ausgabe()" auf "::gatan(einaus)" zu??? Ihrgendwie will ich nicht dahinter kommen... Glaub ich brauch mal nen Tag abstand....Sonst dreh ich noch durch 😡



  • Das sind beides Memberfunktionen, daher gibts kein "::ausgabe" und auch kein "::gatan". Lern C++.



  • hustbaer schrieb:

    Lern C++.

    Oh, du kannst dich aber nett ausdrücken!

    Gohst Rider schrieb:

    Sagt mal wie greife ich von "::ausgabe()" auf "::gatan(einaus)" zu???

    Du willst von einer Methode aus eine Get-Methode der selben klasse aufrufen => Mach mal bitte ein Tutorial!

    Gohst Rider schrieb:

    Ich lerne bei der Studiengemeinschat Darmstadt

    Aha, ich lerne an der http://www.ags-erfurt.de/ ( Empfehle ich allen Technik interessierten Thüringern )!

    Gohst Rider schrieb:

    Warum ist das wichtig AGS`ler?

    Das btw bedeutet, dass es mir eben nicht wichtig ist => es war nur Smalltalk!



  • @AGS'ler:
    Wo ist bitte der Unterschied ob ich jetzt "Lern C++." oder "Mach mal bitte ein Tutorial!" schreibe?



  • ::getan() ist eine globale Funktion, die ich in keinenm bisher geposteten Code finden kann. Das könnte das Problem dabei sein, dass du sie nicht aufrufen kannst.

    Aber probier doch einfach mal die Methode (also nur "getan()") aufzurufen. Vielleicht ist das das, was du willst?



  • hustbaer schrieb:

    @AGS'ler:
    Wo ist bitte der Unterschied ob ich jetzt "Lern C++." oder "Mach mal bitte ein Tutorial!" schreibe?

    Inhaltlich gleich, aber um deine Frage zu beantworten: Das Wörtchen BITTE!



  • Helium schrieb:

    ::getan() ist eine globale Funktion, die ich in keinenm bisher geposteten Code finden kann.

    Erstes Posting!

    Helium schrieb:

    Aber probier doch einfach mal die Methode (also nur "getan()") aufzurufen. Vielleicht ist das das, was du willst?

    Ich denke mal daran liegt es!

    (D)Evil schrieb:

    #if !defined(TELEVISION_H__INCLUDED)
    

    Hat es einen Grund, warum du kein

    #ifndef
    

    verwendest???

    PS(Hatte ich übersehen):
    Der Parameter der Funktion getan() heist genau wie das Attribut der Klasse => das geht nicht ( Wie soll der PC wissen, welche Variable du meinst??? )!
    Außerdem sollte ( , wie CStoll schon schrieb, ) die Methode getan() auch den Member 'einaus' setzen!!!



  • AGS'ler schrieb:

    hustbaer schrieb:

    @AGS'ler:
    Wo ist bitte der Unterschied ob ich jetzt "Lern C++." oder "Mach mal bitte ein Tutorial!" schreibe?

    Inhaltlich gleich, aber um deine Frage zu beantworten: Das Wörtchen BITTE!

    Lol


Anmelden zum Antworten