22
Objektorientierung Marc Satkowski 20. November 2016 C# Kurs

Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Objektorientierung

Marc Satkowski

20. November 2016

C# Kurs

Page 2: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Gliederung

1. Weiterfuhrende Verzweigungen

Tertiare-Verzweigung

switch case

2. Schleifen

Zahlschleife (for)

break & continue

3. Objektorientierung

Klassen

Objekte

Konstruktor

Felder & Eigenschaften

Zugriff von Objekteigenschaften

4. Zugriffsmodifikatoren/Sichtbar-

keiten

1

Page 3: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Weiterfuhrende Verzweigungen

Page 4: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Tertiare-Verzweigung

• Werden genauso genutzt wie eine if-else-Verzweigung

• Syntax:

• <Bedingung> ? <Dann-Pfad> : <Sonst-Pfad>;

• Das ? steht fur dann

• Das : steht fur sonst

1 bool variable = false;

2 // Hier beginnt die tertiaere -Verzweigung.

3 int zahl = variable ? 5 : -1;

2

Page 5: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

switch case

• Hat ahnliches Verhalten wie die bedingte Verzweigung

• default verhalt sich wie else

• Jeder case pruft die Variable im switch auf Gleichheit und fuhrt den

darunterliegenden Code bis zum break aus

1 int note = 2;

2 string noteStr = "";

3 // Hier beginnt die switch -case -Verzweigung.

4 switch (note)

5 {

6 case 1:

7 noteStr = "Sehr gut";

8 break;

9 case 2:

10 noteStr = "Gut";

11 break;

12 // ...

13 default:

14 noteStr = "Diese Note gibt es nicht.";

15 break;

16 }3

Page 6: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Schleifen

Page 7: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Zahlschleife (for)

• Zahlt uber eine Zahlvariable in gewisser Schrittweite, bis die

Bedingung nicht mehr erfullt ist

• Syntax:

• for( <Zahlvariable>; <Bedingung>; <Schrittweite> )

{ <Code> }

1 int erg = 0;

2 // Hier beginnt die for -Schleife.

3 for(int zaehler = 0; zaehler < 5; zaehler ++)

4 {

5 erg += zaehler;

6 }

4

Page 8: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

break & continue

break

• Beendet die direkt umschließende Schleife, in der die Anweisung

auftritt

• Beachtet dabei nicht wie viele Schleifendurchlaufe es eigentlich noch

geben wurde

continue

• Beendet den jetzigen Schleifen-Block-Durchlauf und geht zur

Bedingung der Schleife zuruck

• Daraufhin kann die Schleife mit dem nachsten Iterationsschritt

fortsetzen

5

Page 9: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

break & continue

break & continue:

• Beide konnen und sollten mit Verzweigungen benutzt werden

1 int erg = 0;

2

3 for(int zaehler = 0; zaehler < 10; zaehler ++)

4 {

5 // Es werden nur ungerade Zahlen erlaubt.

6 if(zaehler % 2 == 0)

7 continue;

8 erg += zaehler;

9 // Falls die Variable erg 16 ist , wird die ganze

10 // Schleife beendet.

11 if(erg == 16)

12 break;

13 }

6

Page 10: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Objektorientierung

Page 11: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Objektorientierung

• Alles in C# ist ein Objekt, auch die Variablen von primitiven

Datentypen, wie z.B. int oder bool

• Damit kann alles in C# Felder und Methoden besitzen

7

Page 12: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Klassen

• Ist eine Vorlage oder ein Bauplan

• Kann Felder, Eigenschaften und Methoden besitzen

• Klassen werden durch das Schlusselwort class gekennzeichnet

1 class Klassenname

2 {

3 int EinFeld;

4 int EineEigenschaft

5 { get; set;}

6

7 int EineMethode ()

8 {

9 // Code

10 }

11 }

8

Page 13: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Objekte

• Werden anhand von Klassen erstellt und sind somit Instanzen einer

Klasse

• Dies geschieht mit dem Schlusselwort new und einem von der Klasse

definierten Konstruktor

• Die Felder und Member einer Klasse konnen durch Objekte befullt

werden

1 EineKlasse einObject = new EineKlasse ();

9

Page 14: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Konstruktor

• Sind spezielle Methoden die beim Erstellen einer Instanz einer Klasse

aufgerufen werden

