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

31

06.02.2014, 21:01

Wenn ich die Daten einer Klasse Kapsle (kein zugriff von außen) muss ich der Klasse Methoden mitgeben (set-Methode), um indirekten zugriff auf private Member zu ermöglichen. So kann dann ein non-friend Gloabl Operator auf die "innerein" einer Klasse zugreifen und ändern (ebenfall der ganze Rest, hat mit den setMethoden zugriff). Oder ich mache den Globalen Operator friend dann kann er ebenfalls auf alle "innerein" der Klasse zugreifen.

Ich bitte im Kopf zu behalten meine Frage die Voraus gegangen ist!

Oder ich könnte einen Operator gleich mit der Klasse anbieten, muss keine setMethoden schreiben die ich gar nicht haben will und brauch auch keinen Globalen friend Operator.

Letzteres ist für mich persönlich die sauberste Lösung was Datenkapselung angeht.

witziger weise wenn man sich mal die Klassen anschaut z.B. die VideoMode Klasseder SFML sind alle Member public.
Im Idealfall sind aber nicht alle Attribute einer Klasse einfach private und durch Getter/Setter erreichbar, sondern durch die öffentlichen Methoden der Klasse abstrahiert. Die tatsächliche Repräsentation der Instanz („Haben die Bits gleiche Werte?“) interessiert dich dann nicht, sondern eher so etwas wie „Hören sie auf den gleichen Namen?“. Würdest du unter diesen Umständen direkt auf die Attribute zugreifen, und etwas an der Klasse ändern, müsstest du den Operator danach ebenfalls überarbeiten. So lange er keinen Zugriff auf die Interna hat (non-member), kannst du die Implementierung der Klasse aber beliebig umgestalten ohne den Operator kaputtzumachen.

Wenn dich nur die reinen Daten interessieren, die dort gespeichert sind, dann benutz besser eine Datenstruktur statt einer Klasse. Erst alles private machen, und es dann wieder aushebeln indem man alles zum friend macht und allen Attributen Getter und Setter verpasst, ist tatsächlich Nonsens der nur nutzlosen Quelltext und überflüssige Abhängigkeiten verursacht. Wenn du den Operator als Methode in die Klasse einfügst, hast du weniger Quelltext, aber immernoch genau so viele Abhängigkeiten (denn der Quelltext des Operators benutzt immernoch direkt die Daten). Die wenigsten Abhängigkeiten hast du, wenn du über einen freien, nicht befreundeten Operator auf den Instanzen agierst, falls du das kannst.

Und sf::VideoMode sieht mir tatsächlich mehr nach einer Datenstruktur denn nach einer Klasse aus; es soll augenscheinlich einfach drei Zahlen speichern. Dann sollte man es auch so halten. Datenstrukturen haben aber üblicherweise keine Methoden, sondern werden von Funktionen verwendet.

Jetzt fängt er wieder an zu philosophieren und sich an Wörtern aufzuhängen. Manchmal frage ich mich, Krishty, was genau der Sinn der Diskussionen von dot und Dir sind.
Frag dich nochmal nachdem du zu Seite 1 zurückgegangen bist und verstanden hast, was dort steht :-)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

32

06.02.2014, 21:18

Ach, Krishty, weißte... Ich rede mit Koschi im Chat und kenne seine Ausgangssituation wegen der er hier nachgefragt hat. Und statt über diese sehr spezielle Situation sinnvoll zu diskutieren, kommt jeder daher und versucht die Ausgangssituation umzugestalten und ihm dann was vom Pferd zu erzählen. Thema verfehlt. Aber das ist ja nicht neu. Auch das Thema durch völlig belanglose Wortwahlen aufzubauschen ("Lösung"?) ist nicht neu. Aber ernsthaft? Das ist der Grund, warum ich erst nie zu zfx kam und als dann doch, es wieder verließ. Das kann sich echt keiner antun.

Aber es ist sehr nett von Dir, dass Du mir unterstellst, dass ich nicht verstanden habe, was auf Seite 1 steht, während alle anderen dies natürlich getan haben und deswegen wohl über Dinge reden, nach denen Koschi nie gefragt hat. Steck Dir doch einfach diese Attitüde.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »BlueCobold« (06.02.2014, 21:24)


33

06.02.2014, 21:25

Na wenn jeder Thread nur für eine spezielle Ausgangssituation wertvoll ist, lösch doch bitte schnell die Hilfe-Foren; die wollen uns alle nur was von Pferden erzählen ;)

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

34

06.02.2014, 21:25

Gut, gut. Da sind wir jetzt wohl am Boden angekommen, nicht wahr? Also Schluss. Haste gut gemacht.
Wenn Du über Dinge erzählen willst, nach denen niemand gefragt hat, wende Dich doch am besten an einen Blog oder Twitter.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige