UNIVERSITETET I OSLO

Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Gjennomgang av eksamen H99

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I)

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Teorifagb, hus 3, og og Adm.bygget, Aud.max og B.

UNIVERSITETET I OSLO

Obligatorisk oppgave 4 i INF1010, våren 2014: "Leger og resepter" Versjon 1.1

EKSAMEN OBJEKTORIENTERT PROGRAMMERING Alle trykte og skrevne. Java API dokumentasjon er tilgjengelig lokalt på hver maskin.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppsummering del 2. Læringsmål Viktigste Java-elementer Eksamen Til sist. Læringsmål Hovedpunkter Tilbakemelding Eksamen. IN1010 uke 17 våren 2019

INF Innleveringsoppgave 6

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

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Enkle generiske klasser i Java

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: JA / NEI Hvis JA: ca. kl. 10:30

UNIVERSITETET I OSLO

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Eksamen IN1010/INF1010 våren 2018

INF1000: Forelesning 7

INF1010. Stein Michael Storleer (michael) Lenkelister

UNIVERSITETET I OSLO

Introduksjon til objektorientert programmering

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

UNIVERSITETET I OSLO

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

UNIVERSITETET I OSLO

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

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

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

INF1000: Forelesning 7. Konstruktører Static

INF1010. Grensesnittet Comparable<T>

EKSAMENSOPPGAVE. Ingen. Robert Pettersen. Eksamen i: INF Innf. i progr. og datam. virkem. Dato: Tirsdag 5. desember 2017

Liste som abstrakt konsept/datatype

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

IN1010 våren januar. Objektorientering i Java

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

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

Inf1010 oppgavesamling

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

INF våren 2017

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

UNIVERSITETET I OSLO

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitskaplege fakultet Eksamen i INF1010 Objektorientert programmering Eksamensdag: 9. juni 2011 Tid for eksamen: 09.00 15.00 Oppgåvesettet er på 5 sider. Vedlegg: 4 (ein stift, 23 sider) Tillatne hjelpemiddel: Alle trykte og skrevne Kontroller at oppgåvesettet er komplett før du tek til å svare på spørsmåla. Les alle oppgåvene før du byrjer å skrive. Noter deg kva som er uklårt i oppgåva, slik at du er budd til å spørje når faglærar kjem rundt. (Runden starter ein time etter at eksamen byrjer.) Dersom du synest oppgåva er uklår eller ufullstendig på noko punkt, lag og skriv ned i svaret ditt, dine eigne fornuftige føresetnader og presiseringar. Eksamenssettet har 3 delar. Del A og B kan løyses uavhengig av kvarandre. Del C løyses naturleg etter A og B. I del A skal du lage ein behaldar for objekt. Behaldaren inneheld ein tabell som har ein viss likskap med Javas HashMap. I del B skal du lage eit program som lager ein modell for eit hierarki av transportreiskap. I del C skal du lage objekt av klassar frå del B til å leggje inn i/hente ut frå behaldaren frå del A. Slutkarakteren er eit vegd gjennomsnitt av karakterene på alle oppgåvene når ein tek omsyn til den prosentvise vekta til oppgåvene. Del A Du skal i denne delen lage ein klasse som skal vere ein behaldar (også kalt ein konteinar eller ei mengd) som kan take vare på mange objekt. Klassen skal heite EksamensHash og skal implementere grensesnittet Collection (sjå vedlegget), og ingen andre grensesnitt. Du skal bruke generiske typar. Av metodane i Collection skal du berre implementere add, clear, remove contains, isempty, iterator og size (dei andre kan du utelate eller la vere tomme). Klassen EksamensHash skal innehalde ein hashtabell (ein array), og konstruktøren til klassen skal ha nøyaktig ein parameter som er lengda til denne tabellen. I det fylgjande gjeres det greie for kva ein hashtabell er. Klassen EksamensHash skal bruke metodane hashcode og equals frå klassen Object for å lagre og finne igjen objekt. Du skal rekne med at to (Framhald på side 2.)

