Statische und Nichtstatische Methoden Properties / Eigenschaften

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Ausführbare Klassen
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Kapselung , toString , equals , Java API
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
Abstrakte Klassen.
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Erweiterte Zuweisungskompatibilität
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Einführung in die Programmierung mit Java
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Abstrakter Datentyp in C++ I - Klasse -
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Presenter: Daniel Walzenbach Technologieberater
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
EPROG Tutorium #6 Philipp Effenberger
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
Objektorientierte Programmierung (OOP)
Vererbung. Klassen - Vererbung  Eine Klasse kann von einer Basisklasse abgeleitet werden  Die abgeleitete Klasse erbt die Eigenschaften und Methoden.
Java Programme nur ein bisschen objektorientiert.
C++ FÜR cOMPUTERSPIELENTWICKLER
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Hello World! Javakurs 2013 Arne Kappen
Zwei Denkansätze zur Klasse Schlange
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Einführung in die Programmierung mit Java
Felder in Java.
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
Raphael Fischer Informatik II - Übung 06 Raphael Fischer
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Polymorphie Überladen
Ausnahmen Exceptions Definition Ausnahmen erzeugen Ausnahmen abfangen
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
Interfaces Definition von Interfaces Verwendung von Interfaces
2. Vererbung und Kapselung
Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein.
«Delegierter» Methoden Schablone Funktionszeiger
Definition Felder Konstruktor Methoden Beispiel
1. Die rekursive Datenstruktur Liste 1
9. Vererbung und Polymorphie
Implementieren von Klassen
Grundlagen der OO-Programmierung in C#
Grundkurs Informatik 11-13
Polymorphie Überschreiben
Schleifen Datenfelder (Arrays) Verzweigungen
Juli 19 Informatik Kurse
 Präsentation transkript:

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

Statische / Nichtstatische Methoden/Felder in Klassen

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

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.

Beispiel

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.

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.

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).

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

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) { . . . }

Statische Methoden Weiteres Beispiel // Eulersche Zahl private const double E = 2.718281828459045235; //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; }

Eigenschaften / Properties Definition und Merkmale

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

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

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

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

Zugriffsmodifizierer

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.

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.

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.

Beispiele

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;

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 / 3600.0; } // Zeit in Stunden

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

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!

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

Nebeneffekte

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

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

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; } } . . .

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

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

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 }