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



Ähnliche Dokumente
Eine Einführung in C#

Eine Einführung in C#

Eine Einführung in C#

Java-Schulung Grundlagen

Primitive Datentypen

Tutorium Rechnerorganisation

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Besonderheiten von C#

Angewandte Mathematik und Programmierung

Java Einführung Operatoren Kapitel 2 und 3

Modul 122 VBA Scribt.docx

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

Programmierung in C. Grundlagen. Stefan Kallerhoff

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

C# im Vergleich zu Java

Client-Server-Beziehungen

Programmieren in Java

Objektorientierte Programmierung

Objektorientierte Programmierung

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

Einführung in die Programmierung

3. Auflage. O Reillys Taschenbibliothek. C# 5.0 kurz & gut. Joseph Albahari & Ben Albahari O REILLY. Aktualisierung von Lars Schulten

Modellierung und Programmierung 1

Prinzipien Objektorientierter Programmierung

Große Übung Praktische Informatik 1

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

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Javakurs zu Informatik I. Henning Heitkötter

5. Tutorium zu Programmieren

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Java Kurs für Anfänger Einheit 5 Methoden

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Einführung in die Programmierung für Wirtschaftsinformatik

Distributed Computing Group

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

1. Übung zu "Numerik partieller Differentialgleichungen"

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

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

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Objektorientierung. Marc Satkowski 20. November C# Kurs

3. Java - Sprachkonstrukte I

Grundlagen von Python

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

Sprachvergleich C# / Java / C++

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

Android will doch nur spielen. Java Eine kurze Einführung

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Einführung in die C-Programmierung

Hochschule Darmstadt Fachbereich Informatik

3 Objektorientierte Konzepte in Java

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Ich liebe Java && Ich liebe C# Rolf Borst

Grundlagen der Modellierung und Programmierung, Übung

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Vorkurs C++ Programmierung

Vererbung & Schnittstellen in C#

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 1 - Variablen und Kontrollstrukturen

Implementieren von Klassen

Grundlagen von C# - 1

Neue Features in C# 2.0

Klausur in Programmieren

Programmieren in Java

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

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

Kapitel 6. Vererbung

SEP 114. Design by Contract

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Zusammenfassung des Handzettels für Programmieren in C

Innere Klassen in Java

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Einstieg in die Informatik mit Java

3. Java - Sprachkonstrukte I

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

Nathan Burgener. Design by Contract. Modul SWE

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Wichtige Prinzipien von C#

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Einführung in die Programmierung

Einführung in die Programmierung

Java - Programmierung - Prozedurale Programmierung 1

Einführung in die C++ Programmierung für Ingenieure

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Programmierkurs Java

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Einstieg in die Informatik mit Java

Java für Computerlinguisten

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Computeranwendung und Programmierung (CuP)

Algorithmen und Datenstrukturen

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einführung in Javadoc

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba

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

Einführung in ActionScript

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

Transkript:

Einführung in C# Maximilian Irlbeck Lehrstuhl für Software & Systems Engineering 22. Oktober 2010

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

Historie I: C# ist 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, PDC 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 22.10.2010 Maximilian Irlbeck: Einführung in C# 3

Historie II: 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 22.10.2010 Maximilian Irlbeck: Einführung in C# 4

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 22.10.2010 Maximilian Irlbeck: Einführung in C# 5

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 22.10.2010 Maximilian Irlbeck: Einführung in C# 6

Inhalt 1. Grundlagen 2. Sprachdesign Paradigmen in C# Typisierung Ordnungsstrukturen 3. Sprachfeatures/-syntax 22.10.2010 Maximilian Irlbeck: Einführung in C# 7

Paradigmen in C# C# unterstützt folgende Programmierparadigmen: Strukturierte Programmierung Imperative Programmierung Funktionale Programmierung Komponentenorientierte Programmierung Objektorientierte Programmierung Ereignisbasierte Programmierung Generische Programmierung Aspektorientierte Programmierung 22.10.2010 Maximilian Irlbeck: Einführung in C# 8

