GP8, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 8 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.

Slides:



Advertisements
Lignende præsentationer
HUNDE SPEED km h 34,4 HUNDE SPEED km h 34,1 HUNDE SPEED km h 32,8 HUNDE SPEED km h 31,9 HUNDE SPEED km h 31,8 HUNDE SPEED km h 30,9.
Advertisements

Velkommen til Softwarekonstruktion
07 – Kort om OO Introduktion.
Trivselsundersøgelse og ledelsesevaluering
T1 – OPGAVE 14.2 LINETT & SABRINA Klasse Varer namespace Opgave_14._2 { class Varer { private string vare; private string farve; private double.
Selve objektet versus referencen til objektet Nedarvning
Grundlæggende programmering Efterår 2001
GP10, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 10 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation, og dataproblemer 4. november 2005.
Opslagsfelter (Access, del 6). RHS – Informationsteknologi 2 Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser vores.
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
Søgning & sortering Intro søgning Lineær søgning Binær søgning
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
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.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Trivselsundersøgelse og ledelsesevaluering Anæstesiologisk Afdeling Flere ledere
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.
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Forelæsning 3.1 Collections Javas for-each løkke
Rapporter (Access, del 5). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller, og.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Grunde til at jeg elsker dig
GP6, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 6 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
GP 11, 14/ Grundlæggende programmering Efterår 2001 Forelæsning 11 onsdag 14/ kl. 9:15 – 12:00.
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,
1 Design, analyse og verifikation. 2 Design Bevisteknikker Design ved hjælp at matematisk induktion Analyse O-notation Logaritmer Binær søgning Verifikation.
1 Sortering. 2 Sortering ved fletning (merge-sort) 7 2 | 9 4  | 2  2 79 | 4   72  29  94  4.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
Primitive typer. dIntProg, F08Typer.2 Subtyperelation for primitive typer byte ≤ short ≤ int ≤ long ≤ float ≤ double char boolean double d; int i; d =
GP7, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 7 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Nedarvning.
Økonometri 1: Specifikation og dataproblemer1 Økonometri 1 Specifikation og dataproblemer 2. november 2004.
Oprettelse af tabeller (Access, del 2)
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
GP4, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 4 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Grundlæggende programmering Forår 2002
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 11 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
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.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Forelæsning 7.1 – repetition
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.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
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)
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
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)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
Fundamentale sprogbegreber Typer. dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
Forelæsning Uge 6 – Mandag
Forelæsning Uge 4 – Mandag
Forelæsning Uge 5 – Mandag
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

GP8, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 8 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder Martin Lillholm

GP8, Martin Lillholm 2 Obligatorisk opgave Var opgaven til i onsdags 1.For nem 2.For svær 3.Tilpas – skulle bruge noget tid og tanker på den, men så var den også til at løse/forstå. Er der nogen, der ikke har afleveret fordi den slet ikke var til at få hul på?

GP8, Martin Lillholm 3 ”Terminsprøve” Fredag den. 18 november fra Afløser den obligatoriske opgave: –Til stede og afleverer – rettes som eksamenssæt –Ikke til stede – afleverer almindeligt – rettes almindeligt Forsøger at gøre det så realistisk så muligt…

GP8, Martin Lillholm 4 Evaluering Hvorfor overhovedet evaluere ? Hvor mange har overhovedet evalueret ? Husk det nu !!

GP8, Martin Lillholm 5 Projekter Hvorfor projekter i GP ? Projektforslag næste gang Projektdag den 9. november

GP8, Martin Lillholm 6 Sidste gang Nedarvning Skrivning til tekstfil

GP8, Martin Lillholm 7 Denne gang Wrapper klasser Interfaces Typer i Java Polymorfi Søgning og sortering

GP8, Martin Lillholm 8 Wrapper-klasser Til alle primitive typer ( byte, short, int, long, float, double, char, boolean, void ) findes såkaldte wrapper klasser Giver mulighed for at repræsentere primitive typer som objekter: Integer countObj = new Integer (10); Hvorfor wrapper-klasser? –Ophæv skellet mellem primitive typer og objektyper –Polymorfi –Hjælpemetoder (L&L appendiks M) Primitiv typeWrapper klasse byteByte Short IntInteger longLong floatFloat doubleDouble charCharacter booleanBoolean voidVoid

