Eine Einführung in C#

Ähnliche Dokumente
Eine Einführung in C#

Eine Einführung in C#

Technische Universität München. Einführung in C# Maximilian Irlbeck. Lehrstuhl für Software & Systems Engineering 22. Oktober 2010

Einführung in C#.NET. 1 Übersicht. 2 Typen (Types) Dieser Artikel stammt aus dem Magazin von C++.de (

Typsystem Plattform- und Sprachenunabhängigkeit in.net

Einheitliches Typsystem

Objektorientierung. Marc Satkowski 20. November C# Kurs

Grundlagen von C# - 1

Angewandte Mathematik und Programmierung

Implementieren von Klassen

Kapitel 3 Das Typsystem von C#

Einführung in die Programmiersprache C#

Teil 5 - Java. Programmstruktur Operatoren Schlüsselwörter Datentypen

Kapitel 3 Das Typsystem von C#

Repetitorium Programmieren I + II

~±] Inhalt. 1.1 Ähnlichkeiten zwischen C# und Java Unterschiede zwischen C# und Java Das.NET-Framework 4 1.

3. Java - Sprachkonstrukte I

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

3. Java - Sprachkonstrukte I

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Programmieren in Java

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

3. Java - Sprachkonstrukte I

Grundlagen der Modellierung und Programmierung, Übung

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein

Primitive Datentypen

Grundelemente objektorientierter Sprachen (1)

RO-Tutorien 15 und 16

Einführung in C# Teil 1. Matthias Nübling

RO-Tutorien 3 / 6 / 12

Einführung in die Programmierung

Grundelemente objektorientierter Sprachen (1)

Methoden und Wrapperklassen

Vorkurs Informatik WiSe 16/17

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

C# Programmierung. Eine Einführung in das.net Framework. C# Programmierung - Tag 2: Einstieg in die OOP

Vorkurs Informatik WiSe 17/18

Stack stack = new Stack(); stack.push ("Würstchen"); string s = (string) stack.pop(); Console.WriteLine (s);

RO-Tutorien 17 und 18

Visual C#.NET. Bearbeitet von Patrick A. Lorenz

Wiederholung aus SWE2

Kapitel 2: Grundelemente der Programmierung

Einführung in C# Teil 3. Matthias Nübling

PROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Programmieren in Java

Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java

Algorithmen und Datenstrukturen

Grundelemente objektorientierter Sprachen (1)

Grundlagen der OO- Programmierung in C#

Wichtige Prinzipien von C#

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Prof. W. Henrich Seite 1

12 Abstrakte Klassen, finale Klassen und Interfaces

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Klausur Grundlagen der Programmierung

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

C#Objektorientierte. Aleksandra Maj. Programmiersprachen. Programmiersprachen am Beispiel C# Referat im Rahmen des Seminars. 15.

Fragenkatalog ESOP WS 16/17

Programmiervorkurs Einführung in Java Tag 1

Repetitorium Informatik (Java)

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Vererbung und Polymorphie

Sprachvergleich C# / Java / C++

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Kurzskript zur Veranstaltung Programmieren Prof. Dipl.-Ing. Jirka R. Dell'Oro-Friedl 2012

Statische und Nichtstatische Methoden Properties/ Eigenschaften

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Einfache Datentypen in JAVA

Java-Schulung Grundlagen

Wo sind wir? Übersicht lexikale Struktur von Java

Grundlagen der Informatik 0

Informatik II Prüfungsvorbereitungskurs

AuD-Tafelübung T-B5b

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Programmieren und Problemlösen Java-Sprachkonstrukte. Java-Sprachkonstrukte. Übung Altersberechner. Namen und Bezeichner. Namen und Bezeichner

Objektorientierung (OO)

Anweisungen zur Ablaufsteuerung

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

im Rahmen des Seminars - Programmiersprachen Markus Nestvogel

8. Ausdrücke, Operatoren (einfache Typen)

Syntax. int a; public A() {...} public void F() {...} }

Algorithmen und Datenstrukturen 07

Transkript:

Eine Einführung in C# Maximilian Irlbeck Lehrstuhl für Software & Systems Engineering 27. Oktober 2011

