SchnittenP Geschrieben 6. Juli 2008 Geschrieben 6. Juli 2008 Hi, ich lerne momentan JAVA in der Uni. Was ich aber noch nicht verstanden habe is die Funktion für Getter und Setter Methoden, Ok, ich weiß das ich mit Setter Methoden Werte Setze und mit Getter welche auslesen kann. Aber wofür brauche ich das jetzt denn ganze genau? danke Zitieren
Amstelchen Geschrieben 6. Juli 2008 Geschrieben 6. Juli 2008 egal ob in Java oder einer anderen OOP-sprache implementiert: getter und setter dienen dazu, eine kapselung aufrechtzuerhalten und den zugriff auf elemente eines objekts nach aussen hin intransparent zu machen; d.h. der getter gibt ein objektattribut zurück, verrär aber nicht, welches dies is; beim setter ist das analog dazu. eine solche implementierung kann zweckmässig sein, muss aber nicht (insbesondere in hinblick auf änderungen der gekapselten funktionlität, weil sie intransparenz herstellen). s'Amstel Zitieren
geloescht_JesterDay Geschrieben 8. Juli 2008 Geschrieben 8. Juli 2008 (bearbeitet) Aber wofür brauche ich das jetzt denn ganze genau? Bei Objekten der OOP hast du intern Variablen, auch Felder genannt. Deine Objekte sollen aber nicht komplett offen nach außen sein, also sind diese eigentlich immer nur innerhalb des Objekts selbst sichtbar (private). Manche dieser Felder sollen aber von außen gefüllt oder ausgelesen werden. Die einfachste, aber auch schlechteste MEthode dazu ist diese Felder auf public zu setzen. Die bessere Methode ist dafür getter und setter Methoden zu schreiben, über die das dann erledigt wird. Weiterhin kannst du in gettern und settern auch noch mehr tun als nur den Variablenwert direkt setzen oder auslesen. Du kannst übergebene Werte etwa prüfen, oder Werte je nach Zustand des Objekts ausgeben etc. Außerdem, wie schon gesagt wurde, können diese Werte bei gettern auch sonst wo her kommen und das muss dich auch gar nicht interessieren wenn du den getter aufrufst. Genausogut muss dich nicht interessieren wohin die Werte vom setter gehen. Wobei ich da die getter und setter bei Delphi (oder auch die bei C#) viel besser finde (und viel klarer für das Verständnis) als die bei Java. In Delphi definierst du in der Klasse eine Property (also eine Eigenschaft des Objekts die dann (wenn public) nach außen hin sichtbar ist) und dann bestimmst du was beim lesenden oder beim schreibenden Zugriff darauf gemacht werden soll bzw welche Funktion aufgerufen wird. Bei C# ist das ähnlich, nur dass du da keine Funkion dranhängen kannst, weil es da ja, wie in Java, keine Pointer mehr gibt Nur in Java schreibt man eine Variable und ganz unabhängig davon eine Funktion die als getter bzw setter funktioniert und nur durch einen bestimmten Namen als solcher erkenntlich ist. Bearbeitet 8. Juli 2008 von JesterDay Zitieren
-Peace- Geschrieben 15. Juli 2008 Geschrieben 15. Juli 2008 Viele viele Frameworks in Java setzten außerdem vorraus, dass die Plain Old Java Objects verwendest welche eben ihre Variablen mit Getter- und Settermethoden kapseln. Du solltest diesen Stil immer voll durchziehen! Das letzte aller Mittel ist eine öffentliche Variable! Zitieren
perdian Geschrieben 15. Juli 2008 Geschrieben 15. Juli 2008 dass die Plain Old Java Objects verwendest welche eben ihre Variablen mit Getter- und Settermethoden kapseln.POJOs definieren sich allerdings nicht alleine über die Kapselung von Fields über getter/setter! Zitieren
geloescht_Newlukai Geschrieben 15. Juli 2008 Geschrieben 15. Juli 2008 Viele viele Frameworks in Java setzten außerdem vorraus, dass die Plain Old Java Objects verwendest welche eben ihre Variablen mit Getter- und Settermethoden kapseln. Du solltest diesen Stil immer voll durchziehen! Das letzte aller Mittel ist eine öffentliche Variable! Dem "viele" möchte ich aber widersprechen. Auf Anhieb fällt mir nur sowas wie Hibernate, Seam und EJB ein. Aber Swing, JAX, etc. benötigen keine POJOs. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.