GP8, Martin Lillholm 9 Autoboxing og unboxing Automatisk konvertering mellem primitive typer og den tilsvarende wrapper-klasse: Integer count; int number = 42; count = number; // Autoboxing Integer i = new Integer (32); int j; j = i; // Unboxing

GP8, Martin Lillholm 10 Grænseflader (interfaces) Eksplicitte og implicitte interfaces Et (eksplicit) interface er en samling af abstrakte metoder (og konstanter) (og er en type... se senere) For konstanterne er public static final underforstået og derfor ikke nødvendige. Konstanterne er tilgængelige i instanser, der implementerer interfacet For metoderne er public abstract underforstået og derfor ikke nødvendige En klasse der implementerer et interface skal implementere metoderne i interfacet – hvorfor ? Men kan sagtens implementere flere/andre offentlige metoder. En klasse kan implementere flere interfaces Interface hierakier er mulige Nøgleord: interface og implements ( Svarer groft sagt til class og extends) Hvorfor interfaces ?

GP8, Martin Lillholm 11 Interfaces – eksempler public interface Complexity { public void setComplexity (int Complexity); public void getComplexity (); } –Question.java L&L side 311 i BlueJ Comparable Metoden: int CompareTo (Object obj); –Contact.java L&L side 503 I BlueJ

GP8, Martin Lillholm 12 Nedarvning Hvad har de tre typer personer til fælles: –De er alle personer med navn og højde –Både VIP’ere og TAP’ere er ansat i en afdeling StuderendePersonTAPAnsatVIP

GP8, Martin Lillholm 13 Typer i Java Primitive typer: – ( byte, short, int, long, float, double, char, boolean, void ) –12, -34, 57, 43234, 2.31f, … Referencetyper: –Klassetype – givet i kraft af en klasseerklæring –(Interface-type – givet i kraft af en interface erklæring) –Tabeltype (array type), t[] hvor t er en type –null eller en reference til et objekt

GP8, Martin Lillholm 14 Subtyper En type t1 kan være en subtype af en type t2. I givet fald er t2 en supertype af t1 Generelt: –Enhver type er en subtype af sig selv –Hvis t1 er en subtype af t2 og t2 er en subtype af t3 så er t1 en subtype af t3 For primitive typer: –char er en subtype af int, long, float og double –byte er en subtype short, int, long, float og double –short er en subtype af int, long, float og double –int er en subtype af long, float og double –long er en subtype af float og double –float er en subtype af double (widening)

GP8, Martin Lillholm 15 Subtyper For referencetyper: –Hvis t1 og t2 er klasser så er t1 en subtype af t2 hvis t1 er en subklasse af t2 –Hvis t1 og t2 er interfaces så er t1 en subtype af t2 hvis t1 er et subinterface af t2 –Hvis t1 er en klasse og t2 er et interface så er t1 en subtype af t2 hvis t1 implementerer t2 eller implementerer et subinterface af t2 –En tabeltype t1[] er en subtype af tabeltype t2[] hvis referencetype t1 er en subtype af referencetype t2 –Alle referencetyper inklusive enhver tabeltype er en subtype af Object Ingen primitive typer er subtyper af en referencetype. Ingen referencetyper er subtyper af primitive typer (Sestoft 2002)

GP8, Martin Lillholm 16 Hvorfor alt det her? Lad t1 være en subtype af t2 Enhver værdi v1 af type t1 kan benyttes, hvor en værdi af type t2 forventes Vi siger at typerne t1 og t2 er kompatible

GP8, Martin Lillholm 17 Polymorfi Mirriam-Webster Online: Main Entry: poly·mor·phism Function: noun : the quality or state of being able to assume different forms: as a : existence of a species in several forms independent of the variations of sex b : the property of crystallizing in two or more forms with distinct structure - poly·mor·phic adjective - poly·mor·phi·cal·ly adverb “Almindelig” reference “Polymorf” reference – subtyper – kompatibilitet Sen binding (late binding)

GP8, Martin Lillholm 18 Polymorfi gennem arv eksempler Person person; Studerende studerende; Ansat ansat; Vip vip; person = ansat // OK – hvorfor ? person = studerende; ansat = vip; vip = ansat; // ikke ok – hvorfor ? Hvad med metodekald ? Sen binding. Firm.java i L&L side 486 i BlueJ StuderendePersonTAPAnsatVIP

