Datenelement in public-Schnittstelle unterbringen



  • Es heißt ja, man solle keine Attribute in public unterbringen, weil ja jeder lesend und schreibend darauf zugreifen kann. Nun hab ich aber eine benutzerdefinierte Klasse, die eine andere benutzerdefinierte Klasse als Datenelement enthält und auf dieses Element, soll man nun lesend und schreibend zugreifen (nicht const-Methoden sollen aufgerufen werden etc.).

    Wenn ich aber davon rede, Datenelemente in public unterzubringen, schreien die meisten so gleich auf. Und die Lösung, das Datenelement als Referenz zurückzugeben, damit wenigstens alles eine Funktion in public ist, gefällt mir auch nicht besonders (obwohl ichs momentan so implementiert hab).

    Gibt es dafür irgendwelche tollen Lösungen, wenn Benutzer auf eine Datenelement lesend und schreibend zugreifen müssen? Hab mir schon überlegt, funktionen in public unterzubringen, die die Funktionen des Elementes aufrufen und ggf. Argumente erhalten und weiter übergeben. Also doppelter und unötiger Code, meiner Meinung nach. Ausserdem wäre es bei mir mit den Funktionen nicht möglich, irgendwann kommt man da in eine Sackgasse (liegt aber nicht an schlechtem Design (ist ein ganz simples)).

    Die Datenelement in public unterzubringen wäre für mich die beste Lösung. Aber wie gesagt, vielleicht gibt's da ne tolle Möglichkeit, die mir bis jetzt noch nicht eingefallen ist. Was meint ihr?

    Es geht darum, das besagte Element an andere Funktionen zu übergeben, die es manipulieren (indem sie nicht-const-Funktionen des Elements aufrufen usw.). Da ist nix mit const-Referenz zurückgeben.



  • Ändere dein Design ein Benutzer braucht keinen Zugriff auf die Variablen, sondern Informationen die deine Klasse speichert.
    Oft ist es zwar so, dass ein getSize() einfach eine Variable size zurückgibt, aber das
    muss ja nicht so sein, die Größe könnte auch aus ner DB ausgelesen werden.

    Aber die Methoden einfach zu wrappen finde ich nicht so toll, wenn man Informationen
    von diesem Objekt haben möchte, so sollte man auch das Objekt direkt fragen
    können und wenn man sowieso schreibend und lesend darauf zugreifen darf, dann
    gib einfach ne normale Referenz zurück, oder ändere das Design der Klasse.


Anmelden zum Antworten