Objektorientierung - Home | iFSRpublic kann von uberall zugri en werden, solange darauf verwiesen...

Preview:

Citation preview

Objektorientierung

Marc Satkowski

20. November 2016

C# Kurs

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

Weiterfuhrende Verzweigungen

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

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

Schleifen

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

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

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

Objektorientierung

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

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

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

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

Konstruktor

Schlusselwort new

• Zur Erstellung einer Instanz einer Klasse

• Ruft immer einen Konstruktor der jeweiligen Klasse auf

1 EineKlasse variable = new EineKlasse ();

11

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

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

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

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

Zugriffsmodifikatoren/Sichtbarkeiten

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

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

Recommended