Eksamen Objektorientert Programmering 2011

Like dokumenter
Eksamen Objektorientert Programmering 2013

Objektorientert Programmering Ekstraordinær eksamen 2014

Emnenavn: Objektorientert programmering. Faglærer: Lars Emil Knudsen

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

EKSAMEN. Emne: Algoritmer og datastrukturer

Høgskoleni østfold EKSAMEN. ITF10213 Innføring i programmering (Høst 2013)

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

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

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

Høgskoleni østfold NY/UTSATT EKSAMEN

TDT4100 Objektorientert programmering

EKSAMEN. Objektorientert programmering

UNIVERSITETET I OSLO

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

EKSAMEN. Algoritmer og datastrukturer

Høgskoleni østfold EKSAMEN

Test 2 OOP. - Prøveeksamen

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

Eksamen. Objektorientert Programmering IGR 1372

UNIVERSITETET I OSLO

Eksamen Objektorientert Programmering 2012

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

EKSAMEN. Emne: Algoritmer og datastrukturer

hvordan du ser for deg at oppgaven kan løses, enn å ikke skrive noe i det hele tatt.

Introduksjon til objektorientert programmering

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

INF106 Objektorientert programmering

INF Seminaroppgaver til uke 3

EKSAMEN ITF Webprogrammering 1 Dato: Eksamenstid: Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne)

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

INF Løsning på seminaropppgaver til uke 8

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

HØGSKOLEN I SØR-TRØNDELAG

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

UNIVERSITETET I OSLO

EKSAMEN med løsningsforslag

UNIVERSITETET I OSLO

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

LC191D/LO191D Videregående programmering mai 2010

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

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Løsningsforslag Test 2

Løsningsforslag til eksamen i INF1000 våren 2006

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

Emnenavn: Objektorientert programmering. Eksamenstid: 4 timer

UNIVERSITETET I OSLO

Hjelpemidler: 4 A4-sider (2 to-sidige ark eller 4 en-sidige ark) med egenproduserte notater (håndskrevne/maskinskrevne)

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

Repitisjonskurs. Arv, Subklasser og Grensesnitt

UNIVERSITETET I OSLO

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

Høgskoleni østfold EKSAMEN

OPPGAVE 5b og 8b Java Kode

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

Algoritmer og Datastrukturer

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

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

Løsningsforslag EKSAMEN

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

Gjennomgang av eksamen H99

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

Kapittel 9: Sortering og søking Kort versjon

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

EKSAMEN (Konvertert fra en gammel PHPeksamen)

G høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato:

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

Algoritmer og datastrukturer Eksamen

Sortering med Comparable og Comparator

Eksamensoppgave i IFUD1025 Programmering i Java

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

INF1000: noen avsluttende ord

Høgskoleni østfold EKSAMEN. Hjelpem idler: Faglærer: Kåre Sorteberg Ingen hjelpemidler. Monica Kristiansen

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

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 Det matematisk-naturvitenskapelige fakultet

Transkript:

Eksamen Objektorientert Programmering 2011 Høgskolen i Østfold 2011-05-11 Emnekode ITF10611 Emne Objektorientert Programmering Dato 2011 05-11 Eksamenstid 09:00-13:00 Hjelpemidler To A4-ark (fire sider) med egne notater. Faglærer Harald Holone Eksamensoppgaven Oppgavesettet består av 18 sider inklusive denne forsiden, og er delt inn i to hovedoppgaver med henholdsvis 4 og 3 deloppgaver. For hver oppgave er det angitt hvor stor vekt den blir tillagt i vurderingen av besvarelsen. Den endelige karakteren blir satt på bakgrunn av denne vektleggingen kombinert med en helhetlig vurdering av besvarelsen. Du er selv ansvarlig for å kontrollere at oppgavesettet er komplett. Les gjennom alle oppgavene før du begynner å løse dem. Husk å bruke kommentarer i den koden du skriver. Dette kan ha stor uttelling dersom selve koden er feil, men det du har tenkt er riktig. Det lønner seg å besvare alle oppgavene. Det er bedre å skrive litt på hver oppgave enn å besvare noen deloppgaver blankt. God sommer, og takk for laget i vårsemesteret! 1

1 Begreper og prinsipper (40%) [35!] Disse oppgavene skal besvares kort og presist. Du skal altså ikke skrive mer enn nødvendig, men pass på å besvare alt oppgaven spør etter. Det deles ikke ut ro-poeng i disse oppgavene. Det er viktig at du forklarer med dine egne ord, og at du ikke leverer avskrift fra andre kilder. 1.1 Klasser og objekter (5%) Hva er en klasse, og hva er et objekt? Forklar sammenhengen mellom en klasse og et objekt, og gi et eksempel på hvordan man lager en instans av klassen Integer. Hva er arv, og hvorfor er det så sentralt i OOP? 1.2 Primitive datatyper (5%) I Java finnes noe som heter primitive datatyper. Forklar hva dette er, og hvordan de forholder seg til klasser. 1.3 Abstraksjon og innkapsling (15%) a) Hva mener vi med abstraksjon og innkapsling? Hvilke mekanismer finnes i språket Java for å oppnå dette? Hva er et Interface, og hvilken rolle spiller det i forbindelse med abstraksjon? Gi et eksempel på et Interface (bruk et du kjenner fra før, eller lag ditt eget) og vis hvordan det kan benyttes. b) Hva er en abstrakt klasse, og hva er en abstrakt metode? Gi et eksempel på en abstrakt klasse med en abstrakt metode. Forklar hvorfor denne klassen må være abstrakt. 1.4 Polymorfisme (10%) Hva er polymorfisme, og hva har det med arv å gjøre? Hva er overriding av metoder? Gi et eksempel på dette. 2 Utviklingsoppgave (60%) [65!] I denne oppgaven skal det utvikles en skisse til et objektorientert system for håndtering av epostlignende meldinger. En 2