GP8, Martin Lillholm 19 Polymorfi gennem interfaces public interface Speaker { public void speak(); public void annonce(); } Speaker current; current = new Philosopher(); // Antag at en Philosopher implementerer // Speaker samt metoden talk() Speaker guest; guest = new Philosopher(); guest.speak(); guest = new Dog();// Tilsvarende for Dog guest.speak(); Speaker special = new Philosopher(); special.talk(); // FORKERT – hvorfor ? ((Philosopher)special).talk() // OK – hvorfor ? public void sayIt (Speaker current) { // Hvad kan vi kalde med ? current.speak(); }

GP8, Martin Lillholm 20 Det store motiverende eksempel Cirkler og Rektangler som eksempler på former –InheritanceDriver.java –InheritancePanel.java –( InheritancePanel1.java ) –Shape.java –Circle.java –Rectangle.java –Findes alle på hjemmesiden

GP8, Martin Lillholm 21 Søgning Søgning handler om at finde et givent element i en samling af data Vi skelner mellem søgning i: –En samling usorterede data –En samling af sorterede data I vores eksempler vil en samling af data være en tabel –Andre muligheder ?

GP8, Martin Lillholm 22 Lineær søgning – usorterede data Data gennemsøges fra enden til anden Tavleeksempel Hvor meget arbejde kræver lineær søgning? –Arbejde: antal sammeligninger Antag at vi har en tabel med n elementer I gennemsnit benyttes n/2 sammenligninger Vi siger at arbejdet for lineær søgning har lineær kompleksitet eller er proportional med n

GP8, Martin Lillholm 23 Binær søgning – sorterede data Algoritme for en sorteret (stigende) tabel med n tal –Begynd i midten Gentag indtil vi finder det korrekte element eller vi kun har et forkert element tilbage –Hvis tallet vi søger er mindre end det nuværende element »Søg i den nederste halvdel med udgangspunkt i det miderste element –Hvis tallet vi søger er større end det nuværende element »Søg i den øverste halvdel med udgangspunkt i det miderste element Tavlegennemgang Kompleksitet log 2 (n) – hvorfor ? Hvor 2-tals logaritmen siger hvor mange gange vi kan halvere et tal og stadig få et resultat der er større end eller lig 1. log 2 (n) = log(n)/log(2) hvor log(n) er den naturlige logaritme

GP8, Martin Lillholm 24 Sammenligning af lineær og binær søgning

GP8, Martin Lillholm 25 Lineær og binær søgning – implementation Peter Sestofts notenote Vi vender tilbage til L&L’s implementation, der er polymorf

GP8, Martin Lillholm 26 Sortering Hvad er sortering ? Hvorfor overhovedet sortere? –Fordi vi ønsker sorterede data –Gentagne søgninger –Find de ti største/mindste elementer i en liste –Find identiske elementer i en liste –Find identiske elementer i to lister Der findes mange sorteringsmetoder –Selection sort –Insertion sort –Quick sort –Heap sort –… Forskellige tids- og pladskompleksitet – velegnet til forskellige opgaver

GP8, Martin Lillholm 27 Selection sort Givet en liste af tal med n elementer Find det mindste element og fjern det fra listen. Det delvist sorterede resultat består nu af et element Find det næstmindste element – altså det mindste af de tilbageværende elementer – og fjern det fra listen. Tilføj det til listen af sorterede elementer... Fortsæt indtil den oprindelige liste er tom I praksis benyttes en og samme tabel til både den sorterede og den usorterede del Tavlegennemgang

GP8, Martin Lillholm 28 Selection sort Hvor meget arbejde kræver selection sort? Vi kan finde det mindste af m elementer ved brug af m-1 sammenligninger Generelt gælder: For en n lang liste: I praksis dominerer ½n 2 for store n og vi siger at arbejdet er asymptotisk proportionalt med n 2. I såvel teori som praksis er selection sort langsom!

GP8, Martin Lillholm 29 Selection sort – implementation Peter Sestofts notenote Insertion sort, Quick sort, Merge sort, Heap sort...

GP8, Martin Lillholm 30 Andre sorteringsmetoder – teori

GP8, Martin Lillholm 31 Andre sorteringsmetoder – praksis

GP8, Martin Lillholm 32 Polymorfe implementationer af søgning og sortering L&L PhoneList2.java side 508 (søgning) i BlueJ L&L PhoneList.java side 500 (sortering) i BlueJ