Klassen



  • Ziel ist die Implementierung einer ersten Version einer Klasse Bauteil unter
    Verwendung des Datentyps bool und der Klasse string. Anstelle des Struktogramms
    sind ein UML-Diagramm der Klasse, sowie Testpläne für alle Methoden anzufertigen.
    Implementieren Sie eine Klasse Bauteil. Verwenden Sie hierzu u.a. die Klasse string zur Darstellung
    von Texten.
    Erforderliche Eigenschaften/Methoden für Bauteil:
    Eigenschaften
    - bezeichnung (string)
    - stromfliesst (bool)
    - leitet(bool)
    Methoden
    - Default Konstruktor und ein zusätzlicher Konstruktor
    - Alle Eigenschaften am Bildschirm in einer Zeile „schön“ anzeigen
    - get für die Eigenschaften bezeichnung und leitet
    - set für die die Eigenschaft stromfliesst.
    Weitere Eigenschaften und Methoden können bei Bedarf ergänzt werden.
    Erstellen Sie ein Testprogramm, welches alle Beispiele des Testplans überprüft

    - Ich weiß nicht, wie ich anfangen soll!!!!!

    kann mir jemand helfen..

    Angefangen habe ich so :

    Header datei.....

    Inhalt:
    class Bauteile
    {
    private:
    bool stromfliesst;
    bool leitet;
    string bezeichnung;

    public:



  • #include <string>
    #include <iostream>
    
    class Bauteil
    {
     private:
      std::string bezeichnung;
      bool stromfliesst;
      bool leitet;
    
     public:
      Bauteil() : leitet(false), stromfliesst(false), bezeichnung("") { }
      Bauteil(const std::string& bez, bool s, bool l) : bezeichnung(bez), stromfliesst(s), leitet(l) { }
    
      void setStromflisest(bool b) { stromfliesst = b; }
    
      const std::string& getBez() const { return bezeichnung; }
      bool getStromfliesst() const { return stromfliesst; }
      bool getLeitet() const { return leitet; }
    
      void print() { std::cout << "*** " << bezeichnung << " ***\nStromfliesst: " << (stromfliesst ? "Ja" : "Nein") << "\nLeitet: " << (leitet ? "Ja" : "Nein") << "\n" << std::endl;}
    };
    
    int main()
    {
    	Bauteil test;
    
    	test.print();
    
    	Bauteil anderes("Anderes Bauteil", true, true);
    
    	anderes.print();
    
    	anderes.setStromflisest(false);
    
    	anderes.print();
    }
    

    Dein Anfang war doch soweit gut... Hättest nur weitermachen müsen 🤡



  • Bauteil() : leitet(false), stromfliesst(false), bezeichnung("") { }
    Bauteil(const std::string& bez, bool s, bool l) : bezeichnung(bez), stromfliesst(s), leitet(l) { }

    ---Ist das hier der Konstruktor

    Ich kenne das normaler weise mit klassenname::klassenname

    Vielen Dank für die Mühe


  • Mod

    mij schrieb:

    Bauteil() : leitet(false), stromfliesst(false), bezeichnung("") { }
    Bauteil(const std::string& bez, bool s, bool l) : bezeichnung(bez), stromfliesst(s), leitet(l) { }

    ---Ist das hier der Konstruktor

    Ich kenne das normaler weise mit klassenname::klassenname

    Vielen Dank für die Mühe

    Das ist ein Konstruktor. Wenn man Klassenmethoden innerhalb der Klassendeklaration definiert muss man davor nicht noch einmal den Klassennamen schreiben - es ist ja schon klar wozu die Methode gehören soll. Mehr noch, dies ist sogar verboten!

    Verwechselst du vielleicht die Angabe des Klassennamens (klassenname::blablabla) mit der Initialisierungsliste die hier benutzt wurde?

    edit: An fghgfh: Wie wäre es mit Defaultparametern?



  • Danke...

    Und wie mache Ich die aufteilung in einer Header Datei....

    Danke im vorraus



  • class Bauteile
    {
    private:
    bool stromfliesst;
    bool leitet;
    string bezeichnung;

    public:
    Bauteile()
    {
    stromfliesst(false);
    leitet(false)
    bezeichnung("");
    }
    Bauteile ( string bez, bool l, bool s)
    {
    bezeichnung=bez;
    leitet=l;
    stromfliesst=s;
    }

    Ist das bis jetzt so ok

    ?????????????



  • SeppJ schrieb:

    edit: An fghgfh: Wie wäre es mit Defaultparametern?

    Es wurde explizit ein Defaultkonstruktor verlangt, daher habe ich den auch explizit erstellt. 🤡

    mij schrieb:

    class Bauteile
    {
    private:
    bool stromfliesst;
    bool leitet;
    string bezeichnung;

    public:
    Bauteile()
    {
    stromfliesst(false);
    leitet(false)
    bezeichnung("");
    }
    Bauteile ( string bez, bool l, bool s)
    {
    bezeichnung=bez;
    leitet=l;
    stromfliesst=s;
    }

    Ist das bis jetzt so ok

    ?????????????

    Ja, das sieht soweit gut aus. Jetzt noch die Methoden und so, und du hast es selber geschafft.

    Aufteilung in Header:

    Header (Bla.h):

    #ifndef BLA_H
    #define BLA_H
    
    class Bla
    {
     private:
      int beispiel();
    };
    
    #endif /* BLA_H */
    

    Source (Bla.cpp):

    #include "Bla.h"
    
    int Bla::beispiel()
    {
     return 10;
    }
    


  • Was ist eigentlich gemeint mit den Methoden.

    Sind das die Funktionen, die Ich einrichten muss....

    Vielen lieben Dank



  • mij schrieb:

    Was ist eigentlich gemeint mit den Methoden.

    Sind das die Funktionen, die Ich einrichten muss....

    Vielen lieben Dank

    Ja, genau.



  • Sind die auch in der Header Datei einzurichten 🙂

    Sorry für die vielen fragen



  • mij schrieb:

    Sind die auch in der Header Datei einzurichten 🙂

    Sorry für die vielen fragen

    Sowohl in der Headerdatei, als auch in der Sourcedatei. Siehe mein Beispiel für die Aufteilung. Dort ist beispiel die Methode der Klasse Bla .


  • Mod

    mij schrieb:

    Was ist eigentlich gemeint mit den Methoden.

    Sind das die Funktionen, die Ich einrichten muss....

    Vielen lieben Dank

    Ja.

    edit: Oh, viel zu langsam. Und das bloß für ein Wort 🙂



  • mij, dir scheint einiges an Grundlagen zu fehlen. Ihr habt doch bestimmt Unterlagen zu C++, oder wie lernst du die Programmiersprache?



  • Lerne mit dem Buch von Ulrich-Kirch Prinz

    Wenn es dir was sagt!!



  • mij schrieb:

    Lerne mit dem Buch von Ulrich-Kirch Prinz

    Wenn es dir was sagt!!

    Ich habe eins im Regal stehen, aber da steht Ulla Kirch-Prinz, Peter Prinz drauf. Halte es aber eher für fortgeschritten 😉



  • deswegen frage Ich auch soviel 🙂

    grundkenntnisse hab ich ja.... Ich muss das nur einmal können und dann wird das schon funktionieren!!!!!

    Woher weiß ich eigentlcih welche Methoden ich schreiben soll!!!!



  • get für die Eigenschaften bezeichnung und leitet
    set für die die Eigenschaft stromfliesst.

    Wie erstelle ich diese Methoden

    setstromfliesst()
    {
    stormfliesst= ....
    }

    oder anders



  • setter sind notwendig, um Werte in deiner Klasse zu setzen oder zu veraendern.
    getter werden verwendet, um sich diese Werte zu holen.

    Aufbau fuer setter waere mal ganz primitiv

    void setFoo(int neuerWert) { membervariable = neuerWert; }
    

    Aufbau fuer getter waere mal ganz primitiv (const zwecks Const correctness ganz sinnvoll)

    int getFoo() const { return membervariable; }
    

    Weiterhin werden Funktionen fuer die Arbeit mit deinen Membervariablen benoetigt. In deinem Fall fuer die Ausgabe ne Print-Funktion.

    http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=viewsdownload&sid=2


Anmelden zum Antworten