Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Statische und Nichtstatische Methoden Properties / Eigenschaften

Ähnliche Präsentationen


Präsentation zum Thema: "Statische und Nichtstatische Methoden Properties / Eigenschaften"—  Präsentation transkript:

1 Statische und Nichtstatische Methoden Properties / Eigenschaften
Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein

2 Statische / Nichtstatische Methoden/Felder in Klassen

3 Statische Methoden/Felder
Mit dem static Modifizierer kann eine statische Methode (ein statisches Feld) deklariert werden, die zum Typ der Klasse und nicht zu einem bestimmten Objekt dieses Typs gehört. Statische Methoden kennen die Referenz des Objekts nicht und können darum die (nicht statischen) Felder der Klasse/des Objekts nicht benutzen. Der Zugriff auf statischen Felder geschieht über den Klassennamen und nicht über das Objekt Der Aufruf von statischen Methoden geschieht über den Klassennamen und nicht über das Objekt

4 Beispiel Die Klasse Circle hat einen statischen Zähler _CountCircles, Dieser wird im Konstruktor um 1 erhöht, das heisst, die Anzahl erzeugter Kreise wird in _CountCircles gezählt.

5 Beispiel

6 Beispiel Die Methode Area() ist eine Methode der Klasse und hat darum Zugriff auf die privaten Member-Variablen von Circle. Die Methode getNumber() ist statisch und hat darum keinen Zugriff auf die Felder der Klasse. Sie hat nur Zugriff auf die statische Variable _CountCircles.

7 Beispiel Die Methode getInfo() ist statisch, darum zeigt der Zugriff auf XCoordinate und YCoordinate einen Fehler an. getInformation() ist nicht statisch, also ist der Zugriff möglich.

8 Statische Methoden Statische Methoden können aufgerufen werden, ohne dass eine Instanz der entsprechenden Klasse existiert. Statische Methoden eignen sich als Dienstmethoden, welche nicht vom Zustand eines Objektes abhängig sind. Statische Methoden können nur auf statische Methoden und statische oder konstante Felder zugreifen, da sie nicht zu einem Objekt gehören (keine Objekt-Referenz haben).

9 Verwendung von statischen und nichtstatischen Methoden
“Normale” Klassen-Methoden werden mit Hilfe eines konkreten Objekts (hier c1 oder c2 ) aufgerufen. Statische Methoden werden mit dem Klassen-Namen aufgerufen. normale Aufrufe mit Objekt Aufruf der statischen Methode mit Hilfe des Klassen-Namens Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

10 Statische Methoden Die Klasse Console hat lauter statische Dienst-Methoden Console.WriteLine(), Console.ReadLine(), … Die Main Methode ist immer statisch Es kann (zu Beginn) gar kein Objekt geben, mit welchem die Main Methode aufgerufen werden kann. static void Main(string[] args) { . . . }

11 Statische Methoden Weiteres Beispiel
// Eulersche Zahl private const double E = ; //statische Methode, um Pi zu berechnen benutzt statische Methode aus Math public static double GetPi() { return 2 * Math.Acos(0); } //statische Methode darf auf const zugreifen public static double GetE() { return E; }

12 Eigenschaften / Properties
Definition und Merkmale

13 Definition: Properties
Properties sind Methoden, die einen flexiblen Mechanismus zum Lesen, Schreiben oder Berechnen von Werten von privaten Feldern zur Verfügung stellen. Properties werden wie öffentliche Felder verwendet, sind aber spezielle Zugriffs-Methoden. Mit Properties kann wie auf öffentliche (public) Felder zugegriffen werden motor.Model = "Diesel-Motor"; // schreiben String ausgabe = motor.Model; // lesen

14 Eigenschaften von Properties
Properties sind ein Gemisch von Feld und Methode. Das Lesen einer Property geschieht über die Get-Methode Die Get-Methode macht die Daten auf einfache Weise verfügbar, auch wenn diese Daten von einer beliebigen Quelle stammen, z. B. einer Datenbank. // vorher nicht lesbar Umwandeln der privaten radius-Variable in eine (lesbare) Property Radius

15 Eigenschaften von Properties
Das Schreiben einer Property geschieht über die Set-Methode Mithilfe des value-Schlüsselworts wird der Wert definiert, der von der set-Methode zugewiesen wird. // vorher nicht lesbar Umwandeln der privaten radius-Variable in eine (les- und schreibbare) Property Radius

16 Eigenschaften von Properties
Properties bieten alle Möglichkeiten von normalen Methoden. Die Set-Methode kann die Daten überprüfen, bevor eine Änderung zugelassen wird. Über Properties kann eine Klasse das Abrufen und Festlegen von Werten verfügbar machen Für den Benutzer eines Objekts sieht eine Property wie ein Feld aus  gleicher Zugriff wie auf ein public Feld Zugriff über get-Methode

