🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1538

Re: Objekt Hierachie, wie am besten ?

#1538
From: Kay Hayen
Date: Tue, 06 Feb 1996 00:00
86 lines
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!kay
References: <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