Løsningsforslag til Eksamen i fag SIF8005 Programmering. Torsdag 10. mai 2001 kl

Like dokumenter
Eksamen i fag SIF8005 Programmering. Torsdag 10. mai 2001 kl

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java

TDT4100 Objektorientert programmering

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

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; }

UNIVERSITETET I OSLO

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

UNIVERSITETET I OSLO

Post-it spørsmål fra timen (Arv og subklasser)

INF Seminaroppgaver til uke 3

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

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

Fakultet for informasjonsteknologi, Institutt for datateknikk og informasjonsvitenskap

INF Notater. Veronika Heimsbakk 10. juni 2012

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010 Arv. Marit Nybakken 2. februar 2004

Kapittel 7: Mer om arv

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

LC191D/LO191D Videregående programmering mai 2010

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

public class NaivRiking { private HeldigSnylter minsnylter; public NaivRiking(HeldigSnylter h) { minsnylter = h;

EKSAMEN. Objektorientert programmering

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

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Faglærerne prøver å besøker eksamenslokalet mellom klokka 15 og 16 for å oppklare eventuelle uklarheter og feil i oppgaveteksten.

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

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

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

En klasse som arver, eller selv deklarerer en abstrakt metode, må deklareres som abstrakt.

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

UNIVERSITETET I OSLO

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

Introduksjon til objektorientert programmering

Informasjon Eksamen i IN1000 høsten 2017

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

UNIVERSITETET I OSLO

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

INF1010 våren Arv og subklasser del 1

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Obligatorisk oppgave 4: Lege/Resept

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Gjennomgang av eksamen H99

Forelesning inf Java 4

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Repetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator

UNIVERSITETET I OSLO

LO191D/LC191D Videregående programmering

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

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

De neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11).

Kapittel 9: Sortering og søking Kort versjon

UNIVERSITETET I OSLO

INF1010 våren Arv og subklasser - del 2

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

UNIVERSITETET I OSLO

INF1010 våren Arv og subklasser del 1

Del 3: Evaluere uttrykk

Forelesning inf Java 5

Forelesning inf Java 5

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Oppgave 3 a. Antagelser i oppgaveteksten. INF1020 Algoritmer og datastrukturer. Oppgave 3. Eksempelgraf

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

UNIVERSITETET I OSLO

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

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

INF1010. Grensesnittet Comparable<T>

Kapittel 8: Programutvikling

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Dagens tema INF1010 INF1010 INF1010 INF1010

Eksamen IN1010/INF1010 våren 2018

INF1000 Metoder. Marit Nybakken 16. februar 2004

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

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010 våren Arv og subklasser - del 2

Transkript:

Side 1 av 10 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for fysikk, informatikk og matematikk Institutt for datateknikk og informasjonsvitenskap Sensurfrist: 15. juni Løsningsforslag til Eksamen i fag SIF8005 Programmering Torsdag 10. mai 2001 kl 0900-1400 Hjelpemidler A2: Kalkulator ikke tillatt Bestemte trykte hjelpemidler tillatt: * Winder & Roberts: Developing Java Software * Lervik & Havdal: Programmering i Java * Lewis & Loftus: Java Software Solutions * Lemay & Cadenhead: Teach Yourself Java 2 in 21 Days * Lemay & Cadenhead: Lær Java 2 på 21 dager * IDI: Løsningsforslag til Øving 4, SIF8005, vår 2001 Faglig kontakt under eksamen: Førsteamanuensis Guttorm Sindre, tlf. 94479 Universitetslektor Steinar Line, tlf. 9086 4408 Merk: All programmering på eksamen skal foregå i Java. Prosentsatser viser hvor mye hver oppgave teller innen settet. Innen en oppgave teller de ulike deloppgaver likt, med mindre annet er angitt. Lykke til!

Side 2 av 10 Oppgave 1 (30%) HER KREVES KUN AT MAN SKRIVER HVA RESULTATET AV KJØRINGEN BLE. INGEN ANDRE KOMMENTARER ER NØDVENDIGE, MEN DE SKADER SELVSAGT IKKE. a) (3%) Student og Ansatt arver fra Person. b) (4%) 45 345 345 Student-referansene en og to refererer til det samme objektet. Det man endrer på en endres derfor også på to. c) (4%) Nummer: 0 Navn: Kari Alder: 23 Student-referansen enstudent settes lik Student-objektet som refereres til av Personreferansen enperson. linjer-variabelen økes til 5000 og dermed blir Kari ansatt og ikke Jonas (første del av if-setningen kjøres). ansattnr settes lik den statiske variabelen nyttansattnr som er 0 første gang et Ansatt-objekt opprettes. Denne vil øke med 1 (som angitt i konstruktoren) hver gang et nytt Ansatt-objekt opprettes. d) (4%) Studentnr: 32543 Ansattnr: 0 To objekter legges inn i tabellen perstab. Først et Student-objekt og så et Ansatt-objekt. Denne tabellen gås deretter igjennom i riktig rekkefølge (fra plass 0 til og med 1) og disse skrives ut. Verdien på ansattnr er 0 som i c) fordi dette er en ny kjøring av Verden.java og dermed er den forrige Ansatt-objekt-opprettelsen glemt. e) (3%) Disse klassene er knyttet sammen med assosiasjon. ELLER Verdensomseiler har en objektreferanse til Koordinat. f) (4%) 34 61 Skriver ut verdiene til breddegrad og lengdegrad definert i Koordinat. Dette ved å lage en referanse til Koordinat-objektet som hentes ut fra seilern.

