Einzelnen Beitrag anzeigen
Alt 02.10.2006, 22:55   #49 (permalink)
tele
Polsterwaffenkampfsportle r
 
Benutzerbild von tele
 

Registriert seit: 29.10.2003
Beiträge: 14.561

tele hat eine strahlende Zukunft
tele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunfttele hat eine strahlende Zukunft

Standard AW: Brauche Hilfe bei Java.

Sicher, dass du das dazugehörige Kapitel richtig gelesen hast? Ich kann mir schwer vorstellen, dass eine Aufgabenstellung kommt, die mit dem Manipulieren von Klassenattributen (oder in diesem Buch auch "Datenfelder" genannt) zu tun hat, ohne das vorher zu erläutern um was es da geht.

Das Schlüsselwort Verkapselung (Encapsulation) ist nicht zufällig schon gefallen?


Die Aufgabe kann man eigentlich recht einfach beschreiben - damit verstehen und schließlich lösen:

1. Was sind Datenfelder einer Person? Genau - Eigenschaften. Z.b. hat eine Person einen vornamen und einen nachnamen (wir notieren den String vorname mit dem Zugriffsschutz "private") und einen Nachnamen (wir notieren den String nachname mit dem Zugriffsschutz "private").
2. Warum private? Hättest du ein interesse daran, wenn jeder Depp daherkommt, deinen Pass nimmt, deinen Namen durchstreicht und meinetwegen Müller-Meyer-Gerd hinschreibt? Sicher nicht. Aus diesem Grund darf der Name auch nur von innerhalb der Klase geändert werden (=private). Im Gegensatz dazu darf jeder Depp mit sachen die public sind machen was alles damit anzustellen ist.
3. Warum dann diese Methoden? Um aber eine Möglichkeit zu geben, deinen Namen abzufragen, braucht man einen Methode, welche den Namen sicher ausgeben kann. Dabei soll keiner dran rumwurschteln können.

Wenn du jetzt das Datenfeld
Code:
private String vorname
notiert hast, sieht die entsprechende Getter-Methode (eine Methode die nur den Wert eines Datenfeldes zurückgibt) typischerweise so aus:

Code:
public String getVorname(){
 return this.vorname;
}
Was bedeutet das im einzelnen? zunächst ist die Methode public. D.h. jeder kann darauf zugreifen und den Namen anzeigen lassen, ohne ihn ändern zu können (ruft man die Methode auf, so gibt es nur etwas zurück - man kann nix "hin" geben). Weiterhin heißt die Methode typischerweise get<Name des Feldes>, wobei die Java-Sprachkonventionen eingehalten werden sollten. Außerdem hat der Kopf der Methode keine Möglichkeit Parameter mit zu geben - sie soll ja nur zurück geben. Im körper findet sich dann direkt eine return anweisung (hier soll etwas zurück gegeben werden. Der Datentyp muss dabei mit dem Datentyp des Methodenkopfes (String in diesem Fall) übereinstimmen. zuletzt wird noch gesagt, welches Feld zurück gegeben werden soll - ich sage aus dieser instanzierten Klasse das Feld vorname (this ist die Referenz auf sich selbst, punkt ist das trennzeichen zwischen Klassen/objekten darin enthaltenen Elementen).

Jetzt auch noch die setter aufzudröseln hab ich keinen Bock mehr Vielleicht haben Smash oder EoN lust.


Gruß

tele


PS: nee Nerven reißen da nicht. Das erinnert mich an meine Anfänge mit Java. da dachte ich auch nur "wasn dat fürn shice". Aber mittlerweile - und mit einem hinreichenden grundverständnis - ist es für mich eine sehr verständliche und vor allem logisch aufgebaute Sprache.
tele ist offline   Mit Zitat antworten