Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
1
Typeparametrisering Generel kode (generisk kode)
2
Et lille eksempel med strenge dIntProg, E10
3
Forprogrammerede metoder Klassen Collections indeholder en lang række anvendelige metoder: int binarySearch(List l, T key) void copy(List dest, List src) boolean disjoint(Collection c1, Collection c2) int frequency(Collection c, Object o) T max(Collection c) T min(Collection c) void reverse(List l) void shuffle(List l) void sort(List l)...
4
Collections funktioner dIntProg, E10 Javas API
5
Korteste Track // Vi antager at listen tracks ikke er tom public Track shortestTrack(){ Track res; res= tracks.get(0); //res == min element so far for ( Track t : tracks ){ if ( t.getTime() < res.getTime() ) { res= t; } return res; } dIntProg, E10
6
Yngste Person // Vi antager at listen persons ikke er tom public Person youngestPerson(){ Person res; res= persons.get(0); //res == min element so far for ( Person p : persons ){ if ( p.getAge() < res.getAge() ) { res= p; } return res; } dIntProg, E10
7
Hvad er forskellen på de to metoder? public Person youngestPerson(){ Person res= persons.get(0); //res == min element so far for ( Person p : persons ){ if ( p.getAge() < res.getAge() ) { res= p; } } return res; } public Track shortestTrack(){ Track res= tracks.get(0); //res == min element so far for ( Track t : tracks ){ if ( t.getTime() < res.getTime() ) { res= t; } } return res; } dIntProg, E10
8
Hvordan generaliserer vi kode? public void square100() { for ( int i= 0; i<4; i++ ) { move(100); turn(90); } public void square200() { for ( int i= 0; i<4; i++ ) { move(200); turn(90); } public void triangle100() { for ( int i= 0; i<3; i++ ) { move(100); turn(120); } public void triangle400() { for ( int i= 0; i<3; i++ ) { move(400); turn(120); } dIntProg, E10
9
Kan vi generalisere disse metoder? public Person youngestPerson(){ Person res= persons.get(0); //res == min element so far for ( Person p : persons ){ if ( p.getAge() < res.getAge() ) { res= p; } } return res; } public Track shortestTrack(){ Track res= tracks.get(0); //res == min element so far for ( Track t : tracks ){ if ( t.getTime() < res.getTime() ) { res= t; } } return res; } dIntProg, E10
10
Vi ønsker at kunne... // Vi antager at listen l ikke er tom public T min(List l) { T res; res= l.get(0); // res == min element so far for ( T e : l ) { if ( [sammenligning af e og res (e < res)] ) { res= e; } return res; }...parametrisere med elementtype...parametrisere med sammenligningsmetode dIntProg, E10
11
Hvordan sammenligner man objekter? public interface Comparable { /** * @returns whether this object is * smaller (negative integer) * equal (0) * or greater (positive integer) * than object o */ public int compareTo(T o); } dIntProg, E10
12
Brug af interfaces (implementør) Tænk på et interface som en rolle Objekter fra en klasse kan spille rollen beskrevet i et interface –Track-objekter kan spille rollen Comparable public class Track implements Comparable {... public int compareTo(Track o) {... } dIntProg, E10
13
Vi ønsker at kunne... // Vi antager at listen l ikke er tom public T min(List l) { T res; res= l.get(0); // res == min element so far for ( T e : l ) { if ( [sammenligning af e og res (e < res) ]) { res= e; } return res; }...parametrisere med elementtype...parametrisere med sammenligningsmetode dIntProg, E10
14
Vi ønsker at kunne... // Vi antager at listen l ikke er tom public T min(List l) { T res; res= l.get(0); // res == min element so far for ( T e : l ) { if ( e.compareTo(res) < 0) { res= e; } return res; }...parametrisere med elementtype...parametrisere med sammenligningsmetode dIntProg, E10
15
Afkobling af programkomponenter Collections T min(Collection c) void sort (List l)... > Comparable Person Terning Track dIntProg, E10
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.