Top Banner
Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung .NET Architektur und C# (C-Sharp) Vorgetragen von Fadime Cosar und Ecevit Koç
87

.NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Oct 14, 2018

Download

Documents

hadien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences - Systemprogrammierung

.NET Architektur undC# (C-Sharp)

Vorgetragen von

Fadime Cosar und Ecevit Koç

Page 2: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -

Inhalt Was ist .NET ? Architektur

Architekturübersicht Compiler und Sprachen Common Language Runtime (CLR) Unterstützte Sprachen Klassenbibliotheken („Framework“)

C# Beispiele in C# Weitere Informationen

Page 3: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -1. Was ist .NET?

.NET ist eine von Microsoft entwickelte Softwareplattform. Diese umfasst eine Laufzeitumgebung, eine Sammlung von Klassenbibliotheken (API) und angeschlossene Dienstprogramme (Services). Die Plattform ist die Umsetzung des Common-Language-Infrastructure-Standards für Microsoft Windows.

Page 4: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -1. Wo kann man Dot Net begegnen

- Internetbrowser (asp.net)

- Handy-Browser (WAP, IMODE, ...)

- Windowsprogramme (ab Windows 98)

- PDA-Programme (PocketPC2002, Windows CE)

- Elektronischer Geschäftsdatenaustausch („Webservice“)

- MS Office Erweiterungen (ab Office 2003)

Page 5: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -1. Dot Net besteht aus

Technisch gesehen ist Dot Net eine Java ähnliche Erweiterung für Betriebssysteme von Microsoft

Die Erweiterung besteht aus:

- Einer Ausführungseinheit für Dot Net Programme- Einer umfangreichen Klassenbibliothek- Sowie Konfigurations- und Programmentwicklungswerkzeugen

Page 6: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -

1. Dot Net ARCHITEKTUR I

VB – Quellcode C# - Quellcode Java – Quellcode

VB – Compiler C# - Compiler Java – Compiler

Assembly Klassenbibliothek („Framework“)

Ausführungsmodul („CLR“)

CIL Interpreter

Betriebssystem

Page 7: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -

