Braucht man immer in einer Klasse getter und setter Methoden?
-
Hey, ich habe eine Frage, und zwar brauchen wir immer bei Klassen getter und setter Methoden? Ich habe es so verstanden das, wenn man mit mehreren Klassen arbeitet das man erst dann die setter und getter methoden braucht habe ich es richtig verstanden?
-
Nein nicht wirklich. Eigentlich sogar eher die Ausnahme. Ich wĂŒrde da zwei FĂ€lle unterscheiden, und man hat fast immer einen davon vorliegen:
- Reine Datenhalterklassen. Die Klasse hat die Aufgabe, Daten zu halten, die dann irgendwo anders verarbeitet werden. Das wĂ€re klassisch ein Fall, wo man von auĂen auf alle Attribute lesend und schreibend zugreifen möchte. Aber dann kann man die Attribute auch gleich alle public machen.
- Klassen, die irgendeine Funktion haben, die "richtigen" Code erfordert, und dazu auch irgendeinen Zustand haben. Dieser Zustand geht aber niemand auĂerhalb irgendetwas an, daher braucht man auch keine direkten Zugriffsfunktionen.
Da eine Klasse immer nur genau eine Aufgabe haben soll, wird man immer in einem dieser FĂ€lle landen.
Manchmal kann die FunktionalitĂ€t auch so dĂŒnn sein, dass manche Funktionen inhaltlich einem Getter oder Setter gleichen können. Aber man wird nur ganz selten etwas haben, dessen einziger Zweck der direkte Zugriff auf den internen Zustand ist.
-
Das ist wieder so eine vage Frage, auf die man seitenweise antworten könnte. Kauf dir ein Buch, Empfehlungen gibtŽs hier im Forum.
-
@DocShoe hmm verstehe welches Buch?
-
@adii950 https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list
nicht verzagen, google fragen... (optional die forensuche nutzen.)
-
Ich finde es sehr schön und das ist denke ich auch eine gÀnge Konvention, dass eine class stets getter und setter hat.
Wenn getter/setter aber nicht nötig sind (siehe oben) stattdessen ein struct zu verwenden.
-
@Jockelx sagte in Braucht man immer in einer Klasse getter und setter Methoden?:
Ich finde es sehr schön und das ist denke ich auch eine gÀnge Konvention, dass eine class stets getter und setter hat.
Wenn getter/setter aber nicht nötig sind (siehe oben) stattdessen ein struct zu verwenden.? Sollte es nicht genau anders herum sein?
-
@SeppJ sagte in Braucht man immer in einer Klasse getter und setter Methoden?:
Sollte es nicht genau anders herum sein?
Nein.
-
@SeppJ Super vielen Dank, ich werde darauf achten, ob diese FĂ€lle vorkommen oder nicht, auĂerdem habe ich es so gelernt das die Attribute immer Privat sind
-
@Cardiac okiiii
Danke dir
-
Ein grundsĂ€tzlicher Vorteil von "getter und setter Methoden" ist die Möglichkeit, eine Schnittstelle auf Attribute zur VerfĂŒgung zu stellen. Sollte sich das Klassendesign Ă€ndern, z.B. ein Attribut anders zu verwalten (z.B. in einem referenziertes Objekt), kann die Schnittstelle zum Attribut geĂ€ndert werden, ohne dass nutzende Instanzen geĂ€ndert werden mĂŒssen. Auch beim debuggen war es hilfreich, Breakpoints in den "getter und setter Methoden" setzen zu können und nicht nach den Funktionen zu suchen, die das betreffende Attribut lesen oder Ă€ndern.
Ansonsten gilt auch fĂŒr mich, was @Jockelx geschrieben hat.
-
@Helmut-Jakoby sagte in Braucht man immer in einer Klasse getter und setter Methoden?:
Instanzen
Achso verstehe super danke dir