Inhalt 1. Grundlagen Historie Allgemeine Infos zu C# 2. Sprachdesign 3. Sprachfeatures/-syntax Maximilian Irlbeck: Einführung in C# 2

Historie: C# war Cool. 1990 s Erste Klassen für Next Generation Windows Services werden in SMC verfasst (Simple Managed C, smack ) Hejlsberg 99 Start der Entwicklung an Cool für.net (C-like Object Oriented Language) Juli 2000 Professional Developers Conference Erste Öffentliche Präsentation des.net Frameworks, Umbenennung von Cool in C# (sprich: C Sharp) Anders Hejlsberg Technical Fellow und Chief Architect, C# Vater von TurboPascal, Delphi Maximilian Irlbeck: Einführung in C# 3

Historie: C# 1.0 4.0 C# 1.0 (01/2002) wird zusammen mit.net 1.0 released C# 1.2 (04/2003) C# 2.0 (11/2005) Generics, Partielle Klassen, Statische Klassen, Anonyme Delegaten, Nullable Types C# 3.0 (11/2007) LinQ, Anonyme Typen, Lambda Ausdrücke, Extension methods, Object/Collection Initializer C# 4.0 (04/2010) Dynamic member lookup, Co-/Contravariance, Named/Optional parameters Maximilian Irlbeck: Einführung in C# 4

Allgemeine Infos zu C# Der Ursprung des Namens C : Symbol für den in der Musik durch ein Kreuz ( ) um einen Halbton erhöhten Ton C, das Cis. Englisch: C sharp. C# Dialekte/Derivate: Spec# Sing# Cω extensible C# (XC#) Multiprocessor C# (MC#) Metaphor Polyphonic C# Vala Maximilian Irlbeck: Einführung in C# 5

Allgemeine Infos zu C# C# ist standardisiert unter ISO/IEC 23270, ECMA 334 C# wurde beeinflusst von Java C/C++ Pascal/Delphi Haskell Modula-3 Visual Basic C# kann in folgenden IDEs benutzt werden: Microsoft Visual Studio 2003, 2005, 2008, 2010 SharpDevelop MonoDevelop XNA Game Studio C#-Builder Baltie Maximilian Irlbeck: Einführung in C# 6

Inhalt 1. Grundlagen 2. Sprachdesign und Typisierung Paradigmen in C# Typisierung: Wert- und Verweistypen Ordnungsstrukturen: Namespaces, Dateien, Assemblies 3. Sprachfeatures/-syntax Maximilian Irlbeck: Einführung in C# 7

Kleine Umfrage: Wer von euch hat überhaupt schon einmal programmiert? hat schon einmal in C# programmiert? hat schon kleine Projekte in C# implementiert? hat schon berufliche Erfahrung mit.net/c# gemacht? hat sich nur in der Tür geirrt? Maximilian Irlbeck: Einführung in C# 8

Paradigmen in C# C# ist Maximilian Irlbeck: Einführung in C# 9

Typen in C# C# ist eine streng typisierte, objektorientierte Sprache Zwei Arten von Typen: Referenz-/Verweistypen (class, interface, delegate, Arrays, ) Werttypen (struct, enum, Basistypen, ) Jeder Typ erbt automatisch von object, d.h. alle Typen bieten die Methoden von object an (wie ToString()) Für Referenztypen existiert ein Sondertyp: null die leere Referenz Maximilian Irlbeck: Einführung in C# 10

Unterschied: Verweis- und Werttypen Werttypen Ein Wert-Typ wird auf dem Stack gespeichert. Eine Instanziierung ist für eine Instanz eines Wert-Typs nicht notwendig. Eine Zuweisung erzeugt eine Kopie des Wertes, bei Vergleichen wird auf Wertidentität geprüft. Verweistypen Ein Verweistyp wird auf dem Heap gespeichert, auf dem Stack gibt es einen Verweis auf die Speicheradresse im Heap. Eine Instanziierung ist erforderlich, um eine Instanz nutzen zu können. Eine Zuweisung erzeugt nur eine Kopie des Zeigers, bei Vergleichen wird auf die Identität der Zeiger geprüft. Maximilian Irlbeck: Einführung in C# 11

