Programmering i C# 10. Klassbiblioteket.

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

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.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Klasser och objekt.
”Ett sätt att distribuera Business Objects via webben”
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar -Signaler -Signalhantering.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Filhantering Grundprincipen för filhantering Öppna filen
Arv.
Abstract & sealed.
Nätverkskommunikation
Polymorfism.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Att programmera i språket Java
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
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.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Programmering i C# 2. Inledande detaljer.
Föreläsning 11 Arrayer.
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++
Programmering i C# 3. Klasser.
PROCESSPROGRAMMERING
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 7 ( ) Innehåll: -Datakanaler och datakanalpar -Kommunikation på samma dator med datakanaler.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( )‏ Innehåll:Trådsäkerhet - Intrinsic locks och synkronisering - Synchronized statements.
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
Vektorer (klassen Vector) Sortering
Programmering i C# 5. Structer.
Arv.
TÄNK PÅ ETT HELTAL MELLAN 1-50
Programmeringsteknik för Media1 & K1
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
1. En infrastruktur för programutveckling
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
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.
1 Windows programmering Programmering med Threads Borland C++ Builder 4 Modsoft Ab Kent Westerholm.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
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
1 Logging and monitoring of TCP traffic in SSH tunnels Masters thesis Anton Persson.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
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.
1 Sockets Traditionellt har UNIX varit svag på IPC, InterProcess Communication. I augusti 1983 kom en ny IPC-mekanism i 4.2BSD som var enkel om konsistent.
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.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Programmering i C# Laborationer.
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.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Presentationens avskrift:

Programmering i C# 10. Klassbiblioteket

Klassbiblioteket 294 datatyper Klasser, structer, interface Namnrymden System och 11 undernamnrymder Även indelat i profiler, som består av underbibliotek Minsta profil är Kernel, bestående av BCL och Runtime Infrastructure Programmering i C# - Kapitel 10

10.1 System 100 datatyper – de mest använda av alla slag Basklassen Object ValueType och 21 härledda structer Exception och 37 härledda exceptionklasser 6 viktiga interface Programmering i C# - Kapitel 10

10.2 System.Collections Endast två centrala samlingsklasser ArrayList är en dynamisk vektor Jämför Array som ges storlek då den skapas Namnet antyder logik både som vektor och som länkad lista: en endimensionell samling Amorterat konstant tidskomplexitet Elementtypen är Object Programmering i C# - Kapitel 10

Hashtable En hashtabell är en vektor av länkade listor, där elementen utgörs av objektpar Ena objektet – Key – avgör vilken lista objektet placeras i Dess GetHashCode anropas, returvärdet bestämmer index i vektorn Andra objektet – Value – utgör data Key kan vara en medlem i Value Programmering i C# - Kapitel 10

Hashtable forts. Hashtable tbl = new Hashtable(); MyClass obj = new MyClass(…); obj.ID = ”Anders”; tbl.Add(obj.ID, obj); // även: tbl[obj.ID] = obj; Key får inte ändras när objektet ligger i hashtabellen Sökning sker med indexoperatorn object found = tbl[”Anders”]; if (found != null && found is MyClass) … Programmering i C# - Kapitel 10

System.Collections.Specialized ArrayList och Hashtable har elementtypen Object, vilket kräver åtskilliga typomvandlingar Specialiserade klassen NameValueCollection är dictionary av sträng/sträng-par Typparameterisering (som i C++) saknas Programmering i C# - Kapitel 10

10.3 System.IO Klasser för filhantering Varianter för läs/skriv mot minne och sträng File och Directory med enbart statiska metoder för traversering m.m. Ej för läsning/skrivning FileStream för läsning/skrivning av byte StreamReader/StreamWriter för text Programmering i C# - Kapitel 10

