Eigene Klassen & Headerdateien definieren



  • Hallo Leute, wir sollen fürs DV-Praktikum folgende Übung machen, allerdings kann ich mit der Aufgabenstellung nicht viel anfagen 😞 .

    Vielleicht könnt ihr mir weiterhlefen.

    Gruß Axel

    hier die Aufgabe:

    Personalien (Name, Alter, Familienstand) einlesen / ausgeben
    Teil1:
    1. Anlegen eines Programms usemycl.cpp.
    Hier wird myclas.h eingebunden, das eine Klasse Myclas enthält.

    2. Anlegen einer Headerdatei myclass.h, die die Klasse Myclas enthält. Darin sind die Methoden
    lesen(Name, Alter, Familienstand) und
    anzeigen() deklariert, die die privaten Daten Name, Alter und Familienstand jeweils von der Tastatur lesen bzw. auf dem Bildschirm anzeigen.
    Name ist vom Typ string,
    Alter int und
    Familienstand ist l (=ledig), v(=verheiratet) oder w(=verwitwet)
    3. Eine Mehrfacheinbindung soll verhindert werden.
    4. Aus dem Hauptprogramm usemycl.cpp werden nach obiger Vorgabe die Daten gelesen und gespeichert bzw. angezeigt.

    Teil2:
    Die Daten sollen in ein 100 Felder Array eingespeichert werden.
    Auf Wunsch des Benutzers sollen alle belegten Daten des Arrays nummeriert ausgegeben werden.



  • was genau ist dir da unklar? wenn alles dann

    lerne deutsch
    lerne klassen ( c++ )

    mit dem beiden sachen kommste weiter. ich weiss nicht wo dein wissenstand ist bezüglich klassen

    aber schreibe eine

    myclas.h und myclas.cpp ( nicht myclass.cpp 😡 )

    myclass hat die "infos" zu der person

    sprich
    Name = string
    Alter = int
    familienstand = z.b. ne typedef struct oder wie auch immer ( char[1] oder wie auch immer )

    in der .h hast du die fkt

    einlesen( ... )
    und ausgeben ( ... )

    in der

    usemyclas.cpp ist dein

    int main(..) drinnen
    hier #include oben die myclas.h
    und im int main rufst du die fkt aus myclas auf

    aber schau dir klassen an! und wie diese in versch. .h und .cpp "verteilt" werden und eingebunden werden



  • DirkDiggler2oo2 schrieb:

    Vielleicht könnt ihr mir weiterhlefen.

    An welcher Stelle hängst du denn?

    Caipi



  • DirkDiggler2oo2 schrieb:

    Vielleicht könnt ihr mir weiterhlefen.

    wo genau hast probs?

    [Edit] viel zu spät 😕



  • das mit den klassen ist mir noch nicht ganz klar, was ist der unterschied zwischen einer klasse und einem objekt?



  • Hallo

    Eine Klasse ist sozusagen der Prototyp eines Objekts, ein Objekt ist eine realle Instanz nach den Plänen der Klasse.

    bis bald
    akari



  • Eine Klasse legt Eigenschaften und Fähigkeiten _für_ ein Objekt fest. Sie ist im Prinzip nur die Vorlage, nach der das Objekt 'gebaut' wird.

    Beispiel:
    Du hast eine Klasse, nennen wir sie 'Auto'. In dieser Klasse legst du die Eigenschaften und Fähigkeiten fest, die ein Objekt vom Typ Auto (ein Objekt der Klasse Auto) haben soll. Beispielsweise die Eigenschaften Motor, Bremsen, Autofarbe und die Fähigkeiten gasgeben(), bremsen(), und halten(). Die Eigenschaften speicherst du normalerweise in Variablen/Objekten, die Fähigkeiten realisierst du durch Funktionen. Im Zusammenhang mit Klassen werden diese Methoden genannt.

    Klarer?
    Siehe gegebenfalls auch nochmal in einem Buch/Tutorial deiner Wahl. 🙂

    Caipi



  • Diese Beispiele aus der realen Welt sind für einen Anfänger total verwirrend. Von wegen "Mit OO kann man die reale Welt abbilden.". Oh man, was konnte ich mir darunter alles NICHT vorstellen... das ware vor vielen Jahren. Kapiert habe ich es an GUI-Beispielen!

    Jeder Knopf (Button) bei Benutzeroberflächen (auch bei Spielen) ist ein Objekt, auf das man klicken kann. Jeder Knopf zeichnet sich selber, mit einer paint()-Methode. Jeder Knopf hat eine Position und Größe (Attribute). Das alles ist in einer Klasse beschrieben:

    class button {
    public:
         // In paint wird anhand der unten stehenden Attribute
         // ein Kopf gemalt.
         void paint();
    
    private:
        int x, y;   // Position des Knopf
        int b, h;   // Breite und Hoehe
    
        std::string text;   // Text der auf dem Knopf stehen soll.
    };
    

    Genau das gleiche mit Fenstern. Um ein Fenster zu zeichnen, würde man eine Klasse window definieren.

    Alle Instanzen (Objekte) werden dann in einer Liste verwaltet, die geht man dann durch und ruft zu jeder Instanz die paint()-Methode auf.



  • jetzt mir das mit den klassen schon mal klarer, als ist ne klasse quasi das gleiche wie struct.

    allerdings steht im 2. teil der augfgabe das man das in einem 100er array speichern soll.
    hab das zwar schon mal gemacht, aber dass war total umständlich über tausend pointer und so, gibts da schon irgendwas vordefiniertes von borland bzw. ms das man implementieren kann?



  • DirkDiggler2oo2 schrieb:

    jetzt mir das mit den klassen schon mal klarer, als ist ne klasse quasi das gleiche wie struct.

    naja, du hast fast recht.
    Also ich glaub zwar schon, dass man die Struct-Konstruktion in C++ noch verwenden kann, aber nicht sollte.
    Das liegt einfach daran, dass man bei Klassen viel mehr Vorteile, als Bei struct hat.
    z.B. hat man bei Klassen Methoden, und bei Strcut nicht sondern nur Elementvariablen. Und dies ist ganz entscheident, weshalb die Klassen entwickelt wurden.

    Aber im Grundsatz hast du recht. Man kann Klassen und Struct schon vergleichen.
    Stellt die Klassen einfach als eine Erweiterung von Struct vor.



  • Hallo

    Also ich glaub zwar schon, dass man die Struct-Konstruktion in C++ noch verwenden kann, aber nicht sollte.
    Das liegt einfach daran, dass man bei Klassen viel mehr Vorteile, als Bei struct hat.
    z.B. hat man bei Klassen Methoden, und bei Strcut nicht sondern nur Elementvariablen. Und dies ist ganz entscheident, weshalb die Klassen entwickelt wurden.

    Falsch. Man kann mit class nichts machen, was man mit struct nicht auch machen kann. Einziger Unterschied ist private als Standard bei class. Es gibt bereits genug Threads zu diesem Thema.

    bis bald
    akari



  • akari schrieb:

    Hallo

    Also ich glaub zwar schon, dass man die Struct-Konstruktion in C++ noch verwenden kann, aber nicht sollte.
    Das liegt einfach daran, dass man bei Klassen viel mehr Vorteile, als Bei struct hat.
    z.B. hat man bei Klassen Methoden, und bei Strcut nicht sondern nur Elementvariablen. Und dies ist ganz entscheident, weshalb die Klassen entwickelt wurden.

    Falsch. Man kann mit class nichts machen, was man mit struct nicht auch machen kann. Einziger Unterschied ist private als Standard bei class. Es gibt bereits genug Threads zu diesem Thema.

    Auch falsch! Weil der orig. Poster von C-Structs ausgegangen ist! Hat er zwar nicht explizit gesagt, aber wenn er nicht mal weiß was Klassen sind, wird er auch nicht von C++-Structs ausgehen. Oder?

    Also, Klassen haben schon viel mehr Vorteile als C-Structs. Aber für einen Anfänger der mit OO nichts anfangen kann (und darum geht es hier und nicht um haarspalterei!) kann man schon sagen: eine C++ Klasse kann erstmal das was ein C-Struct kann. Punkt! Das aber eine Klasse letztendlich vieeeeel mehr kann und doch was anderes ist, sollte man auch sagen.

    Der Fall C++-Structs und C++-Klassen ist etwas, das eine C++-Spezialität ist und nicht allgemein was mit OO zu tun hat.


Anmelden zum Antworten