Eksamen i INF1010, 9. juni 2011 Side 2 objekt som lagres er like om metoden equals returnerer true. Når klassen EksamensHash skal lagre eit objekt rekner han ut objektets hashverde ved fyrst å kalle hashcode-metoden til objektet. Ut frå det verdet som då returneres skal det reknes ut eit nytt verde i intervallet 0 til lengda til hashtabellen minus ein (f.eks. ved å rekne modulo tabellengda (t.d slik: nyverde = verde % tabellengd)). I det fylgjende kaller vi det nye verdet for hashverdet til objektet. Elementene i hashtabellen skal vere peikarar til fyrste objekt i ei lenka liste. Når behaldaren er tom vil heile hashtabellen innehalde null. Når programmet skal leggje inn eit nytt objekt finn det fyrst hashverdet til objektet, og bruker det som indeks i hashtabellen. Er hashtabellen tom (peiker på null) på denne staden, leggjast objektet som skal lagrast inn som det fyrste objektet i ei lenka liste ut frå denne staden i tabellen. Dersom det allereie er lagt inn eit eller fleire objekt med det same hashverdet, vil det allereie finnast ei liste av objekt ut frå dette stedet i tabellen. Programmet skal då leggje objektet inn i denne lista (på ein vilkårleg stad). Du skal ikkje bruke nokre av dei ferdiglagde klassane i Javabiblioteket, men sjølv programmere dette ved hjelp av ein eller fleire arrayer og peikarar. Å bruke arrayer saman med generiske typar i Java er litt fiklete, men det skal du ikkje take omsyn til i denne oppgåva. (Man kan m.a. bruke reflection, men dette er ikkje pensum i INF1010). Du skal derfor bruke arrayer i denne oppgåva som om det er mogleg å lage alle slags arrayer inne i ein generisk klasse. Oppgåve 1 (vekt 10%) Bestem deg for den datastrukturen som trengs i klassen EksamensHash, og programmer denne, konstruktøren til klassen og metodane size, isempty og clear. Før du svarer på denne oppgåva lyt du se på kva for datastruktur som er best egna når du skal implementere alle metodane i klassen. Gjer kort greie for kva for invariante tilstandspåstandar (invariantar) som gjeld for datastrukturen. Teikn datastrukturen slik han vil vere etter at du har lagt inn nokre objekt (f.eks. 7). Nokre objekt i teikninga di lyt ha same hashverde, mens andre lyt ha ulike verde. I oppgåvene 2, 3, 4 og 5 skal du berre behandle unnatak der det eksplisitt er bede om det. Oppgåve 2 (vekt 5%) Skriv metoden add i klassen EksamensHash. Du kan gå ut frå at det er lov å ha fleire like objekt i behaldaren, men det er ikkje tillate å lagre verdet null. Om verdet på parameteren til add er null skal metoden kaste eit unnatak slik det er definert i grensesnittet Collection. (Framhald på side 3.)

Eksamen i INF1010, 9. juni 2011 Side 3 Oppgåve 3 (vekt 5%) Skriv metoden contains i klassen EksamensHash. Oppgåve 4 (vekt 10%) Skriv metoden remove i klassen EksamensHash. Oppgåve 5 (vekt 25%) Skriv metoden iterator i klassen EksamensHash og alt du treng i samband med det. Du skal berre programmere metodane hasnext og next i iteratoren, ikkje metoden remove. Gjer greie for dei invariante tilstandspåstandane (invariantar) som gjeld for den datastrukturen du lager for å iterere gjennom behaldaren. Del B Transportselskapet Hjerter har mange transportreiskap, m.a. tog, busser, bilar, drosjer, trikkar, T-banar, pasasjerbåtar og ferjer. Du skal i denne delen lage eit javaprogram som modellerer transportreiskaphierarkiet. Transportreiskapane delast naturleg i tre hovudgrupper etter kvar dei kjøyrer: på skener (namn i programmet: skenetrskp) på vatnet (namn i programmet: vatntrskp) på vei (namn i programmet: veitrskp) Alle transportreiskap har ein eintydig identifikator (tmid) av datatypen String. To transportreiskapobjekt er like (metoden equals skal returnere true) dersom objekta er av same hovedgruppe og objekta har lik tmid. Alle transportreiskap har også ei bestemd vekt og ein maksfart. Dei skenegåande transportreiskapane delast igjen i to: trikk Tbanetog Eit skenegåande transportreiskap består av ei eller fleire vogner kobla saman, eit vognsett. Kvar vogn har ein unik vognid med tre teikn, og ei bestemd vekt. Eit slikt samankobla sett vogner skal reknast som ein transportreiskap, dvs. skal ha berre ein tmid. Denne er samansetninga av vognumra i same rekkjefylge som vognene som utgjer vognsettet. Summen av vekta til vognene er vekta av transportreiskapen. I Hjerter brukes dei same vognene til trikkar og Tbanetog. Ein trikk har enten to eller tre vogner. Eit Tbanetog har enten tre eller seks vogner. (Framhald på side 4.)

