Article View: de.comp.lang.c++
Article #1538Re: Objekt Hierachie, wie am besten ?
From: Kay Hayen
Date: Tue, 06 Feb 1996 00:00
Date: Tue, 06 Feb 1996 00:00
86 lines
4172 bytes
4172 bytes
Hallo Leute,
a2597420@athena.rrz.uni-koeln.de (Joachim Zobel) meinte am 04.02.96
zum Thema "Re: Objekt Hierachie, wie am besten ?":
>kay@edition.bonbit.org (Kay Hayen) wrote:
>
>>Hallo Leute.
>
>>In meinem derzeiten Projekt ( ueber den Inhalt darf ich nichts andeuten,
>>sonst werde ich wohlmoeglich auch von Ulrich angeflamt :-) habe ich eine
>>Klasse "Kartendaten", von dieser Klasse gibt es maximal nur eine Instanz
>>mit einer Lebenszeit ueber fast das gesamte Programm.
>
>>Die Daten, die diese Klasse verwaltet aehneln sich so sehr, dass ich eine
>>Klasse "Kartenobjekt" eingefuehrt habe, deren Ableitungen dann member von
>>Kartendaten sind. Die Konstruktoren dieser Ableitungen von Kartenobjekten
>>werden vom den Konstruktoren von Kartendaten aufgerufen.
>
>Wieso Member? Eine Liste von Kartenobjekten, die alle nur über das
>Kartenobjekt-Interface angesprochen werden, waere eine bessere Lösung.
Die Kartendaten Klasse soll doch eigentlich dieses Interface sein. Mit
Member habe ich mich sicher falsch ausgedrueckt, was ich exakt meine ist
je ein Pointer auf die Erben von Kartenobjekt in der Klasse Kartendaten.
>>Dann erfolgt aber IMO ein Stilbruch, denn die "Kartenobjekte" muessen auf
>>Memberfunktionen von "Kartendaten" zugreifen und dazu muss ich jedem
>>Konstruktor einer Zeiger auf die "Kartendaten" mitgeben, was ich nicht als
>>sehr elegant empfinde.
>
>Ist aber ok. Solltest du aus irgendwelchen Gründen plötzlich mehrere
>Kartendaten benötigen, zahlt es sich aus.
Tja, ich hoffe, es ist doch irgendwie moeglich. Ralf hat in einem anderen
Posting eine Moeglichkeit aufgezeigt, aber ich verliere IMO allerdings
die Option mehere Instanzen von Kartendaten haben zu koennen.
Geht es nicht doch irgendwie ? Anscheinend wohl nicht, aber vielleicht
gibt es noch andere Ideen. Sonst werde ich mich fuer oder gegen mehere
Instanzen entscheiden muessen.
>>Sollte ich den Konstruktor von Kartendaten eher in zwei Teile aufspalten
>>und Initialisierungen der Unterobjekte in eine direkt nach dem Kostruktor
>>aufzurufende Memberfunktion "Init" verlegen ? Die Kartenobjekte koennten
>>dann ueber einen globalen Zeiger auf die Kartendaten zugreifen ? Den
>>koennte ich auch schon im Konstruktor setzen, aber Seiteneffekte von
>>Konstruktoren finde ich noch uneleganter.
>
>Lesen die Kartenobjekte nur über diesen Zeiger (const machen!)? Das
>waere ok, wenn sie schreiben und dadurch untereinander Informationen
>austauschen, kannst du leicht einen Wartungsalptraum bauen.
Ich schreibe natuerlich nicht direkt in die Strukturen, sondern benutze
Member-Funktionen, alles andere waere wohl extrem unuebersichtlich.
>Das Problem hast du allerdings auch wenn jedes Kartenobjekt seinen
>eigenen Kartendaten-Pointer hat.
Stimmt. Mensch sollte immer vermeiden, direkt an der Kontrolle von
Funktionen einer Klasse in deren Daten zu schreiben. Die Klassen sollen
doch die Daten kapseln, so sind Fehler aber schwer zu entdecken, bei
groesseren Umstellungen muss dann auch noch der ganze source durchgegangen
werden, um Aenderungen zu machen, anstatt nur eine Klasse. Alptraum wird
es dann, wenn an wenigen Stellen die Aenderungen vergessen wurden....
>Joachim
Danke auch fuer Deine Tips, Kay
--
[...]
class Mensch Ich( "Kay Hayen", "Kay@Edition.bonbit.org", ... );
class Leser *Du;
[...]
if (( You->Nett() == TRUE ) || ( You->Konstruktiv() == TRUE )) {
Ich.Gruss( Du );
Ich.Sage( Du, "Antworte mal wieder...." );
} else {
Ich.Sage( Du, "Tschuess." );
}
Technical Details
Message-ID:
<62M14C4xr5B@devil.edition.bonbit.org>Path:
arc1-ca.pugleaf.net!edition.bonbit.org!kayReferences:
<61qhJjBCr5B@devil.edition.bonbit.org> <4f24if$m52@news.rrz.uni-koeln.de>Show Full Headers
Complete Article Headers
X-Mailer: CrossPoint v3.1 via [DOS/NCBMail V2.21 REL.:160995] Message-ID: <62M14C4xr5B@devil.edition.bonbit.org> References: <61qhJjBCr5B@devil.edition.bonbit.org> <4f24if$m52@news.rrz.uni-koeln.de> X-Gateway: ZCONNECT UU edition.bonbit.org [DUUCP vom 01.07.1994] MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit From: kay@edition.bonbit.org (Kay Hayen) Subject: Re: Objekt Hierachie, wie am besten ? Date: 06 Feb 1996 00:00:00 +0000 Path: arc1-ca.pugleaf.net!edition.bonbit.org!kay Newsgroups: de.comp.lang.c++ Distribution: world