Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,

Lignende præsentationer


Præsentationer af emnet: "Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,"— Præsentationens transcript:

1 Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg, E14

2 Forprogrammerede metoder i Java Library
Klassen Collections indeholder en række metoder Metoderne kan bruges på objekter af mange forskellige typer Typen skal være en subtype af (interfacet) Collection Det er f.eks. tilfældet for ArrayList T min(Collection<T> c) //returnerer mindste element T max(Collection<T> c) //returnerer største element void sort(List<T> l) //sorterer listen void reverse(List<T> l) //vender listen om void shuffle(List<T> l) //”ryster” listen void copy(List<T> dest, List<T> src) //kopierering boolean disjoint(Collection<T> c1, Collection<T> c2) int frequency(Collection<T> c, Object o) ... dIntProg, E14

3 Brug af Collections på ArrayList<String>

4 Korteste Track og Yngste person
/** Vi antager at ArrayListen tracks ikke er tom */ public Track shortestTrack(){ Track res = tracks.get(0); //gemmer hidtil mindste for ( Track t : tracks ){ if ( t.getTime() < res.getTime() ) { res = t; } return res; /** Vi antager at ArrayListen persons ikke er tom */ public Person youngestPerson(){ Person res = persons.get(0); //gemmer hidtil mindste for ( Person p : persons ){ if ( p.getAge() < res.getAge() ) { res = p; } return res; dIntProg, E14

5 Kode kan generaliseres via parametre
/** tegner et kvadrat med sidelængde 100 */ public void square100() { for ( int i= 0; i<4; i++ ) { move(100); turn(90); } /** tegner et kvadrat med sidelængde lenth */ public void square( int length ) { for ( int i= 0; i<4; i++ ) { move(length); turn(90); } /** tegner en n-kant med sidelængde length */ public void polygon( int n, int length ) { for ( int i= 0; i<n; i++ ) { move(length); turn(360/n); } dIntProg, E14

6 Kan vi generalisere disse metoder?
/** Vi antager at ArrayListen tracks ikke er tom */ public Track shortestTrack(){ Track res = tracks.get(0); //gemmer hidtil mindste for ( Track t : tracks ){ if ( t.getTime() < res.getTime() ) { res = t; } return res; /** Vi antager at ArrayListen persons ikke er tom */ public Person youngestPerson(){ Person res = persons.get(0); //gemmer hidtil mindste for ( Person p : persons ){ if ( p.getAge() < res.getAge() ) { res = p; } return res; dIntProg, E14

7 Generel metode til at finde mindste element (min)
Vi har behov for at kunne parametrisere med en elementtype T specificere en sammenligningsmetode < for T /** Vi antager at ArrayListen list ikke er tom */ public T min( ArrayList<T> list ){ T res = list.get(0); //gemmer hidtil mindste for ( T elem : list ){ if ( elem < res ) { res = elem; } return res; dIntProg, E14

8 Sammenligning sker via interfacet Comparable
public interface Comparable<T> { /** whether this object is * smaller (negative integer) * equal (0) * or greater (positive integer) * than object o */ public int compareTo(T o); } Tænk på et interface som en rolle Track-objekter kan spille rollen Comparable Track skal implementere Interfacet public class Track { ... } implements Comparable<Track> { public int compareTo(Track o) { ... } Track skal have en compareTo metode (med den specificerede signatur) dIntProg, E14

9 <<interface>>
Klassediagram Collections T min(Collection<T> c) void sort(List<T> l) ... <<interface>> Comparable int compareTo(T o) uses implements Track Person Die dIntProg, E14

10 Implementation af find mindste (min)
/** Vi antager at ArrayListen list ikke er tom */ public T min( ArrayList<T> list ){ T res = list.get(0); //gemmer hidtil mindste for ( T elem : list ){ if ( elem < res ) { res = elem; } return res; elem.compareTo(res) < 0 ) { dIntProg, E14

11 Computere kan lave imponerende animeringer
Lord of the rings (Ride of the Rohirrim) VIDEO (4:40) dIntProg, E14

12 Afleveringsopg 6: Ants and Spiders
Opgaven løses i Greenfoot Programmér hjernen på en myre så den kan lede efter mad og flygte fra edderkopper Demo Konkurrence Præmier De tre bedste løsninger(fra forskellige studerende) Den bedste lommeregner Score: I kan benchmarke ligeså meget I vil Navn, score, java-fil afleveres (koden checkes!) Regler: Der må kun ændres i MyAnt Løsning skal overholde grundlæggende model

13 Ants and Spiders - Model
Myrer dør, hvis de rammer en kant en anden myre en edderkop Myrerne skal nå at spise så meget mad som muligt

14 Ants and Spiders :Vector :MyAnt MovingActor Ant MyAnt act()
super.act() adjustVelocity() getForces() normalize() move() checkForCollisions()

15 Ants and Spiders - Tips Brug ikke en statisk bredde/højde (f.eks. 500)
Brug i stedet distanceToBottomWall() Eksperimenter med vægt mellem de forskellige vektorer Find på gode ideer (når en primitiv løsning virker) Hvordan vælger man det sukker man går efter? Vælg i forhold til spider Vælg i forhold til andre myrer Er det nødvendigt at tænke på alle vægge hele tiden?

16 MAT studerende på 1. år: Lommeregner
Implementere en lommeregner i BlueJ Først laves en lommeregner for heltal Addítion Subtraktion Multiplikation Invertering Potensopløsning Dernæst laves en lommeregner, der regner modulo n n er en parameter til lommeregner objektet samme operationer som ovenfor MAT-ØK studerende aftaler med deres instruktor, hvilken opgave de løser

17 DatLab Fælles studiecafé i Ada-020/026 hver fredag kl. 13-15 IT-parken
Bl.a. for studerende på Introduktion til Programmering (Q1) Kom og få lavet det sidste inden weekenden! X IT-parken Workshops Introduktioner til værktøjer Følg med på cs.au.dk/datlab


Download ppt "Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,"

Lignende præsentationer


Annoncer fra Google