Side 3 av 10 g) (4%) Selveste Thor Selveste Thor Her lages et Verdensomseiler-objekt som refereres til både av en Verdensomseiler-referanse og en Person-referanse. Uansett typen referanse så vil den redefinerte/overlagrede metoden hentnavn() i Verdensomseiler kalles fordi dette er et Verdensomseiler-objekt. Dette prinsippet kalles dynamisk binding og gjelder for alle metoder som er redefinert/overlagret fra superklassen i en subklasse. h) (4%) 27 90 27 90 Her lages et Verdensomseiler-objekt som refereres til av en Verdensomseiler-referanse. Deretter opprettes en Person-referanse som refererer til samme objektet. For at metoden settkoordinat skal kunne kalles på Person-referansen må denne castes til en Verdensomseiler (metoden settkoordinat finnes ikke i Person-klassen). Metoden settkoordinat lager et nytt Koorindat-objekt slik at Verdensomseiler-objektet i realiteten får en ny koordinat mens det gamle Koordinat-objektet som ikke lenger har noen referanse til seg vil bli forkastet og minne blir frigjort av Java-kjøretidssystemet. Dette er et alternativ til å sette koordinatene til det samme Koordinat-objektet på nytt. Siden seileren og sammekaren refererer til samme objektet blir utskriften av lengdegrad og breddegrad for begge referansene like. Person-objektet sammekaren må hele tiden castes til Verdensomseiler for at metoder som bare finnes i Verdensomseiler-klassen skal kunne brukes. Oppgave 2 UML til programkode (15%) Her var hovedpoenget å vite at metoder fra abstrakte klasser og grensesnitt måtte implementeres i ikke-abstrakte arvende/implementerende klasser. KUN IMPLEMENTASJON AV KLASSENE (UTEN KOMMENTARER) ER NØDVENDIGE. KOMMENTARENE ER KUN TIL HJELP. Mange spurte om konstruktorer måtte lages eller ikke. Siden disse ikke var inntegnet i UMLdiagramet var det ikke krav om å ha dem med, men fornuftige konstruktorer ( tomme eller som tar inn instansvariablene) gjør det ikke noe å ha med. public interface Husdyr { void gaainn(); void gaaut();

Side 4 av 10 For grensesnittet var ikke aksessmodifikatoren for metoder (public/private/protected) angitt. Dette fordi det er unødvendig for et grensesnitt. Metoder vil uansett få samme aksessmodifikator som grensesnittet selv. Det er bare public (evt. ingenting) som er tillatt foran interface på første linje og foran hver enkelt metode. Abstract kan også stå foran hver metode, men gir ingen forskjell fordi metodene er abstrakte allikevel (med semikolon og ingen kropp). public abstract class Dyr { protected long antallbein; public abstract void spis(); public abstract void hopp(); public abstract Dyr[] lagflere(); Her går det an å bytte om rekkefølgen av public og abstract uten at det byr på problemer. public kan også utelates gjerne for samtlige klasser da dette ikke sto spesifisert i oppgaveteksten. I de tre neste klassene kan man godt legge inn f.eks. Dyr[] dyr = new Dyr[5]; return dyr; i lagflere-metoden for å få denne til å kompilere (krever return), men dette er selvsagt inget krav da metodene skulle være tomme i følge oppgaven. public class Hund extends Dyr implements Husdyr { //Disse tre metodene må implementeres (med kropp) fordi Hund- //klassen arver fra den abstrakte klassen Dyr. Tilsvarende for //Katt-klassen og Laks-klassen public void spis(){ public void hopp(){ public Dyr[] lagflere(){ //Disse to metodene må implementeres (med kropp) fordi Hund- //klassen implementerer grensesnittet Husdyr. Tilsvarende for //Katt-klassen public void gaainn(){ public void gaaut(){ public void sniff(hund annenhund){ public class Katt extends Dyr implements Husdyr { private int antallliv; public void spis(){ public void hopp(){ public Dyr[] lagflere(){ public void gaainn(){ public void gaaut(){ public void mal(){

Side 5 av 10 public class Laks extends Dyr { private boolean glad; public void spis(){ public void hopp(){ public Dyr[] lagflere(){ public void svoem(){ Oppgave 3: Feilfinning (25%) a) i) for (i=0; i<antall; i++) { Feilen er at i ikke er deklarert, rett setning: for (int i=0; i<antall; i++) { ii) (Bong) allebonger.get(i).skriv();.-operatoren har høyere prioritet enn cast, dermed forsøkes kallet skriv() på noe av type Object (returtypen til get(i)), som ikke har noen metode skriv(). Løsning: må sette parentes, slik at cast blir utført før kallet skriv(): ((Bong) allebonger.get(i)).skriv(); Merk at det derimot ikke er noe galt med variabelen i her (som noen studenter kan ha trodd), dvs. ingen sammenheng mellom feil i) og ii). Dette er to ulike for-løkker, som hver har sin egen i-variabel, og i løkka relatert til ii) er variabelen allerede deklarert på riktig måte. iii) while (this.inneholder(nytttall)); iv) tall[antallhittil] = nytttall; Disse to skyldes begge den samme feilen. Variabelen nytttall er inni {-parentesen i do-while-løkka like foran, og er dermed kun kjent i denne parentesen. Løsning: deklarere variabelen foran do-løkka, og bare bruke den inni: while (antallhittil<25) { int nytttall; do { nytttall = (int) (Math.random()*99); while (this.inneholder(nytttall)); antallhittil++; tall[antallhittil] = nytttall; (Normalt ville vi sette deklarasjonen int nytttall; på ny linje, som ville gi penere kode, men her setter vi den slik for at linjenummer i oppgave b) fortsatt skal stemme). b) i) Exception in thread "main" java.lang.arrayindexoutofboundsexception at Bong.<init>(Bong.java:17) Feilen inntreffer på linje 17 i klassen Bong, dvs. linja tall[antallhittil] = nytttall; (som også er nevnt ifbm oppgave a). Arrayet tall har indekser 0-24, men når antallhittil økes med 1 før arrayet aksesseres (linje 24) vil antallhittil være 25 og dermed for høy på siste runde av løkka. Løsning: bytte om rekkefølgen på de to setningene: tall[antallhittil] = nytttall; antallhittil++;

Side 6 av 10 ii) Exception in thread "main" java.lang.nullpointerexception at BingoSystem.skrivBonger(BingoSystem.java:16) Denne feilen inntreffer på linje 16 i klassen BingoSystem, dvs. linja int antall = allebonger.size(); Grunnen er at konstruktoren for BingoSystem, linje 8, deklarerer en lokal variabel liste heller enn å bare bruke den private instansvariabelen som er deklarert øverst i klassen. Feilen rettes enkelt ved å fjerne deklarasjonsordet ArrayList fra linje 8 og kun skrive allebonger = new ArrayList(); c) i) Det første tallet på bongen blir av og til null, skulle aldri være lavere enn 1. Dette er fordi (int) (Math.random()*99) gir tilfeldige tall 0..98. For å få tilfeldige tall 1..99 i stedet, er det bare å legge til 1, f.eks. nytttall = 1 + (int) (Math.random()*99); ii) iii) hender at samme tall forekommer flere ganger på en bong. Høye tall (f.eks. over 90) forekommer langt sjeldnere enn statistisk forventet, tall over 95 ble overhodet ikke observert selv med et stort antall bonger. Til dels skyldes begge disse problemene samme feil, nemlig linje 25 i klassen Bong: System.out.print(tall[i*4+j] + " "); Her skulle det ha stått: System.out.print(tall[i*5+j] + " "); Med i*4+j vil man aldri få telt indeksen opp til 24 men stoppe på 20, og indeksene 4, 8, 12 og 16 blir gjentatt 2 ganger (som er grunnen til at tallene 22, 41, 53 og 58 gjentas i den viste feil-bongen). Imidlertid er denne rettingen ikke nok mhp feil iii) jfr. gjentaket 57 i den viste feilbongen, som ikke er i posisjon 4, 8, 12 eller 16. Dette skyldes linje 38 i klassen Bong: else svar = false; Metoden inneholder() skal gå igjennom tall-arrayet man har hittil og se om man allerede har brukt det tallet man nå kommer med (int n). For at inneholder() skal returnere true, er det nok at tallet forekommer en gang, hvor som helst i tabellen. Men bak dette kan det godt komme andre tall, når man da skifter svar til true igjen, glemmer metoden at den fant et tall som var likt. Dette rettes ved å droppe elselinja: for (int i=0; i<antallhittil; i++) { if (tall[i] == n) { svar = true; break; //det funker også uten break, bare litt tregere iv) Utskriften blir stygg der ensifrede tall inngår, fordi disse tar mindre plass. Dette kan nok rettes på diverse måter. Det enkleste (iallfall når man ikke har API dokumentasjon tilgjengelig, og dermed ikke har noen fikse konverteringsmetoder å rutte med), er å skrive et blankt tegn foran tallet hvis det er < 10: if (tall[i*5+j] < 10) System.out.print(" "); System.out.print(tall[i*5+j] + " "); Eller enda litt bedre (fordi man ikke gjentar beregningen i*5+j m tilhørende array-oppslag): int uttall = tall[i*5+j]; if (uttall < 10) System.out.print(" "); System.out.print(utTall + " ");

Side 7 av 10 Oppgave 4 (30%) a) UML-diagram. Kan f.eks. gjøres slik. Det kan finnes andre løsninger som er like bra -- det som gjelder er at man klarer å representere den nødvendige informasjonen og fordele oppførsel på en fornuftig måte mellom de ulike klassene. Lur bruk av arv er også en fordel, slik at man slipper å gjenta kode unødig. Instansvariable som er objektreferanser til andre klasser (f.eks. mineskip i Rederi) tegnes ikke i UML-diagrammet her. De ligger innebygget i assosiasjons-pilene, men det skader selvsagt ikke om man tar dem med. Rederi - navn + registrerskip() + registrernytur() + inntektalleskip(): int + finnskiptiltur() <<abstract>> Skip - navn * + inntekt( ): int + kanta(tur t): boolean * * <<abstract>> Tur - fradagnr: int - tildagnr: int + <<abstract>> inntekt(): int + overlapper(annentur: Tur): boolean FraktSkip PassasjerSkip PassasjerTur FraktTur - maxtonn: int + kanta(tur t): boolean - maxpass: int + kanta(tur t): boolean - antpass: int - antnautmil: int + inntekt(): int - anttonn: double - prisprtonn: int + inntekt(): int

Side 8 av 10 I OPPGAVENE B)-D) VAR DET IKKE KRAV OM KOMMENTERING AV KODEN, MEN DET SKADER SELVSAGT IKKE. b) Instansvariable i Rederi, samt registrere ny tur: //i klassen Rederi: private String navn; private ArrayList mineskip; private ArrayList mineturer; //Metoden overlastes (har to varianter) for å både kunne ta inn parametre //for lasteturer og passasjerturer public void registrernytur(int fra, int til, double tonn, int pristonn){ Tur t = new FraktTur(fra, til, tonn, pristonn); mineturer.add(t); public void registrernytur(int fra, int til, int antpass, int nautmil){ Tur t = new PassasjerTur(fra, til, antpass, nautmil); mineturer.add(t); //i klassen Tur: public Tur(int fra, int til){ fradagnr = fra; tildagnr = til; //i klassen FraktTur: public FraktTur(int fra, int til, double tonn, int pris){ super(fra, til); anttonn = tonn; prisprtonn = pris; //i klassen PassasjerTur: public PassasjerTur(int fra, int til, int pass, int mil){ super(fra, til); antpass = pass; antnautmil = mil;

