![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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.pub/reader033/viewer/2022052102/603c77427d90ba5b3a623aaa/html5/thumbnails/22.jpg)
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