Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

rewb0rn

Supermoderator

  • »rewb0rn« ist der Autor dieses Themas

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

1

30.03.2007, 08:55

globale Variablen und Singletons

[die längst überfällige Teilung aus diesem Thread, rewb0rn]

Stimmt, Singletons zB sind ja auch sowas wie globale Variablen und die benutze ich sehr gerne.

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

2

31.03.2007, 17:45

Also Singletons als globale Variablen zu bezeichnen?? Versteh ich nicht!

Man kann von mir aus sagen, eine Singleton ist nicht reines OOP... ok... aber globale Variable? Davon ist sie weit entfernt! Immerhin handelt es sich hierbei um eine Klasse und nicht um eine Variable! Man erkennt im Code ja sofort, ob man es mit einer Singleton zu tun hat... bei globalen Variablen dagegen weiß man es nicht gleich!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

3

31.03.2007, 18:02

Zitat von »"Black-Panther"«

Also Singletons als globale Variablen zu bezeichnen?? Versteh ich nicht!

Man kann von mir aus sagen, eine Singleton ist nicht reines OOP... ok... aber globale Variable? Davon ist sie weit entfernt! Immerhin handelt es sich hierbei um eine Klasse und nicht um eine Variable! Man erkennt im Code ja sofort, ob man es mit einer Singleton zu tun hat... bei globalen Variablen dagegen weiß man es nicht gleich!


Inwiefern nicht reine OOP?

Es geht darum, dass nur eine Instanz einer Klasse existieren kann zu der es globalen Zugang gibt.

Woran erkenne ich sofort, dass es von dieser Klasse nur eine einzige Instanz geben kann und warum erkenne ich beine einer Variable nicht sofort, ob sie global ist?
Why is 6 afraid of 7?
Because 7 8 9

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

31.03.2007, 20:48

Zitat von »"Black-Panther"«

Also Singletons als globale Variablen zu bezeichnen?? Versteh ich nicht!

Man kann von mir aus sagen, eine Singleton ist nicht reines OOP... ok... aber globale Variable? Davon ist sie weit entfernt! Immerhin handelt es sich hierbei um eine Klasse und nicht um eine Variable! Man erkennt im Code ja sofort, ob man es mit einer Singleton zu tun hat... bei globalen Variablen dagegen weiß man es nicht gleich!


Ein Singleton Pattern ist sowas von reiner Objektorientierter Programmierung! Und natürlich ist ein Vergleich zu globalen Variablen naheliegend, weil das Singletonpattern den Zugriff auf eine Instanz von überall im Code zulässt! Also ganz genau das selbe wie eine globale Variable, nur schöner verpackt.
@D13_Dreinig

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

5

31.03.2007, 21:15

Zitat von »"David_pb"«

Also ganz genau das selbe wie eine globale Variable, nur schöner verpackt.


Singleton = einzigste instanz einer Klasse, auf die von überall aus zugegriffen werden kann
globale Variable = eine Instanz von vielen, auf die von überall aus zugegriffen werden kann
Why is 6 afraid of 7?
Because 7 8 9

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

31.03.2007, 22:29

Zitat von »"helium"«

Zitat von »"David_pb"«

Also ganz genau das selbe wie eine globale Variable, nur schöner verpackt.


Singleton = einzigste instanz einer Klasse, auf die von überall aus zugegriffen werden kann
globale Variable = eine Instanz von vielen, auf die von überall aus zugegriffen werden kann


Genau, der Effekt das von überall Zugriff besteht ist aber bei beiden vorhanden und da pro Instanz für globale Variablen nur ein Name vergeben werden kann, kann ein Vergleich gezogen werden.
@D13_Dreinig

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

7

01.04.2007, 12:04

Zitat von »"David_pb"«

da pro Instanz für globale Variablen nur ein Name vergeben werden kann, kann ein Vergleich gezogen werden.


Was heißt nur ein Name?

Ich kann gleichermaßen einem Singelton, wie auch einer globale Variable beliebig oft Namen geben:

C-/C++-Quelltext

1
2
3
4
5
int globaleVariable;

int & peter = globaleVariable;
int & karl = globaleVariable;
int & klaus = globaleVariable;


Aber ich nehme an, du meinst was ganz anderes?
Why is 6 afraid of 7?
Because 7 8 9

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

01.04.2007, 12:48

Es ging mir um "vollwertige" Objekte, nicht um irgendwelche Referenzen.
@D13_Dreinig

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

9

01.04.2007, 16:35

C-/C++-Quelltext

1
int &golbaleVariable = *new int(42);


So, jetzt existiert keine einzige ... naja Variable, sondern nur "irgendwelche Referenzen". Dennoch würde ich das ganze als globale Variable beeichnen.


Was ist ein "vollwertiges" Objekt? Ist ein Objekt, das ich per new erzeuge (und somit erstmal keinen Namen hat), nicht vollwertig?

Was ist in Sprachen, wie z.B. Java, in denen es bis auf die paar nativen Typen, außschließlich Referenzen existieren? Gibt es da keine vollwertigen Objekte?

Ich weiß immer noch nicht, was du meinst :(
Why is 6 afraid of 7?
Because 7 8 9

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

10

01.04.2007, 18:19

Ich meinte mit "nicht reines OOP", dass einige es als solches bezeichnen, eben weil man nur eine Instanz hat, was eher an eine "Funktionsammlung" erinnert als an eine Klasse. Ich persönlich bin nicht dieser Meinung (wollte ich hier nur anmerken! ;) )

Aber als globale Variable bezeichne ich eine Singleton deshalb schon lange nicht:

Zur Frage warum man sofort erkennt, dass es sich um eine Singleton handelt:

C-/C++-Quelltext

1
CNameOfSingleton::Instance()


ist doch recht auffällig und eindeutig! ;)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige