INF1010. Grensesnittet Comparable<T>



Like dokumenter
1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 23. februar Parametriserte klasser Om å gå gjennom egne beholdere (subklasser og grensesnitt 3)

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 21. januar Klasser med parametre = Parametriserte klasser = Generiske klasser

UNIVERSITETET I OSLO

INF1010. Stein Michael Storleer (michael) Lenkelister

UNIVERSITETET I OSLO

Enkle generiske klasser i Java

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

INF1010 våren Grensesnitt

INF1010 Binære søketrær ++

INF1010 våren Grensesnitt (interface)

INF1010. grensesni-et Comparable<T> grensesni-et Iterable<T> rekursjon

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

Kapittel 9: Sortering og søking Kort versjon

INF1010 våren Grensesnitt

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

UNIVERSITETET I OSLO

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

INF1010 våren Interface (Grensesnitt)

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

2 Om statiske variable/konstanter og statiske metoder.

Gjennomgang av eksamen H99

Kapittel 9: Sortering og søking Kort versjon

INF1010 våren Arv og subklasser del 1

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

Kapittel 8: Sortering og søking INF100

Sortering med tråder - Quicksort

INF1010 Eksamenstips. Løsningsforslag prøveeksamen del 1.

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

INF1010 våren Arv og subklasser - del 2

INF1010 Arv. Marit Nybakken 2. februar 2004

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

INF1010 våren Arv og subklasser del 1

INF1010 våren Arv og subklasser - del 2

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

Kapittel 8: Sortering og søking INF100

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Kapittel 9: Sortering og søking Kort versjon

UNIVERSITETET I OSLO

INF1010 våren januar. Objektorientering i Java

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

INF1010 våren februar. Arv og subklasser, del 2

Sortering med Comparable og Comparator

INF1010 våren Arv, subklasser og grensesnitt - del 2

INF våren 2017

INF Notater. Veronika Heimsbakk 10. juni 2012

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

INF1010 siste begreper før oblig 2

Kapittel 9: Sortering og søking Kort versjon

Kapittel 8: Sortering og søking

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

OPPGAVE 5b og 8b Java Kode

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

Sensur-veiledning INF1000 h 2013 (fasit) am - 6. des. 2013

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Velkommen til. INF våren 2016

INF1010 våren februar. Arv og subklasser, del 2. Repetisjon. Repetisjon - Biler. Repetisjon: Klasser - Subklasser

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

Obligatorisk oppgave 4: Lege/Resept

Forelesning inf Java 5

Forelesning inf Java 5

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

LO191D/LC191D Videregående programmering

INF1010 våren Arv og subklasser - del 2

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

GUI 3 JavaFX. Mer interaksjon Hvordan gi input :l programmet. INF1010 Stein Michael Storleer

INF1000: Forelesning 7

UNIVERSITETET I OSLO

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

INF Seminaroppgaver til uke 3

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL

IN1010 våren januar. Objektorientering i Java

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

HØGSKOLEN I SØR-TRØNDELAG

import java.util.arraylist;

INF1000: Forelesning 7. Konstruktører Static

Kapittel 7: Mer om arv

Avdeling for ingeniørutdanning Institutt for teknologi

UNIVERSITETET I OSLO

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I)

Transkript:

INF1010 21. februar 2013 Grensesnittet Comparable<T> Stein Michael Storleer Institutt for Informatikk Universitetet i Oslo