FileStream Enumtyper för parametrar som styr mode, access och delning FileStream fs = new FileStream( ”readme.txt”, FileMode.Create, FileAccess.ReadWrite, FileShare.None); Enumtyper för parametrar som styr mode, access och delning FileStream fs = new FileStream(”readme.txt”, FileMode.Open); byte[] vec = new byte[fs.Length]; fs.Read(vec, 0, (int)fs.Length); fs.Close(); Programmering i C# - Kapitel 10

StreamReader/StreamWriter Paketerar Stream-objekt och tillför texthantering med konvertering Läsning/skrivning av string och char Konvertering default UTF8-fil mot Unicode Kan styras med System.Text.Encoding-objekt som parameter till Stream-konstruktorn Encoding beskrivs senare Programmering i C# - Kapitel 10

10.4 System.Net System.Net och System.Net.Sockets innehåller klasser för HTTP, samt TCP/UDP HttpWebRequest paketerar en HTTP-fråga, dess metod GetResponse returnerar en HttpWebResponse WebClient gör detsamma helt utan detaljer i metoden OpenRead Returnerar Stream mot ex. HTML-sida Programmering i C# - Kapitel 10

Sockets IPEndPoint är en IP-adress och ett portnummer DNS-tjänst i statiska metoden Dns.Resolve IPAddress ipAddress = Dns.Resolve(”www.xyz.com”).AddressList[0]; IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 80); Programmering i C# - Kapitel 10

Sockets forts. Klassen Socket i System.Net.Sockets Data skickas med metoden Send och läses med Receive UDP-socket utan förbindelse, TCP-socket upprättar server/clientroll Viktigt att stänga socket med Dispose ..eller Close Programmering i C# - Kapitel 10

Sockets exempel // TCP server Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream. ProtocolType.Tcp); listener.Bind(ep); // ep är en IPEndPoint listener.Listen(1); Socket handler = listener.Accept(); // väntar… // TCP client Socket s = … // som i serverexemplet s.Connect(ep); // ep är en IPEndPoint if (s.Connected) … // OBS se komplett exempel i boken! Programmering i C# - Kapitel 10

Konvertering av data Sockets skickar/tar emot bytevektor Applikationsprotokoll ofta textbaserade Text i CLI är Unicode – 16 bit Konvertera med klassen System.Text.Encoding Encoding.ASCII.GetString(myBytes); Encoding.ASCII.GetBytes(myString); Programmering i C# - Kapitel 10

10.5 System.Threading En tråd är ett spår av exekvering Motsvarigheten till en process är i VES en AppDomain Kan vara egen process eller tråd i operativet Trådar i samma AppDomain har samma adressrymd men egna stackar Tråd hanteras med klassen Thread Synkronisering med hjälp av Monitor Programmering i C# - Kapitel 10

Thread Tråd startas genom att man via Thread-objekt anropar metoden Start Parameter är en delegerare av typ ThreadStart ThreadStart-objektet associeras till metod som ska exekveras i ny tråd ThreadStart är void och utan parametrar Programmering i C# - Kapitel 10

