Post on 05-Apr-2015
Grundlagen .NETSTC 02. – 03. Juni 2004
1 / 26
Grundlagen .NETGrundlagen .NET
Hilmar SalomoMicrosoft Student ConsultantStudent der InformatikFH Augsburgi-hilsal@microsoft.com
Tobias RichlingMicrosoft Student PartnerStudent der WirtschaftsinformatikUniversität Münstertobias.richling@studentprogram.de
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#
Grundlagen .NETSTC 02. – 03. Juni 2004
3 / 26
GliederungGliederung
• Warum .NET?• Relevante Sprachfeatures von C#• Praxis• Zusammenfassung
Grundlagen .NETSTC 02. – 03. Juni 2004
4 / 26
Warum .NET: SoftwareinselnWarum .NET: Softwareinseln
?
??
?
Warum .NET Sprachfeatures Beispiel Zusammenfassung
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
Grundlagen .NETSTC 02. – 03. Juni 2004
6 / 26
Warum .NET: VisionWarum .NET: VisionWarum .NET Sprachfeatures Beispiel Zusammenfassung
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Grundlagen .NETSTC 02. – 03. Juni 2004
25 / 26
FragenFragen
Vielen Dank für die Aufmerksamkeit!
Haben Sie noch Fragen?
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