Eksamen i INF1010, 9. juni 2011 Side 4 For trikkar varierer maksfarten etter den samla vekta til vognsettet. Nærmere bestemd 50 km/t minus ein km/t pr tonn over 8 tonn. For Tbanetog er maksfarten 55 km/t. Nokre, men ikkje alle, trikkar og Tbanetog kan leiast ut (chartres). For chartertrikkar (og -tog) finnest mange metodar som sett og henter informasjon om chartringen. I programmet her skal du for einfeldes skuld berre lage ein metode som gjer det mogleg å hente ut informasjon om kvar vognsettet er parkert (ein String). Oppgåve 6 (vekt 25%) Skriv eit klassehierarki/javaprogram som kjem desse kravene i møte. Det skal vere mogleg å lage objekt som representerer trikk, Tbanetog, chartertrikk og chartertog. Bortsett frå skenegåande transportreiskap held det å lage klassar berre for hovedgruppene vatntrskp og veitrskp. Det skal ikkje vere mogleg å endre ein tmid. Alle attributt som evt. trengs skal manipulerast ved hjelp av hente- og settemetodar. Bruk subklassar, abstrakte klassar, grensesnitt og virtuelle metodar slik at klassedefinisjonane gjer at den underliggjende modellen for Tbanetog og trikkar blir mest mogleg føremålstenleg. Implementer equals (frå class Object) slik gjort greie for ovanfor. Implementer også metoden hashcode (frå class Object) slik at han for to objekt med same identifikator returnerer same verde (Klassen String har ein metode int hashcode() som gjev akkurat det vi er ute etter). Alle transportreiskapobjekt skal kunne peikast på av ein variabel av type Transportreiskap (jf. del C). Oppgåve 7 (vekt 5%) Skriv metoden Del C EksamensHash<Transportreiskap > legginnieh ( Object [ ] o b j e k t l i s t e, EksamensHash<Transportreiskap > eh ) { } Parameteren objektliste er ein peikar til ein array av objekt, nokre av dem representerer transportreiskap, nokre kan vere null. Metoden skal gå gjennom arrayen og leggje alle transportreiskapobjekta inn i behaldaren peikt på av parameteren eh. Metoden skal returnere behaldaren etter at transportreiskapobjekta er lagt inn. Objekt som ikkje representerer transportreiskap skal neglisjerast. Oppgåve 8 (vekt 5%) Skriv metoden void skrivutnokoinfo ( EksamensHash<Transportreiskap > eh ) { } (Framhald på side 5.)

Eksamen i INF1010, 9. juni 2011 Side 5 Metoden skal innehalde ei for-lykkje som går igjennom eh og skriv ut identifikatoren, vekt og maksfart til dei transportreiskapane som er i behaldaren. Dersom transportreiskapen gjeng på vatn skal maksfarten skrivast i knop ved å multiplisere farten med 0,54. For transportreiskap som kan chartrast skal info om kvar det er parkert (ein String) skrivast ut. Oppgåve 9 (vekt 10%) Skriv ein klasse Testprogram som har ein konstruktør og ein main-metode. Denne klassen skal saman med programma frå del A og B og dei to metodane over utgjere eit fullstendig program. I konstruktøren opprettes 6 vognobjekt (frå del B) med identifikatorer/vekt lik a45/8745, a78/9450, k45/9456, c74/10307, q89/9890 og x03/8990. Videre skal konstruktøren lage 2 trikkeobjekt, 1 Tbanetogobjekt, 1 chartertrikkobjekt og 1 chartertogobjekt satt saman av nokre av desse vognene. For einfeldes skuld kan du gå ut frå at same vogn kan brukast i fleire vognsett. Lag ein Object array med lengd 9 og sett peikarane i indeks 0 til 4 i arrayen til å peike på dei 5 objekta. La indeks 5 ha ein peikar som er null og la dei tre siste peike på objekt som ikkje er transportreiskap. Lag ein EksamensHash-behaldar for transportreiskap med parameteren 100. Kall til slutt metodane frå oppgåve 7 og 8 med arrayen og behaldaren som parametre. Oppgåvesett slutt. Lukke til! Stein Gjessing og Stein Michael Storleer 4 vedlegg: 1. Interface Collection frå Javas API, 10 sider 2. Interface Iterator frå Javas API, 2 sider 3. class Object frå Javas API, 10 sider 4. litt meir om hashtabellar og modulooperatoren, 1 side