EKSAMENSOPPGAVE. : INF-1400 Objektorientert programmering. Oppgavesettet er på 5 sider inklusiv forside

Like dokumenter
EKSAMENSOPPGAVE. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: NEI

EKSAMENSOPPGAVE. Adm.bygget, rom K1.04 og B154 Ingen. Vil det bli gått oppklaringsrunde i eksamenslokalet? Svar: JA / NEI Hvis JA: ca. kl.

EKSAMENSOPPGAVE. INF-1400 Objektorientert Programmering. Dato: Tirsdag 23. mai Klokkeslett: Kl 17:00-21:00. Adm. bygget, Aud.

EKSAMENSOPPGAVE. INF-1400 Objektorientert Programmering. Dato: Torsdag 29. september Klokkeslett: Kl 09:00-13:00.

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

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

EKSAMENSOPPGAVE. Eksamen i: INF-1400 Objektorientert programminering Dato: Mandag 26. mai 2014 Tid: Kl 09:00-13:00 Sted: Adm.

Løsningsveiledning for eksamensoppgaven i INF

TDT4100 Objektorientert programmering

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE I INF-1100

Informasjon Prøveeksamen i IN1000 høsten 2018

INF1000 Eksamen 2014 (modifisert)

Informasjon Eksamen i IN1000 høsten 2017

EKSAMEN. Objektorientert programmering

Etter uke 9 skal du. Introduksjon til objektorientert programmering. Innhold. Klasser som abstraksjoner

EKSAMENSOPPGAVE / EKSAMENSOPPGÅVE

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

UNIVERSITETET I OSLO

Eksamensoppgaver 2014

TDT4100 Objektorientert programmering

HØGSKOLEN I SØR-TRØNDELAG

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

Innhold uke 9. Objektorientert programmering i Python. Om ukens pensum. Referanser og objekter Tema: Mer komplekse strukturer

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

INF1000 Eksamen 2014 (modifisert)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Et større programeksempel. Hvordan løse et reelt problem med en objektorientert fremgangsmåte

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. Eksamen i: STA Brukerkurs i statistikk 1 Mandag 03. juni 2013 Kl 09:00 13:00 Åsgårdvegen 9

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

UNIVERSITETET I OSLO

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

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

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

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

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

HØGSKOLEN I SØR-TRØNDELAG

TDT Prosedyre- og objektorientert programmering

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

Endret litt som ukeoppgave i INF1010 våren 2004

UNIVERSITETET I OSLO

Stjerner og galakser Nybegynner Python PDF

UNIVERSITETET I OSLO

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

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

Eksamen Objektorientert Programmering 2013

81,9(56,7(7(7,26/2 'HWPDWHPDWLVNQDWXUYLWHQVNDSHOLJHIDNXOWHW

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

UNIVERSITETET I OSLO

EKSAMEN. Emne: Webprogrammering med PHP (kont.) Webprogrammering 1 (kont.) Eksamenstid:

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE Njål Gulbrandsen / Ole Meyer /

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Tittel Objektorientert systemutvikling 2

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

EKSAMEN. Algoritmer og datastrukturer

Løpende strekmann Erfaren Videregående Python PDF

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

UNIVERSITETET I OSLO

Forside. 1 Hva skrives ut?

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

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

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

UNIVERSITETET I OSLO

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

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Brukerveiledning for student skoleeksamen HIST Oppdatert 27. oktober 2014

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

TDT Datateknologi, programmeringsprosjekt

~ Gruppe(r): 2EA$ 2EC rdato:24.02.æ

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

Objektorientert programmering i Python. Resten av semesteret. Innhold uke 9 Mer komplekse strukturer. Referanser og objekter, inkl Mentimeter spørsmål

UNIVERSITETET I OSLO

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

Eksamen i SLI 5 høsten 1993

TDT Prosedyre- og objektorientert programmering

Transkript:

FAKULTET FOR NATURVITENSKAP OG TEKNOLOGI! EKSAMENSOPPGAVE Eksamen i : INF-1400 Objektorientert programmering Dato : Mandag 27. mai 2013 Tid : 0900 1300 Sted : Åsgårdvegen 9 Tillatte hjelpemidler : Ingen Oppgavesettet er på 5 sider inklusiv forside Kontaktperson under eksamen: Anders Andersen, 951 80675

Del A Ola og Kari er begge opptatt av kart og turer, og de ønsker å ta vare på informasjon om hvor og når de har vært på tur. For å gjøre dette enklere så har de kjøpt en GPS-klokke som kan spore turene deres. Det vil si at mens de er på tur så vil klokken med jevne mellomrom lagre deres nåværende posisjon. Når de er ferdig så kan de laste over disse posisjonene til en PC. Samlet gir alle posisjonene på en tur et spor (en liste av posisjoner). En posisjon inneholder lengdegrad, breddegrad, meter over havet og tidspunkt (dato og klokkeslett). Ola og Kari bestemmer seg for å lage et program for å håndtere disse dataene. De starter med å identifisere følgende klasser: Posisjon En gitt posisjon på en tur med attributtene lengdegrad, breddegrad, moh (meter over havet) og tidspunkt. Spor Et spor for en tur som inneholder følgende attributter: Liste over posisjoner (objekter av klassen Posisjon) starttidspunkt for dette sporet (tidspunkt for første posisjon) stopptidspunkt for dette sporet (tidspunkt for siste posisjon) Tur En tur med attributtene spor (et Spor objekt), navn og beskrivelse. De bestemmer seg også for å spesialisere klassen tur for de turene som er sightseeing. Denne klassen SightseeTur skiller seg fra klassen Tur med at den også har en liste over spesielt interessante posisjoner (POI point of interest) i løpet av en tur. Hvert enkelt element i denne listen referer til et element i sporet til denne turen (se attributtet spor i klassen Tur). Oppgave 1 20% Vi skal foreløpig konsentrere oss om attributtene (og ikke metodene) i de klassene vi jobber med. Vi kommer tilbake til metodene senere. a) Klassen SightseeTur kan både realiseres med arv (inheritance) og komposisjon (composition). Forklar forskjellen på arv og komposisjon og hva vi mener med en is-a (er-en) og en has-a (har-en) relasjon. Beskriv og begrunn også ditt valg av arv eller komposisjon i klassen SightseeTur. b) Tegn opp klassediagrammene for de fire klassene Posisjon, Spor, Tur og SightseeTur. c) Tegn opp datastrukturene for en sightsee tur med et kort spor (noen få posisjoner) og to spesielt interessante posisjoner. 2

