1 Välkommen till Sommarkollo 2006 2006. Johan Lindfors.NET Framework 2.0.

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

Klasser och objekt.
”Ett sätt att distribuera Business Objects via webben”
Algoritmer och data strukturer -Länkade listor
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Fortsättningskurs i Programmering lektion 6
Metoder i java Det finns två typer av metoder i java
Arv.
Abstract & sealed.
Inkapsling.
Programmering II C#, ID1304.
Polymorfism.
Programmeringsteknik för K och Media
Att programmera i språket Java
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Alice in Action with Java
i olika programmeringsspråk
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Visual Studio 2005 Patrik Löwendahl, SweNUG, Cornerstone Johan Lindfors.
Programmering i C# 3. Klasser.
PROCESSPROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Datasamlingar och generiska enheter
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
4. Arv och dynamisk bindning
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Vektorer (klassen Vector) Sortering
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmering i C# 5. Structer.
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ” Ingen vet vad han klarar innan han har försökt. ” - Publilius Syrus (85 f.Kr.-43 f.Kr.).
Arv.
Programmeringsteknik för Media1 & K1
1. En infrastruktur för programutveckling
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Välkommen till Sommarkollo Windows Presentation Foundation och Expression Blend Robert FolkessonJohan Lindfors
Föreläsning 10 Stränghantering.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Microsoft Visual Studio och.NET Framework, idag och imorgon! Robert Folkesson
Programmering i C# 9. Pekare och osäker kod.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Datastrukturer och algoritmer
Föreläsning 4 Klasser Och Objekt.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
INTRODUKTION TILL PROGRAMMERING
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
7. Delegerare och notifierare
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Programmeringsteknik för K och Media
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Funktionsmall template void myfunc(Type * arr, int n) { // kod; // objekt av typ Type kan deklareras.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
Programmering i.NET Farid Naisan, Universitetsadjunkt Datavetenskap, Teknik och samhälle, Malmö högskola Assembly.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

1 Välkommen till Sommarkollo

Johan Lindfors.NET Framework 2.0

Mål med presentationen Rekommendationer och tips Delegater Resurshantering Nyheter i CLR och språken Generics Anonyma metoder Iteratorer Delade klasser Nyheter i ramverket

Men först lite tips! Externa verktyg IL Disassembler - CTRL+K+Q Reflector - CTRL+K+T En klass att känna till Stopwatch Annat i Visual Studio Starta flera projekt Snippets CodePlex

Metodik för att hantera kod som genomgår evolution Visual Studio 2005 levereras med stöd för refactoring-processen Promote Extract Encapsulate Rename Ytterligare förbättringar... ”Refactoring”

Datatyper Primitiva System.Int32 = int System.Boolean = bool Försök att använda.TryParse(...) Värdetyper Lever på stacken Referenstyper Lever i ”heapen” med pekare i stacken Operatorn == jämför referenser Undantaget är string

Strängar Strängar är ”immutable” När de väl är skapade kan inte innehållet förändras StringBuilder Sammanfogar StringComparer Jämför

Arrayer Rekommendation: Returnera alltid en array med 0 element istället för null! Om du vill skapa ”icke-noll” index int[] lowerBounds = { 2000, 1 }; int[] lengths = { 6, 4 }; Decimal[,] revenue = (Decimal[,]) Array.CreateInstance( typeof(Decimal), lengths, lowerBounds); Person[] people = GetPeople(); for (int i = 0; i < people.Length; i++) {... }

Egenskaper (1/2) ”Vanlig” egenskap Olika åtkomstnivåer möjligt private int myProperty; public int MyProperty { get { return myProperty; } set { myProperty = value; } } private int myProperty; public int MyProperty { get { return myProperty; } protected set { myProperty = value; } }

Egenskaper (2/2) Händelser Indexerare private string[] items = null; public string this[int i] { get { return items[i]; } set { items[i] = value; } } private EventHandler myEvent; public event EventHandler MyEvent { add { myEvent += value; } remove { myEvent-= value; } }

En samlingsklass för olika typer Lagra instanser i strukturen Hämta instanser public class Stack { object[] items; public void Push(object item){…} public object Pop(){…} } Lite om generiska klasser Stack stack = new Stack(); int i; string s = null; stack.Push(i); stack.Push(s);// Inkonsekvens i typer! string s = (string)stack.Pop(); // Prestandaförlust

object int object int object int object int Box int Push Utan Generics object int Unbox int Pop int Push Med Generics int Pop Stack med och utan Generics

Hur kul är det här egentligen? public class IntegerStack { int[] items; public void Push(int item){…} public int Pop(){…} } Utan generiska klasser public class StringStack { string[] items; public void Push(string item){…} public string Pop(){…} }

Mallen Användningen public class Stack //T är generisk typparameter { T[] items; public void Push(T item){...} public T Pop(){...} } Med generiska klasser Stack integerStack = new Stack (); integerStack.Push(1); Stack stringStack = new Stack (); stringStack.Push("Hello, World!");

Flera typer vid definition (”arity”) Använda aliaser Begränsningar public class Point {...} Point point = null; Detaljer… using IntegerPoint = Point ; IntegerPoint point = null; public class Stack where T: IComparable {...} public class Node where T: new() { private T item = new T(); }

Kan bara konvertera typparametrar till ”interface” Ärva från en generisk klass class MyClass { void SomeMethod(T t) { ISomeInterface something = (ISomeInterface)t; SomeClass somethingElse = (SomeClass)t; // Fel! } Mer detaljer… public class BaseClass {...} public class ChildClass: BaseClass {...}

Generiska metoder public class MyClass { public void MyMethod (T t) {... } MyClass instance = new MyClass(); instance.MyMethod(3); instance.MyMethod("Hello, World!"); Mer detaljer…

Enumeratorer Det är vanligt att iterera genom samlingar foreach bygger på ett känt mönster. I C# 1.x implementerar vi själva mönstret. Omständigt och repetetivt om man vill ha hårdtypning. public interface IEnumerable { IEnumerator GetEnumerator(); } public interface IEnumerator { object Current { get; } bool MoveNext(); void Reset(); }

Iteratorer Kompilatormagi för att slippa implementera IEnumerable-mönstret Nya nyckelord yield return – producerar nästa element yield break – indekerar avslutad iteration Implementeras som metod/egenskap IEnumerable IEnumerator IEnumerable IEnumerator

”Nullable Types” Nullable löser del utmaningar java.util.Date är en referenstyp (null) System.DateTime är en värdetyp Nullable kan användas C# har lite ”enklare” syntax Tänk på: Boxing/unboxing kan såra prestandan! int? nInt = null; int i = nInt ?? -1; // int i = nInt.HasValue() ? n.Value : -1;

Delade typer Implementera en typ i flera filer Klasser, strukturer (och gränssnitt i C#) Deklareras med nya nyckelordet partial En hel del fördelar Stora implementationer kan delas upp Användarkod kan separeras Flera utvecklare kan jobba samtidigt Möjliggör “code-beside” vs “code-behind” Kan underlätta underhåll och källkodshantering

Delegater Ett objekt för händelser och ”callback” internal delegate int GetLength(string msg); internal class GetLength : System.MulticastDelegate { // Konstruktor internal GetLength(Object obj, IntPtr method); // Metod med samma signatur som källkoden public virtual int Invoke(string msg); // Asynkront mönster public virtual IAsyncResult BeingInvoke( string msg, AsyncCallback callback, Object obj); public virtual int EndInvoke(IAsyncResult result); }

Anonyma Metoder Viss kod anropas bara av delegater Händelsehanterare och “callback” Anonyma metoder är en lösning Kod för delegater kan skrivas “in-line” Kan användas istället för en delegat Påminner om Lisp och Python Kräver kompatibla parametrar och returvärden

XML WebServices WS-I Basic Profile Stöd för SOAP 1.1 och 1.2 Hanterar generiska typer Egenskaper istället för fält vid proxy Händelsebaserad asynkron hantering WSDL.EXE /serverInterface /shareTypes /fields för 1.1 uppträdande System.Net.NetworkInformation

ADO.NET Förbättringar på DataSet Binärserialisering DataTable DataSet för enbart en tabell Ladda och spara som XML ”Factory”-klasser Generiska dataklasser Batchning

WinForms Nya kontroller “ToolBar” och menyer (“ToolStrip”) Webbläsare Paneler för ”layout” “Splitter Container” “MaskedEdit” Nya verktyg för hantering av data Datakontroller DataGridView (ny Grid Control) DataContainer (nu DataConnector)

ClickOnce Driftsättningsteknik för smarta klienter Paralleller till webbapplikationer Enkelt för användaren att installera Flexibelt för utvecklaren att uppdatera Applikationer är “isolerade” per användare Kan exekveras med minsta lokala rättigheter Installeras och exekveras lokalt Automatisk installation via en länk Kan ske helt utan frågor till användaren

.NET Remoting IPC som kommunikationskanal ipc://portNamn/objektNamn Säker kommunikation över TCP Versionshantering vid serialisering [OptionalField] Attribut som används vid serialisering Stöd för Generics och IPv6

Säkerhetsuppdateringar SecureString Använder DPAPI SecurityContext klass System.Security.AccessControl System.Security.Cryptography DPAPI Kod och bevisbaserad säkerhet Bevis för installerad i GAC

Andra förbättringar i FX 2.0 Egenskaper på trådar Semaforer Komprimering av strömmar Konsoluppdateringar HttpListener Seriella portar FTP klasser Debuggningsattribut

Exceptions

Minneshantering

Asynkron programmering