Boxing/Unboxing Werttypen können mittels Cast in Referenztypen gepackt werden. object o = (object)3; object o 3 Boxing int i = (int)o; i = 3 Unboxing Maximilian Irlbeck: Einführung in C# 12

Typisierung: Werttypen Maximilian Irlbeck: Einführung in C# 13

Werttypen: Basistypen Datentyp Wertebereich Größe in Bits.NET Laufzeittyp bool true oder false 1 System.Boolean byte 0 255 8 System.Byte sbyte -128 127 8 System.SByte char 0 65535 16 System.Char short -2 15-2 15-1 16 System.Int16 ushort 0 65535 16 System.UInt16 int -2 31 2 31-1 32 System.Int32 uint -32.768 bis 32.767 32 System.UInt32 float 1,4 x 10-45 3,4 x 10 38 32 System.Single ulong 0 2 64-1 64 System.UInt64 long -2 63 2 63-1 64 System.Int64 double 5,0 x 10-324 1,7 x 10 308 64 System.Double decimal ±1,0 x 10-28 ±7,9 x 10 28 128 System.Decimal Maximilian Irlbeck: Einführung in C# 14

Basistypen - Beispiele 1 2 3 4 5 6 7 8 9 10 11 12 13 14 uint u = 6; int i = -10; byte b = 0x01; float f = 4.0F; double d = 0.5D; double d2 = 0.5F; char c1 = 'Z'; char c2 = '\x0058'; char c3 = (char)88; char c4 = '\u0058'; char c5 = '\t'; decimal d = 440.5m; // Hexadecimal // Character literal // Hexadecimal // Cast from integral type // Unicode // Special character Maximilian Irlbeck: Einführung in C# 15

Werttypen: Enumerationen 1 2 3 4 5 6 7 8 9 10 11 12 13 enum DaysOfWeek Monday = 1, Tuesday, // = 2 Wednesday, // = 3 Thursday, // = 4 Friday, // = 5 Saturday, // = 6 Sunday // = 7 ; DaysOfWeek today = DaysOfWeek.Thursday; int today = (int)today; // today = 4 Maximilian Irlbeck: Einführung in C# 16

Werttypen: Strukturen 1 2 3 4 5 6 public struct Circle public double radius; public double centerx; public double centery; Strukturen können auch Konstruktoren, Konstanten, Felder, Methoden, Eigenschaften, Indexer, Operatoren, Ereignisse und geschachtelte Typen enthalten. Wenn allerdings mehrere dieser Member benötigt werden, sollte statt einer Struktur eine Klasse verwendet werden. Strukturen können eine Schnittstelle implementieren, aber sie können nicht von einer anderen Struktur erben. Aus diesem Grund können Strukturmember nicht als protected deklariert werden. Maximilian Irlbeck: Einführung in C# 17

Typisierung: Verweistypen Maximilian Irlbeck: Einführung in C# 18

Typisierung: Arrays int[] myints = new int[10]; int[] myints = new int[10]0,0,0,0,0,0,0,0,0,0; 32 Bit Wert 0 0 0 0 0 0 0 0 0 0 Index 0 1 2 3 4 5 6 7 8 9 myints[2] = 255; Wert 0 0 255 0 0 0 0 0 0 0 Index 0 1 2 3 4 5 6 7 8 9 myints[7] = myints[2] - 1; Wert 0 0 255 0 0 0 0 254 0 0 Index 0 1 2 3 4 5 6 7 8 9 Maximilian Irlbeck: Einführung in C# 19

Typisierung: Strings Strings sind Besondere Referenztypen Zeichenketten aus Unicode Zeichen, die unveränderlich sind string s = "This is a string." s T h i s i s a s t r i n g. s += ".." s T h i s i s a s t r i n g. T h i s i s a s t r i n g... Gleichheit (== und!=) wird bei Strings nicht über Referenzgleichheit sondern durch Wertgleichheit überprüft (im Unterschied zu Java) Maximilian Irlbeck: Einführung in C# 20