Interface med parametre interface Utkledd <T> { // T er klassen jeg er utkledd som T utkleddsom(); class VanligHund { class KarnevalsHund<U> extends VanligHund implements Utkledd <U> { U likner; // peker til en jeg er utkledd som KarnevaldsHund(U forbilde){likner = forbilde; public U utkleddsom(){return likner; class Reinsdyr { ; class Hoved{ public static void main (String[] args) { Reinsdyr dyr = new Reinsdyr(); KarnevalsHund<Reinsdyr> passopp= new KarnevalsHund<Reinsdyr>(dyr); Reinsdyr reinpeker = passopp.utkleddsom(); KanBjeffe likner VanligHund Utkledd<U> KarnevalsHund<U> 2

interface Utkledd <T> { T utkleddsom(); Krav til klasse-parametre Formoe class VanligHund { class Person { String navn = Formoe ; class Sjorover extends Person{ navn class KarnevalsHund<U extends Person> extends VanligHund implements Utkledd<U> U { U likner; // peker til en jeg er utkledd som KarnevalsHund(U forbilde) {likner = forbilde; public U utkleddsom() {return likner; String navntilutkleddsom () { return likner.navn; class Hoved{ public static ti void main (String[] args) { Sjorover rover = new Sjorover(); KarnevalsHund<Sjorover> passopp= new KarnevalsHund<Sjorover>(rover); Sjorover sjopeker = passopp.utkleddsom(); System.out.println(passopp.navnTilUtkleddSom()); t tl ()) VanligHund Utkledd<U> likner KarnevalsHund<U extends Person> 3

Comparable i Java-biblioteket interface Comparable <T> { int compareto (T obj) ; compareto returns a negative, zero or a positive integer as this object is less than, equal to, or greater than the specified object class Bil implements Comparable <Bil> {... class Person implements Comparable <Person> {... class Fly implements Comparable <Bil> {... Men hvem ønsker å sammenligne Fly med Biler? Objekt av klassen Bil Comparable<T> Object compareto(bil b) Bil 4

Finn beste hund Navn: hundehuset class StedTilTaVarePaaBeste < U > { U beste= null; void settinn(u ny) { if( beste== null) else if (beste er dårligere enn ny) U hentbeste() {return beste; class Katt { class Hund { class Person { Type: StedTilTaVarePaaBeste<Hund> void settinn(hund ny) Person hentbest() return beste; Navn: beste StedTilTaVarePaaBeste <Hund> hundehuset = new StedTilTaVarePaaBeste <Hund> ( ); // nytt hundehus; Navn: trofast Navn: passopp Navn: kea 29 poeng public int sammenlign (Hund hnd) 42 poeng public int sammenlign (Hund hnd) 31 poeng public int sammenlign (Hund hnd) 5

Finn beste hund Navn: hundehuset class StedTilTaVarePaaBeste < U > { U beste= null; void settinn(u ny) { if( beste== null) else if (beste.sammenlig(ny) < 0) U hentbeste() {return beste; class Katt { class Hund { class Person { Type: StedTilTaVarePaaBeste<Hund> void settinn(hund ny) Person hentbest() return beste; Navn: beste StedTilTaVarePaaBeste <Hund> hundehuset = new StedTilTaVarePaaBeste <Hund> ( ); // nytt hundehus; Navn: trofast Navn: passopp Navn: kea 29 poeng public int sammenlign (Hund hnd) 42 poeng public int sammenlign (Hund hnd) 31 poeng public int sammenlign (Hund hnd) 6

Finn beste hund Navn: hundehuset class StedTilTaVarePaaBeste < U > { U beste= null; void settinn(u ny) { if( beste== null) else if (beste.compareto(ny) < 0) U hentbeste() {return beste; class Katt { class Hund { class Person { Type: StedTilTaVarePaaBeste<Hund> void settinn(hund ny) Person hentbest() return beste; Navn: beste StedTilTaVarePaaBeste <Hund> hundehuset = new StedTilTaVarePaaBeste <Hund> ( ); // nytt hundehus; Navn: trofast Navn: passopp Navn: kea 29 poeng 42 poeng 31 poeng 7

Finn beste hund Navn: hundehuset class StedTilTaVarePaaBeste < U > { U beste= null; void settinn(u ny) { if( beste== null) else if (beste.compareto(ny) < 0) U hentbeste() {return beste; class Katt { class Hund implements Comparable <Hund>{ class Person { Type: StedTilTaVarePaaBeste<Hund> void settinn(hund ny) Person hentbest() return beste; Navn: beste StedTilTaVarePaaBeste <Hund> hundehuset = new StedTilTaVarePaaBeste <Hund> ( ); // nytt hundehus; Navn: trofast Navn: passopp Navn: kea 29 poeng 42 poeng 31 poeng 8

Finn beste hund extends Navn: hundehuset class StedTilTaVarePaaBeste < U implements Comparable <U>> Type: { StedTilTaVarePaaBeste<Hund> U beste= null; void settinn(u ny) { if( beste== null) void settinn(hund ny) else if (beste.compareto(ny) < 0) U hentbeste() {return beste; Person hentbest() return beste; class Katt { class Hund implements Comparable <Hund>{... se neste side... class Person { Navn: beste StedTilTaVarePaaBeste <Hund> hundehuset = new StedTilTaVarePaaBeste <Hund> ( ); // nytt hundehus; Navn: trofast Navn: passopp Navn: kea 29 poeng 42 poeng 31 poeng 9

class Hund implements Comparable <Hund>{ int poeng; Hund(int png) {poeng= png; { return poeng hnd.poeng; trofast = new Hund(29); passopp = new Hund(42); if (trofast.compareto(passopp) < 0) {... Navn: trofast Navn: passopp 29 poeng Navn: hnd return hnd.poeng - poeng 42 poeng return hnd.poeng - poeng 10

interface Comparable <T> { int compareto (T obj) ; Evas hus Navn: hjem Type: StedTilTaVarePaaBeste<Person> class StedTilTaVarePaaBeste < U extends Comparable <U> > { U beste= null; Navn: ole void settinn(u ny) { if( beste== null) Type: Person else if (beste.compareto(ny) < 0) 17 poeng U hentbeste() {return beste; public int compareto(person prs) class Person implements Comparable <Person> { int poeng; Person (int png) {poeng= png; public int compareto (Person prs) { return poeng - prs.poeng; Navn: per Type: Person void settinn(person ny) if( beste== null) else if (beste.compareto(ny) > 0 Person hentbest() return beste; Navn: beste Type: Person Navn: paal class BrukSted { public static void main (String [ ] args) { StedTilTaVarePaaBeste<Person> hjem= new StedTilTaVarePaaBeste<Person>( ); Person ole = new Person(17); hjem.settinn(ole); Person per = new Person(25); hjem.settinn(per); Person paal= new Person(21); hjem.settinn(paal); Person bestitest = hjem.hentbeste (); System.out.println(bestITest.poeng); 25 poeng public int compareto(person prs) Navn: bestitest Type: Person Type: Person 21 poeng public int compareto(person prs) 11

For de spesielt interesserte class Bil {... // Hvis du absolutt må sammenligne fly og biler: class Fly implements Comparable <Bil> {... public int compareto(bil b) {... ; return... ; // Hvis vi skal ta vare på to ting, der vi ikke krever noe om den første (T), men krever at den andre tingen (U) kan sammenlignes med den første: class Beholder <T, U extends Comparable <T>> {... // For eksempel; Beholder <Bil,Fly> minb = new Beholder <Bil, Fly> ( ) ; 12