• Sie besitzen keinen Namen und haben als Ruckgabetyp ein Objekt

der eigenen Klasse

• Es wird aber kein return benotigt

• Sollte sicherstellen, dass eine gultige Instanz einer Klasse erzeugt

wird

• Falls kein eigener Konstruktor deklariert wurde, existiert immer der

Standardkonstruktor (parameterlos und weist allen Feldern

Standardwerte zu)

1 class EineKlasse

2 {

3 // Das ist ein Konstruktor

4 EineKlasse ()

5 {

6 // Code

7 }

8 }

10

Page 15: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Konstruktor

Schlusselwort new

• Zur Erstellung einer Instanz einer Klasse

• Ruft immer einen Konstruktor der jeweiligen Klasse auf

1 EineKlasse variable = new EineKlasse ();

11

Page 16: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Felder & Eigenschaften

Felder

• Werden auch Attribute genannt

• Sind Variablen eines beliebigen Typs, welche direkt in einer Klasse

deklariert wurden und damit dieser Klasse zugehorig sind

Eigenschaften

• Bietet flexible Mechanismen zum Lesen, Schreiben und Berechnen

der Werte eines Feldes

• Es muss aber nicht zwangslaufig ein Feld abbilden

• Besitzen nach dem Namen einen Block in denen ein get und/oder

set definiert werden kann

12

Page 17: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Felder & Eigenschaften

Eigenschaften: get & set

• Diese agieren wie Methoden

• Sie konnen einen Korper haben, mussen es aber nicht

• Sobald einer der beiden einen Korper hat, muss der andere auch

einen haben (wenn sowohl get als auch set implementiert werden

sollen)

• Falls kein eigener Korper definiert wurde, wird die Variable wie ein

Feld benutzt

• Besitzen eigene Sichtbarkeiten (unterschiedlich vom Feld selbst)

• set hat dabei einen Ubergabeparameter, und zwar value

• Dieser ist vom selben Typ, wie die Eigenschaft

13

Page 18: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Felder & Eigenschaften

1 class EineKlasse

2 {

3 int einFeld;

4 int EineEigenschaft

5 {

6 get

7 {

8 return einFeld;

9 }

10 private set

11 {

12 // Moegliche Berechnungen

13 einFeld = value + 42;

14 }

15 }

16 }

14

Page 19: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Zugriff von Objekteigenschaften

Zugriff mit . (Punkt)

• Um auf Inhalte (Methoden, Eigenschaften, ...) eines Objektes

zugreifen zu konnen, nutzt man einen Punkt .

• Dahinter kommt der Member den man nutzen mochte

this

• Gibt die aktuelle Instanz der Klasse (in dem man gerade ist und

arbeitet) als Variable wieder

• Nutzen:

• Ubergabe der aktuellen Instanz der Klasse in Methoden

• Nutzung von Membern, die durch gleiche Kennzeichner ausgeblendet

werden (falls Member und Variablen den gleichen Namen haben)

• Und andere (wird spater erlautert)

15

Page 20: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Zugriffsmodifikatoren/Sichtbarkeiten

Page 21: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Zugriffsmodifikatoren/Sichtbarkeiten

• Geben an, ob der zugehorige Code von anderen Code-Abschnitten

verwendet werden kann

• Es gibt mehrere Arten

public kann von uberall zugriffen werden, solange darauf

verwiesen wird

private kann nur von Code in der eigenen Klasse benutzt

werden

protected kann nur von Code in der eigenen und von

abgeleiteten Klassen benutzt werden

( internal kann von uberall aus der eigenen Assembly heraus

benutzt werden )

16

Page 22: Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen wird private kann nur von Code in der eigenen Klasse benutzt werden protected kann

Zugriffsmodifikatoren/Sichtbarkeiten

1 // Es kann jeder diese Klasse benutzen.

2 public class EineKlasse

3 {

4 public string einPublicFeld;

5 // Diese beiden koennen nur innerhalb der Klasse benutzt

6 // werden.

7 private int einFeld;

8 protected string einAnderesFeld;

9

10 // Jeder kann eine Instanz dieser Klasse erstellen.

11 public EineKlasse ()

12 { }

13

14 // Diese Methode kann von ueberall benutzt werden ,

15 // solange es einen Verweis auf eine Instanz dieser

16 // Klasse gibt.

17 public void EineMethode ()

18 { }

19 }

17