melding består av tittel, tekst, dato, avsender og mottaker. Det er kun én mottaker pr. melding. På meldingsserveren finnes det tre meldingsbokser for hver bruker: INBOX, SENT og AR- CHIVE. En melding leveres til en meldingsserver, som legger meldingen i en meldingsboks av typen INBOX som tilhører mottakeren. Samtidig legges meldingen i avsenderens meldingsboks av typen SENT. For at en melding skal sendes må både avsender og mottaker være registrert hos meldingsserveren ved hjelp av adduser(user user). Meldingene for en person hentes også fra en meldingsserver, og meldingene hentes fra personens INBOX dersom ikke noe annet er angitt. Det finnes også en ARCHIVE meldingsboks for hver bruker. En melding arkiveres ved å gi beskjed til meldingsserveren. Dette medfører at meldingen flyttes fra INBOX til ARCHIVE for den brukeren. Meldingene i en meldingsboks kan sorteres på forskjellig vis. 2.1 Modell (15%) a) Under følger Java-kode for interfaces som skal benyttes for å løse oppgaven. Du skal tegne et UML-diagram som viser relasjonen mellom disse interfacene. Beskriv med dine egne ord relasjonene mellom interfacene. Dette skal gjøres enkelt. Det er kombinasjonen av tegningen og beskrivelsen som blir vurdert, ikke detaljene i UML-tegningen. public interface User { String getname(); public interface Message { User getsender(); 3

User getreceiver(); String getsubject(); String getbody(); Date getdate(); public interface MessageBox { static final int SORT_BY_SENDER = 0; static final int SORT_BY_DATE = 1; static final int SORT_REVERSE = 2; static final int TYPE_INBOX = 0; static final int TYPE_ARCHIVE = 1; static final int TYPE_SENT = 2; int gettype(); void sort(int sortmode); void addmessage(message message); boolean removemessage(message message); List<Message> getmessages(); public interface MessageServer { boolean adduser(user user); // Returns false on failure boolean sendmessage(message message); // Returns false on failure List<Message> getmessages(user user); List<Message> getmessages(user user, int boxtype); boolean archive(message message); b) Forklar med dine egne ord hva som er fordeler og evt. ulemper med å diskutere modellen ved hjelp av interfaces før man starter på implementasjonen. 4

2.2 Implementasjon (35%) a) Du skal lage klassen DefaultMessage som implementerer Message. Denne klassen skal ha en konstruktør som tar alle relevante parametere. Du skal altså ikke lage set-metoder for de medlemsvariablene du velger. Klassen skal også override metoden tostring() for enlinjesvisning av en melding. Tips: Klassen Date har en default konstruktør som lager en instans som representerer tid og dato nå, slik: Date d = new Date(); b) Under finner du en halvveis ferdig implementasjon av en MessageServer. Først skal du beskrive med dine egne ord de delene av klassen som allerede er implementert. Så skal du gjøre ferdig klassen, dvs du skal implementere alle metodene som inneholder en kommentar som sier at de er en del av oppgaven. import java.util.hashmap; import java.util.list; import java.util.map; public class DefaultMessageServer implements MessageServer { private Map<User, MessageBox> inboxes; private Map<User, MessageBox> sentboxes; private Map<User, MessageBox> archiveboxes; public DefaultMessageServer() { this.inboxes = new HashMap<User, MessageBox>(); this.sentboxes = new HashMap<User, MessageBox>(); this.archiveboxes = new HashMap<User, MessageBox>(); public boolean adduser(user user) { if(!inboxes.containskey(user)) { inboxes.put(user, 5

new DefaultMessageBox(MessageBox.TYPE_INBOX)); sentboxes.put(user, new DefaultMessageBox(MessageBox.TYPE_SENT)); archiveboxes.put(user, new DefaultMessageBox(MessageBox.TYPE_ARCHIVE)); return true; return false; public boolean archive(message message) { public List<Message> getmessages(user user) { public List<Message> getmessages(user user, int boxtype) { public boolean sendmessage(message message) { Tips: Dokumentasjon av Map-interfacet er vedlagt. 6

2.3 Sortering og I/O (15%) a) Du skal nå sørge for sortering for en meldingsboks. Her er DefaultMessageBox som implementerer MessageBox: import java.util.arraylist; import java.util.list; public class DefaultMessageBox implements MessageBox { private List<Message> messages; private int type; public DefaultMessageBox(int type) { this.type = type; messages = new ArrayList<Message>(); public List<Message> getmessages() { return messages; public int gettype() { return type; public void addmessage(message message) { messages.add(message); public boolean removemessage(message message) { 7

return messages.remove(message); public void sort(int sortmode) { Du skal lage metoden sort(int sortmode) ved hjelp av to forskjellige klasser som implementerer Comparator, én for sortering på dato, en annen for sortering på avsender. Ved sortering på avsender skal meldinger fra samme avsender sorteres i datorekkefølge. Alle tre formene for sortering (dato, avsender, revers) skal implementeres i denne metoden. Tips: Relevant dokumentasjon er vedlagt. b) Beskriv med dine egne ord hvordan du vil gå frem for å lagre innholdet i en meldingsserver (inkludert brukere, meldinger og meldingsbokser) til en fil, og hvordan du ville lese det inn igjen. Slutt på oppgaven. 8