C++ Programmierung einer Bank inklusive Klassendiagramm (UML)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • C++ Programmierung einer Bank inklusive Klassendiagramm (UML)

    Ich lerne grade die Programmierung einer Bank da ich im Informatik Unterricht sehr zurück hänge.

    Ich soll eine Bank nach folgender Quelle Programmieren:
    ti.inf.uni-due.de/teachin...uml-sw-2x2.pdf

    Ab Seite 11 startet die Einführung.
    Ich hab dazu angefangen eine UML - Klassendiagramm zu entwerfen:

    s3.directupload.net/file/d/2337/tgoarw9c_jpg.htm

    Nun sagte mir mein Lehrer als ich ihm dies zeigte das die Konstruktor und Destruktor blabla fehlen. Nun habe ich ziemliche Verständnisprobleme bei welcher Verknüpfung (Komposition / Assoziation / Aggregation) in dem Klassendiagramm inklusive dem Quellcode.

    Nun wollte ich fragen ob jmd mir eine solche Klasse vllt als Beispiel schreiben könnte oder mir ein Tutorial zeigen könnte was mir vllt helfen könnte. Ich weiß das es sehr wenig ist was ich bisher habe aber ich brauche einen Anfangspunktum mit dem ganzen mal klar zu kommen und die normalen Erklärungen der Assosziation etc helfen mir nicht wirklich weiter.

    mfg
    l2oxxi
  • l2oxxi schrieb:

    Nun sagte mir mein Lehrer als ich ihm dies zeigte das die Konstruktor und Destruktor blabla fehlen. Nun habe ich ziemliche Verständnisprobleme bei welcher Verknüpfung (Komposition / Assoziation / Aggregation) in dem Klassendiagramm inklusive dem Quellcode.

    konstruktoren und distruktoren werden in allen klassen benötigt
    kostruktor um die klasse zu erzeugen, destruktor um aufzuräumen
    mi.uni-koeln.de/c/mirror/f7alp…ieren-1-ws96-97/ctor.html
    MfG ShureG

    There are 10 kinds of people. Those who understand binary notation, and those who do not.
  • Das weiß ich bin ja kein kompletter neuling :)
    mein Problem ist bei den Verknüpfungen die Zusatzkonstruktoren (Beispiel aus dem unterricht):


    1) Beziehungsart ist „Komposition“
    Ein Zeiger-Objekt der Klasse CMotor als Attribute der Klasse CAuto aufnehmen

    //Prototyp
    class CMotor;

    class CAuto
    {
    private:
    string m_strModell;
    CMotor* m_pObjMotor;

    public:
    CAuto(string strModell);
    void SetModell(string strModell);
    string GetModell();

    };

    2) weil „m_pObjMotor“ private ist muss man eine Get-Methode implementieren, um auf diese Attribute zu zugreifen:


    //Prototyp
    class CMotor;

    class CAuto
    {
    private:
    string m_strModell;
    CMotor* m_pObjMotor;

    public:
    CAuto(string strModell);

    CMotor* GetObjMotor();
    void SetModell(string strModell);
    string GetModell();

    };
    3) In der Konstruktor-Methode der Klasse CAuto muss einen Speicherplatz reserviert (allokiert) werden. Dies gescheht mit dem Operator new:


    CAuto::CAuto(string strModell)
    {
    m_strModell = strModell;

    m_pObjMotor = new CMotor(0);

    }




    Wenn ich jetz nach meinem Beispiel vorgehe, besitzt die Bank einen Zusatzkonstruktor für Konto, aber wie definiere ich weiter den Zusatzkonstruktor für Betrag (nach meinem Beispiel oben)?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von l2oxxi ()

  • ich versteh nicht so ganz was du unter zusatzkonstrutor meinst?

    in der Bankklasse musst du ein oder mehrere Konten haben, in der kontoklasse ein/mehrere Beträge
    ich weiss nicht genau wie es in c++ ist mit den Konstruktoren, in java zb gibt es ein defaul Konstruktor ohne Parameter und dann kannst du dir Konstruktoren anlegen mit den Parameter. muss ja in c++ auch geben.
    MfG ShureG

    There are 10 kinds of people. Those who understand binary notation, and those who do not.
  • Ich weiß z.B. das in C++ anders als in Java die Objekte die voneinander abhängig sind nicht automatisch gelöscht werden wenn die Beziehiehungspartner gelöscht werden.
    Ich hab hier einen anfang, bin grade fleißig dabei, vllt kannst du mir ja sagen ob es soweit richtig ist (das ein fehler drin ist weiß ich, ich muss den verweis auf ckonto irgendwie als vector machen aber da komme ich grade nicht weiter ....):

    class cbank
    {
    private:
    string m_strname;
    ckonto* m_pobjkonto;

    public:
    cbank(string strname);
    ckonto* getobjkonto();
    void setname(string strname);
    string getname();

    };



    class ckonto
    {
    private:
    string m_strnummer;
    float m_fzins;


    public:
    ckonto(string strnummer);
    void setnummer(string strnummer);
    void setzins(float fzins);
    float getzins();
    string getnummer();
    };





    cbank::cbank(string strname)
    {
    m_strname = strname;
    m_pobjkonto = new ckonto(0);
    }

    cbank::~cbank()
    {
    delete m_pobjkonto;
    }

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von l2oxxi ()

  • #include <cstdlib>
    #include <iostream>
    #include <string>
    #include <conio.h>

    using namespace std;


    class ckunde;
    class cbank
    {
    private:
    string m_strbankname;
    ckunde* m_pobjkunde;
    public:
    cbank(string strbankname);
    ~cbank();
    ckunde* getobjkunde();
    string getbankname();
    void setbankname(string strbankname);
    };

    class ckunde
    {
    private:
    string m_strkundenname;
    public:
    ckunde(string strkundenname);
    ~ckunde();
    void setkundenname(string strkundenname);
    string getkundenname();
    };


    cbank::cbank(string strbankname)
    {
    m_strbankname = strbankname;
    m_pobjkunde = new ckunde("");
    }



    cbank::~cbank()
    {
    delete m_pobjkunde;
    }



    string cbank::getbankname()
    {
    return m_strbankname;
    }

    ckunde::ckunde(string strkundenname)
    {
    m_strkundenname = strkundenname;
    }

    ckunde::~ckunde(){}


    string ckunde::getkundenname()
    {
    return m_strkundenname;
    }



    int main()
    {
    cbank objbank("Sparkasse");
    cout << objbank.getbankname() << endl;
    ckunde* objkunde = objbank.getobjkunde();
    objkunde->setkundenname("Adrian");
    cout << objkunde->getkundenname();

    getch();
    };



    [Linker error] undefined reference to `cbank::getobjkunde()'
    [Linker error] undefined reference to `ckunde::setkundenname(std::string)'



    weiß jmd wo der fehler ist?
  • hallo

    hab dir mal alles in die codetags gelegt:

    Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <string>
    4. #include <conio.h>
    5. using namespace std;
    6. class ckunde;
    7. class cbank
    8. {
    9. private:
    10. string m_strbankname;
    11. ckunde* m_pobjkunde;
    12. public:
    13. cbank(string strbankname);
    14. ~cbank();
    15. ckunde* getobjkunde();
    16. string getbankname();
    17. void setbankname(string strbankname);
    18. };
    19. class ckunde
    20. {
    21. private:
    22. string m_strkundenname;
    23. public:
    24. ckunde(string strkundenname);
    25. ~ckunde();
    26. void setkundenname(string strkundenname);
    27. string getkundenname();
    28. };
    29. cbank::cbank(string strbankname)
    30. {
    31. m_strbankname = strbankname;
    32. m_pobjkunde = new ckunde("");
    33. }
    34. cbank::~cbank()
    35. {
    36. delete m_pobjkunde;
    37. }
    38. string cbank::getbankname()
    39. {
    40. return m_strbankname;
    41. }
    42. ckunde::ckunde(string strkundenname)
    43. {
    44. m_strkundenname = strkundenname;
    45. }
    46. ckunde::~ckunde(){}
    47. string ckunde::getkundenname()
    48. {
    49. return m_strkundenname;
    50. }
    51. int main()
    52. {
    53. cbank objbank("Sparkasse");
    54. cout << objbank.getbankname() << endl;
    55. ckunde* objkunde = objbank.getobjkunde();
    56. objkunde->setkundenname("Adrian");
    57. cout << objkunde->getkundenname();
    58. getch();
    59. };
    Alles anzeigen


    bitte beim nächsten mal selber machen, du findest die tags für die verschiedenen sprachen direkt unter dem editor feld.

    thx, truespin


    edit:
    pfff bcc-fan war wieder schneller ;)
  • Noch ein bischen erweitert :p als nächstes kommt ne Vererbung von konto auf spar und giro konto ^^



    Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <string>
    4. #include <conio.h>
    5. using namespace std;
    6. class ckonto;
    7. class ckunde;
    8. class cbank
    9. {
    10. private:
    11. string m_strbankname;
    12. ckunde* m_pobjkunde;
    13. ckonto* m_pobjkonto;
    14. public:
    15. cbank(string strbankname);
    16. ~cbank();
    17. ckunde* getobjkunde();
    18. string getbankname();
    19. void setbankname(string strbankname);
    20. };
    21. class ckunde
    22. {
    23. private:
    24. string m_strkundenname;
    25. ckonto * m_pobjkonto;
    26. public:
    27. ckunde(string strkundenname);
    28. ckonto* getobjkonto();
    29. ~ckunde();
    30. void setkundenname(string strkundenname);
    31. string getkundenname();
    32. };
    33. class ckonto
    34. {
    35. private:
    36. string m_strkontonummer;
    37. public:
    38. ckonto(string strkontonummer);
    39. ~ckonto();
    40. string getkontonummer();
    41. void setkontonummer(string strbankname);
    42. };
    43. cbank::cbank(string strbankname)
    44. {
    45. m_strbankname = strbankname;
    46. m_pobjkunde = new ckunde("");
    47. }
    48. cbank::~cbank()
    49. {
    50. delete m_pobjkunde;
    51. delete m_pobjkonto;
    52. }
    53. string cbank::getbankname()
    54. {
    55. return m_strbankname;
    56. }
    57. ckunde::ckunde(string strkundenname)
    58. {
    59. m_strkundenname = strkundenname;
    60. m_pobjkonto = new ckonto("");
    61. }
    62. ckunde::~ckunde()
    63. {
    64. delete m_pobjkonto;
    65. }
    66. string ckunde::getkundenname()
    67. {
    68. return m_strkundenname;
    69. }
    70. void ckunde::setkundenname(string strkundenname)
    71. {
    72. m_strkundenname = strkundenname;
    73. }
    74. ckunde* cbank::getobjkunde()
    75. {
    76. return m_pobjkunde;
    77. }
    78. ckonto::ckonto(string strkontonummer)
    79. {
    80. m_strkontonummer = strkontonummer;
    81. }
    82. ckonto::~ckonto(){}
    83. void ckonto::setkontonummer(string strkontonummer)
    84. {
    85. m_strkontonummer = strkontonummer;
    86. }
    87. string ckonto::getkontonummer()
    88. {
    89. return m_strkontonummer;
    90. }
    91. ckonto* ckunde::getobjkonto()
    92. {
    93. return m_pobjkonto;
    94. }
    95. int main()
    96. {
    97. cbank objbank("Sparkasse");
    98. cout << objbank.getbankname() << endl;
    99. ckunde* objkunde = objbank.getobjkunde();
    100. objkunde->setkundenname("Adrian");
    101. cout << objkunde->getkundenname() << endl;
    102. ckonto* objkonto = objkunde->getobjkonto();
    103. objkonto->setkontonummer("76");
    104. cout << objkonto->getkontonummer() << endl;
    105. getch();
    106. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von l2oxxi ()

  • Hat emand eine Ahnunge wie man eine Komposition mit einem Vector programmiert?
    Hatte es mir so gedacht:

    Quellcode

    1. class ckunde;
    2. class cbank
    3. {
    4. private:
    5. string m_strbankname;
    6. vector< ckunde*> m_veckunde;
    7. public:
    8. cbank(string strbankname);
    9. ~cbank();
    10. ckunde* getobjkunde();
    11. string getbankname();
    12. void setbankname(string strbankname);
    13. };
    14. class ckunde
    15. {
    16. private:
    17. string m_strkundenname;
    18. public:
    19. ckunde(string strkundenname);
    20. ckonto* getobjkonto();
    21. ~ckunde();
    22. void setkundenname(string strkundenname);
    23. string getkundenname();
    24. };
    25. cbank::cbank(string strbankname)
    26. {
    27. m_strbankname = strbankname;
    28. ckunde* objkunde = new ckunde("");
    29. }
    30. cbank::~cbank()
    31. {
    32. ????? Kompletten Vektor löschen????????
    33. }
    34. ckunde* cbank::getobjkunde()
    35. {
    36. cbank.m_veckunde.push_back(ckunde); << Funktioniert nicht
    37. }
    Alles anzeigen