Typisierung: Klassen 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public class Foo : ICloneable, FooBase private int myint = 0; public int MyInt get return myint; set myint = value; internal Foo() protected void AddToMyInt(int num) myint += num; Vererbungsliste Feld Property Konstruktor Methode Maximilian Irlbeck: Einführung in C# 21

Objekte konstruieren und benutzen 1 2 3 4 5 6 7 8 9 10 11 Foo f = new Foo(); f.myint = 1; Foo g = new Foo(); g.addtomyint(3); f.myint = g.myint; g.myint = 0; System.Console.WriteLine(f.MyInt); Konstruktoraufruf Propertyzuweisung Konstruktoraufruf Methodenaufruf Propertyzuweisung Feldzuweisung Ausgabe Frage: Welcher Wert wird ausgegeben? Maximilian Irlbeck: Einführung in C# 22

Ordnungsstrukturen: Namespaces Alle Basisstrukturen werden mit sogenannten Namespaces geordnet. Namespace Beispiele: bildet eine hierarchische Ordnungsstruktur, auf die mit dem Scope Operator (. ) zugegriffen werden kann. Namespace Assembly! System.DateTime System.Xml.XmlDocument System.Xml.Serialization.XmlSerializer = Namespace Importieren von Namespaces durch das Schlüsselwort using. Maximilian Irlbeck: Einführung in C# 23

Ordnungsstrukturen: Dateien Code wird in *.cs Dateien erfasst. Konventionen Eine Datei pro Klasse/Struktur Klassenname = Dateiname Ordnerstruktur = Namespacestruktur Sonderfall: Klassen können mittels des Schlüsselworts partial auf mehrere Dateien verteilt werden. Maximilian Irlbeck: Einführung in C# 24

Inhalt 1. Grundlagen 2. Sprachdesign 3. Sprachfeatures/-syntax Hello World! Interfaces, Methoden, Delegates, Scopes Sichtbarkeit, Schleifen, Generics Exceptions, Operatoren Maximilian Irlbeck: Einführung in C# 25

Hello World in C# Namespace importieren 1 2 3 4 5 6 7 8 9 10 11 12 13 14 using System; namespace HelloWorld class HelloWorldClass Attribut [STAThread] static void Main(string[] args) Namespace definieren Klassenname Methodenname // Show yourself to the world outside Console.WriteLine("Hello World"); Statischer Methodenaufruf. Hier: Konsolenausgabe Parametertyp und -name Kommentar Maximilian Irlbeck: Einführung in C# 26

Sichtbarkeitsstufen in C# Stufe Sichtbarkeit public Global sichtbar internal innerhalb der gleichen Assembly protected innerhalb der erbenden Klasse internal protected innerhalb der erbenden Klassen in der gleichen Assembly private nur innerhalb der Klasse Mehr unter http://de.wikipedia.org/wiki/sprachelemente_von_c-sharp Maximilian Irlbeck: Einführung in C# 27

Bedingte Ausführung/Verzweigungen if (<boolescher Ausdruck>) // something here else if (<boolescher Ausdruck>) // other things here else // everything else here switch (<Variable>) case Case1: /* Code here */ break;... case CaseN-1: /* Jump to CaseN */ case CaseN: /* Code here */ break; default: /* Code here */ break; Maximilian Irlbeck: Einführung in C# 28

Schleifen while (< boolescher Ausdruck >) // looped Code here for (<Init>;<Condition>;<Step>) // looped code here do // looped code here while (<boolescher Ausdruck>); foreach (ElementTyp name in Auflistung) // looped code here break continue gesamte Schleife verlassen Einzelnen Schleifenlauf überspringen Maximilian Irlbeck: Einführung in C# 29

Operatoren in C# Vergleichsoperatoren == prüft auf Gleichheit;!= prüft auf Ungleichheit <, >, <=, prüft auf Erfüllung der entsprechenden Relationen >= Logische Verknüpfungen! NOT (unäre Negation) && bedingtes AND bedingtes OR Typprüfungen und Casts is, typeof Typkompatibilität, Typexploration as Cast (geprüft) (<Typ>) Cast (ungeprüft, Ausnahme bei Fehler) Maximilian Irlbeck: Einführung in C# 30