Oppgave 2 25% Implementer klassene vi har spesisfisert til nå. Du trenger ikke å ta med andre metoder enn init () siden vi skal jobbe videre med klassene senere. Argumenetene til init () metoden til de ulike klassene er som følger: Posisjon: lengdegrad, breddegrad, moh, tidspunkt Spor: en liste med dictionaries, hvor hver dictionary har følgende nøkler med verdier: "lengdegrad" "breddegrad" "moh" "tidspunkt" Eksempel på en slik Python liste med et element (tidspunkt er antall sekunder siden Epoch, 1. januar 1970 klokken 00.00.00 UTC): [{"lengdegrad": 18.96778529, "breddegrad": 69.68299052, "moh": 64.4, "tidspunkt": 1369651934}] Tur: spor, navn, beskrivelse (beskrivelse kan være valgfri) SightseeTur: Samme som Tur Oppgave 3 20% Vi skal nå lage to metoder. Den første metoden returnerer en referanse eller indeks til den posisjonen i et spor som er nærmest tidspunktet angitt som argument: finnposisjon(self, tidspunkt):... Den andre metoden legger til en ny interessant posisjon i forbindelse med sightseeing. Også her er tidspunktet angitt som argument. Tidspunktet er det tidspunktet man var ved eller på den interessante posisjonen. registrerpoi(self, tidspunkt):... Angi hvilke klasser du vil plassere disse metodene i og skriv koden for metodene. (Hint: forsøk å utnytte funksjonalitet du allerede har skrevet kode for når det er mulig.) 3

Del B Kari og Ola ønsker nå å få plottet turene sine på kart. De har fått tak i kode for dette, men denne koden er ikke helt ferdig og den må tilpasses deres klasser og objekter. De har startet med å lage klassen KartTur, men de har ikke gjort ferdig metoden draw(). I koden nedenfor er spor1 en instans av klassen Spor for dagens tur i Tromsdalen. class KartTur(Tur): 6 def init (self, spor, navn, beskrivelse= ): 7 Tur. init (self, spor, navn, beskrivelse) 8 def draw(self): 9 pass 10 # Last kart-bakgrunn fra bilde og skaler ned 12 scalefactor = 7 13 bgimage = pygame.image.load( map1.jpg ) 14 xsize, ysize = bgimage.get_size() 15 res_x = xsize/scalefactor 16 res_y = ysize/scalefactor 17 bgimage = pygame.transform.scale(bgimage, (res_x, res_y)) 18 # Tegn kart i bakgrunnen 20 pygame.init() 21 screen = pygame.display.set_mode((res_x, res_y), 0, 32) 22 background = bgimage.convert() 23 screen.blit(background, (0,0)) 24 # Tegn inn tur 26 turpakart = KartTur(spor1, Tromsdalen 2013-05-27 ) 27 turpakart.draw() 28 # Vis kart med tur på skjermen 30 pygame.display.update() 31 11 19 25 29 For å få tegnet turen inn på kartet må hver enkelt posisjon transformeres til en (x,y) koordinat på skjermen (screen). For å få til det har vi klassen KartTrans med metoden transformer(). Nedenfor ser vi hvordan den kan brukes for å transformere lengdegrad og breddegrad til posisjon på skjermen i eksemplet: transformmap = KartTrans(res_x, res_y, 18.99021854, 69.68469448, 2142) (x, y) = transformmap.transformer(18.96778529, 69.68299052) De to første argumentene, res_x og res_y, angir størrelsen (i pixler) på området vi kan tegne i. De to neste argumentene angir posisjonen i lengdegrad og breddegrad for hjørnet av skjermen, altså for posisjon (0,0). Det siste argumentet angir målestokken til kartet. Det er utenfor oppgaven å lage koden for KartTrans, Dere vil kunne bruke denne instansen av klassen for å transformere lengdegrad og breddegrad i posisjoner til (x,y) koordinater på skjermen. 4

Oppgave 4 25% a) Skriv ferdig koden for metoden draw() i klassen KartTur. Metoden draw() må tegne en strek som følger sporet for den gitte turen. For å tegne en linje mellom 2 punkter kan du bruke pygame.draw.line(): pygame.draw.line(screen, color, (x1, y1), (x2, y2)) b) I klassen KartTur kan vi fjerne koden for metoden init (). Forklar hvorfor det er mulig og hva som da skjer når vi lager en instans av denne klassen (se linje 27 i koden på forrige side). Oppgave 5 10% Gi en beskrivelse av 2 av de følgende uttrykk/konsepter: a) Objekt (object) b) Klasse (class) c) Mutable/immutable d) Instans (instance) e) Metode 5