UNIVERSITETET I OSLO

Like dokumenter
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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

Endret litt som ukeoppgave i INF1010 våren 2004

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

TDT4100 Objektorientert programmering

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

UNIVERSITETET I OSLO

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

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

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

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

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

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

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

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

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

TDT4100 Objektorientert programmering

INF1000 Metoder. Marit Nybakken 16. februar 2004

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

EKSAMEN. Objektorientert programmering

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

INF1000 Prøveeksamen Oppgave 7 og 9

INF106 Objektorientert programmering

Oblig4 - forklaringer. Arne og Ole Christian

Det matematisk-naturvitenskapelige fakultet

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Oblig 4Hybelhus litt mer tips enn i oppgaven

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

Enkle generiske klasser i Java

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Prøveeksamen inf november Arne Maus og Ole Christian Lingjærde

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

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

INF1000 Eksamen 2014 (modifisert)

INF1000: noen avsluttende ord

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

UNIVERSITETET I OSLO

Eksamensoppgaver 2014

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

Forelesning inf Java 4

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Informasjon Eksamen i IN1000 høsten 2017

Gjennomgang av eksamen H99

UNIVERSITETET I OSLO

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

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

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

Informasjon Prøveeksamen i IN1000 høsten 2018

Transkript:

Kandidatnummer: Bokmål UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Torsdag 5. desember 2013 Tid for eksamen : 14.30 til 18.30 4 timer Oppgavesettet er på : 5 sider Vedlegg : Ingen Tillatte hjelpemidler : Alle trykte og skrevne Kontroller at oppgavesettet er komplett, og les nøye gjennom oppgavene før du løser dem. Poengangivelsen øverst i hver oppgave angir maksimalt antall poeng. Du kan legge dine egne forutsetninger til grunn og gjøre rimelige antagelser, så lenge de ikke bryter med oppgavens "ånd". Gjør i så fall rede for disse forutsetningene og antagelsene. Svarene skal skrives på gjennomslagspapir. Skriv hardt nok til at besvarelsen blir mulig å lese på alle gjennomslagsarkene, og ikke legg andre deler av eksamensoppgaven under når du skriver. Du beholder selv underste etter levering av de to øverste til eksamensinspektøren. Nummerer sidene, og husk å skrive kandidatnummeret ditt på besvarelsen. Oppgave 1 (3 poeng) a) Hvor mange double-verdier er det plass til i denne 2D-arrayen: double[][] tabell = new double[3][9]; b) Hva blir skrevet ut her? String txt = "Arne"; System.out.println(txt.substring(txt.indexOf("r"),3); c) Hvilken verdi har level[2] etter at denne setningen er utført: String[] level = {"Small", "Medium", "Large"}; 1

Oppgave 2 (7 poeng) Hvilke av disse programsetningene er lovlige i Java (vi antar at de er plassert inni en metode og at det ikke er deklarert andre variabler med samme navn i metoden)? a) int i; int x=i; b) int t = new Integer(7).intValue(); c) String tt = 5 + ""; d) int x = 2; int y = 2x; e) for (int j = 1.5; j < 12; j++) j++; f) boolean ok1 = (2 > Math.sqrt(4.4)) + 1; g) boolean ok2 = 2 > Math.sqrt(4.4) + 1; Oppgave 3 (10 poeng) a) Hva skrives ut her: String sekv = "0"; for (int i=0; i<6; i++) { sekv = sekv + i; } System.out.println("sekv = " + sekv); b) Hva skrives ut her: int prod = 1; for (int i=0; i<20; i++) { prod = prod * (10-i); } System.out.println("prod = " + prod); Oppgave 4 (20 poeng) Skriv en metode med en char-array som parameter som vi tenker oss inneholder eksamenskarakterene til et antall studenter. Eksempel: hvis ti studenter har tatt eksamen, kunne arrayen inneholde verdiene 'B', 'C', 'B', 'B', 'D', 'A', 'C', 'F', 'C', 'C'. Metoden skal telle opp hvor mange ganger hver karakter forekommer i arrayen og skrive ut resultatet på skjermen som en tabell. Med karakterene ovenfor, kunne tabellen sett ut som nedenfor. Metoden skal ikke returnere noen verdi. Du skal selv finne på et passende navn på metoden. Karakter Antall A 1 B 3 C 4 D 1 E 0 F 1 2