1. Dot Net ARCHITEKTUR II- Es gibt verschiedene Dot Net Sprachen (C#,C++, VB)- Alle Compiler für Dot Net erzeugen Zwischencode

(„CIL“) - Compilierte Module werden zu Assemblies

zusammengefasst (EXE oder DLL- Datei)- Die Dot Net Laufzeitumgebung („CLR“) enthält u.a.

einen Interpreter für CIL, er führt Assemblies aus- Die Klassenbibliothek („Dot Net Framework“) enthält

u.a. Klassen für Zeichenketten, Dateien, Grafische Benutzeroberflächen,…..

Page 8: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -

1. Common Language RuntimeDie CLR ist das Ausführungsmodul von Dot Net. Zu seinen Aufgaben gehören u.a.- Interpreter

* Konvertierung von Zwischensprachen (CIL) in Computersprache

- Codeverwaltung (Laden und Ausführen)- Erzwingung von Code Sicherheit- Überprüfung von Typsicherheit- Fehlerbehandlung (Exceptions)- Speicherverwaltung (Garbage Collection)- Nebenläufigkeiten (Threadunterstützung)

Page 9: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -2. Unterstützte Sprachen

C# (C Sharp)- Von Microsoft erfundene Programmiersprache- Syntax und Semantik ähnlich wie Java oder C++- Durchgehend objektorientiert- Standardisiert nach European Computer Manufacturers

Association (ECMA)- Einfach zu programmieren wie Visual Basic (VB),

Delphi,…. - Entwicklungssprache der Klassenbibliothek class MyApp {

public static void Main() { System.Console.WriteLine("Hello, C#!");

} }.

Page 10: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -

2. Weitere unterstützte Sprachen

VB (Visual Studio)* Syntax ähnlich wie VB6 * Unterstützt Code- Vererbung* Bestandteile des Office2003 SDK (Software Development Kit)

J#.net („Jay Sharp“)* ist Microsoft Version von Java* basierend auf Java 1.1* keine alternative zu Java

J-Script.net* JavaScript für Dot Net* Implementiert nach ECMA

Page 11: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -3. Umfang der

Klassenbibliothek

Die Framework Class Library (FCL) umfasst einige Tausend Klassen, die in so genannte Namensräume (Namespaces) unterteilt sind. Die Klassen erfüllen Aufgaben wie zum Beispiel das Formatieren von Text, das Verschicken von E-Mails, aber auch das Generieren von Code. Die Unterteilung in Namensräume dient dazu, die große Menge an Informationen übersichtlicher zu gestalten.

- umfassende OO-Klassenbibliothek (Kollektionen, Threads, Reflection, XMLVerarbeitung, Windows Forms, Web Forms, ADO.NET, ASP.NET)

Page 12: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

2. Klassen, Objekte, Interface

3. Dateien und Verzeichnisse

4. Collections und Generics (Listen)

5. Multithreading

6. Oberflächenprogrammierung

7. Client-Server-Programmierung

Page 13: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Unterscheidung im Verhalten von A und B:Bei (A) muss Platz auf dem Heap reserviert werden. Die Speicherreservierung erfolgt mittels Konstruktoraufrufs und mit new. Bei (B) ist die Konstruktorverwendung optional bei (A) Pflicht!

2 Kategorien von Datentypen: -(A) Referenztypen (Verweistypen): Objekte (Objektdaten) werden in einem speziellen Speicherbereich (Heap) abgelegt und über eine Speicheradresse referenziert. (Heap = dynamischer Speicher (Anordnung entspricht verzweigtem Baum))-(B) Werttypen: Objekte werden auf dem Speicherbereich (Stack) abgelegt (Stack = Kellerspeicher, Stapelspeicher, LIFO-Speicher) Bsp-Initialisierung: int k = new int(); oder int k =0;

Das .NET-Framework ist vollständig objektorientiert <Vererbungskette>:-Datentypen sind direkt/indirekt vom Basisdatentyp System.Object abgeleitet- Object = Basisklasse von .NET Framework

C#-Typsystem

WertTypen ReferenzTypen ZeigerTypen

Page 14: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Zuordnung Datentypen: Übersicht (Wurzel=Typ Object)

WertTypen (15)

ReferenzTypen

Einfache integrierte DatenTypen: (13) Wertebereiche:=WB (1byte=8bit)( 8-Bit Groesse): bool, byte, sbyte; WB( true/false, 0..255,-128..127) (16-Bit Groesse): char, short, ushort; WB(unicode-Zeichen, -215..(215)-1, 0..(216-1)(32-Bit Groesse): float, int, uint; .NET-Typ(System.Single, System.Int32,..UInt32)(64-Bit Groesse): double, long, ulong; .NET-Typ(System.Double, System.Int64,..)(128-Bit Groesse): decimal; .NET-Typ(System.Decimal)Aufteilung der Bits in WB und Genauigkeit (G) z.B. decimal G=28 oder 29 Stellen

Enum

Struct Klassen

Interface

Object

Delegates

stringBenutzerdefinierbare Typen

ZeigerTypen

Page 15: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Zeiger (Pointer): (sind als unsafe = unsicherer Code zu kennzeichnen) - Deklaration eines Zeigers: Datentyp * Pointername;- unsafe dient zum Erzeugen von unsicherem Code, der nicht von der Laufzeitumgebung kontrolliert wird und auf den auch die Garbage Collection keine Einwirkung hat.- darf nur auf elementare Datentypen und Strukturen angewendet werden (elementare Datentypen := 13 integrierte Datentypen)- Adressoperator: Pointername = &Variablenname;- Garbage Collection(GC) räumt automatisch nicht mehr referenzierte Objekte aus dem Speicher: da Zeiger nicht unter der Kontrolle der CLR laufen, würde daraus folgen, dass der Zeiger auf ein falsches Objekt zeigt, wenn der Zeiger noch auf dessen Elementen steht.

Abhilfe: mittels fixed-Modifikator wird die automatische Reinigung aufgehobend.h., die Adresse der Objektvariablen wird dem Zeiger unter Verwendung von fixed zugewiesen, damit das Objekt nicht erfasst werden kann von der GCfixed(Datentyp *Pointername = &Objektelement){..Anweisungen..}

Page 16: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, SchleifenSchlüsselwörter / Modifizierer (83):

abstract, as, base, bool, break, byte, case, catch, char, checked, class, const, continue, decimal, default, delegate, do, double, else, enum, event, explicit, extern, false, finally, fixed, float, for, foreach, get, goto, if, implicit, in, int, interface, internal, is , lock, long, namespace, new, null, object, operator, out, override, params, partial, private, protected, public, readonly, ref, return, sbyte, sealed, set, short, sizeof, stackalloc, static, string, struct, switch, this, throw, true, try, typeof, uint, ulong, unchecked, unsafe, ushort, using, value, virtual, volatile, void, where, while, yield <Kontextschlüssel> (+7 in C#3.0)Nicht erlaubte Bezeichner: Schlüsselwörter, Ziffer als erstes Zeichen

Beispiele:int double =33;int 1x = 33; Erlaubte Bezeichner: @Schlüsselwörter, _Ziffer als zweites Zeichen

Beispiele:int @double =33;int _1x = 33;

Beispiele:int BuchstabenZahl =33;int _1x = 33;

Bezeichner := Name von Variablen, Operationen, Klassen,..

weitere: int @ =33; int @1x = 33; int _@ = 33;

Beispiele:int @BuchstabenZahl =33;int _@ = 33; int _ = 33;

Page 17: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Kommentare: - //einzeiliger Kommentar - /* mehrzeilliger Kommentar*/ - /// <tag>

/// Dokumentationskommentar im XML-Stil /// </tag>

Konstanten: <Mit #define können keine MAKROS definiert werden>anstelle von #define MAX 10 kann in C# geschrieben werden : const int MAX = 10;allgemein: const Datentyp Bezeichner = Wert;

Ausgabe:System.Console.WriteLine(“Ausgabe“);Eingabe:Int32.Parse(Console.ReadLine()); //IntegerConsole.ReadLine(); //StringAusgabe VariablenWerte:int a= 22;Console.WriteLine(“a: {0}“,a); oder Console.WriteLine(“a: “+a);

Page 18: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

impliziert typisierte Variablen (Implizierte Typdeklaration) var x = 3; //entspricht int x=3;var aa = “eins"; //entspricht string aa=eins;

Neu in C# 3.0: var (implizite Typdeklaration)jetzt 2 Varianten von Variablendeklaration - implizit und explizit typisierte Typdeklaration- beides nutzbar- bei implizit erfolgt die Zuordnung automatisch mittels var- bei explizit wie gehabt

Bisher: explizit typisierte Variablenint x=3;string aa = “eins";

Einschränkungen: (var-Verwendung)- es muss eine lokale Variable sein;- Initialisierung muss bei der Deklaration erfolgen, sprich zur Compile-Zeit feststehen - Typ darf kein null-Typ sein

Nicht möglich:var x = new int[] {1, 2, 3}; x = "Hallo"; var x;var z=null;

Page 19: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Typumwandlung/Konvertierung:

Boxing (geschachtelt): (implizite Form der Konvertierung)Eine Variable eines Werttyps wird in ein Object konvertiert,d.h. der Wert wird in ein Objekt verpackt, d.h. er wird vom Stack entnommen, dann auf den Heap abgelegt und die Referenz darauf gespeichert.

Unboxing (nicht geschachtelt): Eine Variable des Objekttyps wird in einen Werttyp konvertiert

Beispiel: (object = alias in C# zu Object (.NET))int i=100;

//Boxingobject o = i;

//Unboxing <eingepackte int Wert wird wieder ausgepackt>int i = (int)o; //explizite Rückwandlung über ein Casting

//doppeltes Casting, erst Unboxing, dann Konvertierungbyte b = (byte)(int)o;

Page 20: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Typumwandlung/Konvertierung:

1.) Implizite Typkonvertierung: (sind vordefiniert) (C#Compiler tut dies selbst!) in Pfeilrichtung! (d.h. byte->short->int.. Konvertiert!)

Typkonvertierung von bool in andere Datentypen nicht möglich!

char

bool

string

object

byte

int

uint

short

ushort

long

float

double

decimal

ulong

<Implizit numerische Konvertireung>

Page 21: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Typumwandlung/Konvertierung:

2.) Explizite Typkonvertierung: (Anwendung: Wenn implizit nicht geht!)

Beispiel1: byte x=10, y=20;byte a=x+y; //Falsch Error wegen (Umwandlung int in byte)byte a= (byte)(x+y); //OK -explizite Konvertierung!

Implizite Typumwandlung nicht möglich!

Beispiel2: byte x=1.0; //Falsch Error wegen (Umwandlung double in byte)byte x= (byte)3.0; //OK -explizite Konvertierung! char x = (char)65; oder int i = (int)‘A‘; …

Typumwandlung: Voraussetzung: WB Quelle <= WB Ziel; double->int auch OK- von Datentyp in string erfolgt mit ToString()-Methode- aus einem string einen Wertetyp zu machen erfolgt mit: -> der Methode Parse() oder der Klasse Convert: Beispiel: int i = System.Int32.Parse(str); oder int i = Convert.ToInt32(str);Klasse Convert hat Methoden, welche jeden Basisdatentyp des .NET Frameworks in einen anderen Basisdatentyp konvertiert.

Page 22: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Typumwandlung/Konvertierung:

2.) Explizite Typkonvertierung (Fortsetzung):

Page 23: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, SchleifenFelder/Arrays: eindimensionale, mehrdimensionale und irreguläre Felder

Eindimensionale: Deklaration und Initialisierung Datentyp[] Name = new Datentyp [Größe]; oder ohne GrößeDatentyp[] Name = {Wert1, Wert2,…, WertN}; z.B.: char[] x = {‘c‘,‘h‘,‘a‘,‘r‘};//char[]x=new char[4]{..}

Mehrdimensionale: Angabe der Dimension erfolgt durch Komma-Anzahl in [ ]Datentyp[,] Name = new Datentyp [Größe1,Größe2]; //2-D Datentyp[,…,] Name = new Datentyp [Gr1,Gr2,…,GrN]; //N-D Datentyp[,] Name = {{2D-ele},1D-Ele}; //2Dz.B.: int[,,]Name={{{3,4,3},{3,4,3},{3,2,8}}}; //3D= [3,3,1]Wichtig! In allen {..} muss gleich Anzahl Elemente sein! Anzahl {} beliebig!Falsch: int[,,]Name={{{3,4,3,8},{3,4,3},{3,2,8}}};

Irreguläre Felder(Verzweigte Arr) = jagged Arr: Deklaration und Initialisierung Datentyp[][] Name = new Datentyp [Größe][]; z.B.: int[][] x = new int[3][]; //3zeiliges IrrFeldx[0] = new int[4]; x[1] = new int[2]; x[2] = new int[6]; for(int i=0; i<x[0].Length;i++) x[0][i]=i+1; //x[1][i]=i+1+x[0][3]; x[2][i]=i+1+x[1][1]

Page 24: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Operatoren:

Logische Operatoren: &&, &, ||, |, ^ = (XOR), ! = NOT (Negation)

Arithmetische Operatoren: +, -, *, /, % , ++,--

Vergleichs-Operatoren: ==, !=, >, <, >= , <= //Rückgabe true/false

Bitweise Operatoren: ~(invertiert), |(OR), &(AND), << (links), >>(re)

Zuweisungs-Operatoren: =, +=, -=, *=, /= , %=, &=, |=, ^= , <<= , >>=

Stringverkettung mit +: string a=“str“; string b =“ing“; string c = a+b; //string

Sonstige Operatoren: . Punktoperator //Zugriff auf die Eigenschaften oder Methoden einer Klasse[] //Arrays ; ():Typkonvertierung, Operationsreihenfolge; new: Instanziierung einer Klasse; …u.a.

Page 25: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Verzweigungen:

switch(Ausdruck){

case wert1: Anweisungen; Sprunganweisung; .. default: Anweisungen; Sprunganweisung;

}Sprunganweisungen: break, return, goto

(2) switch-Anweisung

(1) if/else-Anweisung:

if(Bedingung) {Anweisungen} else if(Bedingung) {Anweisungen} ...else {Anweisungen}

if(Bedingung) {Anweisungen}

if(Bedingung) {Anweisungen} else {Anweisungen}

Page 26: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Verzweigungen: (Fortsetzung)

< Variable > = < Bedingung > ? < Wert1> : <Wert2>;

(3) Bedingte Zuweisung: (Ternärer Operator)

goto Label;……Label: return true;

(4) goto-Anweisung

Sprung in eine Schleife ist nicht erlaubt, aber Sprung aus einer Schleife schon.

Page 27: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Schleifen:

(1) for-Schleife:

for(<Initial>;<Bedingung>;<Inkrement>) {Anweisungen}

for(;<Bedingung>;) {Anweisungen; <Inkrement>;}

for(;;) {Anweisungen; <Inkrement>; … break;}

(2) while-Schleife:

while(<Bedingung>) {Anweisungen}

(3) do-while-Schleife:

do{Anweisungen}while(<Bedingung>);

(4) foreach-Schleife: (durchläuft alle Elemente einer Liste oder Array)

foreach([<Datentyp>]<Variable> in <Liste>){Anweisungen}

z.B.: foreach(string s in values){Console.Writeline(s);}

Page 28: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

1. Datentypen, Operatoren, Schleifen

Programmbeispiel: Summenrechnung

Zahl einlesen:

Runden um 3-Stellen nach Komma:

Page 29: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, Interface

Generelle Aufbaustruktur eines C#-Programms:using System;using System.Collections.Generic;using System.Text;namespace CSharpTraining{ class Program { static void Main(string[] args) { //Anweisungen, Befehle, Ausgaben, .. } }}

!(ausserhalb einer Klasse):-> Funktionen/Methoden;-> Variablendefinition z.B. int k;

//Namespace-einbindung mittels “using“-> alle Klassen zur Verfügung

(ausserhalb einer Klasse):-> enum-Aufzählungstyp; delegate-> struct, interface

d.h. keine globalen Methoden und Variablen zugelassen

Page 30: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, Interface

Zugriffsmöglichkeiten/Sichtbarkeit: - private: privat, die Elemente sind nur in der eigenen Klasse sichtbar

- protected: geschützt, Elementenzugriff mit Methoden der eigenen Klasse oder der vererbten Klasse.

- public: öffentlich, Zugriff von allen Klassen auf die Elemente möglich

- internal: intern, Zugriff auf Elemente nur Operationen, die zur Assembly gehören.

- protected internal: geschützt oder intern, Zugriff durch Operationen: -> der eigenen Klasse oder -> der abgeleiteten Klasse oder -> der gleichen Assemblys

Page 31: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, Interfacestruct:- können auch Konstruktoren, Konstanten, Felder, Methoden, Eigenschaften, Indexer, Operatoren, Ereignisse und geschachtelte Typen enthalten (alternativ: Klasse)- ist ein Werttyp, wird i.d.R. verwendet um kleine Gruppen von zusammengehörigen Variablen einzukapseln, z.B. Buchmerkmale public struct Buch { public decimal preis; public string titel; public string autor; }- können nicht von anderen Strukturen erben => Strukturmember als protected deklarieren nicht möglich!- können ohne Initialisierung durch new verwendet werden

[Attribute] [Zugriff] struct Name[:Interface] {struct-Elemente}

Page 32: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, Interfaceenum:- wird zum Deklarieren einer Enumeration verwendet- ist ein eigener Typ, besteht aus einer Gruppe benannter Konstanten =

Enumeratorliste;- char nicht möglich, standard int;- der erste Enumerator hat Standard den Wert 0, der zweite 1, …- Beispiel: enum Tage{Sam, Son, Mon, Die, Mitt, Don, Frei}; //Sam=0,..oder enum Tage{Sam=1, Son, Mon, Die, Mitt, Don, Frei}; //1..7

- Enumeratorname darf keine Leerzeichen enthalten!- Beispiel Typkonvertierung: int x = (int) Tage.Frei; //explizite Typkonvertierung von enum-Typ in einen ganzzahligen Typ int Console.WriteLine(“Freitag = {0}", x); //Ausgabe: Freitag=7[Attribute] [Modifier] enum Bezeichner[:Datentyp] {enum-Liste}

Page 33: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, Interfacedelegate:- ist ein Typ, der auf eine Methode verweist. (ähnlich Funktionszeiger wie in C/C++ )- wie normale Methodensignatur mit Schlüsselwort delegate;- Deklaration ähnelt einer Methodendeklaration aber es ist eine Klasse! D.h. intern wird eine Klasse erstellt, die den gleichen Namen trägt. => kann daher auch ausserhalb einer Klasse deklariert werden.- Kann als Bestandteil eines Namespaces deklariert werden, eine Methode dagegen aber nicht!- können miteinander verkettet werden

[Zugriff] delegate Rückgabetyp Name (Parameterliste);

Page 34: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, InterfaceProperties (Eigenschaften):- sind Member, zum Lesen, Schreiben oder Berechnen von Werten privater Felder;- mit set{} wird ein neuer Wert zugewiesen, - mit get{} wird der Eigenschaftswert zurückgegeben- mittels value-Schlüssels wird der Wert definiert, der von set zugewiesen wird;- Properties, ohne set-Methode sind schreibgeschützt

[Zugriff] Datentyp Name{ get{Anweisungen} set{Anweisungen}}

Aufruf- z.B.:Klasse tt = new Klasse();tt.a = 33.7;

private double radius;

Page 35: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, InterfaceIndexer:- spezielle Eigenschaft, innerhalb einer Klasse nur einmal- Verwendung ausschließlich für Listen, um auf Elemente zu greifen

Elementtyp this [int index] { get{Accessorcode} set{Accessorcode}};

Beispiel: //erzeugen eines Indexers

private int [] Code = new int [3];

public int this [int index] { get{return Code[index];} set{Code[index]=value;}};

Page 36: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, InterfaceKlassen und Interface-Standard-Klassen: wie in Java, nur Einfachvererbung, -Abstrakte Klassen (abstract = rein virtuell): Vererbung und Ableitung-Versiegelte Klassen (sealed): schützt vor Vererbung und Ableitungd.h. Gegenteil von Abstrakter Klasse; public sealed class A {} dürfen keine abstrakte, virtuelle Methoden haben; (z.B. String-Klasse in C# ist eine sealed-Klasse)-Statische Klassen (static): Klasse nicht instanziierbar und alle Member static-Partial-Klassen (partial): Aufteilung einer Klasse in mehrere Dateien Anwendung z.B. bei Formularen: in Form1.cs und Form1.Designer.cs-Verschachtelte Klassen(Nested Classes): innerhalb einer Klasse befindet sich eine weitere Klasse-Interface (Schnittstellen) (interface): Mehrfachvererbung mit mehreren Schnittstellen möglich! Unterklasse: class D :IEins,IZwei {…}enthält abstrakte Methoden und Eigenschaften, die nicht implementiert sind; diese werden den Klassen zur Verfügung gestellt, welche sie implementieren public interface IMuster {double a(); double a{get; set;}}

Neu in C#3.0 partielle Methoden: - darf nur in der partial-Klasse existieren;- Signatur in der einen Datei und die Implementierung in der anderen Datei.

Partial class A {void s(string t);}Partial class A {void s(string t){..}}

Page 37: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, InterfaceVererbung- Keine Mehrfachvererbung d.h. Klasse besitzt nur eine Oberklasse

Mehrfachvererbung Einfachvererbung

A

B C

Generalisierung

Spezialisierung

Class B : A{ …}

gleiche Methoden in Ober/Basis- und Unterklasse:- Oberklasse: public string gibAus(){..}- Unterklasse: new public string gibAus(){..}

Konstruktoraufruf der Oberklasse - Unterklasse: UnterklasseKonstruktor(Parameterliste): base(zugehörige Parameterliste) {…}

public Kreis(double x, double y, string farbe, double radiu) : base(x, y, farbe) /*Aufruf des konstruktors der Oberklasse*/ {this.radius = radiu;}

Page 38: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, InterfaceAbstrakte Klasse als Oberklasse:- hiervon können keine konkreten Exemplare erzeugt werden- Klassen B und C sind konkrete Klassen- Definition: public abstract class A{..}

Abstrakte Methoden:- sind implizit virtual und müssen überschrieben werden mit override- alle Unterklassen müssen diese implementieren, keine Implementierung in der Oberklasse, nur Deklaration.- Oberklasse: public abstract void methode();- Unterklasse: public override void methode(){...}

Virtuelle Methoden:- müssen überschrieben werden mit override in der Unterklasse- alle Unterklassen müssen diese implementieren, keine Implementierung in der Oberklasse, nur Deklaration.- Oberklasse: public virtual void methode(){..}- Unterklasse: public override void methode(){...}

Page 39: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, Interface

1.Programmbeispiel: Abstrakte Klasse : GeometrischeKörper

Page 40: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

2. Klassen, Objekte, Interface

2.Programmbeispiel: Interface : GeometrischeKörper

Schnittstellen: Implementiert beide:Implementiert nur IGeometrie:

HauptklasseNormale Klasse

Page 41: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

Namespace System.IO

3. Dateien und Verzeichnisse

Einführung mit Anwendung

//Existiert Ordner?

//erstelle Verzeichnis

//lösche Verzeichnis (nur leere)

//lösche Verzeichnis (alle)

//Verzeichnis umbenennen

z.B. Directory.Move(alt, neu);

//Verzeichnis verschieben

z.B. Directory.Move(ordner, @pfad + @"\" + ordner);

//Das Arbeitsverzeichnis

Zugriff: Directory.ABC

Page 42: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

3. Dateien und VerzeichnisseNamespace System.IO

Einführung mit Anwendung

//Das aktuelle Verzeichnis

DirectoryInfo info = new DirectoryInfo(ordner);

info.Name //Verzeichnisnameinfo.FullName //Verzeichnisname mit Pfadinfo.Parent //Namen des übergeordneten Verzeichnissesinfo.Root //Verzeichnis-Ortinfo.Attributes //Verzeichnisattributinfo.CreationTime.ToShortDateString() //Erstellungs-Zeitinfo.LastAccessTime.ToShortDateString() //Letzter Zugriffinfo.LastWriteTime.ToShortDateString() //Letzter Schreibzugriff

//abstract

Page 43: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

Namespace System.IO

3. Dateien und Verzeichnisse

Einführung mit Anwendung

//Existiert Ordner?

//lösche File

Zugriff: File.ABC

//Kopiere File

//File umbenennen

z.B. File.Move(alt, neu);

//File verschieben (@ sehr wichtig!)

z.B. File.Move(datei, @pfad + @"\" + datei);

Page 44: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

3. Dateien und VerzeichnisseNamespace System.IO

Einführung mit Anwendung

info.Name //Filenameinfo.FullName //Filename mit Pfad

info.Length //Filegroesseinfo.Attributes //Dateiattribut

info.CreationTime.ToShortDateString() //Erstellungs-Zeitinfo.LastAccessTime.ToShortDateString() //Letzter Zugriff

info.LastWriteTime.ToShortDateString() //Letzter Schreibzugriff

//abstract

FileInfo info = new FileInfo(datei);

Page 45: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

Namespace System.IO

3. Dateien und VerzeichnisseEinführung mit Anwendung

/*kopiere File byteweise in umgekehrter Richtung (lseek)*/ public void kopiereFileVerkehrt(string quelle, string ziel){ ….//überprüfe zuerst ob File existiert? long position; int nread; FileStream fquelle = File.Open(quelle, FileMode.Open); FileStream fziel = File.Open(ziel, FileMode.OpenOrCreate); byte[] puffer = new byte[1]; position = fquelle.Seek(-1, SeekOrigin.End ); do { fquelle.Seek(position, 0); if ( (nread = fquelle.Read(puffer, 0, puffer.Length))

== puffer.Length) fziel.Write(puffer, 0, nread); position--; } while (position >=0 && nread == 1); fquelle.Close(); fziel.Close();}

public void gibCat(string datei){ ….//überprüfe zuerst ob File existiert? StreamReader sr = new StreamReader(datei); while(sr.Peek() != -1) Console.WriteLine(sr.ReadLine()); sr.Close();}

Programm

Page 46: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

3. Dateien und Verzeichnisse

•Namespace System.IO

•Übersicht wichtiger Klassen:

zurück

Page 47: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

3. Dateien und Verzeichnisse

zurück

Page 48: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

4. Collections und Generics (Listen)

•Collections = Listen, zur Organisation von Daten

•Namensraum: using System.Collections; bzw. using System.Collections.Generic;

Aufnahme Objekte jeder Art, wahlfreier Zugriff möglich

entspricht FIFO-Speicher

(1)

(1)

(2)

(2)

entspricht LIFO-Speicher (stapel)(3)

(3)

Kombination Array+Hashtable (sortiert nach Schlüssel);Zugriff über Schlüssel oder Index

(4)

(4)

Speichert ein Array aus Bitwerten. Dargestellt als boolesche Werte.

(5)

(5)

Speichert Schlüssel-/Wertepaare;Zugriff über einen Index nicht möglich! (aus Implementierungsgründen)

(6)

(6)

Übersicht: Listenklassen (Collection)

Page 49: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

4. Collections und Generics (Listen)

Übersicht: Listenklassen (Generics)

Ersatz für Hashtabel, eine generische Schlüssel-/Wert Liste

Ersatz für Arrayliste, generische Standardliste

(1)

(2)

Eine generische doppelt verkettete Liste

(3)

Eine generische Queue(4)

Ein generisches Dictionary, sortiert nach dem Key (5)

Eine generische Schlüssel-/Wert Liste, sortiert nach dem Key (6)

(1) (2) (3) (4)

(5) (6) (7)

Ein generischer Stack (7)

(5) benötigt mehr Speicher als (6)(6) ist schneller gefüllt, wenn vorsortiert alle Elemente eingefügt werden

(5) Ist schneller beim Einfügen und Entnehmen, wenn Werte unsortiert sind

Page 50: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

4. Collections und Generics (Listen)

Vergleich: (Collection - Generic) Stack

Page 51: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

4. Collections und Generics (Listen)

//true (weil letztes Element!)

//true (letztes Ele)

8 <..: 2>13 <..: 2>

Beispiel-Vergleich: (Collection - Generic) Stack

Page 52: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

4. Collections und Generics (Listen)

Beispiel: Priority Queue

2.)3.)

4.)7.)

