C# Einführung
- Einführung in die OOP Do, Hoang Viet (do@mi.fu-berlin.de)
Draphony Games (http://www.draphony.de)
Methoden
• Beispiele:
 Console.WriteLine(…)
 Console.ReadLine(…)

• Warum benutzt man Methoden?
 Wiederverwendung von (Teil-)Lösungen.
 Zerlegung von komplexen Abläufen in Teilaufgaben („Methoden“)

• Wodurch ist eine Methode charakterisiert?
 Name
 Parameter
 Verarbeitung
 Rückgabe

04.12.2013

2
Demo: „e01_methods.cs“
Eigene Methode definieren

04.12.2013

3
Eigene Methoden erstellen
• Beispiel:

static int square(int x) {
return x * x;
}
• Allgemeine Syntax
static ret_type mname(type1 p1, type2 p2, …) {
expr
}

• Name: mname
 gleiche Regeln wie bei Variablen
• Parameter: p1, p2, …
 0 bis „unendlich“ Parameter möglich! Ist fest

• Anweisungen: expr
04.12.2013

4
Rückgabewert eine Methode
• Allgemeine Syntax
static ret_type square(type1 p1, type2 p2, …) {
expr
}

• Rückgabewert: ret_type
 Ergebnis der gesamten Verarbeitung / Durchführung
 Rückgabewert wird durch return „markiert“.

• Analogie:
 Funktion ist ein Automat. Nur das Ergebnis (vgl. Rückgabewert) ist für den Aufrufer
sichtbar. Lediglich die nötigen Eingaben/Einstellung (vgl. Parameter) wie zum Beispiel
Münzen sind notwendig für die Betriebsaufnahme!

• Spezialfall: void
• Englische Begriff: „invoke“ „call“

04.12.2013

5
Rückgabewerte
• Was passiert wenn eine Funktion einen Rückgabewert spezifiziert (sprich nicht

mit void definiert wurde) aber keinen Rückgabewert zurückgibt?
 Antwort: Compilerfehler

• Was passiert wenn Anweisungen nach der return Anweisungen stehen?
 Antwort: Warnung vom Compiler.

• Was passiert wenn nicht jeder Ausführpfad (zum Beispiel durch if-else) einen

Rückgabewert liefert?
 Antwort: Compilerfehler

04.12.2013

6
Demo: „e02_returns.cs“
Fehler bei Umgang mit Rückgabewerten

04.12.2013

7
Parameter
04.12.2013

8
Gültigkeitsbereich von Variablen
• Lokalen Variable der Methode
 Ist nur gültig innerhalb des Methodenrumpfes

• Parametervariable
 Äquivalent zu lokalen Variablen

• Variable, die übergeben werden
 Ist innerhalb der Methode nicht definiert!

• Rückgabewert
 Ist nur an der Rücksprungadresse gültig

04.12.2013

9
Demo: „e03_scope.cs“
Gültigkeitsbereich von Variablen

04.12.2013

10
Möglichkeiten der Übergabe
• Passing by value
 Für jeden Parameter wird eine Copy erstellt. Veränderungen werden nicht
gespeichert.
 Standardmethode

• Passing by Reference mit ref
 Änderungen werden beibehalten
 Parameter muss zuvor initialisiert werden!

• Passing by Reference mit out
 Änderungen werden beibehalten
 Keine Initialisierung nötig!

04.12.2013

11
Demo: „e04_paramdef.cs“
Parameterübergabe: Passing by Reference

04.12.2013

12
Variable Parameterliste
• Wie könnte man variable Parameterlisten realisieren?
 Array
 Zum Beispiel: static int getMax(int[] p) {}

• Komfortabler: „params“
 Variable Parameterliste mit params
 Zum Beispiel: static int getMax(params int[] p) {}
 Aufruf:

04.12.2013

getMax(1,2,3,4,5,6,7,8);

13
Demo: „e05_params.cs“
Parameterübergabe: Passing by Reference

04.12.2013

14
Refactoring
• Refactoring
 Antwort auf „Mein Code ist häßlich“
 Formal: Teilaufgabe vom Codewartung zur Steigerung der Lesbarkeit vom Code

• Methoden extrahieren
 Neue Funktion anhand von Codeblock extrahieren

• Methodenstub
 Neue Funktion anhand eines Prototyps definieren

• Variablen umbenennen (engl. Rename)
 Umbenennung mit Kontextinformation

• Parameter umordnen (engl. Reorder Parameters)
 Parameterreihenfolge

04.12.2013

15
Demo: „e06_refactor.cs“

04.12.2013

16
Methoden überladen
static void swap(ref int a, ref int b) {
int t = a;
a = b;
b = t;
}

• Was passiert bei?
 swap(i1, i2);
 swap(d1, d2);

04.12.2013

// int i1 = 1, i2 = 2;
// double d1 = 1, d2 = 2;

17
Beispiel:
„e07_overload.cs“
04.12.2013

18
Methoden überladen
• Definition mehrere Methoden mit dem gleichem Namen aber unterschiedliche

Signatur
• Signatur:
 Parameterordnung:
 Parametertyp
 Parameteranzahl

swap(int i, double d)
square(int a)
max(int a1)

und swap(double d, int i)
und square(double d)
und max(int a1, int a2)

• Was ist aber mit variable Parameterliste?
 max(int a1, int a2) und max(params int[] a)

 Aufruf: max(1, 2)

04.12.2013

19
Anmerkung
• Rekursion
 Aufruf einer Funktion in sich selbst
 Beispiel: Addition über Rekursion
static int add(int a, int b) {
return b == 0 ? a : add(a, b-1) + 1;
}
 Übermäßige Nutzung von Rekursionen führen zum „Stack Overflow“
 Anwendung: Teilen und Herrschen (Devide & Conquer)

04.12.2013

20
Beispiel:
„e08_recursive.cs“
Addition als Rekursion

04.12.2013

21
Demo: e00_motivation.cs
Wofür gibt es Klassen?

04.12.2013

22
Warum gibt es Klassen?
• Verbinden von Daten und Funktionen
 „Array von Personen mit Namen und PLZ“

• Stärkere Validierung der Daten
 „Das alter einer Person kann nicht negativ sein“
 „Die Note einer Klausur liegt zwischen 1 und 5“

• Sichere Programmausführung
• Leichte Wiederverwertbarkeit
 Eine Methode für Ganze Zahlen: int, uint, ulong, long, usw.
• Gute Wartbarkeit

04.12.2013

23
Demo: e01_classes.cs
Bekannte Klassen

04.12.2013

24
Klassen
• Beispiel:
 Console, ADO.NET

• Was ist eine Klasse
 Datentyp, dass Objekte beschreibt (Bauplan)
 Verknüpfen von Daten und Funktionen

• Objekt
 Instanzen einer Klasse werden Objekte genannt.
 Eine Klasse kann beliebig viele Objekte erzeugen

• Members
 Elemente einer Klasse werden Members genannt.
 Es gibt funktionale Members und Datenmembers
04.12.2013

25
Demo: e02_userdefine.cs
Eigene Klasse erstellen
Objekte der Klasse erzeugen

04.12.2013

26
Wie erstellt man eine Klasse
• Allgemeine Syntax
class identifier {
expr

}

• Innerhalb des Klassenrumpfes können die Members definiert werden
 Datenmembers wie Felder, etc.
 Funktionalen Members wie Methoden, Konstruktoren, etc.

• Objekte einer Klasse erzeugen
 Allgemeine Syntax: cname oname = new cname();
 Beispiel: Random rnd = new Random();

04.12.2013

27
Analogie zur echten Welt
• Zur welche Klasse gehören wir?
 Klasse Mensch

• Was bin ich?
 Ein Objekt

• Und was bist du?
 Ein Objekt

• Welche Members hätte eine Klasse Mensch? (Auszug)
 „Es sind Merkmale, die wir alle haben worin wir uns auch unterscheiden?“

04.12.2013

28
Datenmembers
04.12.2013

29
Objektvariablen (engl. Field)
• Variablen einer Klasse, die an das Objekt gebunden sind, werden

Objektvariablen genannt.
• Objektvariablen sind objektgebunden
 Jedes Objekt kann unterschiedliche Werte für seine Feld setzen haben.
 Technische Hinweis: bei der Erstellung eines Objektes, wird für jedes definierte Feld
Speicher reserviert.
 Beispiel:
•
•
•

Klasse Mensch
Hans heißt „Hans“, während Klaus „Klaus“ heißt
Unterschiedliche Werte für das Feld „Vornamen“.

• Objektvariablen gehören zu den Datenmembers
• Synonym: Felder

04.12.2013

30
Objektvariablen
• Allgemeine Syntax
class ClassIdent {
modifier type1 field1;
modifier type2 field2;
expr
}

• Zugriffsmodifizierer
 Regulieren den Zugriff auf Members einer Klasse. Sie gilt nur für das jeweilige
Member.
 Weitere Members (später)
Zugriffmodifiziere

Beschreibung

public

Zugriff außerhalb der Klasse ist erlaubt

private (default)

Zugriff außerhalb der Klasse ist nicht erlaubt

04.12.2013

31
Demo: e03_field.cs
Auswirkungen von unterschiedlichen Zugriffsmodifizier

04.12.2013

32
Klassenvariablen
• Variablen einer Klasse, die an die Klasse selbst gebunden sind, werden

Klassenvariablen genannt
• Klassenvariablen klassengebunden
 Der Wert einer Klassenvariable ist für alle Objekt gleich. Er kann von jedem Objekt
gelesen und geschrieben werden.
 Technische Details: Für die Klasse selbst wird auch Speicher reserviert
 Beispiel:
•

Anzahl der lebenden Menschen in der Klasse Mensch

•

Bei der Geburt eines Menschen (Erstellung eines neuen Objektes) wird die Zahl erhöht

•

Wenn der Mensch (Objekt wird gelöscht) stirbt, wird die Zahl verringert

•

Der Wert bleibt aber für alle gleich.

•

Hans und Klaus würden denselben Wert besitzen

 Was wären weitere mögliche Klassenvariablen für Klasse Mensch?

04.12.2013

33
Demo: e04_staticfield.cs
Auswirkungen von unterschiedlichen Zugriffsmodifizier

04.12.2013

34
Klassenvariablen
• Klassenvariablen gehören zu den Datenmembers

• Allgemeine Syntax
class ClassIdent {
static modifier type1 field1;
static modifier type2 field2;

expr
}

04.12.2013

35
Funktionalen Members

04.12.2013

36
Funktionen

04.12.2013

37
Konstruktoren (engl. Constructor)
• Beispiel: Aufruf eines Konstruktors
static void Main(string[] args) {
...
Person meier = new Person();
...
}

• Was ist ein Konstruktor?
 Eine spezielle Methode der Klasse ohne Rückgabewert, die beim Erzeugen eines
Objektes automatisch aufgerufen wird.
 Hauptfunktion: Initialisierung der Datenmembers

•

Konstruktoren haben immer den selben Namen wie die Klasse

04.12.2013

38
Demo: e05_constructor.cs
Konstruktoren

04.12.2013

39
Konstruktoren
• Syntax
modifier ClassIdent(type1 p1, type2 p2, …) {
expr
}

• Standardkonstruktor
 Hat keine Parameter
 Wird automatisch erzeugt, wenn kein andere Konstruktor definiert ist
•

Sobald ein Konstruktor definiert wurde, verschwindet die Definition.

•

Soll dennoch ein Standardkonstruktor angeboten werden, muss dieser explizit definiert
werden.

• Konstruktoren mit Parametern
 Haben Parameter 
 In der Praxis werden immer mehrere Konstruktoren dieser Art definiert
04.12.2013

40
Konstruktoren
• Jeder Klasse besitzt mindesten einen Konstruktor

• Konstruktoren können sich über die colon – Syntax gegenseitig aufrufen:
modifier ClassIdent(paramlist1) : this (paramlist2) {
expr
}

• Was passiert, wenn modifier nicht public definiert ist?
 Es können keine Objekte von aussen definiert werden.
 „Design Pattern“: Factory

• Hinweis:
 Es gibt auch Destruktoren!

04.12.2013

41
Klassenkonstruktor
• Zweck:
 dürfen nicht explixit aufgerufen!
 Sondern wenn die Klasse zum erst referrenziert wird.

• Besonderheiten
 Keine accessibility
 Keine Parameter
 Können nicht überladen werden

• Syntax:
static ClassIdent(paramlist1) {
expr
}

04.12.2013

42
Demo:
e08_classconstructor.cs
04.12.2013

43
Eigentschaften (engl. Properties)
• „Virtuelle“ Datenmembers

• Datenmembers, die über 2 Methoden realisiert werden:
 Get-Accessor:
 Set-Accessor:

Wert eines Members lesen
Wert eines Members festlegen

• Eigenschaften sind Datenmember, die über Accessor zugegriffen realisiert

werden

04.12.2013

44
Demo: e06_properties.cs

04.12.2013

45
Warum Eigentschaften?
• Erweiterte Zugriffskontrolle
 Nur Lesezugriff (engl. read-only)
 Nur Schreibzugriff (engl. write-only)

• GANZ WICHTIG!
 Datenabstraktion
 Direkte Zugriff auf Daten wird unterbunden: Validierung & Modellierung

• Vererbarkeit (später)
 Anpassung in den „Kinderklassen“

• Reine Lesezugriff ist bei den Felder auch möglich!

04.12.2013

46
Demo: e07_readonly.cs

04.12.2013

47
Demo: e09_namespace.cs

04.12.2013

48
Vielen Dank für die
Aufmerksamkeit
http://www.draphony.de
facebook.com/DraphonyGames
04.12.2013

49

C Sharp Einfuehrung Teil 2

  • 1.
    C# Einführung - Einführungin die OOP Do, Hoang Viet (do@mi.fu-berlin.de) Draphony Games (http://www.draphony.de)
  • 2.
    Methoden • Beispiele:  Console.WriteLine(…) Console.ReadLine(…) • Warum benutzt man Methoden?  Wiederverwendung von (Teil-)Lösungen.  Zerlegung von komplexen Abläufen in Teilaufgaben („Methoden“) • Wodurch ist eine Methode charakterisiert?  Name  Parameter  Verarbeitung  Rückgabe 04.12.2013 2
  • 3.
  • 4.
    Eigene Methoden erstellen •Beispiel: static int square(int x) { return x * x; } • Allgemeine Syntax static ret_type mname(type1 p1, type2 p2, …) { expr } • Name: mname  gleiche Regeln wie bei Variablen • Parameter: p1, p2, …  0 bis „unendlich“ Parameter möglich! Ist fest • Anweisungen: expr 04.12.2013 4
  • 5.
    Rückgabewert eine Methode •Allgemeine Syntax static ret_type square(type1 p1, type2 p2, …) { expr } • Rückgabewert: ret_type  Ergebnis der gesamten Verarbeitung / Durchführung  Rückgabewert wird durch return „markiert“. • Analogie:  Funktion ist ein Automat. Nur das Ergebnis (vgl. Rückgabewert) ist für den Aufrufer sichtbar. Lediglich die nötigen Eingaben/Einstellung (vgl. Parameter) wie zum Beispiel Münzen sind notwendig für die Betriebsaufnahme! • Spezialfall: void • Englische Begriff: „invoke“ „call“ 04.12.2013 5
  • 6.
    Rückgabewerte • Was passiertwenn eine Funktion einen Rückgabewert spezifiziert (sprich nicht mit void definiert wurde) aber keinen Rückgabewert zurückgibt?  Antwort: Compilerfehler • Was passiert wenn Anweisungen nach der return Anweisungen stehen?  Antwort: Warnung vom Compiler. • Was passiert wenn nicht jeder Ausführpfad (zum Beispiel durch if-else) einen Rückgabewert liefert?  Antwort: Compilerfehler 04.12.2013 6
  • 7.
    Demo: „e02_returns.cs“ Fehler beiUmgang mit Rückgabewerten 04.12.2013 7
  • 8.
  • 9.
    Gültigkeitsbereich von Variablen •Lokalen Variable der Methode  Ist nur gültig innerhalb des Methodenrumpfes • Parametervariable  Äquivalent zu lokalen Variablen • Variable, die übergeben werden  Ist innerhalb der Methode nicht definiert! • Rückgabewert  Ist nur an der Rücksprungadresse gültig 04.12.2013 9
  • 10.
  • 11.
    Möglichkeiten der Übergabe •Passing by value  Für jeden Parameter wird eine Copy erstellt. Veränderungen werden nicht gespeichert.  Standardmethode • Passing by Reference mit ref  Änderungen werden beibehalten  Parameter muss zuvor initialisiert werden! • Passing by Reference mit out  Änderungen werden beibehalten  Keine Initialisierung nötig! 04.12.2013 11
  • 12.
  • 13.
    Variable Parameterliste • Wiekönnte man variable Parameterlisten realisieren?  Array  Zum Beispiel: static int getMax(int[] p) {} • Komfortabler: „params“  Variable Parameterliste mit params  Zum Beispiel: static int getMax(params int[] p) {}  Aufruf: 04.12.2013 getMax(1,2,3,4,5,6,7,8); 13
  • 14.
  • 15.
    Refactoring • Refactoring  Antwortauf „Mein Code ist häßlich“  Formal: Teilaufgabe vom Codewartung zur Steigerung der Lesbarkeit vom Code • Methoden extrahieren  Neue Funktion anhand von Codeblock extrahieren • Methodenstub  Neue Funktion anhand eines Prototyps definieren • Variablen umbenennen (engl. Rename)  Umbenennung mit Kontextinformation • Parameter umordnen (engl. Reorder Parameters)  Parameterreihenfolge 04.12.2013 15
  • 16.
  • 17.
    Methoden überladen static voidswap(ref int a, ref int b) { int t = a; a = b; b = t; } • Was passiert bei?  swap(i1, i2);  swap(d1, d2); 04.12.2013 // int i1 = 1, i2 = 2; // double d1 = 1, d2 = 2; 17
  • 18.
  • 19.
    Methoden überladen • Definitionmehrere Methoden mit dem gleichem Namen aber unterschiedliche Signatur • Signatur:  Parameterordnung:  Parametertyp  Parameteranzahl swap(int i, double d) square(int a) max(int a1) und swap(double d, int i) und square(double d) und max(int a1, int a2) • Was ist aber mit variable Parameterliste?  max(int a1, int a2) und max(params int[] a)  Aufruf: max(1, 2) 04.12.2013 19
  • 20.
    Anmerkung • Rekursion  Aufrufeiner Funktion in sich selbst  Beispiel: Addition über Rekursion static int add(int a, int b) { return b == 0 ? a : add(a, b-1) + 1; }  Übermäßige Nutzung von Rekursionen führen zum „Stack Overflow“  Anwendung: Teilen und Herrschen (Devide & Conquer) 04.12.2013 20
  • 21.
  • 22.
    Demo: e00_motivation.cs Wofür gibtes Klassen? 04.12.2013 22
  • 23.
    Warum gibt esKlassen? • Verbinden von Daten und Funktionen  „Array von Personen mit Namen und PLZ“ • Stärkere Validierung der Daten  „Das alter einer Person kann nicht negativ sein“  „Die Note einer Klausur liegt zwischen 1 und 5“ • Sichere Programmausführung • Leichte Wiederverwertbarkeit  Eine Methode für Ganze Zahlen: int, uint, ulong, long, usw. • Gute Wartbarkeit 04.12.2013 23
  • 24.
  • 25.
    Klassen • Beispiel:  Console,ADO.NET • Was ist eine Klasse  Datentyp, dass Objekte beschreibt (Bauplan)  Verknüpfen von Daten und Funktionen • Objekt  Instanzen einer Klasse werden Objekte genannt.  Eine Klasse kann beliebig viele Objekte erzeugen • Members  Elemente einer Klasse werden Members genannt.  Es gibt funktionale Members und Datenmembers 04.12.2013 25
  • 26.
    Demo: e02_userdefine.cs Eigene Klasseerstellen Objekte der Klasse erzeugen 04.12.2013 26
  • 27.
    Wie erstellt maneine Klasse • Allgemeine Syntax class identifier { expr } • Innerhalb des Klassenrumpfes können die Members definiert werden  Datenmembers wie Felder, etc.  Funktionalen Members wie Methoden, Konstruktoren, etc. • Objekte einer Klasse erzeugen  Allgemeine Syntax: cname oname = new cname();  Beispiel: Random rnd = new Random(); 04.12.2013 27
  • 28.
    Analogie zur echtenWelt • Zur welche Klasse gehören wir?  Klasse Mensch • Was bin ich?  Ein Objekt • Und was bist du?  Ein Objekt • Welche Members hätte eine Klasse Mensch? (Auszug)  „Es sind Merkmale, die wir alle haben worin wir uns auch unterscheiden?“ 04.12.2013 28
  • 29.
  • 30.
    Objektvariablen (engl. Field) •Variablen einer Klasse, die an das Objekt gebunden sind, werden Objektvariablen genannt. • Objektvariablen sind objektgebunden  Jedes Objekt kann unterschiedliche Werte für seine Feld setzen haben.  Technische Hinweis: bei der Erstellung eines Objektes, wird für jedes definierte Feld Speicher reserviert.  Beispiel: • • • Klasse Mensch Hans heißt „Hans“, während Klaus „Klaus“ heißt Unterschiedliche Werte für das Feld „Vornamen“. • Objektvariablen gehören zu den Datenmembers • Synonym: Felder 04.12.2013 30
  • 31.
    Objektvariablen • Allgemeine Syntax classClassIdent { modifier type1 field1; modifier type2 field2; expr } • Zugriffsmodifizierer  Regulieren den Zugriff auf Members einer Klasse. Sie gilt nur für das jeweilige Member.  Weitere Members (später) Zugriffmodifiziere Beschreibung public Zugriff außerhalb der Klasse ist erlaubt private (default) Zugriff außerhalb der Klasse ist nicht erlaubt 04.12.2013 31
  • 32.
    Demo: e03_field.cs Auswirkungen vonunterschiedlichen Zugriffsmodifizier 04.12.2013 32
  • 33.
    Klassenvariablen • Variablen einerKlasse, die an die Klasse selbst gebunden sind, werden Klassenvariablen genannt • Klassenvariablen klassengebunden  Der Wert einer Klassenvariable ist für alle Objekt gleich. Er kann von jedem Objekt gelesen und geschrieben werden.  Technische Details: Für die Klasse selbst wird auch Speicher reserviert  Beispiel: • Anzahl der lebenden Menschen in der Klasse Mensch • Bei der Geburt eines Menschen (Erstellung eines neuen Objektes) wird die Zahl erhöht • Wenn der Mensch (Objekt wird gelöscht) stirbt, wird die Zahl verringert • Der Wert bleibt aber für alle gleich. • Hans und Klaus würden denselben Wert besitzen  Was wären weitere mögliche Klassenvariablen für Klasse Mensch? 04.12.2013 33
  • 34.
    Demo: e04_staticfield.cs Auswirkungen vonunterschiedlichen Zugriffsmodifizier 04.12.2013 34
  • 35.
    Klassenvariablen • Klassenvariablen gehörenzu den Datenmembers • Allgemeine Syntax class ClassIdent { static modifier type1 field1; static modifier type2 field2; expr } 04.12.2013 35
  • 36.
  • 37.
  • 38.
    Konstruktoren (engl. Constructor) •Beispiel: Aufruf eines Konstruktors static void Main(string[] args) { ... Person meier = new Person(); ... } • Was ist ein Konstruktor?  Eine spezielle Methode der Klasse ohne Rückgabewert, die beim Erzeugen eines Objektes automatisch aufgerufen wird.  Hauptfunktion: Initialisierung der Datenmembers • Konstruktoren haben immer den selben Namen wie die Klasse 04.12.2013 38
  • 39.
  • 40.
    Konstruktoren • Syntax modifier ClassIdent(type1p1, type2 p2, …) { expr } • Standardkonstruktor  Hat keine Parameter  Wird automatisch erzeugt, wenn kein andere Konstruktor definiert ist • Sobald ein Konstruktor definiert wurde, verschwindet die Definition. • Soll dennoch ein Standardkonstruktor angeboten werden, muss dieser explizit definiert werden. • Konstruktoren mit Parametern  Haben Parameter   In der Praxis werden immer mehrere Konstruktoren dieser Art definiert 04.12.2013 40
  • 41.
    Konstruktoren • Jeder Klassebesitzt mindesten einen Konstruktor • Konstruktoren können sich über die colon – Syntax gegenseitig aufrufen: modifier ClassIdent(paramlist1) : this (paramlist2) { expr } • Was passiert, wenn modifier nicht public definiert ist?  Es können keine Objekte von aussen definiert werden.  „Design Pattern“: Factory • Hinweis:  Es gibt auch Destruktoren! 04.12.2013 41
  • 42.
    Klassenkonstruktor • Zweck:  dürfennicht explixit aufgerufen!  Sondern wenn die Klasse zum erst referrenziert wird. • Besonderheiten  Keine accessibility  Keine Parameter  Können nicht überladen werden • Syntax: static ClassIdent(paramlist1) { expr } 04.12.2013 42
  • 43.
  • 44.
    Eigentschaften (engl. Properties) •„Virtuelle“ Datenmembers • Datenmembers, die über 2 Methoden realisiert werden:  Get-Accessor:  Set-Accessor: Wert eines Members lesen Wert eines Members festlegen • Eigenschaften sind Datenmember, die über Accessor zugegriffen realisiert werden 04.12.2013 44
  • 45.
  • 46.
    Warum Eigentschaften? • ErweiterteZugriffskontrolle  Nur Lesezugriff (engl. read-only)  Nur Schreibzugriff (engl. write-only) • GANZ WICHTIG!  Datenabstraktion  Direkte Zugriff auf Daten wird unterbunden: Validierung & Modellierung • Vererbarkeit (später)  Anpassung in den „Kinderklassen“ • Reine Lesezugriff ist bei den Felder auch möglich! 04.12.2013 46
  • 47.
  • 48.
  • 49.
    Vielen Dank fürdie Aufmerksamkeit http://www.draphony.de facebook.com/DraphonyGames 04.12.2013 49