Kapselung einer globalen Variable?



  • Hi,

    im anderen Thread http://www.c-plusplus.net/forum/viewtopic-var-t-is-125547.html hab ich was über Kapselung von globalen Variablen gelesen (das man es so machen sollte). Ja jetzt würde ich gerne mal wissen was das ist und wie das so geht.

    Ich wollte jetzt nicht in den anderen Thread reinschreiben da es nichts mit der dortigen Fragestellung zu tun hat.



  • was einfaches wäre, die Variable einfach als statische Membervariable einer Klasse zu haben.



  • Wir lesen beim start, von unserem Programm, den Installationspfad aus. Viele unserer Klassen benutzen diesen. Jetzt wäre es aber sinnlos in jeder dieser Klassen eine statische Membervarialbe anzulegen die den Programmpfad enthält.

    oder hab ich da jetzt was falsch verstanden?



  • Du könntest dir eine Klasse machen, welche globale Informationen verwaltet. Die Elemente und Methoden der KLassen machst du alle statisch. Dadurch exisitieren sie unabhängig von einer Instanz nur einmal pro Programm. Überall wo du nun damit arbeiten willst, bindest du die eine Klasse ein udn arbeitest mit den statischen Methoden.
    Bei sowas wäre es sogar sinnvoll, den Konstruktor private zu machen, da es ja keinen Sinn macht, eine INstanz dieser Klasse anzulegen. Oder du machst gleich ein Singleton, wäre vielleicht sogar noch besser.



  • Tendiere auch mehr dazu einen Singelton zu verwenden, und das eine Objekt in einer statischen Variable der Klasse abzulegen. Wenn man denn so viele Funktionen/Variablen hat und sie zueinander passen, dass sich dies einen Sinn ergibt.

    Ansonsten würde ich die statischen Variablen in den Klassen definieren wozu sie inhaltlich passen. Dies schließt ja nicht aus, dass man sie von einer anderen Klasse aus verwenden kann. Es ist durch dieses Vorgehen nur exakt definiert wo die Variable deklariert/definiert ist.



  • Das war ich, also will ich noch was dazu sagen. Ich meinte in dem Thread das man ein Singleton benutzen sollte. Wer nicht weiß was das ist, sollte sich dieses Pattern anschauen, da es ein gängiges ist. Hab das bisher mind. einmal in jedem meiner Projekte drin gehabt.

    http://www.codeproject.com/cpp/singletonrvs.asp

    Da dann einfach die globalen Variablen reinpacken, als private-Members.

    Ursprünglisch ging es darum, mitzubekommen wann sich eine Variable ändert. Dafür muß man die Varible kapseln damit man in einer set-Methode dann die "anderen" darüber informieren kann.



  • Also kann man sagen das man ein Singleton immer den globalen Variablen vorziehen sollte?

    Wir werden es bei uns zwar nicht so machen, aber meine eigenen Projekte möchte ich dennoch ordentlich programmieren.



  • ja kann man so sagen


Anmelden zum Antworten