Starta sekundärtråd class X { void MethodRunningInNewThread() { … } public void Method() Thread t = new Thread( new ThreadStart( this.MethodRunningInNewThread)); t.Start(); // anrop i ny tråd // befintliga tråden fortsätter } Programmering i C# - Kapitel 10

Synkronisering Då flera trådar accessar samma objekt krävs låsning Blockerande metod sätter trådar i kö Klassen Monitor har statiska metoderna Enter och Exit Parameter är det objekt som ska accessas Object har odokumenterat fält för låsning! Programmering i C# - Kapitel 10

Synkronisering exempel set // setgren i en egenskap { Monitor.Enter(this); a = value; Monitor.Exit(this); } C# har ordet lock för samma ändamål set // setgren i en egenskap { lock (this) { a = value; } } Programmering i C# - Kapitel 10

Asynkron programmering Designmönster i vissa klasser Tidsödande metod Xxx paketeras i BeginXxx som startar ny tråd EndXxx returnerar samma värde som Xxx Är blockerande tills Xxx exekverat BeginXxx returnerar en IAsyncResult som kan användas för övervakning av tråden Programmering i C# - Kapitel 10

Asynkron programmering forts. IAsyncResult har bl.a.: IsCompleted – bool som är true då tråden exekverat AsyncWaitHandle – WaitHandle med flera möjligheter att blockeras viss tid etc. Kan alltså pollas från primärtråden Programmering i C# - Kapitel 10

Asynkron programmering forts. BeginXxx kan också ha parameter av typ AsyncCallback Delegerare som anropas då tråden exekverat Callbackmetoden bör då typiskt anropa EndXxx för att hantera returvärdet Därmed sköts hela proceduren i bakgrund i sekundärtråd! Programmering i C# - Kapitel 10

10.6 System.Text Två centrala klasser: StringBuilder och Encoding StringBuilder är en traditionell strängklass Inkapslar teckenvektor som kan manipuleras Jämför String som är immutable Programmering i C# - Kapitel 10

Encoding Encoding-objekt finns i Stream-objekt och har nämnts i samband med sockets Alltid härledda – Encoding är abstrakt Konverterar teckenuppsättning till/från Unicode Metoderna GetBytes och GetString Statiska egenskaper ger typiska objekt För ASCII, ANSII (heter Default!), UTF8 Programmering i C# - Kapitel 10

10.7 System.Xml XmlTextReader och XmlTextWriter förenklar läsning/skrivning av XML-filer Framförallt XmlTextReader döljer detaljerna i XML-parsingen XmlTextReader reader = new XmlTextReader(”products.xml”); while (reader.Read()) if (reader.NodeType == XmlNodeType.Text) Console.WriteLine(reader.Value); Programmering i C# - Kapitel 10

10.8 System.Globalization Vissa klasser implementerar IFormattable Ger en överlagrad ToString Två extra parametrar som styr formatering En String enligt särskilda regler En IFormatProvider DateTimeFormatInfo används i DateTime NumberFormatInfo används i alla hel- och flyttal Programmering i C# - Kapitel 10

10.9 System.Diagnostics En enda attributklass: ConditionalAttribute Kan anges för metod och styr huruvida metoden kompileras samt huruvida den anropas Programmering i C# - Kapitel 10

10.10 System.Reflection Reflection är när information om datatyper används vid exekvering Informationen finns i assemblyts manifest Central klass är Type I namespace System Metoder i Type returnerar detaljerad information i MethodInfo, EventInfo, FieldInfo m.fl. Programmering i C# - Kapitel 10

System.Reflection forts. Klassen Assembly ger möjlighet analysera ett assembly GetTypes ger en vektor av Type Klassen Module ger motsvarande för en modul (fil med del av assembly) Type.CreateInstance skapar objekt av klassen, med defaultkonstruktorn Programmering i C# - Kapitel 10

10.11 System.Runtime System.Runtime.CompilerServices endast för utveckling av CLI-kompilatorer System.Runtime.InteropServices har klasser för anrop till funktioner i icke-CLI-kod Traditionella DLL-filer Attributklassen DllImportAttribute är central Programmering i C# - Kapitel 10

DllImportAttribute [DllImport(”user32.dll”)] public static extern int MessageBoxA( int hWnd, string msg, string cap, int type); Parametrar översätts automatiskt till den typ de har i DLL-filens funktion Ofta C-type Parametrar till DllImportAttribute-konstruktorn styr beteendet Programmering i C# - Kapitel 10

10.12 System.Security Klasser som gör det möjligt att undersöka begränsningar i rättigheter Central basklass är CodeAccessPermission Metoden Demand testar en uppsättning rättigheter och genererar SecurityException Attributklasser kan testa helt assemblys krav på rättigheter direkt vid laddning Programmering i C# - Kapitel 10