Oppgave 5 (10 poeng) Du skal nå skrive en metode som har tre parametre av typen double og som returnerer en verdi av typen double. Metoden skal finne den minste av de tre parameterverdiene og returnere denne. Hvis metoden heter minst, så skal f.eks. setningen double v = minst(3, 1.3, 2.6); føre til at variabelen v blir tilordnet verdien 1.3. Oppgave 6 (8 poeng) Du skal skrive en metode med en int-array som parameter og som returnerer en int-array. Metoden skal opprette en ny int-array som er dobbelt så lang som den i parameteren, kopiere over verdiene i parameter-arrayen i første halvdel av den nye arrayen (og la de resterende verdiene i den nye arrayen være 0), og til slutt returnere den nye arrayen. Oppgave 7 (8 poeng) a) Skriv binærtallet 1001 som et desimaltall. b) Skriv desimaltallet 24 som et binærtall. c) Skriv summen av de to binærtallene 101 og 110 som et binærtall. d) Skriv det heksadesimale tallet 3F som et desimaltall. Oppgave 8 (20 poeng) Skriv en metode: String mintrim(string s) {..}med en parameter av typen String og som returnerer en verdi av typen String, og som fjerner alle blanke tegn i starten og slutten av teksten i parameteren. Hvis parameteren bare inneholder blanke tegn, skal metoden returnere en tom tekststreng (dvs ""). Her er et eksempel på hvordan metoden skal virke: String txt1 = " Ole Plassen "; String txt2 = mintrim(txt1); // Nå er txt2 tekststrengen "Ole Plassen" Merk: det finnes en metode trim() i klassen String; den skal ikke benyttes i din løsning. Oppgave 9 (50 poeng + 20 poeng for pkt. h) Fredrik Olsen er rik og glad i biler, og han eier for tiden ni stykker: Tre Volvo V60 2010-modeller kjøpt i 2010, hver for kr. 460 000. Tre Skoda Octavia 2009-modeller kjøpt i 2012 for kr.150 000, 170 000 og 185 000. Tre Fiat 500 2013-modeller kjøpt i 2013, hver for kr. 205 000. Alle biler ble kjøpt inn 1. januar i anskaffelsesåret. Fredrik eier i tillegg en stor garasje med plass til ti biler. Han bruker bilene selv, og leier dem også ut. I denne oppgaven skal du lage et lite objektorientert system som representerer Fredriks biler og garasje, og utleie av bilene. Oppgaven er konstruert for å teste forståelse av grunnleggende objektorienterte mekanismer, og er naturligvis ikke ment å være et realistisk eksempel på bruk av objektorientert programmering. Svar på deloppgavene på neste side (du kan løse dem hver for seg eller levere en felles kode som besvarer alle de punktene du har skrevet kode for). 3