tm = new SortedList<string, string>(); 1.)5.)

foreach (string str in tm.Keys) { System.Console.WriteLine(str+ "->"+tm[str].ToString());}

8.)

PQueue instanz = new PQueue();

Page 53: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

5. Multithreading- Namespace System.Threading - darin die Thread-Klasse Thread- Der Konstruktor erwartet einen Delegate, der die Startmethode für den

Thread definiert. (Delegatetyp: Threadstart ist parameterlos und ohne Rückgabewert)

- Multithreading: mehrere Threads innerhalb eines Programms, teilen sich einen gemeinsamen Adressraum (z.B. Garbage-Collection)

- Erzeugen und Starten eines Threads:

//Erzeuge Thread thread_AThread thread_A = new Thread( new ThreadStart(Methode)); //Starte Thread thread_A.Start();

Methoden-Signatur muss leer sein!

public void gibAus() { …}

ThreadStart de = new ThreadStart(gibAus); // DelegateThread thread_A = new Thread(de); // neuer Threadthread_A.Start(); // Thread starten

1.

2.

Page 54: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

5. Multithreading- Ein Thread wird automatisch beendet, wenn das Ende der Thread-

Methode erreicht ist.- Abort()-Methode initiiert das Beenden des Threads,

es wird eine ThreadAbortException ausgelöst, die das Beenden des Threads bewirkt. Beenden eines Threads erfolgt nur mit der Join()-Methode.

