2008.09.23NOEA/IT - FEN1 Typeparametisering/Genericity Generics i.NET 2 og C#

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

07 – Kort om OO Introduktion.
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Array og ArrayList Et slideshow. Som er sødt.. Hvordan virker ArrayList?  ArrayList NAVN = new ArrayList ();  NAVN.add(”Værdi”);  NAVN.add(index, ”værdi”)
Datastrukturer og Collections Oversigt og forskel imellem Jave og.net Collections library Collection interfaces ArrayList IList interface Hashtable Hashtable.
Programmeringsteknologi: Lektion 1
Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Informationsteknologi B-A, HHX, 2005,
Objektorienteret programmering
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
Intro Variabler - datatyper. 2. forelæsning Hvad skete sidste gang Hvad er PHP? Kursussammensætning: læse – newsgroup – forelæsning – øvelsestime – aflevering.
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Tietgen Skolen Trick med facadeklasse og serialisering ”Trick” – model ”samles” til eet overordnet objekt Alle klasser i model skal have attriutten [Serializable]
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
Introduktion/Otto Knudsen 1 Overblik WebForms ASP.NET.
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Arv Idéen i arv et at kunne genbruge gennem generalisering
XML1 4.7 XML and Its Data Model. XML2 Introduktion til XML, 178 XML = eXtensible Markup Language Markup language –sprog, hvor data "pakkes ind" i tags.
GP12, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 12 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
Arrays ● Arrangere erklærede ens datatyper ● Giver mulighed for indeksering med tal ● Valgfri størrelse ved oprettelse ● Er integreret i sproget/compileren.
Datastrukturer og Collections Rasmus D. Lehrmann DM
Begreber og Redskaber 5. Collections i Java 1.2 Framework: samling af datastrukturer og algoritmer som generelt værktøj. En ramme til at arbejde med søgning.
FEN NOEA/IT Programmeringsteknologi 1 Arv og polymorfi Substitutionsprincippet Abstrakte klasser Design Patterns (Composite)
Forelæsning 3.1 Collections Javas for-each løkke
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Eksempel på realisering af domænemodel
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
Webserveren kan afvikle flere applikationer, der hver har deres eget selvstændige ”liv” og hukommelse. Den enkelte applikation består typisk af flere elementer.
Objekter og klasser Rasmus D. Lehrmann DM
Interaktionsformer En begrebsmæssig model kan understøttes med forskellige interaktionsformer Interaktionsformen fastlægger centrale egenskaber: Hvordan.
1 Team Build med Team Foundation Server 2008 Konfiguration og udvidelse af build jobs Kort præsentation Hvorfor bruge Team Build Afvikling af et build.
10. Datastrukturer. 2 Nordjyllands Erhvervakademi Collections library Datastrukturer i.NET kaldes normalt Collections Findes i namespace System.Collections.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Repetition: Introduktion til OOP med C# og .NET
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
Uge 14: distribuerede objekter, fjernprocedurekald, RMI Tirsdag: Introduktion Mulige fordele ved distribuerede objekter Introduktion til RMI: - Interfacets.
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
C#: Data Typer. 2 Nordjyllands Erhvervakademi Indhold: “.NET is designed around the CTS, or Common Type System. The CTS is what allows assemblies,
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Blå gruppe: Søren, Alexander, Torben, Lasse. De 4 vigtige items: - Singelton - Override clone judiciously - Use interfaces only to define type - Prefer.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Forelæsning 7.1 – repetition
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Variabler, klassevariabler, identitet og lighed, collections
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
DAIMIIntroducerende Objektorienteret Programmering1 Collections og opremsning Nye typer collections, objektorienteret sweep.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Kari Rye Schougaard, Ph.d.-stud. Værktøjer og Teknikker, 2006 A A R H U S U N I V E R S I T E T DATALOGISK INSTITUT Java på 20 minutter (eller lidt mere)
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
Introduktion til programmering Repetition. dIntProg, F08Repetition.2 dIntProg Sidste forelæsning (12/10) –kort tilbagemelding på evaluering –repetition.
Paradigmer i Programmering 0. Plan for kurset 4 x Mads R, 4 x Torben B, 2 x opgave MR: Funktionsprogrammering, SML TB: Logikprogrammering, Prolog Opgave:
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Solution Makers A/S – Gruppe 4 Lars Wolter Nils Martinsen Rasmus Seye Tobias Kjeldsen 1.
Forelæsning Uge 6 – Mandag
Query optimization MICHAEL I
Forelæsning Uge 6 – Mandag
Velkommen til B klassen
Præsentationens transcript:

