Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student...

26
Grundlagen .NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen .NET Grundlagen .NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg [email protected] Tobias Richling Microsoft Student Partner Student der Wirtschaftsinformatik Universität Münster [email protected]

Transcript of Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student...

Page 1: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

1 / 26

Grundlagen .NETGrundlagen .NET

Hilmar SalomoMicrosoft Student ConsultantStudent der InformatikFH [email protected]

Tobias RichlingMicrosoft Student PartnerStudent der WirtschaftsinformatikUniversität Mü[email protected]

Page 2: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

2 / 26

ZieleZiele

• Praxis !!!

• Verständnis der Vision hinter .NET• Theoretische Kenntnisse in C#• Praktische Kenntnis im Umgang mit C#

Page 3: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

3 / 26

GliederungGliederung

• Warum .NET?• Relevante Sprachfeatures von C#• Praxis• Zusammenfassung

Page 4: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

4 / 26

Warum .NET: SoftwareinselnWarum .NET: Softwareinseln

?

??

?

Warum .NET Sprachfeatures Beispiel Zusammenfassung

Page 5: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

5 / 26

Warum .NET: ProblemeWarum .NET: Probleme

• Schwieriges Deployment– DLL Hell– Versionierung

• Nicht interoperabel da inkompatibel– Typsystem– unterschiedliche Technologien

• Alte Techniken, z.T. nicht Objektorientiert• Sicherheitsmängel

Warum .NET Sprachfeatures Beispiel Zusammenfassung

Page 6: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

6 / 26

Warum .NET: VisionWarum .NET: VisionWarum .NET Sprachfeatures Beispiel Zusammenfassung

Page 7: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

7 / 26

Warum .NET: VorteileWarum .NET: Vorteile

• Einfaches Deployment– Selbstbeschreibende Komponenten

• Interoperabilität und Kompatiblität– Einheitliches Typsystem– Portierbares Framework

• Vollständig Objektorientiert• Strenge Sicherheitsmechanismen

– Sicherheit nach Codeidentität

Warum .NET Sprachfeatures Beispiel Zusammenfassung

Page 8: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

8 / 26

Grundbausteine des .NET Grundbausteine des .NET FrameworkFramework

Common Language Runtime, Common Type SystemCommon Language Runtime, Common Type SystemBase Class Library, XMLBase Class Library, XML

Visu

al S

tud

io.N

ET

Visu

al S

tud

io.N

ET

ADO.NETADO.NET

Windows-Windows-ApplikationApplikation ASP.NETASP.NET

Windows FormsWindows Forms Web FormsWeb Forms

WebServicesWebServices

Common Language SpecificationsCommon Language Specifications

VBVB C++C++ C#C# JScriptJScript J#J#

Intermediate LanguageIntermediate Language

Security, EvidenceSecurity, Evidence

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 9: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

9 / 26

AusführungsmodellAusführungsmodell

SourcecodeSourcecode

IL-CodeIL-Code

UnmanagedUnmanagedComponentComponent

JIT CompilerJIT Compiler

AssemblyAssembly AssemblyAssemblyAssemblyAssembly

CompilerCompiler CompilerCompilerCompilerCompiler

Native CodeNative Code CLRManaged

CodeManaged

CodeManaged

CodeUnmanaged

Code

CLR Services

VB.NETVB.NET VC++.NETVC++.NETVC#.NETVC#.NET

NGENNGEN

Operation System ServicesOperation System Services

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 10: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

10 / 26

public class Personpublic class Person{{ public string firstName; public string firstName; public string lastName;public string lastName;

public bool Save() { public bool Save() { System.Type t = this.GetType(); System.Type t = this.GetType(); foreach(FieldInfo f in t.GetFields()) foreach(FieldInfo f in t.GetFields())

{ ... } { ... } } }}}

System.TypeSystem.Type

FelderFelder

MethodenMethoden

. . .. . .

Metadaten - ReflectionMetadaten - Reflection

Person p = new Person(“Hilmar",“Salomo");

p

Salomo

Person

Hilmar

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 11: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

11 / 26

System System

System.DataSystem.Data System.XmlSystem.Xml

System.WebSystem.Web

GlobalizationGlobalization

DiagnosticsDiagnostics

ConfigurationConfiguration

CollectionsCollections

ResourcesResources

ReflectionReflection

NetNet

IOIO

ThreadingThreading

TextText

ServiceProcessServiceProcess

SecuritySecurity

CommonCommon

OleDbOleDb

SQLTypesSQLTypes

SqlClientSqlClient

XPathXPath

XSLTXSLT

RuntimeRuntimeInteropServicesInteropServices

RemotingRemoting

SerializationSerialization

SerializationSerialization

ConfigurationConfiguration SessionStateSessionState

CachingCaching SecuritySecurity

ServicesServicesDescriptionDescription

DiscoveryDiscovery

ProtocolsProtocols

UIUIHtmlControlsHtmlControls

WebControlsWebControls

System.DrawingSystem.Drawing

ImagingImaging

Drawing2DDrawing2D

TextText

PrintingPrinting

System.Windows.FormsSystem.Windows.Forms

DesignDesign ComponentModelComponentModel

KlassenbibliothekKlassenbibliothek

Page 12: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

12 / 26