- Sleep(..) aktiver Thread wird unterbrochen für eine bestimmte Zeit

thread_A.Abort(); thread_A.Join(); //warte auf Ende

Priority: gibt die Priorität des Threads an (default: Normal)

ThreadState: aktueller Threadzustand

thread_A.Name; thread_A.Priority;

Page 55: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

5. Multithreading

- Steuerung nebenläufiger Threads zur Vermeidung von Deadlocks- Mechanismen zur Synchronisation:

Locks, Mutexe, Monitore, Semaphore,..

Synchronisation

Beispiele:

lock()

public void gibAus() { Monitor.Enter(this); …//krittischer Bereich Monitor.Exit(this);}

Monitor()

public void gibAus() { //Lock auf aktuelles Objekt lock(this) { … //krittischer Bereich }}

Mutex() public void gibAus() { Mutex mutex = new Mutex(false); mutex.WaitOne() //Sema: P …//krittischer Bereich mutex.Close() //Sema: V}

Mutex:

- Erbt von der abstrakten Klasse: WaitHandle

Page 56: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

5. Multithreading

Synchronisation: Monitor//wartender Thread wird aufgeweckt

Monitor.Pulse(this); //aufwecken block.Threads

Monitor.Wait(); //blockieren/Monitor freigeben

Enter(..): sperrt das angegebene Objekt für den aktuellen Thread

Exit(): //hebt Sperre wieder auf

Pulse() //informiert nächsten Thread: Objekt blockiert, falls Zugriffswunsch, wird in Warteschlange gestelltSobald Sperre beendet, der erste Thread in Warteschlange bekommt den Zugriff

Wait(): hebt Blockierung auf und blockiert aktuellen Thread

public void gibAus() { Monitor.Enter(this); …//krittischer Bereich Monitor.Exit(this);}

Programm: Arzt,Patient,Zimmer

Page 57: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

6. Oberflächenprogrammierung

Page 58: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

6. Oberflächenprogrammierung

Default Start

Page 59: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

6. Oberflächenprogrammierung

Starten der leeren AnwendungAusgabe:

Teilklasse in der die Steuerung der Steuerelemente kommt: (eigener Code)

Zur Laufzeit festgelegte Ereignisse

Falls Elemente eingefügt und deren Eigenschaften manuell eingestellt werden, so werden diese hier automatisch registriert (aktualisiert!)

Ruft Methode in der anderen Teilklasse auf, enthält automatisch festgelegten Standardcode.

Page 60: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

6. Oberflächenprogrammierung

Steuerelemente Eigenschaften werden automatisch hier eingefügt!

Page 61: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

6. Oberflächenprogrammierung

Übersicht-Steuerelemente

Page 62: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

6. Oberflächenprogrammierung

Beispiel: Adressenverwaltung

Speichern/Laden file

Speichern der Listbox-Inhalt, Schlüssel+Wertepaare

Page 63: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

6. Oberflächenprogrammierung

Programm: Adressenverwaltung

Page 64: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

7. Client Server Programmierung

Wichtige Namensräumeusing System.Net.Sockets;using System.Net;

TCP-STREAM

SERVER

Receive()

Send()

Socket()

Bind()

Listen()

Accept()

Shutdown/Close()

Client

Send()

Receive()

Socket()

Connect()

Close()

Page 65: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

7. Client Server Programmierung

Wichtige Namensräumeusing System.Net.Sockets;using System.Net;

TCP-STREAM

SERVER

Receive()

Send()

Socket()

Bind()

Listen()

Accept()

Shutdown/Close()

Client

Send()

Receive()

Socket()

Connect()

Close()

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

Socket-Anlegen: Client und Server

Page 66: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

7. Client Server Programmierung

Wichtige Namensräumeusing System.Net.Sockets;using System.Net;

TCP-STREAM

SERVER

Receive()

Send()

Socket()

Bind()

Listen()

Accept()

Shutdown/Close()

Client

Send()

Receive()

Socket()

Connect()

Close()

s.Bind(new IPEndPoint(IPAddress.Loopback, 3000));

Server: Socket mit Adresse Binden (Server legt seinen Port fest)

Page 67: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

7. Client Server Programmierung

Wichtige Namensräumeusing System.Net.Sockets;using System.Net;

TCP-STREAM

SERVER

Receive()

Send()

Socket()

Bind()

Listen()

Accept()

Shutdown/Close()

Client

Send()

Receive()

Socket()

Connect()

Close()

s.Listen(5);

Server: Warteschlange für Verbindung(Server legt Warteschlange an)

Page 68: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

7. Client Server Programmierung

Wichtige Namensräumeusing System.Net.Sockets;using System.Net;

TCP-STREAM

SERVER

Receive()

Send()

Socket()

Bind()

Listen()

Accept()

Shutdown/Close()

Client

Send()

Receive()

Socket()

Connect()

Close()

While(true){ Socket newSocket = s.Accept(); //blockiert, bis sich Client verbindet….

Server: Verbindung auswählen aus WS(Server ist empfangsbereit)

Page 69: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

7. Client Server Programmierung

Wichtige Namensräumeusing System.Net.Sockets;using System.Net;

TCP-STREAM

SERVER

Receive()

Send()

Socket()

Bind()

Listen()

Accept()

Shutdown/Close()

Client

Send()

Receive()

Socket()

Connect()

Close()

s.Connect(new IPEndPoint(IPAddress.Loopback, 3000));

Client: Verbindung herstellen

Page 70: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

7. Client Server Programmierung

Wichtige Namensräumeusing System.Net.Sockets;using System.Net;

TCP-STREAM

SERVER

Receive()

Send()

Socket()

Bind()

Listen()

Accept()

Shutdown/Close()

Client

Send()

Receive()

Socket()

Connect()

Close()

s.Send(zahl); //Client sendet

Client: Daten senden/Daten empfangen

Server: Daten empfangen/Daten senden

while (newSocket.Receive(zahl) > 0){ … A() }

A():= newSocket.Send(zahl); //Server sendet

s.Receive(zahl); //Client empfängt

byte[] zahl = new byte[3];

zahl[0] = byte.Parse(Console.ReadLine());

zahl[2] = (byte)(zahl[0] + zahl[1]);

Page 71: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

7. Client Server Programmierung

Wichtige Namensräumeusing System.Net.Sockets;using System.Net;

TCP-STREAM

SERVER

Receive()

Send()

Socket()

Bind()

Listen()

Accept()

Shutdown/Close()

Client

Send()

Receive()

Socket()

Connect()

Close() s.Close();

Client/Server: Schließen der Sockets

newSocket.Shutdown(SocketShutdown.Both);newSocket.Close();} //Ende While(True)

Server

Client

s.Close();//Server ganz beenden

Programm: TCP-Mathe

Page 72: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -C#

7. Client Server Programmierung

Wichtige Namensräumeusing System.Net.Sockets;using System.Net;

SERVER

ReceiveFrom()

SendTo()

Socket()

Bind()

Close()

Client

SendTo()

ReceiveFrom()

Socket()

Bind()

Close()

UDP-Datagram

zurück

Page 73: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Beispiele in C#

Beispiel: Datentypen, Operatoren, SchleifenProgramm: Summenrechnung

Beispiel: Klassen, Objekte, InterfaceProgramm: Polymorphe Geometrische ObjekteProgramm: Geometrische Objekte (Interface)

Beispiel: Dateien und VerzeichnisseProgramm: Kopierprogramm

Beispiel: Collections und Generics (Listen) (Pro: P-Queue) Beispiel: Multithreading (Programm: Arzt-Patient-Zimmer) Beispiel: Oberflächenprogrammierung

Programm: AdressenlisteProgramm: Arzt-Patient-Zimmer-Simulation

Beispiel: Client Server ProgrammierungProgramm: TCP-Mathe

Page 74: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Beispiele in C#

Craute_Beispiele_Konsole.exe

Beispiel <Datentypen, Operatoren, Schleifen>

Weiter mit Klassen zurück

Page 75: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Beispiele in C#

Beispiel <Klassen, Objekte, Interface>

Craute_Beispiele_Klassen.exe

zurück

Page 76: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Beispiele in C#

Beispiel <Klassen, Objekte, Interface>

Weiter mit Dateien+Verzeichnisse

Craute_Beispiele_Schnittstelle.exe

zurück

Page 77: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Beispiele in C#

Craute_Kopierprogramm.exe

Beispiel <Dateien und Verzeichnisse>

Weiter mit Collections, Generics zurück

Page 78: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Beispiele in C#

Beispiel <Collections, Generics (Listen)>

Craute_Bsp_Collections.exe

Weiter mit Multithreading zurück

Page 79: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Beispiele in C#

Beispiel <Multithreading>

Craute_Beispiele_ThreadsQueue.exe

Weiter mit Windowsprogrammierungzurück

Page 80: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Beispiele in C#

Beispiel <Oberflächenprogrammierung>

Craute_Beispiele_GUI_Adressbuch.exe

zurück

Page 81: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Beispiele in C#

Beispiel <Oberflächenprogrammierung>

Craute_Beispiele_GUI_THREADS.exe

Weiter mit Socketprogrammierung zurück

Page 82: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Beispiele in C#

Craute_Beispiel_TCP_Internet_Cli.exe

Beispiel <Client Server Programmierung>

Craute_Beispiel_TCP_Internet_Ser.exe

zurück

Page 83: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Weitere Informationen

Internetquellen:http://www.microsoft.comhttp://www.microsoft.com/downloads/Search.aspx?displaylang=dehttp://msdn2.microsoft.com/de-de/library/ms123401(MSDN.10).aspxhttp://msdn2.microsoft.com/de-de/library/kx37x362(VS.80).aspxhttp://www.asp.net/downloads/essential/http://www.asp.net/downloads/http://www.mono-project.com/Downloadshttp://www.go-mono.com/docs/http://www.go-mono.comhttp://www.galileocomputing.de/openbook/visual_csharp/index.htm

Literaturquellen:s

[Kru03] KRUGLINSKI, DAVID: Inside Visual C++ .NET, Microsoft Press, http://www.microsoft.com/germany/mspress[Ell06] ELLER, FRANK: Visual C# 2005, Addison-Wesley, http://www.addison-wesley.de[Zep04] ZEPPENFELD, KLAUS: Objektorientierte Programmiersprachen, Spektrum, http://www.spektrum-verlag.de

Page 85: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Weitere Informationen

Software, Installation

Andere-Plattform: http://www.mono-project.com/Downloads

Page 86: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Weitere Informationen

Software, InstallationAndere-Plattform: http://www.mono-project.com/Downloads

Page 87: .NET Architektur und C# (C-Sharp) - cs.hs-rm.deweber/sysprog/proj07/dotnet-cs.pdf · Fachhochschule Wiesbaden - University of Applied Sciences - Systemprogrammierung.NET Architektur

Fachhochschule Wiesbaden- University of Applied Sciences -Noch Fragen?

ENDE!

Beenden start