17 Zugriffsmodifizierer

18 Sichtbarkeit der Properties
Die Sichtbarkeit der Property wird durch einen Zugriffs-Modifizieren definiert public int Month { get { } set { } } Properties können Get- und Set-Methoden haben, oder auch nur eine Get- oder eine Set-Methode. Eine Property ohne Get-Methode ist lesegeschützt. Eine Property ohne Set-Methode ist schreibgeschützt.

19 Sichtbarkeit der Get-und Set-Methoden
Falls keine Angabe gemacht wird, entspricht die Sichtbarkeit der beiden Zugriffsmethoden get und set per Vorgabe der Sichtbarkeit der Eigenschaftsmethode. public int Month { get { } set { } } Ist die Property public definiert, sind get und set automatisch ebenfalls public.

20 Sichtbarkeit der Get-und Set-Methoden
Jede Zugriffsmethode darf auch eine individuelle Sichtbarkeit aufweisen. Damit lässt sich der jeweilige Zugriff im Bedarfsfall steuern. public int Month { get { } private set { } } Month ist public, also ist der Lese-Zugriff (get) ebenfalls public. Die Set-Methode ist private und darf nur von der Klasse selbst verwendet werden.

21 Beispiele

22 Beispiel1: TimePeriod Zeitmessung in Sekunden, Lese Zugriff auch in Minuten oder Stunden class TimePeriod { private int seconds; // Member Variable public int Seconds { // Anzahl Sekunden get { return seconds; } // Eigenschaft lesen set { seconds = value; } // Eigenschaft schreiben } public TimePeriod(int s) // Konstruktor seconds = s;

23 Beispiel1: TimePeriod Lese Zugriff auch in Minuten oder Stunden  Umrechnung public double Minutes { // Weitere Eigenschaft: get { return Seconds / 60.0; } // Zeit in Minuten } public double Hours get { return Seconds / ; } // Zeit in Stunden

24 Beispiel1: TimePeriod -> Benutzen der Properties
Lesezugriff auf Sekunden Minuten, Stunden Schreibzugriff auf Sekunden

25 Beispiel2: Würfel Eigenschaft Seitenlänge, Berechnen von Mantelfläche und Inhalt public class Wuerfel { private double seite; public double Seite // Eigenschaft Seite ( positiv! ) { // lesen und überschreiben get { return seite; } set { seite = Math.Abs(value); } } public Wuerfel(double s) // Konstruktor Seite = s; //  seite immer positiv!

26 Beispiel2: Wuerfel public double Mantel // Eigenschaft Mantelfläche, nur lesen { get { return 6 * seite * seite; } } public double Inhalt() // „normale“ Methode return seite * seite * seite; Wuerfel wuerfel = new Wuerfel(0); wuerfel.Seite = 2.1; // set Methode double mantel = wuerfel.Mantel; // get Methode double inhalt = wuerfel.Inhalt(); // normale Methode

27 Nebeneffekte

28 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Nebeneffekte Die Set-und Get-Methoden können gleichzeitig auch andere Anweisungen ausführen, z. B. Werte von anderen Feldern verändern. Dies kann eine gute oder eine weniger gute Idee sein. private String matNR; public String MatrikelNR { get { } set { matNR = value; semester=1; } // weniger gute Idee } Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

29 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Nebeneffekte Die get-Methode darf den Wert der Property nicht verändern (Umgehung der Set-Methode). private int number; public int Number { // schlechte Idee! get { return number++; } } Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

30 Nebeneffekte Die get-Methode kann fehlende Werte durch einen Default Wert ersetzen. class Person{ private String name; public String Name { // Default Wert zurückgeben get { if(name != null) return name; else return "Name unbekannt"; } set { name = value; } } . . .

31 Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012
Nebeneffekte Die Set-Methode kann die Gültigkeit der Eingabe prüfen private double weight= 0; public double Weight { set if (value > 0) weight = value; else Console.WriteLine("Warnung: negatives Gewicht korrigiert!"); weight = -value; } Nach dem Handbuch der .NET 4.0-Programmierung, Rolf Wenger, 2012

32 Nebeneffekte public class DateOfBirth { private int month; private int day; private int year; public int Month get { return month; } // nur gültige Werte zulassen set { if( (value > 0) && (value < 13) ) { month = value; } else { Console.WriteLine("ungültige Monats-Eingabe"); } } // analog für Tag und Jahr

33 Abkürzung get; set; Falls die Get- und Set-Methode reine Zugriffsmethoden sind, kann der Code abgekürzt werden. Der Wert wird dann anonym gespeichert. class TimePeriod { // verstrichene Zeit in Sekunden public int Seconds anstatt get; // lesen set; // schreiben }


Herunterladen ppt "Statische und Nichtstatische Methoden Properties / Eigenschaften"

Ähnliche Präsentationen


Google-Anzeigen