PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vererbung oder pointer



mile04
17-04-2005, 14:04
hallo
also ich habe 2 Klassen im Programm:

class CA
{ private:
int a;
vector<int> 1dvec;
public:
fa1();
fa2();

};
class CB
{ private:
int b;
vecor<vector<int> > 2dvec;
public:
fb1();
fb2();
};
soviel ich weiss wenn man jetzt mit der fb1()von der Klasse CB auf die Elemente von der Klasse CA z.B.(auf die Variable a)zugreifen bzw. ändern möchte soll man in dem Fall :
1.Variante:
eine Vererbung machen . Also die Klasse CB soll die Klasse CA vererben.un der Zugriff von der Klasse CB auf der Klasse CA erfolgt problemlos.
mir wurde empfohlen die
2. Variante:
die Variablen der Klasse CA als public definieren und ein Pointer in der Klasse CB vom datentyp der Klasse CA implementieren:


class CB
{ public:
CA *pointer;
....
};
dadurch ist auch einen Zugriff von der Klasse CB auf Elemente der Klasse CA möglich.

welche Variante ist richtig bzw. die üblichste zu verwenden. was sind die Vor und Nachteile jeder Variante?
Danke schön

michael.sprick
17-04-2005, 14:23
Hi,

ich halte beides für wenig sinnvoll.

Wenn Du aus Klasse CB Zugriff auf die privaten Member der Klasse CA brauchst, würde ich entweder ein paar Get- & Set Methoden für die entsprechenden Member schreiben oder, wenn Du wirklich direkten Zugriff brauchst, friends benutzen.

locus vivendi
17-04-2005, 15:24
Naja, Getter und Setter sind "fast" dasselbe wie der direkte Zugriff auf das Element, zumindest wenn man das unter dem Gesichtspunkt der "Kapselung" sieht. Allerdings, wenn man die Flexiblität eines Funktionsaufruf braucht, wenn ein Element veränder werden soll, natürlich ein geeignetes Mittel. Wichtiger als die Frage, wie der Zugriff geschehen soll, finde ich aber die Frage nach dem Warum. Mile04, du solltest versuchen die Klassen so zu entwerfen das eine Klasse möglichst nur ein Konzept modelliert, aber das möglichst gut. Wenn du Glück hast, wird dir dann die technische Umsetzung wie die einzelnen Klassen aufeinander zugreifen recht "natürlich" vorkommen. Vielleicht sind deine augenblicklichen Probleme ja ein Indikator das du Zuständigkeiten vermischst.