Martin lillholm
This presentation is the property of its rightful owner.
Sponsored Links
1 / 32

Martin Lillholm PowerPoint PPT Presentation


  • 53 Views
  • Uploaded on
  • Presentation posted in: General

Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 8 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder 9.15. www.itu.dk/courses/GP/E2005. Martin Lillholm. Obligatorisk opgave. Var opgaven til i onsdags For nem For svær

Download Presentation

Martin Lillholm

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Martin lillholm

Grundlæggende Programmering (GP)Efterår 2005Forelæsning 8Slides ligger på nettet. Du er velkommen til at printe dem nu.Vi begynder 9.15.www.itu.dk/courses/GP/E2005

Martin Lillholm


Obligatorisk opgave

Obligatorisk opgave

  • Var opgaven til i onsdags

    • For nem

    • For svær

    • 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å?


Terminspr ve

”Terminsprøve”

  • Fredag den. 18 november fra 13-16

  • 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…


Evaluering

Evaluering

  • Hvorfor overhovedet evaluere ?

  • Hvor mange har overhovedet evalueret ?

  • Husk det nu !!


Projekter

Projekter

  • Hvorfor projekter i GP ?

  • Projektforslag næste gang

  • Projektdag den 9. november


Sidste gang

Sidste gang

  • Nedarvning

  • Skrivning til tekstfil


Denne gang

Denne gang

  • Wrapper klasser

  • Interfaces

  • Typer i Java

  • Polymorfi

  • Søgning og sortering


Wrapper klasser

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 mellemprimitive typer og objektyper

    • Polymorfi

    • Hjælpemetoder (L&L appendiks M)


Autoboxing og unboxing

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


Gr nseflader interfaces

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 ?


Interfaces eksempler

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


  • Nedarvning

    Nedarvning

    Ansat

    Studerende

    TAP

    Person

    VIP

    • 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


    Typer i java

    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


    Subtyper

    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)


    Subtyper1

    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 hvist1 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)


    Hvorfor alt det her

    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


    Polymorfi

    Polymorfi

    Mirriam-Webster Online:

    Main Entry: poly·mor·phismFunction: 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·phicadjective- poly·mor·phi·cal·lyadverb

    • “Almindelig” reference

    • “Polymorf” reference – subtyper – kompatibilitet

    • Sen binding (late binding)


    Polymorfi gennem arv eksempler

    Polymorfi gennem arv eksempler

    Ansat

    Studerende

    TAP

    Person

    VIP

    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


    Polymorfi gennem interfaces

    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();

    }


    Det store motiverende eksempel

    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


    S gning

    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 ?


    Line r s gning usorterede data

    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


    Bin r s gning sorterede data

    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 log2(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. log2(n) = log(n)/log(2) hvor log(n) er den naturlige logaritme


    Sammenligning af line r og bin r s gning

    Sammenligning af lineær og binær søgning


    Line r og bin r s gning implementation

    Lineær og binær søgning – implementation

    • Peter Sestofts note

    • Vi vender tilbage til L&L’s implementation, der er polymorf


    Sortering

    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


    Selection sort

    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


    Selection sort1

    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 ½n2for store n og vi siger at arbejdet er asymptotisk proportionalt med n2.

    • I såvel teori som praksis er selection sort langsom!


    Selection sort implementation

    Selection sort – implementation

    • Peter Sestofts note

    • Insertion sort, Quick sort, Merge sort, Heap sort ...


    Andre sorteringsmetoder teori

    Andre sorteringsmetoder – teori


    Andre sorteringsmetoder praksis

    Andre sorteringsmetoder – praksis


    Polymorfe implementationer af s gning og sortering

    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


  • Login