Eksamen Objektorientert Programmering 2013



Like dokumenter
Objektorientert Programmering Ekstraordinær eksamen 2014

Eksamen Objektorientert Programmering 2012

Eksamen Objektorientert Programmering 2011

EKSAMEN. Objektorientert programmering

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

EKSAMEN. Algoritmer og datastrukturer

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

import java.util.arraylist;

UNIVERSITETET I OSLO

Eksamen. Objektorientert Programmering IGR 1372

EKSAMEN med løsningsforslag

UNIVERSITETET I OSLO

/** *Kamp klassen inneholder kampfakte og hoveddelen av kampmotoren. young */

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

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

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

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

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

Høgskoleni østfold NY/UTSATT EKSAMEN

EKSAMEN. Emne: Algoritmer og datastrukturer

UNIVERSITETET I OSLO

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

Algoritmer og Datastrukturer

INF Seminaroppgaver til uke 3

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

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

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

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

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

EKSAMEN. Emne: Algoritmer og datastrukturer

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

EKSAMEN I INF244: OBJEKTORIENTERT PROGRAMVAREUTVIKLING I BACHELORSTUDIET I IT OG INFORMASJONSSYSTEMER BACHELORSTUDIET I IT OG ENTREPRENØRSKAP

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

TDT4100 Objektorientert programmering

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

HØGSKOLEN I SØR-TRØNDELAG

INF Notater. Veronika Heimsbakk 10. juni 2012

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

Algoritmer og Datastrukturer

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

INF Løsning på seminaropppgaver til uke 8

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

TDT4100 Objektorientert programmering

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I)

INF106 Objektorientert programmering

TDT4100 Objektorientert programmering

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

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

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

OPPGAVE 5b og 8b Java Kode

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

Løsningsforslag EKSAMEN

IN1010 våren januar. Objektorientering i Java

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Endret litt som ukeoppgave i INF1010 våren 2004

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

HØGSKOLEN I SØR-TRØNDELAG

Norges Informasjonsteknologiske Høgskole

INF1010 våren januar. Objektorientering i Java

LC191D/LO191D Videregående programmering mai 2010

Transkript:

Eksamen Objektorientert Programmering 2013 Høgskolen i Østfold 2013-01-07 Emnekode Emne ITF10611 Dato 2013-01-07 Eksamenstid 09:00-13:00 Hjelpemidler Faglærer Objektorientert Programmering To A4-ark (fire sider) med egne notater Børre Stenseth Oppgavesettet består av 10 sider inklusive denne forsiden og ett vedlegg på 5 sider. Oppgavesettet er delt på 3 oppgaver. Vedlegget er relevante for oppgave 3. For hver oppgave er det angitt hvor stor vekt den blir tillagt i vurdering 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 enkle kommentarer i den koden du skriver. Dette kan gi uttelling dersom koden inneholder feil, men at du har tenkt riktig. Lykke til 1

1. Begreper (20%) I denne oppgaven skal du bruke dine egne ord og beskrive kort hva du du forstår med de aktuelle begrepene. Du må gjerne bruke korte eksempler hvis det hjelper. 1.a) Hva betyr det at en metode eller en attributt er henholdsvis privat, protected, eller public? 1.b) Forklar bruken av Java nøkkelordet final 1.c) Hva betyr det at en metode er rekursiv? Vis et lite eksempel 1.d) Forklar bruken av Java nøkkelordet: this Gi et enkelt eksempel på når det kan være nyttig 2