NOEA/IT - FEN1 Typeparametisering/Genericity Generics i.NET 2 og C#

NOEA/IT - FEN2 ”Generisk” programmering i C# (som det har været indtil sommer 2005) Alle klasser nedstammer fra Object Så derfor kan vi anvende polymorfi F.eks. Object[ ] data –dette array kan indeholde alle mulige objekter fra alle mulige klasser Kendt fra ArrayList, HashMap osv. i.NET 1

NOEA/IT - FEN3 Fordele og ulemper Fordele –heterogene collections Ulemper –mange typecasts –ikke typesikkert typen checkes run-time i forbindelse med castet –hvad med int og de andre primitive datatyper? (boxing – giver overhead) Er det en fordel?

NOEA/IT - FEN4 Programmeringsfejl Programmet virker ikke korrekt, men det opdager vi ikke (uopdagede fejl) –så er det bedre, hvis: Programmet virker ikke korrekt, men vi får det at vide vha. f.eks. en exception (runtime fejl) –så er det bedre, hvis: Compileren accepterer ikke programmet (compile-time fejl)

NOEA/IT - FEN5 Strategien Placér så meget som muligt af fejl- kontrollen i compilerings-fasen Fordele: –Lettere at sikre korrekte programmer –Mere effektiv programeksekvering Ulemper –Mere restriktiv programmering (mindre fleksibilitet)

NOEA/IT - FEN6 Ideen: Typeparametrisering I version 1: using System.Collections; IList al = new ArrayList(); Kunde k= (Kunde) al.get(i); I version 2: using System.Collections.Generic; IList al = new List (); Kunde k= al.get(i); –Compileren ved nu, at der kun må placeres Kunde- objekter (og subtyper heraf) i al –Compileren ved nu, at det der hentes ud af al er Kunde-objekter (og subtyper heraf) –Statisk typecheck i stedet for dynamisk typecheck –Ingen dynamiske casts Typeparameter

NOEA/IT - FEN7 I C#: AnsatSeqProject Ansat a1 = new Ansat("Ib", "Programmør", 10000); Ansat a = new Ansat("Kurt", "Seniorprogrammør", 20000); Ansat b = new Ansat("Karl", "Programmør", 10000); Ansat c = new Ansat("Karen", "Systemprogrammør", 13000); Ansat d = new Ansat("Iben", "Programmør", 11000); Ansat e = new Ansat("Ib", "Systemkonsulent", 9000); string s = "Halløjsa!"; IList ansatte = new List (); ansatte.Add(a1); ansatte.Add(a); ansatte.Add(b); ansatte.Add(c); ansatte.Add(d); ansatte.Add(e); ansatte.Add(s);//COMPILERFEJL!!!! source

NOEA/IT - FEN8.NET 2 Generics ICollection IList LinkedList IDictionary List Dictionary SortedDictionary Indekserbare Array-baseret Balanceret søgetræ Hashtabel (key,value) -par

NOEA/IT - FEN9

NOEA/IT - FEN10

NOEA/IT - FEN11 Men det har en pris: –ingen heterogene collections hvilket vist ikke er et større savn... –typesystemet kompliceres –sprogets syntaks kompliceres –man får brug for en preprocessor så længere compileringstider og mere mystiske fejlmeddelelser

NOEA/IT - FEN12 Generiske typer vs. polymorfe typer Generiske typer: –alle elementer er af samme type –typen fastlægges statisk (compile-tid), statisk binding er mulig –F.eks vil en float i List l give en compile-fejl Polymorfe datastrukturer: –elementer kan være af forskellige typer, men alle elementer skal være specialiseringer af den type, der er defineret som element –statisk typekontrol er muligt, men dynamisk binding er nødvendig

NOEA/IT - FEN13 Forskelle på implementeringen C++ preprocessoren opfatter en template-definition som en slags makro dvs. vector kundeListe; og vector vareListe; får compileren til at generere kode til to forskellige vectors. –Effektivt, men objektkoden bliver stor Java bruger I princippet den gamle ArrayList, men indpakker castene for os. –Fylder ikke meget ekstra, men koster stadig tid til casts – check sker compiletid C# bruger C++ måden ved value-typer, men siges at være bedre til at undgå kodeduplikering, og bruger Java måden på referencetyper. Meta-data giver også information om typeparametre