You are not logged in.

  • Login

1

Monday, November 8th 2010, 5:50pm

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:
http://www.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:

http://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

2

Monday, November 8th 2010, 6:39pm

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
http://www.mi.uni-koeln.de/c/mirror/f7al…96-97/ctor.html

3

Monday, November 8th 2010, 7:11pm

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)?

This post has been edited 1 times, last edit by "l2oxxi" (Nov 8th 2010, 7:55pm)


4

Monday, November 8th 2010, 10:15pm

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.

5

Monday, November 8th 2010, 11:19pm

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;
}

This post has been edited 2 times, last edit by "l2oxxi" (Nov 8th 2010, 11:34pm)


6

Tuesday, November 9th 2010, 4:56am

#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?

7

Tuesday, November 9th 2010, 10:21am

Nutze die Code-Tags und formatiere den Quelltext -> dann kann man das einfacher lesen.

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
int main()
{
    cbank objbank("Sparkasse");
    cout << objbank.getbankname() << endl;
    ckunde* objkunde = objbank.getobjkunde(); // <- hier sollte etwas nicht passen?
    objkunde->setkundenname("Adrian");
    cout << objkunde->getkundenname();
 
    getch();
} // hier kein Semikoln!


MfG bcc-fan

8

Tuesday, November 9th 2010, 10:22am

hallo

hab dir mal alles in die codetags gelegt:

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#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();
};


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 ;)

9

Tuesday, November 9th 2010, 1:17pm

Noch ein bischen erweitert :p als nächstes kommt ne Vererbung von konto auf spar und giro konto ^^



C/C++ Quellcode

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

This post has been edited 2 times, last edit by "l2oxxi" (Nov 9th 2010, 2:42pm)


10

Wednesday, November 17th 2010, 12:47pm

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

C/C++ Quellcode

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

Similar threads

Social bookmarks