2. Javakode (20%) 2.a) Hva er grunnen til at denne koden ikke kompilerer public static void doubleit(int t){ return 2*t; 2.b) Hva returnerer denne metoden når den kalles med parameter 6? public static String dob(int tall){ String result=""; while(tall >0){ result=string.valueof(tall %2 )+result; tall=tall/2; return result; 2.c) Hva blir utskriften når denne metoden kalles med parameter 9 public static void doc(int n){ if(n >= 0){ doc(n-1); if(n%2!= 0){ System.out.print(n+" "); 2.d) Hva er galt her: package somepackage; public interface CircleGeometry { public void setradius(double r); public double getareal(){return Math.PI*r*r; 2.e) Hva foregår her: public static void sortthem(string[] p){ Arrays.sort(p,new Comparator<String>(){ public int compare(string s1, String s2) { return s1.length() - s2.length(); ); Forklar koden og angi utskriften dersom vi skriver String[] personene=new String[]{"sam","aleksander","sverre"; sortthem(personene); for(string p:personene) { System.out.println(p); 3

3. Konstruksjon (60%) Oppgaven går ut på og implementere kjernen i et system for vedlikehold av fotballtabeller. Vi setter fokus på data for en avdeling eller om du vil serie. I fortsettelsen bruker vi ordet serie om en gruppe lag som spiller kamper mot hverandre. Alle data vi trenger er ordnet i to filer i en katalog for hver serie. F.eks. ligger tippeligaen i katalogen "c:\tippeligaen\". For hver sesong, årstall, ligger en lagfil som sier hvilke lag som er med, f.eks. "c:\tippeligaen\lag2012.txt". For hver sesong ligger det en kampfil som beskriver alle kamper, f.eks. "c:\tippeligaen\kamper2012.txt". En lagfil ser ganske enkelt slik ut (de to første linjene): 11:Fredrikstad 21:Vålerenga En linje for hvert lag med en unik id etterfulgt av navnet på laget, skilt med :. Merk at id-verdien ikke er en løpende indeks, men en unik id for laget, uansett hvilken serie det er med i. En kampfil kan se slik ut (de tre første linjene): 11:21:20120412:5:4 14:27:20120412:3:1 08:15:20120413:0:0 I den første linja står det at Fredrikstad vant hjemme mot Vålerenga den 12. april 2012 med 5 mål mot 4. Formatet er altså slik: hjemmelag:bortelag:dato:hjemmemål:bortemål dato beskrevet som yyyymmdd Det er bare ferdige kamper som er lagt ut på kamp-fila. Du kan ikke stole på at de er sorterte på noen måte. Ellers er det som kjent slik at seier gir 3 poeng, uavgjort gir 1 poeng og tap gir 0 poeng. Rammene for det som skal gjøres er beskrevet i vedlegg. Der finner du et interface for en serie, ISerie, og du finner skjelettet for en implementasjon av dette interfacet i myserie. Du finner videre en ferdig klasse Team og en nesten ferdig klasse Match. 4

Løs så mange av oppgavene du rekker. 6 av de 7 er tilstrekkelig for å få full uttelling 3.a) Kontroll Beskriv uten å lage kode hvordan du kan går fram for å sjekke at data på de to filene er så "riktige" som mulig. De kontrollene du beskriver her kan antas implementert i den programmeringen du gjør i de neste oppgavene. 3.b) Skriv konstruktøren i class Match 3.c) Gjør ferdig class Match Skriv de tre metodene i class Match: getyear(),getmonth(), getday() 3.d) Skriv ferdig metoden loaddata() i class myserie. 3.e) Skriv metoden sortmatches() i class myserie 3.f) Skriv ferdig metoden getpoengforlag() i class myserie 3.g) Skriv ferdig metoden getstatusforlag() i class myserie 5

Vedlegg Vedlegg til oppgave 3 iserie.java myserie.java Team.java Match.java Vedlegget er på 5 sider inklusive denne siden 6

iserie.java package fotball; * Interface for en fotball sesong for en gitt serie/avdeling * @author Administrator public interface ISerie { * Laster opp de to aktuelle datafilene for serien * @param lagfil Unik indeks og lagnavn for et lag pr linje * @param kampfil Kampdata, en kamp pr linje public void loaddata(string lagfil,string kampfil); * Sorter kamper, matches, i på stigende dato public void sortmatches(); * Returner navnet til et lag * @param lagid Indeksen til laget public String getlagnavn(int lagid); * Returnerer id til et navngitt lag * @param lagnavn Lagnavnet * @return idverdien, eller null hvis lagnavnet ikke finnes public int getlagid(string lagnavn); * Returnerer poeng for et gitt lag på en gitt dato * @param lagindex Indeksen til laget * @param dato Datoen i format yyyymmdd * @return antall poeng på den gitte datoen public int getpoengforlag(int lagid,string dato); * Finner status for et gitt lag på en gitt dato: * antall hjemmekamper spilt * antall bortekamper spilt * antall mål laget * antall mål sluppet inn * antall poeng * @param lagid ID for laget * @param dato Datoen i format yyyymmdd * @return En heltallsliste med de 5 verdiene public int[] getstatusforlag(int lagid,string dato); 7

myserie.java package fotball; import java.util.arraylist; * Implementasjon av interface ISerie * @author Administrator public final class myserie implements ISerie{ registrerte lag i serien ArrayList<Team> m_teams; registrerte kamper i serien ArrayList<Match> m_matches; constructor public myserie(string lagfil,string kampfil){ loaddata(lagfil,kampfil); //------------ oppgave 3d ---------------- // gjør ferdig denne metoden slik at vi får satt opp // lister av lag og kamper fra de innleste dataene public void loaddata(string lagfil, String kampfil) { // anta at loadfile er definert og at den // laster inn hele teksten fra fila String teamlines=fileaccess.loadfile(lagfil); // opprett lagliste, m_teams String matchlines=fileaccess.loadfile(kampfil); // opprett kampliste, m_matches //----------------------------------------------- //--------------- oppgave 3e--------------------- // gjør ferdig denne metoden slik at den sorterer // kampene, m_matches, kronologisk public void sortmatches(){ throw new UnsupportedOperationException("Not supported yet."); //------------------------------------------------- public int getlagid(string lagnavn) { for(team t:m_teams) { if(t.name.equals(lagnavn)) { return t.id; return -1; public String getlagnavn(int lagid) { for(team t:m_teams) { if(t.id==lagid) { return t.name; return null; 8

//------------------- oppgave 3f-------------- // gjør ferdig denne metoden slik at den returnerer verdi // som beskrevet i ISerie public int getpoengforlag(int lagid, String dato) { throw new UnsupportedOperationException("Not supported yet."); //--------------------------------------------- //------------------- oppgave 3g-------------- // gjør ferdig denne metoden slik at den returnerer verdier // som beskrevet i ISerie public int[] getstatusforlag(int lagid, String dato) { throw new UnsupportedOperationException("Not supported yet."); //--------------------------------------------- 9

Team.java package fotball; * Beskrivelse av et lag, id og navn * @author Administrator public class Team { public int id; public String name; * Konstruktor * Anta at sjekker er gjort slik at dette er sikkert public Team(String line){ String[] parts=line.split(":"); id=integer.parseint(parts[0]); name=parts[1]; Match.java package fotball; * Describing a single match * @author Administrator public class Match { private int hometeam; private int awayteam; private String date; private int homegoals; private int awaygoals; //------- oppgave 3b ----------- // implementer denne konstruktoren // som bygger et Match objekt fra en linje fra en kampfil public Match(String line){ //--------------------------------- public int gethometeam(){return hometeam; public int getawayteam(){return awayteam; public String getdate(){return date; //------- oppgave 3c -------------- // implementer disse tre metodene riktig public int getmonth(){ return -1; public int getday(){ return -1; public int getyear(){ return -1; //---------------------------------- public int gethomegoals(){return homegoals; public int getawaygoals(){return awaygoals; 10