User Klassen erstellen C++



  • Hallo ich arbeite an einem Programm, jedoch komme ich nicht weiter.

    Aufgabe: Erstellen Sie eine Klasse User, welche alle Informationen (außer dem Kennwort) als Eigenschaft speichert. Die Eigenschaften müssen über einen Konstruktor gesetzt werden - dem Konstruktor wird ein String übergeben. Der String entspricht immer einer Zeile aus der oben genannten Datei. Nutzen Sie die Informationen aus Zerlegen eiens Strings um die Informationen aus der Zeile zu lesen.
    Fügen Sie in der Klasse eine Methode Output ein, welche einen String zurückgibt, der die Informationen (Username, UID, GID und Homeverzeichnis in folgender Form zurückgibt:

    Lesen Sie die Datei /etc/passwd zeilenweise aus, legen Sie jeweils einen User an, und geben Sie mit der Output-Methode die interessanten Informationen aus.

    Code:

    #include <iostream>
    #include <string>
    using namespace std;
    class Abteilung {

    protected:
    string name;
    string abteilungsvorstand;
    string kuerzel;

    public:
    bool istklassederabteilung(string setzen);
    Abteilung();
    };

    int main() {

    string setzen;
    Abteilung obj;
    
    cout << "Abteilung" << endl;
    cin >> setzen;
    obj.istklassederabteilung(setzen);
    
    return 0;
    

    }



  • Sieht doch gut aus.
    Wo genau kommst Du denn nicht weiter?



  • @Belli Ich weiß halt nicht was ich jetzt noch machen muss.


  • Mod

    @Tahin23 sagte in User Klassen erstellen C++:

    @Belli Ich weiß halt nicht was ich jetzt noch machen muss.

    Mach beim nächsten Satz der Aufgabe weiter: "Die Eigenschaften müssen über einen Konstruktor gesetzt werden - dem Konstruktor wird ein String übergeben." Das bekommst du hin, oder? Und dann den nächsten Satz, usw.

    Während du dabei bist, solltest du über die Benamung deiner Dinge nachdenken. istklassederabteilung(setzen). Häh? Was macht das? Womit arbeitet das überhaupt? Was für eine Klasse? Was soll setzen sein? Ein gut programmiertes Programm liest sich fast wie (englische) Prosa, so dass Logikfehler sofort auffallen, weil die Sätze inhaltlich keinen Sinn machen. Hier habe ich aber keine Ahnung, was überhaupt gemeint sein könnte, und kann dir daher auch keine Tipps geben, ob das falsch oder richtig ist. Faustregel: Nenn Dinge nach dem, was sie sind, nicht nach dem, was du damit tun willst.



  • Seht ihr da anderen Code als ich? Bisher hat der Code nichts mit der Aufgabe zu tun

    @Tahin23 sagte in User Klassen erstellen C++:

    Erstellen Sie eine Klasse User

    class Abteilung {
    
    protected:
    string name;
    string abteilungsvorstand;
    string kuerzel;
    
    public:
    bool istklassederabteilung(string setzen);
    Abteilung();
    };
    


  • @Schlangenmensch
    class User{
    protected:
    string username;
    unsigned int user_id;
    unsigned int group_id;
    string user_id_info;
    string home_directory;
    string command_shell;
    public:
    User(string);
    string output();
    }

    so habe ich es momentan



  • Das habe ich mich auch gefragt? Was haben die User (aus /etc/passwd) mit einer Abteilung zu tun???

    Edit:
    Es geht wohl um die Linux-Datei /etc/passwd .
    Du sollst also im Konstruktor User(string) eine Zeile daraus entgegennehmen und die einzelnen Bestandteile extrahieren (parsen).
    Dabei hilft dir gut die Funktion getline, der du ein Trennzeichen als Parameter übergeben kannst (hierfür also ':').



  • @Tahin23 Das sieht schon besser aus. Dann kannst du jetzt mit der Implementierung des Konstruktors anfangen.

    @Tahin23 sagte in User Klassen erstellen C++:

    User(string);

    Ich persönlich finde es schön, wenn Parameter auch im Header bzw in der Deklaration Namen haben

    Edit: Wenn du Code postest, nutze bitte Code Tags. Einfach auf </> oben neben der Dropdown box klicken und zwischen den eingefügten Tags den Code schreiben.



  • @Tahin23: warum sind all deine Member-Variablen protected?



  • @Schlangenmensch könntest du mir erklären wie ich jz anfangen soll, also ich habe noch nie ein Programm mit einem Konstruktor geschrieben.



  • Ein Konstruktor wird genauso definiert, wie jede andere Funktion auch (nur daß man keinen Rückgabetyp dafür angibt):

    User::User(string userData)
    {
      // hier der Code
    }
    

    Als Besonderheit gibt es noch die Initialisierungsliste, welche du hierbei aber ersteinmal vernachlässigen kannst.


  • Mod

    @Tahin23 sagte in User Klassen erstellen C++:

    @Schlangenmensch könntest du mir erklären wie ich jz anfangen soll, also ich habe noch nie ein Programm mit einem Konstruktor geschrieben.

    Dann ist diese Aufgabe viel zu schwer. Du hast zu viel verpasst. Du musst ein paar Kapitel/Übungen in deinem Lehrwerk zurück gehen und diese nochmal gründlich nacharbeiten. Wir können dir nicht sämtliche Grundlagen beibringen, die du für diese Aufgabe brauchen wirst.

    Und lass unbedingt das Abschreiben von fremden Code sein!



  • @SeppJ wer sagt denn überhaupt dass ich es abgeschrieben hab??


  • Mod

    @Tahin23 sagte in User Klassen erstellen C++:

    @SeppJ wer sagt denn überhaupt dass ich es abgeschrieben hab??

    Ich sage das, und jeder andere hier sieht es auch. Der Code ist von zwei verschiedenen Personen geschrieben worden, und da du ihn selber nicht verstehst, warst du sicher nicht der Hauptautor. Dies ist keine Anklagebank oder die Schule. Du musst nicht vor uns so tun, als ob wir der Lehrer wären. Wir geben dir den Tipp, dass du deine Arbeitsweise umstellen musst, weil wir sehen, dass du offenbar irgendwo her Code kopierst, was nicht gut für dich ist.



  • @SeppJ ja sg kannst glauben was du willst kp bro



  • @Tahin23 @Th69 hat dir doch den Ansatz für deinen Konstruktor geliefert. Und dich auch schon auf die richtige Fährte für das Parsen gebracht. Jetzt bist du dran.


Log in to reply