Operatoren in C# II Arithmetische Operatoren +, -, *, / Grundrechenarten ++, -- (Prä- oder Post-) Inkrement, Dekrement % Modulo Zugriffs-/Zuweisungsoperatoren [<Index>] Zugriff auf indexierte Datenstruktur = Zuweisung +=, -=, *=, kombinierte Zuweisung Bitoperatoren <<, >> Bitshifting &,,!, ^ Logisches AND, OR, NOT, XOR Mehr unter http://de.wikipedia.org/wiki/sprachelemente_von_c-sharp Maximilian Irlbeck: Einführung in C# 31

Methoden <Sichtbarkeit> <Rückgabetyp> <Name>(<Parameterliste>) // Implementierung z.b.: 1 public string SayHelloWorld() 2 3 return "Hello World"; 4 1 2 3 4 internal static void CalculateSomething(int x, int y) x + y * (x - y); // Does not make sense with void Maximilian Irlbeck: Einführung in C# 32

Methoden Beispiel: Maximum aus zwei Zahlen 1 2 3 4 5 6 7 8 9 10 11 public int Max(int first, int second) if (first >= second) return first; else return second; 1 2 3 4 public int MaxFunctional(int first, int second) return first >= second? first : second; Maximilian Irlbeck: Einführung in C# 33

Delegates Können für Referenzen auf Methoden benutzt werden Besitzen eine festgelegte Signatur Werden u.a. für Ereignisse in C# benutzt Mehr am 26.01. durch Amin Ahantab. 1 2 3 4 5 6 7 8 9 10 11 12 delegate string MyStringDelegate(string input); public string LowerFunction(string inputstr) return inputstr.tolower(); public void OtherFunction(string somestring) MyStringDelegate del = LowerFunction; del(somestring); // Calls LowerFunction(someString) Maximilian Irlbeck: Einführung in C# 34

Interfaces in C# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public interface INumberable int Number get; set; string NumberToString(); public class NumerableImplementation : INumberable private int number = 0; public int Number get return number ; set number = value; public string NumberToString() return number.tostring(); Maximilian Irlbeck: Einführung in C# 35

Konventionen für Bezeichner in C# CamelCase (z.b. backcolor) Felder Parameter Lokale Variablen Pascal Case (z.b. BackColor) Klassen Interfaces Ereignisse Strukturen Properties Enumerationen Enumerationswerte Uppercase (z.b. BACKCOLOR) Für Bezeichner <= 2 Buchstaben, meist in Namespaces: System.IO Maximilian Irlbeck: Einführung in C# 36

Scopes Gültigkeitsbereiche 1 2 3 4 5 6 7 8 9 10 11 12 public class Foo private int myint = 0; public void DoSomething() int localvar = 1; if(myint == 0) string s = Hello World ; myint localvar s Maximilian Irlbeck: Einführung in C# 37

Generics Generische Klassen: class GenericClass<T> where T : IComparable T member; Generische Methoden: U GenericMethod<T,U>(T input) where T : new() T tval = new T(); Maximilian Irlbeck: Einführung in C# 38

Exceptions und Exceptionhandling Exceptions sind Klassen erben direkt oder indirekt von Exception Können mittels throw geworfen werden Werden in catch Blöcken gefangen Mehr am 17.11. durch Thomas Ladek. Maximilian Irlbeck: Einführung in C# 39

Tipps für den Einstieg in C# Am Besten lernt man eine Sprache, indem man sie benutzt Kostenlose Onlinematerialien: http://openbook.galileocomputing.de/visual_csharp/ http://www.guidetocsharp.de/ http://msdn.microsoft.com/en-us/library/67ef8sbd(v=vs.100).aspx http://de.wikipedia.org/wiki/sprachelemente_von_c-sharp http://www.mycsharp.de/wbb2/thread.php?threadid=78856 Viel Spaß. https://prod.maniac.tum.de/maniacgui Maximilian Irlbeck: Einführung in C# 40