Typisierung C# ist eine streng typisierte, objektorientierte Sprache Zwei Arten von Typen: Referenztypen (class, interface) 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 22.10.2010 Maximilian Irlbeck: Einführung in C# 9

Typisierung II: Basistypen Datentyp Beschreibung Größe bool Boolesche Ausdrücke: true, false sbyte/byte, short/ushort, int/uint, long/ulong Vorzeichenbehaftete/vorzeichenlose Ganzzahlen 8 bit 16 bit 32 bit 64 bit float, double Fließkommazahlen 32 bit, 64 bit decimal hochpräziser, dezimaler Datentyp 128 bit char Einzelnes Unicode Zeichen 16 bit string Zeichenketten: Hello World Variabel enum object Aufzählungstyp enum EnumName Option1, Option2,,OptionN Wurzel aller anderen Typen Variabel 22.10.2010 Maximilian Irlbeck: Einführung in C# 10

Ordnungsstrukturen I: Basisstrukturen Basisstrukturen: enum, delegate, interface, struct, class enum Aufzählungstyp, Beispiele: Tastaturkeys, Wochentage, delegate Definiert eine bestimmte Methodensignatur interface Definiert eine Menge von Signaturen class, struct class Container für Methoden, Felder, Properties, Events, Delegates, Klassen, Structs unterstützt im Gegensatz zu struct auch Vererbung 22.10.2010 Maximilian Irlbeck: Einführung in C# 11

Ordnungsstrukturen II: Namespaces Alle Basisstrukturen werden mit sogenannten Namespaces geordnet. Namespace Beispiel: bildet eine hierarchische Ordnungsstruktur, auf die mit dem Scope Operator (. ) zugegriffen werden kann. System.DateTime System.Xml.XmlDocument System.Xml.Serialization.XmlSerializer = Namespace 22.10.2010 Maximilian Irlbeck: Einführung in C# 12

Inhalt 1. Grundlagen 2. Sprachdesign 3. Sprachfeatures/-syntax Klassen, Objekte, Interfaces, Methoden, Scopes Sichtbarkeit, Schleifen, Generics Exceptions, Operatoren, Arrays Vergleich mit anderen Sprachen 22.10.2010 Maximilian Irlbeck: Einführung in C# 13

Hello World! using System; Namespace benutzen Namespace namespace HelloWorld class HelloWorldClass [STAThread] static void Main(string[] args) Methode Klasse // Show yourself to the world outside Console.WriteLine("Hello World!"); Statischer Methodenaufruf String Array Kommentar 22.10.2010 Maximilian Irlbeck: Einführung in C# 14

Klassen public class Foo : ICloneable, FooBase private int myint = 0; public int MyInt get return myint; set myint = value; Vererbungsliste Feld Property internal Foo() Konstruktor protected void DoSomething(int times) Methode 22.10.2010 Maximilian Irlbeck: Einführung in C# 15

Objekte Foo f = new Foo(); f.myint = 1; Konstruktoraufruf Propertyzuweisung Foo g = new Foo(); g.dosomething(3); Konstruktoraufruf Methodenaufruf f.myint = g.myint; Propertyzuweisung f.myint = 0; Feldzuweisung 22.10.2010 Maximilian Irlbeck: Einführung in C# 16

Interfaces public interface ISomeInterface int MyProperty get; set; string SomeMethod(); public class Implementer : ISomeInterface public int MyProperty get set public string SomeMethod() 22.10.2010 Maximilian Irlbeck: Einführung in C# 17

Methoden Allgemeine Struktur: <Sichtbarkeit> <Rückgabetyp> <Name>(<Parameterliste>) // Implementierung Beispiel: public int Max(int first, int second) if (first >= second) else return first; return second; 22.10.2010 Maximilian Irlbeck: Einführung in C# 18

Scopes public class Foo private int myint = 0; public void DoSomething() int localvar = 1; if(myint == 0) string s = Hello World ; myint localvar s 22.10.2010 Maximilian Irlbeck: Einführung in C# 19