a) Lag et UML-diagram som representerer datamodellen, med klassene Garasje, Bil, LeieAvtale og Person: Objekter av klassen Garasje (det skal bare lages ett slikt objekt) skal ha oversikt over alle bilene ved hjelp av en Bil-array og en int-variabel som angir antall biler Fredrik eier. Objekter av klassen Bil skal holde rede på bilmerke (String), bilmodell (String), årsmodell (int), innkjøpsår (int) og innkjøpspris (int). For eksempel kan bilmerke være "Volvo", bilmodell "V60", årsmodell 2010, innkjøpsår 2010, og innkjøpspris 460000. Objekter av klassen LeieAvtale skal holde oversikt over utleier (Person) og leietaker (Person). Merk at utleier i denne oppgaven alltid er Fredrik Olsen (som har fødselsnummer 201283 53258). I tillegg skal objekter av klassen LeieAvtale inneholde månedsleie i kroner (int) og fra-dato (int-array av lengde 3) og til-dato (int-array av lengde 3). Datoene er i form av dag (1..31), måned (1..12) og år (f.eks. 2013). Eksempel: hvis en leieavtale starter 4. desember 2011 og fra-datoen ligger i en array int[] fradato, så vil fradato[0] ha verdien 4, fradato[1] ha verdien 12 og fradato[2] ha verdien 2011. Objekter av klassen Person skal inneholde fullt navn (String) og fødselsnummer (String). b) Skriv klassene Bil og Person. Begge skal inneholde konstruktører med parametre, og som gir verdier til objektvariablene. c) Skriv klassen Garasje. Lag en konstruktør uten parametre som lager objekter for hver av de ni bilene Fredrik eier og legger dem inn i Bil-arrayen (du trenger ikke å skrive koden for å legge inn alle ni biler, det holder at du viser det for et par av bilene og skriver en kommentar i programmet om at de andre kan legges inn på tilsvarende måte). d) Skriv klassen LeieAvtale med en konstruktør med parametre, og som gir verdier til objektvariablene. e) Lag en objektmetode int suminnkjopspris() som skal ligge i klassen Garasje, og som skal summere og returnere summen av innkjøpsprisene til de bilene Fredrik eier. f) Lag en objektmetode boolean kjopbil (String merke, String modell, int aarsmodell, int innkjopsaar, int pris) i klassen Garasje som legger til en bil i Fredriks bilsamling i garasjen. Tips: Test først om det er plass i garasjen og returner false hvis garasjen nå er full (og da legges den nye bilen ikke inn), men returner true hvis det er plass (og da legges bilen inn). g) Lag en enkel klasse class Oppgave9 som inneholder en main-metode som oppretter et objekt av klassen Garasje. Du trenger ikke å lage en kommandoløkke eller kode som kaller de andre metodene du har skrevet. h) Den 1. januar hvert år ønsker Fredrik å regne ut den samlede verdien av alle bilene sine. Han kunne bare ha summert sammen innkjøpsprisene til alle bilene, men da tas det ikke hensyn til at bilene blir eldre og mer slitt. I stedet nedskriver Fredrik verdien av sine biler med 10% hver år, slik at f.eks. en bil kjøpt i 2011 for 100 000 kroner i 2012 antas å ha en verdi av 90 000 kroner og i 2013 antas å ha en verdi av 81 000 kroner. Nedskriving av verdi fra ett år til neste kan vi gjøre ved å multiplisere verdien det første året med 0.9. F.eks. får vi tallet 81 000 ovenfor fordi 90 000 * 0.9 = 81000. Skriv en objektmetode int verdiallebiler(int aar) som beregner den samlede verdien av alle Fredriks biler det angitte året. Husk å bare ta med i beregningene biler som Fredrik eide i det året det spørres om (parameteren aar kan godt være et tidligere år eller et senere år enn i år). 4

Oppgave 10 (20 poeng) Fredrik Olsen har også en annen idé: han ønsker å lage en datingside «Partnertreff» på Internett med chatte-muligheter, og hvor han mot et honorar vil knytte kontakt mellom to mennesker. De som melder seg på systemet må betale en månedlig medlemsavgift på kr. 100, og til gjengjeld får de hver måned fire gratis søk etter en partner. For å få nok mennesker til å melde seg på, er første måned gratis. Fredrik ønsker ikke å diskriminere noen, så han vil operere med følgende 4 grupper: - Mann søker kvinne - Kvinne søker mann - Mann søker mann - Kvinne søker kvinne De opplysningene han vil innhente er først noen obligatoriske (som alle må svare på): - Navn og adresse - Alder og eget kjønn - Hvilket kjønn man søker kontakt med - Mobiltelefonnummer - E-postadresse Frivillige opplysninger er: - Bilde - Hobby - Foretrukket alder på partner - Formål: Ekteskap eller bare date - Nåværende sivile status: gift, samboer eller single. Du skal nå svare på følgende spørsmål: a) Er det tillatt å samle inn slike opplysninger om personer? Fredrik hevder at svaret er ja, siden det allerede er mange liknende dating-sider på nettet. Hva mener du? Kan han uten videre opprette denne tjenesten eller må han få en tillatelse evt. av hvem. b) Siden Fredrik Olsen også driver med bilutleie (se Oppgave 9), vil han sende alle sine kunder på «Partnertreff» et godt tilbud på leie av bil. Er det lovlig? c) Fredrik er veldig nøye, så han oppbevarer på en egen fil alle søk etter partnere og hva de evt. har chattet om med andre kunder i systemet. Drøft om og evt. når dette kan være lovlig. Begrunn svarene med henvisninger til relevante paragrafer i lov om personvern. 5