Sprachfeatures von C#Sprachfeatures von C#

• Typsystem und Typisierung• Zugriffsrechte• Klassen und Strukturen • Boxing und Unboxing• Enumerations• Felder• Properties und Indexer• Fehlerbehandlung• For Each Schleifen

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 13: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

13 / 26

Typ SystemTyp System

• Basiert auf dem Common Type System• Einheitliches Konzept

– „Alles“ ist ein Objekt

• Referenz- und Valuetypes

Heap Stack

Refe

ren

ce

Interfaces

Classes

Arrays

Valu

eSimple Types

Enums

Structs

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 14: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

14 / 26

ZugriffsrechteZugriffsrechte

• Von C++ übernommen– public– protected– private

• Erweiterungen in C#– sealed– internal– protected internal

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 15: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

15 / 26

Klassen vs. StrukturenKlassen vs. Strukturen

Klasse Struktur

Interface

Events / Delegates

Subclass Subclass

Heap Stack

Methoden

Interface

Warum .NET Sprachfeatures Praxis Zusammenfassung

Methoden

Properties / Indexer

Field

Properties / Indexer

Field

Page 16: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

16 / 26

Boxing und UnboxingBoxing und Unboxing

• Werttypen können „boxed“ oder „unboxed“ werden• Boxing erlaubt Werttypen als Referenzen zu

übergeben• Basiert auf der Tatsache, dass alles ein Objekt ist

Heap Stack

Object Value Double Value

boxing

unboxing

double value;double value;//Boxing//Boxingobject BoxedValue = value;object BoxedValue = value;//Unboxing//Unboxingvalue = (double)BoxedValue;value = (double)BoxedValue;

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 17: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

17 / 26

EnumerationsEnumerations

• Benannte Elemente anstatt Nummern• Stark typisiert• Einfacher zu nutzen: „Color.Red“ als

„3“enum Color { White, // 1

Red = 3, Green, // 4 Blue, // 5 Yellow = 5 // auch 5!!!};

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 18: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

18 / 26

FelderFelder

• Nullbasiert und typegebunden• Deklariert mit Type und Shape, aber

ohne Grenze• Erzeugung mit „new“ und Grenzen

oder Initialisierern– int [ ] SingleDim = new int [20];– int [ , ] TwoDim = new [ ] {{1,2,3}

{4,5,6}};– int [ ] [ ] Jagged = new int [1] [ ];

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 19: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

19 / 26

PropertiesProperties

• Mischung aus Membern (Feldern) und Methoden• Nutzen bei

– „readonly“ / „writeonly“ Feldern– Validierungen bei der Zuweisung / Berechnungen

Klasse

public property Name

private String test;

get

set

String Name

String Name

String test

int wrong

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 20: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

20 / 26

PropertiesProperties

public string name {

get { return name; }

set { name = value; }

}

Klasse

public property Name

private String test;

get

set

String Name

String Name

String test

int wrong

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 21: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

21 / 26

IndexerIndexer

• Konsistenter Weg, um Container zu erstellen• Basieren auf der Property Idee• Index Qualifizierer können von jedem Typ sein

public object this[string index]

{

get { return Dict.Item(index); }

set { Dict.Item(index) = value; }

}

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 22: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

22 / 26

FehlerbehandlungFehlerbehandlung

• Try – Catch – finally Block

Try

Fehler Kein Fehler

Fehlerobjekt

Fehlerbehandlung

Finally

Abschlussarbeiten

try try {{ // gefährlicher Code// gefährlicher Code}}Catch (e as Fehlerobjekt) Catch (e as Fehlerobjekt) {{ // Fehlerbehandlung// Fehlerbehandlung}}FinallyFinally{{ // Abschlussarbeiten// Abschlussarbeiten}}

Catch

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 23: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

23 / 26

Foreach SchleifenForeach Schleifen

• Einfach Iterationsmöglichkeit für Collections– Einsatz für alle Arrays und sonstige Collections

• Können in eigenen Collections verwandt werden

Point[] Points = GetPoints();foreach( Point p in Points ){ MyPen.MoveTo(p.x,p.y);}

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 24: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

24 / 26

ZusammenfassungZusammenfassung

• Verständnis der Grundkonzepte von .NET

• Überblick über die Grundlegenden Sprachfeatures von C#

• Grundkenntnisse der Programmierung mit C#

Warum .NET Sprachfeatures Praxis Zusammenfassung

Page 25: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

25 / 26

FragenFragen

Vielen Dank für die Aufmerksamkeit!

Haben Sie noch Fragen?

Page 26: Grundlagen.NET STC 02. – 03. Juni 2004 1 / 26 Grundlagen.NET Hilmar Salomo Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com.

Grundlagen .NETSTC 02. – 03. Juni 2004

27 / 26

Wie geht es weiter auf der Wie geht es weiter auf der STC…?STC…?

Zeit Track 1 Track 2 Workshop

13:30

Grundlagen .NET

(100)

Hilmar Salomo & Tobias Richling

(Andreas Jahrstorfer, Michael Wensauer,

Marcel Kulicke)

13:45

14:00

14:15

ADO.NET, SQL Server 2000 & Yukon (200)Dirk Primbs

Windows Server 2003

(200)Daniel Wessels

15:30