Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Frage zu Klassen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
31.03.2006, 18:22 Uhr
mike
Pinguinhüpfer
(Operator)


Moin

Ich versuche irgendwie "sauber" einen Taschenrechner zu designen - Visio und Poseidon gehen erst wieder nächste Woche - daher ein etwas missratenes Diagramm

http://mike.dev-geeks.org/stuff/Taschenrechner.pdf
CalculatorInitializer::InitializeCalculator erzeugt eine Instanz von Input.
In Input::StartPrompting (Endlosschleife für den Prompt) brauche ich dann aber Zugriff auf CalculatorInitializer::GetOutputHandler und CalculatorInitializer::GetKernelHandler - darf man die direkt über den Scope operator zugreifen? Sie retournieren nur theKernel_ und theOutput_. Oder gibts ne saubere Möglichkeit auf die erzeugende Klasse zurück zu greifen?

Danke im Voraus,
lg
PS: Falls man das Design sowieso übern Haufen schmeißen kann - bidde sagen :
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
31.03.2006, 19:35 Uhr
Spacelord
Hoffnungsloser Fall


Hi,
da CalculatorInitializer ja anscheinend deine Anwendung repräsentiert(ähnlich CWinApp) ist es eventuell ne Überlegung wert CalculatorInitializer als Singleton auszulegen. Du könntest natürlich auch sämtlichen Instanzen von,Kernel,Input und Output bei der Konstruktion nen Zeiger auf die erzeugende Instanz mitgeben aber da es nur eine Instanz von CalculatorInitializer gibt bietet sich imho eher nen Singleton an.
Das man allerdings von Input etc. aus ,mit nem Zeiger auf die CalculatorInitializer Instanz,die Methoden RunCalculator und InitializeCalculator aufrufen kann ist nicht so schön.
Das sollte besser "geschützt" sein.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
31.03.2006, 20:19 Uhr
mike
Pinguinhüpfer
(Operator)


Hola Spacelord

Meinst du ich sollte -theKernel_, -theOutput_, -theInput_ als static machen und dann direkt per CalculatorInitializer::GetInputHandler() etc. zugreifen?


Zitat:

Das man allerdings von Input etc. aus ,mit nem Zeiger auf die CalculatorInitializer Instanz,die Methoden RunCalculator und InitializeCalculator aufrufen kann ist nicht so schön.


Mir fällt nur die static Methode ein Wie schaut ne singleton Var bei Klassen aus?

Danke,
lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
31.03.2006, 20:37 Uhr
Spacelord
Hoffnungsloser Fall


Hi mike,
ich meinte eigentlich dass du CalculatorInitializer als Singleton anlegst.Dann kannst du von den Instanzen deiner input etc. Klassen darauf zugreifen als wenn diese Instanz von CalculatorInitializer wäre.
Beispielimplementierungen für das Singleton Pattern gibt es etliche im Netzt.Schau mal einfach bei google.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.04.2006, 08:42 Uhr
mike
Pinguinhüpfer
(Operator)


Moin Spacelord,
Hab die von Scott Meyrs gefunden

C++:
// Singleton,h
class Singleton
{
    private:
        // Standard- und Copykonstruktor sind private.
        // Nur Methoden dieser Klasse können auf sie zugreifen.
        Singleton() {};
        Singleton(const Singleton&);
    
        // Es gibt nur eine Instanz. Jede Zuweisung wäre eine Selbstzuweisung.
        // Da Selbstzuweisungen selten Sinn machen, ist der op= privat
        Singleton& operator=(const Singleton&);
    public:
        // Diese statische Methode erzeugt die einzige Instanz.
        // Nur über diese Methode erhalten Anwender den Zugriff auf
        // die Instanz.
        static Singleton& GetInstanz()
        {
            // Die Instanz wird erst beim ersten Aufruf erzeugt.
            // Endet das Programm, wird Instanz vernichtet.
            static Singleton Instanz;
            return Instanz;
        }
};



Jetzt muss ich sozusagen GetInstanz in main aufrufen. Kennst du da eine bessere Implementierung?

Vielen Dank!!!
lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.04.2006, 15:37 Uhr
Spacelord
Hoffnungsloser Fall


Hi,
gängiger ist es eigentlich das Singleton Exemplar mit nem Zeiger zu verwalten und das Objekt erst beim ersten Aufruf von getInstanz mit new zu erzeugen.
Das hat denVorteil dass du dem Konstruktor eventuell noch Argumente mitgeben kannst die erst zur Laufzeit berechnet wurden.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.04.2006, 19:51 Uhr
mike
Pinguinhüpfer
(Operator)


Sörs Spacelord

Da hab ich wieder gelesen, dass es stress mit dem Dekustruktur / Freigabe des Speichers geben kann. Aber ich hab viel im Netz gefunden - werde mich da mal schlau machen übers WE - jetzt hab ich endlich Visio - jetzt kann ich mal gscheite Diagremme zeichen

Danke nochmals
lg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
02.04.2006, 11:19 Uhr
Spacelord
Hoffnungsloser Fall


Naja,mit den Design Patterns ist es immer so ne Sache.Da gibt es ja nicht die Lösung.
Die sind immer als grobe Richtung zur Lösung einer Problemfamilie zu verstehen.
Die konkrete Implementierung richtet sich halt nach den Anforderungen deiner Anwendung.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: