UNIVERSITETET I OSLO



Like dokumenter
UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Gjennomgang av eksamen H99

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen IN1010/INF1010 våren 2018

Enkle generiske klasser i Java

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

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 Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

"behrozm" Oppsummering - programskisse for traversering av en graf (dybde først) Forelesning i INF februar 2009

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

UNIVERSITETET I OSLO

Om oppgaveteksten på noe punkt er uklar eller upresis, kan du gjøre egne presiseringer. Formulér i så fall disse tydelig i oppgavebesvarelsen din.

UNIVERSITETET I OSLO

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

INF1010 våren januar. Objektorientering i Java

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

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

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Sortering med tråder - Quicksort

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

IN1010 våren januar. Objektorientering i Java

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

UNIVERSITETET I OSLO

INF1010. Grensesnittet Comparable<T>

UNIVERSITETET I OSLO

LO191D/LC191D Videregående programmering

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

2 Om statiske variable/konstanter og statiske metoder.

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

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

UNIVERSITETET I OSLO

Eksamensoppgave Vår 2012 Ordinær eksamen Bokmål. Videregående programmering. Eksamensdato: Studium/klasse: 2. klasse

1 t:n'v'\ekode LO325E. Alle ~vne og trykte. GOd'"j(jent kalkulator

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

UNIVERSITETET I OSLO

Endret litt som ukeoppgave i INF1010 våren 2004

INF106 Objektorientert programmering

UNIVERSITETET I OSLO

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

INF1010 Binære søketrær ++

HØGSKOLEN I SØR-TRØNDELAG

INF Uke 10. Ukesoppgaver oktober 2012

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

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

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

UNIVERSITETET I OSLO

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

INF1010 våren Grensesnitt

Dagens tema INF1010 INF1010 INF1010 INF1010

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

Oblig 4Hybelhus litt mer tips enn i oppgaven

LC191D/LO191D Videregående programmering mai 2010

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010. Rekursjon En rekursiv definisjon av rekursjon, slik det kunne stå i en ordbok: Introduksjon til Rekursiv programmering

UNIVERSITETET I OSLO

EKSAMEN. Objektorientert programmering

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 6. juni 2006 Tid for eksamen: 1430 1730 Oppgavesettet er på 6 sider. Vedlegg: INF1010 Objektorientert programmering ingen Tillatte hjelpemidler: Alle trykte og skrevne Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Sluttkarakteren er et veiet gjennomsnitt av karakterene på alle deloppgavene når man tar hensyn til deloppgavenes prosentmessige vekt. Det er antagelig lurt å lese hele oppgaveteksten (på hver del) før du begynner å svare på oppgavene. Hvis du synes oppgaven er uklar eller ufullstendig på noe punkt, lag, og skriv ned i besvarelsen din, dine egne fornuftige forutsetninger og presiseringer. Del A Kjøretøy og båter (60%) Anta at vi har klassene Bat (båt) og Kjoretoy (kjøretøy) som beskrevet under. Legg merke til at en båt er kjennetegnet av et båtnummer (batnr) som er et heltall, mens et kjøretøy er kjennetegnet av et kjøretøynummer (kjnr) som er en tekst (String). class Bat { private int batnr; Bat (int nr) {batnr = nr; public int hentbatnr() {return batnr; class Kjoretoy { private String kjnr; Kjoretoy (String nr) {kjnr = nr; public String hentkjnr() {return kjnr; (Fortsettes på side 2.)

Eksamen i INF1010, 6. juni 2006 Side 2 Oppgave 1 (vekt 5%) Skriv subklassen SeilBat (seilbåt). En seilbåt er i tillegg til at det er en båt, kjennetegnet av en størrelse på seilet (seilareal). Når en seilbåt opprettes skal (i tillegg til nummeret) seilarealet være parameter. På samme måte som f.eks. nummeret kan hentes ut av objekter av klassene Bat og Kjoretoy, skal seilarealet kunne hentes ut av seilbåter. Oppgave 2 (vekt 5%) Skriv grensesnittet (interface) Motorisert. Noe som er motorisert er kjennetegnet av et antall hestekrefter (anthk). Oppgave 3 (vekt 5%) Skriv subklassene MotorKjoretoy og MotorBat med de opplagte betydningene (motorisert kjøretøy og motorisert båt). Når et motorkjøretøy eller en motorbåt opprettes, skal også (i tillegg til nummeret) antall hestekrefter være parameter. Oppgave 4 (vekt 5%) Lag et grensesnitt (interface) Element, som gjør at objekter kan settes inn i en enkelkjedet liste. Husk: For å sette ting inn i en enkeltkjedte liste trengs bare en peker til neste objekt i listen. Husk også at et grensesnitt (interface) bare kan ha metoder. Les gjerne de neste oppgavene (5, 6 og 7) før du svarer på denne oppgaven. Oppgave 5 (vekt 10%) Skriv en klasse FIFO med metoder med navn settinn og taut, som setter inn og tar ut objekter av en enkel liste i FIFO-rekkefølge (FIFO: First Inn, First out, dvs. at det elementet som tas ut er det som har ligget lengst i listen). Alle objekter som spiller rollen Element skal kunne settes inn og tas ut (dvs. alle objekter som implementerer grensesnittet Element). Klassen skal inneholde en peker som heter forste som peker på det objektet i listen som har ligget der lengst, og en peker som heter siste som peker på det objektet i listen som ble satt inn sist. Når både forste og siste peker på null er listen tom. Ta ut av en tom liste returnerer null. Oppgave 6 (vekt 5%) Skriv subklassen ListbarMK (Listbart MotorKjøretøy) som beskriver motorkjøretøyer som kan settes inn i FIFO-listen over, og subklassen ListbarMB (Fortsettes på side 3.)

Eksamen i INF1010, 6. juni 2006 Side 3 (Listbar MotorBåt) som beskriver motorbåter som kan settes inn i en FIFOliste. Oppgave 7 (vekt 10%) Skriv klassen MotorFIFO som en subklasse av klassen FIFO. Klassen MotorFIFO skal bare kunne inneholde objekter som både spiller rollene Element og Motorisert. Du skal redefinere metoden settinn på enkleste måte for å sikre dette. Dvs. hvis metoden settinn prøver å sette inn noe som ikke spiller rollen Motor, skal ingen ting skje (objektet blir ikke satt inn). Du skal også skrive metoden finnstorst som går gjennom listen og finner objektet med flest hestekrefter. Metoden skal returnere en peker (av typen Motorisert) til dette objektet. Oppgave 8 (vekt 5%) De som bruker klassen MotorFIFO liker ikke at settinn ikke gir noen beskjed når man prøver å sette inn et objekt som ikke er motorisert. Du skal derfor skrive en subklasse til klassen MotorFIFO som skal hete GodMotorFIFO. Klassen GodMotorFIFO skal inneholde metoden settinnmotorisert med en parameter av typen Motorisert. Metoden settinnmotorisert skal kaste et egendefinert unntak hvis det objektet som forsøkes settes inn ikke også spiller rollen Element. Deklarer det egendefinerte unntaket, og skriv klassen GodMotorFIFO med metoden settinnmotorisert. Oppgave 9 (vekt 10%) Lag et hovedprogram (main) som oppretter et listbart motorisert kjøretøy med nummer DE12345 og 150 hestekrefter, og en listbar motorbåt med nummer 654321 og 100 hestkrefter. Legg disse to objektene inn i en FIFOliste av typen GodMotorFIFO. Resten av programmet du skriver under skal virke uansett i hvilken rekkefølge du setter de to objektene inn i FIFO-listen. Skriv koden som setter inn, slik at om objekter som settes inn ikke er av typen Element så vil unntaksbehandlingen skrive Ikke element (ved hjelp av System.out.println). Kall så på metoden finnstorst, og skriv ut maksimalt antall hestekrefter i listen, også ved hjelp av System.out.println. Ta til slutt ut et element av listen og skriv ut nummeret (et heltall hvis det er en båt og en String hvis det er et kjøretøy), også ved hjelp av System.out.println. Slutt på del A om kjøretøy og båter (Fortsettes på side 4.)

Eksamen i INF1010, 6. juni 2006 Side 4 Del B Mosaikk og mønstre (40%) Mønsteret for en flislagt flate, m x n kvadratiske fliser er representert i en 2-dimensjonal array int [][] mosaikk. Verdien 0 representerer en hvit flis/rute, mens en annen verdi står for en svart flis/rute. Rutene skal tegnes svart eller hvit, med en synlig linje rundt hver rute (flis). Nedenfor finner du et ufullstendig program som tegner ut mosaikken på skjermen ved hjelp av de grafiske pakkene awt og swing. Du skal lage en konstruktør og en metode i dette programmet. k er antall kolonner i mosaikken r er antall rader i mosaikken bpf bredden og høyden (i bildpunkter) for en flis (rute) i mosaikken. Fra vinduskanten til flismosaikken skal det være en avstand på rm bildepunkter. Det vil si at øverste venstre hjørne av øverste venstre flis tegnes i punktet (rm, rm), og vinduet blir 2rm bredere og 2rm høyere enn flismosaikken. Metoden lagmosaikk (som du ikke skal programmere) fyller mosaikkmønsteret inn i mosaikk[][]. Her er det ufullstendige programmet: class Flate extends JPanel { final int SVART = 1, HVIT = 0; int k, r, bpf, rm; int [][] mosaikk; Flate(... ) { <oppretter vindu og mosaikk-array med bare svarte fliser> public void paintcomponent(graphics g) { <tegner mosaikk ut i vindu> void lagmosaikk(); // Her legges mønsteret inn i mosaikk... // NB! Denne skal du ikke lage class VisMosaikk extends JFrame { VisMosaikk() { settitle("vis mosaikk"); JPanel panel = new Flate(... ); panel.lagmosaikk(); Container lerret = getcontentpane(); lerret.add(panel); (Fortsettes på side 5.)

Eksamen i INF1010, 6. juni 2006 Side 5 setdefaultcloseoperation(jframe.exit_on_close); pack( ); setvisible(true); public static void main(string[] args) { new VisMosaikk(); Oppgave 10 (vekt 15%) Skriv konstruktøren Flate med parametre, og metoden paintcomponent (se kommentaren i programskissen). Oppgave 11 (vekt 25%) Lag en metode void vertpattern(int i, int e1, int e2) som skriver ut et vertikalt mønster etter følgende oppskrift: skriv ut i -er på en ny linje lag et (indre) verikalt mønster (eventuelt tomt) med et rekursivt kall på vertpattern. skriv ut i -er på en ny linje For å skrive ut en linje med -er er metoden skrivstjerner (int antall) gitt. vertpattern skal skrive ut ved å kalle på denne. Parametrene (i, e1 og e2) skal ha følgende effekt: Når i er forskjellig fra e1 (fase 1), skal i økes/minkes med 1 (for hvert kall) til i blir lik e1. Hvis i er lik e1, men forskjellig fra e2 (fase 2), skal vi fortsette å endre verdien av i med 1 (for hvert kall) til i blir lik e2. Hvis i er lik e1 er lik e2, er rekursjonsbunnen nådd. Legg merke til at rekursjonen har to faser: Først forandres i til i blir lik e1. I den andre fasen blir i forandret til i er lik e2. Metoden må skille mellom fasene ved å bruke verdien i parametrene. Hint: En måte å skille mellom de to fasene, er å la i og e1 fortsette å ha samme verdi i den andre fasen. Det kan forutsettes at verdiene for parametrene (i, e1 og e2) aldri er negative. Resultatet skal bli en vertikal bord. For vertpattern(2, 5, 1) (se eksempler nedenfor) skal metoden starte med 2 stjerner, øke til 5 stjerner og så minke til 1 stjerne. Tilslutt gjentas det hele baklengs, slik at det blir symmetrisk. (Fortsettes på side 6.)

Eksamen i INF1010, 6. juni 2006 Side 6 vertpattern(2, 5, 1) skal gi: vertpattern(3, 3, 3) skal gi: vertpattern (3, 0, 0) skal gi: og vertpattern (1, 1, 3) skal gi Kommentar: Kun eksemplet med parametre (3, 0, 0) skal ha (to) blanke linjer. Oppgavesett slutt. Lykke til! Stein Michael Storleer og Stein Gjessing