Side 9 av 10 c) inntektalleskip() -- antar her at dette skal regnes ut for alle turer skipet er eller har vært booket til. Andre antagelser er også ok (f.eks. kun fullførte turer, eller kun fremtidige turer), så lenge kandidatens presisering av hva som legges i metoden stemmer overens med koden. //i klassen Rederi: public int inntektalleskip(){ int sum = 0; for (int i=0; i<mineskip.size(); i++){ sum += ((Skip)mineSkip.get(i)).inntekt(); return sum; //i klassen Skip: private ArrayList mineturer; public int inntekt(){ int sum = 0; for (int i=0; i<mineturer.size(); i++){ sum += ((Tur)mineTurer.get(i)).inntekt(); return sum; //i klassen Tur: abstract public int inntekt(); //i klassen FraktTur: public int inntekt(){ return (int) anttonn*prisprtonn; //i klassen PassasjerTur: private static final int milpris = 10; public int inntekt(){ return milpris*antpass*antnautmil;

Side 10 av 10 d) finnskiptiltur() Tar det første og beste skipet som er i stand til å gjennomføre turen, uten noe forsøk på mer intelligent fordeling. Selvsagt lov å være mer ambisiøs også, men neppe tid til store sprell på slutten av eksamen: //i klassen Rederi: public void finnskiptiltur(tur t){ boolean b = false; for (int i=0; i<mineskip.size(); i++){ if (((Skip)mineSkip.get(i)).kanTa(t)){ b = true; break; if (!b) { //dette siste leddet trenger ikke stud. ha gjort avvisteturer.add(t); mineturer.remove(t); //i klassen Skip: public boolean kanta(tur t){ boolean svar = true; for (int i=0; i<mineturer.size(); i++){ if (((Tur)mineTurer.get(i)).overlapper(t)){ svar = false; break; return svar; //i klassen FraktSkip: public boolean kanta(tur t){ boolean svar = ((t instanceof FraktTur) && (((FraktTur)t).hentTonn()<=maxTonn) && super.kanta(t)); if (svar) mineturer.add(t); return svar; //i klassen FraktTur: public double henttonn(){return anttonn; //i klassen PassasjerSkip: public boolean kanta(tur t){ boolean svar = ((t instanceof PassasjerTur) && (((PassasjerTur)t).hentPass()<=maxPass) && super.kanta(t)); if (svar) mineturer.add(t); return svar; //i klassen PassasjerTur: public int hentpass(){return antpass; //i klassen Tur: public boolean overlapper(tur annentur){ return ((this.fradagnr <= annentur.tildagnr) && (this.tildagnr >= annentur.fradagnr));