Hallo Nadine,
Hat jemand vielleicht ein konkretes Beispiel wo der Unterschied zwischen Eigenschaft und Parameter deutlich wird?
Ich glaube, ich weiß, worauf du hinaus willst.
Angenommen, du hast folgenden Code (im Beispiel Java):
public class Raumschiff {
/**
* Geschwindigkeit in Metern pro Sekunde
*/
public int speed = 0;
// weitere Variablen und Methoden
}
Nun könnte jemand einfach daherkommen und einem Raumschiff die Geschwindigkeit von 400.000.000 Metern pro Sekunde zuweisen (Achtung: das ist schneller als die Lichtgeschwindigkeit).
Das möchtest du eigentlich gar nicht haben, aber du hast den Fehler zu spät gemerkt. Nun möchtest du die Klasse umschreiben, sodass das Schiff maximal Lichtgeschwindigkeit erreichen kann. Schon bekommst du mit der oberen Variante Probleme, da du nun immer in jeder eigenen Methode, die auf speed zugreift, die Variable speed auf Inkonsistenz überprüfen musst.
Mit einem Getter und einem Setter wäre das nicht passiert. Der Code wäre dann nämlich der folgende:
public class Raumschiff {
/**
* Geschwindigkeit in Metern pro Sekunde
*/
private int speed = 0;
/**
* Lichtgeschwindigkeit in Metern pro Sekunde
*/
public static final int LIGHTSPEED = 299792458;
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
if (speed > LIGHTSPEED || -speed > LIGHTSPEED) {
this.speed = speed;
}
}
// weitere Variablen und Methoden
}
Solche Fälle kann man im Voraus nur schwer sehen, und genau deshalb sollte man IMHO alle Eigenschaften einer Klasse als privat deklarieren. Zugegriffen wird dann mittels Methoden und Parametern.
Es gibt IMHO nur wenige Situationen, in denen öffentliche Eigenschaften nützlich sind, dazu zählen beispielsweise Klassen, die nur dazu da sind, um Daten zu speichern.
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)