Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Logg inn

Valgte tags:

Filtrering:

Skriv ut:

02.2 Grensesnitt i Javas API (Comparable<T>)

Vi skal her se på et eksempel på et grensesnitt som implementeres av over hundre klasser i Javas bibliotek. Grensesnittet Comparable gir en garanti for at det finnes en metode compareTo(), som kan sammenligne dette (eller this) med et annet objekt.
Hvis vi antar at a og b er av samme type, og den typen implementerer Comparable er:

    a.compareTo(b) < 0 - sant dersom a < b
    a.compareTo(b) > 0 - sant dersom a > b
    a.compareTo(b) == 0 - sant dersom a = b

Når en skal implementere Comparable må en spesifisere hva en skal kunne sammenlignes med. Klassen String implementerer Comparable, det betyr at en String kun kan sammenlignes med andre objekter av typen String.

a) Opprett et String-array. Finn den største og den minste strengen i arrayen ved å bruke compareTo().

b) Skriv en klasse Person som skal implementere grensesnittet Comparable. Personen skal ha et navn og en alder, disse skal deklareres private. Personene skal sammenlignes etter alder. Opprett fem Person-objekter og legg disse i et array. Finn den eldste og den yngste
personen i arrayen.

c) Skriv om compareTo() i klassen Person slik at vi sammenligner personer ved hjelp av navn. Bruk de samme personobjektene som i deloppgave b og finn personen med det navnet som er hhv. først og sist i alfabetet.

d) Lag en beholder som kun kan holde på to objekter av vilkårlig type om gangen. Et objekt skal kun legges i beholderen dersom det er mindre enn det minste eller større enn det største objektet i beholderen. For å kunne avgjøre om et objekt er større eller mindre enn et annet må vi ha en garanti for at disse objektene kan sammenlignes med hverandre. Vi får dermed følgende klassesignatur:

public class MinMaksBeholder<E extends Comparable<E>> 

Koden > forteller oss at elementene vi legger i beholderen implementerer grensesnittet Comparable. Dette kravet tilfredsstilles av Person-klassen (fra deloppgave b), og kan derfor legges i beholderen.

Beholderen skal ha tre metoder, en for å legge til elementer, en for å hente ut det minste elementet og en for å hente ut det største elementet.

Du kan teste beholderen ved å legge til de samme personobjektene som i deloppgave b og c, og hente ut hhv. det minste og største elementet.