Sichtbarkeitsstufen Stufe public internal protected internal protected private Sichtbarkeit Überall innerhalb der gleichen Assembly innerhalb der erbenden Klasse innerhalb der erbenden Klassen in der gleichen Assembly nur innerhalb der Klasse 22.10.2010 Maximilian Irlbeck: Einführung in C# 20

Verzweigungen if (<Bedingung1>) // some Code here else if (<Bedingung2>) // other code here else // the rest here switch (<Variable>) case Case1: /*Code here*/ break;... case CaseN-1: /*Code here*/ break; case CaseN: /*Code here*/ break; default: /*Code here*/ break; 22.10.2010 Maximilian Irlbeck: Einführung in C# 21

Schleifen while (<Bedingung1>) // looped Code here for (<Init>;<Condition>;<Step>) // looped code here do // looped code here while (<Bedingung2>); foreach (ElementTyp name in Auflistung) // looped code here Zusätzliche Schlüsselwörter: - break gesamte Schleife verlassen - continue Schleifenlauf abbrechen 22.10.2010 Maximilian Irlbeck: Einführung in C# 22

Operatoren Vergleichsoperatoren: == prüft auf Gleichheit; nicht verwechseln mit Zuweisung (z.b. a = 3)!= prüft auf Ungleichheit <, >, <=, prüft auf Erfüllung der entsprechenden Relationen >= Logische Verknüpfungen! NOT (Negation, unär) && bedingtes AND bedingtes OR Typprüfungen und Casts is, typeof Typkompatibilität, Typexploration as Umwandlung (geprüft) (<Typ>) Umwandlung (ungeprüft, Ausnahme bei Fehler) 22.10.2010 Maximilian Irlbeck: Einführung in C# 23

Operatoren II Arithmetische Operatoren: +, -, *, / Grundrechenarten ++, -- Inkrement, Dekrement % Modulo Zugriffs-/Zuweisungsoperatoren [<Wert>] Zugriff auf indexierte Datenstruktur = Zuweisung +=, -=, *=, kombinierte Zuweisung Bitoperationen <<, >> Bitshifting &,,!, ^ Logisches AND, OR, NOT, XOR Sehr viele Operatoren können in C# überladen werden. 22.10.2010 Maximilian Irlbeck: Einführung in C# 24

Exceptions & Exceptionhandling try throw new Exception("Error text"); catch (NullReferenceException) // Catch only NullReference Exceptions catch (Exception ex) // Catch all exceptions 22.10.2010 Maximilian Irlbeck: Einführung in C# 25

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

Arrays string[] mystrings = new string[10]; null null null null null null null null null null 0 1 2 3 4 5 6 7 8 9 mystrings[2] = "Hi"; null null "Hi" null null null null null null null 0 1 2 3 4 5 6 7 8 9 mystrings[7] = mystrings[2]; null null "Hi" null null null null "Hi" null null 0 1 2 3 4 5 6 7 8 9 22.10.2010 Maximilian Irlbeck: Einführung in C# 27

Unterschiede zu C/C++ Pointer nur in spezieller unsafe Umgebung in C# Garbage Collection, kein Speichermanagement nötig in C# Keine mehrfache Klassenvererbung in C# throw nur für Exceptions möglich in C# Events in C#, kein einheitliches Äquivalent in C++ Präprozessorbefehle in C++ sehr viel mächtiger 22.10.2010 Maximilian Irlbeck: Einführung in C# 28

Unterschiede zu Java Hardwarenahe Programmierung in C# möglich, in Java nicht (Pointer und Pointerarithmetik) Properties in C#, in Java mit Methoden à la GetX() und SetX() gelöst Kein throws in C# wie in Java Operator Überladung in C# möglich, in Java nicht Java: new String( Hello ) == new String( Hello ) -> false C#: new String( Hello ) == new String( Hello )->true Optionale/Default Methoden Parameter in C# Generics in C# mit Constraints einschränkbar 22.10.2010 Maximilian Irlbeck: Einführung in C# 29

Get Started! https://prod.maniac.tum.de/maniacgui Vielen Dank.