HØGSKOLEN I SØR-TRØNDELAG



Like dokumenter
HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

LC191D/LO191D Videregående programmering mai 2010

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

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

INF106 Objektorientert programmering

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

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

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

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.

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

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

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

LO191D/LC191D Videregående programmering

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

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

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

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

Eksamensoppgave i IFUD1025 Programmering i Java

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

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

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

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

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

HØGSKOLEN I SØR-TRØNDELAG

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

ANTDAGER = 358; I Ifra nyttår 08 til 08 1ed julaften

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

TDT4100 Objektorientert programmering

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

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

HØGSKOLEN I SØR-TRØNDELAG

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

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

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

UNIVERSITETET I OSLO

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

HØGSKOLEN I SØR-TRØNDELAG

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

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

HØGSKOLEN I SØR-TRØNDELAG

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

Eksamen Objektorientert Programmering 2013

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

EKSAMENSFORSIDE SKRIFTLIG EKSAMEN

INF1010. Grensesnittet Comparable<T>

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

INF1000 Metoder. Marit Nybakken 16. februar 2004

UNIVERSITETET I OSLO

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE. Antall sider (Inkl forsiden): 8. Alle trykte og håndskrevne

Eksamensoppgave i IFUD1025 Programmering i Java

EKSAMEN. Objektorientert programmering

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

INF Løsning på seminaropppgaver til uke 8

En klasse som arver, eller selv deklarerer en abstrakt metode, må deklareres som abstrakt.

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

Løsningsforslag til eksamen i INF1000 våren 2006

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

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

UNIVERSITETET I OSLO

Eksamensoppgave i IFUD1025 Programmering i Java og IINI4013 Programmering i Java

GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

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

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

Gjennomgang av eksamen H99

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

UNIVERSITETET I OSLO

Les gjennom hele oppgavesettet før du begynner å b,svare deloppgavene.

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

Transkript:

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 5.mai 200 Varighet: 0900-300 Emnekode: Emnenavn: Klasse(r): LO9D / LC9D LO9D Videregående programmering (i Java), nettbasert LC9D Videregående programmering, campus HING2009HA, nettstudenter, div. gjentak Studiepoeng: 6 Faglærer(e): Kontaktperson (adm.) Hjelpemidler: Oppgavesettet består av: Vedlegg består av: Else Lervik Ingrid Island Lærebøker, alle håndskrevne og trykte hjelpemidler. 4 oppgaver og 9 sider (inkludert forside og vedlegg) 4 sider Merknad: Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. Lykke til!

Les dette! All programmering skal skje i Java. Det er tillatt å ha flere medlemmer i klassene enn det som er oppgitt i teksten. Les gjennom hele oppgavesettet før du begynner å programmere. Pass på at du ikke gjør verken mer eller mindre enn det oppgavene spør etter. Men dersom du trenger flere metoder/konstruktører for å lage det oppgavene spør etter, skal du også programmere disse. En fornuftig oppdeling i metoder ut over det oppgaven spør etter, kan gi plusspoeng ved bedømmelsen. Dersom du mener det mangler opplysninger, sett dine egne forutsetninger. Oppgavene er laget slik at de alle arbeider med den samme problemstillingen. Det vil derfor være slik at du i en oppgave må bruke klasser/metoder du skal ha laget i en annen oppgave. Dersom du av en eller annen grunn ikke har laget disse klassene/metodene, kan du, når du skal løse andre oppgaver, anta at de eksisterer. Eventuell feilsjekking skal utføres, men feilene behandles kun på enkleste måte, dvs. at du kan la metodene returnere -, false eller 0, avhengig av returtypen. Du trenger ikke å utføre feilkontroll i konstruktører eller i set-metoder. Felles problemstilling for alle oppgavene Du skal arbeide med et system for godtgjørelse av utgifter til innenlandsreiser i jobbsammenheng. Oppgaveteksten tar utgangspunkt i Statens regulativ for slike reiser, men med en del forenklinger. I denne oppgaven kan du anta at følgende regler gjelder: Reisens totale varighet er gitt som et helt antall dager. Det gis kostgodtgjørelse for hver dag reisen består av, og det gis nattgodtgjørelse til dekning av overnatting for hver natt reisen består av. For reiser med overnatting regnes både første og siste dag med når kostgodtgjørelse skal regnes ut. Vi regner at alle overnattingene på én reise godtgjøres med det samme beløpet. I motsetning til kostgodtgjørelsen varierer nattgodtgjørelsen fra reise til reise. Ved beregning av kostgodtgjørelse brukes faste satser: Reiser som varer én dag godtgjøres med 270 kroner. For reiser med overnatting er kostgodtgjørelsen 580 kr pr dag. Eksempler: En reise som starter og slutte på samme dag godtgjøres med 270 kroner. En reise med én overnatting til 800 kroner, godtgjøres med 800 + 580x2 = 960 kr. En reise med to overnattinger der hver overnatting koster 500 kroner, godtgjøres med 500x2 + 580x3 = 2740 kr. I tillegg til kost og overnatting skal reiseutgiftene dekkes. En reise består av flere ulike reiseelementer: Kollektivtransport. Start- og slutt-tidspunkt samt strekning (fra-sted og til-sted) registreres i tillegg til typen transport (fly, buss, osv.) og prisen på transporten. Privatbil. Start- og slutt-tidspunkt samt strekning (fra-sted og til-sted) registreres i tillegg til antall km. Godtgjørelsen er kr. 3,65 pr km inntil 9000 km for den aktuelle personen. Etter 9000 km utbetales det kr 3,00 pr km. Annen egen transport. Start- og slutt-tidspunkt samt strekning (fra-sted og til-sted) registreres i tillegg til antall km. Godtgjørelsen pr km er gitt iht. tabellen på neste side. 2

type pr. km Motorsykkel 2,80 Moped,55 Snøscooter 6,60 Båt med motor minst 50 hk 6,50 Båt med motor under 50 hk 3,50 EL-bil 4,00 Annet,50 Andre utgifter, f.eks. bompenger. Her registreres en tekst og et beløp. Om datoer og tidspunkter Reisens varighet er gitt ved en startdato og en sluttdato. Bruk klassen Dato gitt i vedlegg. (Denne klassen skal også være kjent fra øving 7.) Start- og slutt-tidspunkt skal oppgis for alle transportetapper. Bruk kun en vanlig tekst (String) her. Du trenger ikke legge inn kontroll av verken datoer eller tidspunkter i dette oppgavesettet. Person reiser * Reise reiseelementer * Reiseelement Etappe etappe Transport AndreUtgifter Vi ser bort fra bruk av egen bil i denne modellen AnnenEgenTransport Kollektivtransport Figur : Denne modellen brukes i oppgave, 2 og 4. Oppgave vekt 20% I denne oppgaven ser vi kun på klassetreet i figur, det vil si klassen Reiseelement med subklasser. I et klassetre skal abstrakte klasser vises i kursiv, det er ikke gjort her da du selv skal finne ut om en klasse skal være abstrakt eller ikke. Klassene Etappe og Transport er gitt i vedlegg 2. Du skal i denne oppgaven programmere klassene Reiseelement, AnnenEgenTransport, Kollektivtransport og AndreUtgifter. Foreta eventuelle utvidelser og/eller endringer av klassene Etappe og Transport dersom du finner det hensiktsmessig. Bruk reglene for godtgjørelse som er beskrevet i begynnelsen av oppgavesettet når du bestemmer attributter for de forskjellige klassene. 3

Alle klassene skal ha konstruktører som tar aktuelle attributter som argumenter. Lag også get- og eventuelt set-metoder. (Til deg som har 3.utgave av boka: Her brukes betegnelsene finn- og settmetoder.) Programmer også det som kreves for at det i klassen Reise (og i klassen Person) skal være enkelt å regne ut hva en reise koster. (Se oppgave 2.) Oppgave 2 vekt 30% Vi bruker modellen i figur. Vi har følgende forhold mellom klassene Person, Reise og Reiseelement: En person foretar mange reiser. Hver reise består av mange reiseelementer. Klassen Person har følgende objektvariabler (listen kan utvides): private final String navn; private java.util.arraylist<reise> reiser = new java.util.arraylist<reise>(); Klassen Reise har følgende objektvariabler (listen kan utvides): private final String hensikt; private final Dato startdato; private final Dato sluttdato; private final double prisprnatt; private java.util.arraylist<reiseelement> reiseelementer = new java.util.arraylist<reiseelement>(); (Informasjon til studenter med 3.utgave av læreboka: At en objektvariabel er merket med modifikatoren final betyr at den ikke kan endres etter at den har fått verdi.) Du skal lage to metoder i klassen Person. Dette vil medføre at du trenger metoder i klassen Reise. Du skal selv finne ut hvordan de bør se ut, og du skal selvfølgelig også programmere dem. Programmer en metode som finner totalt antall overnattinger på alle personens reiser: public int finntotaltantovernattinger() Programmer en metode som finner den totale kostnaden på alle reisene som en person har gjennomført. Dette beløpet skal inkludere både kostgodtgjørelser, nattillegg og summen av alle reiseelementene: public double finnprisallereiser() Oppgave 3 vekt 20% Vi skal nå ta inn bruk av egen bil. Les reglene for dette om igjen. Hvordan vil du ta dette inn i den eksisterende løsningen? Vis hvilke endringer dette medfører i koden i løsningene av oppgave og 2. 4

Oppgave 4 vekt 30% Vi bruker modellen i figur, det vil si at vi ser bort fra bruk av egen bil her. Du skal programmere brukergrensesnittet vist i vedlegg 3. Brukergrensesnittet skal fungere med følgende main(): public static void main(string[] args) { Person enperson = new Person("Anne Ås"); // registrerer data. det skal ikke du tenke på i dette oppgavesettet GUI gui = new GUI(enPerson); gui.setvisible(true); Det er et meget enkelt vindu uten annen brukerinput enn museklikk i den øverste listen. Et valg i den øverste listen skal vise fram reisedetaljene i den nederste listen. Brukeren skal ikke ha muligheten til å klikke i den nederste listen (da vil listen bli grå, det er ikke vist på figuren da jeg er redd det kunne bli vanskelig å lese). Du skal lage ett vindu (klassen GUI) med GridLayout som layouthåndterer. Layouthåndtereren skal lage et rutenett med én kolonne og to rader, det vil si to ruter der du plasserer en liste (JList) i hver av de to rutene. Følgende kodebit brukes til å lage overskrift til en JList, eksempel den nederste listen: JViewport jvp = new JViewport(); jvp.setview(new JLabel("Detaljer, valgt reise")); // overskrift Figurene i vedlegg 3 viser hvilke data som skal vises fram i de to listene: Den øverste listen: Reisens hensikt, startdato og sluttdato, kostgodtgjørelse og nattillegg beregnet etter reglene i begynnelsen av oppgavesettet, samt reisens totale pris. Den nederste listen: Hvorvidt utgiften er transport eller andre utgifter. I siste tilfelle vises den registrerte teksten og prisen. Hvis det er transportutgifter skal følgende vises: transportmiddel, etappens start- og slutt-tidspunkt, etappens start- og sluttsted og etappens pris beregnet etter reglene i begynnelsen av oppgavesettet. Formatering av tall kan du se bort fra, selv om det er vist på figuren. En elegant løsning av denne oppgaven vil sannsynligvis medføre flere metoder i klassene i figur. Lag eventuelt egne klasser med disse metodene. 5

Vedlegg klassen Dato Nedenfor finner du konstruktører og metoder i klassen Dato: public Dato(Date dato) public Dato(String dato) throws java.text.parseexception // format ddmmyyyy public int finnår() public int finnmnd() public int finndagimnd() public Dato nydato(int dager) // returnerer en ny dato dager fram i tid public int compareto(dato dato) // sammenligner to datoer iht. reglene for compareto() public int dagerforskjell(dato denandredatoen) // finner antall dager mellom to datoer public int antheleårforskjell(dato denandredatoen) // finner antall hele år mellom to datoer public String tostring() 6

Vedlegg 2 klassene Transport og Etappe Disse klassene kan du endre og/eller utvide om du ønsker. Hvis du bruker 3.utgave av læreboka, er du kanskje mer vant med kodestilen nederst på siden. class Transport extends Reiseelement { private final Etappe etappe; public Transport(Etappe etappe) { this.etappe = etappe; class Etappe { private final String starttid; // inkl. dato private final String slutttid; // inkl. dato private final String frasted; private final String tilsted; public Etappe(String starttid, String slutttid, String frasted, String tilsted) { this.starttid = starttid; this.slutttid = slutttid; this.frasted = frasted; this.tilsted = tilsted; public String getstarttid() { return starttid; public String getslutttid() { return slutttid; public String getfrasted() { return frasted; public String gettilsted() { return tilsted; Til de som bruker 3.utgave av læreboka class Transport extends Reiseelement { private final Etappe etappe; public Transport(Etappe startetappe) { etappe = startetappe; class Etappe { private String starttid; // inkl. dato private String slutttid; // inkl. dato private String frasted; private String tilsted; public Etappe(String startstarttid, String startslutttid, String startfrasted, String starttilsted) { starttid = startstarttid; slutttid = startslutttid; frasted = startfrasted; tilsted = starttilsted; 7

public String finnstarttid() { return starttid; public String finnslutttid() { return slutttid; public String finnfrasted() { return frasted; public String finntilsted() { return tilsted; 8

Vedlegg 3: Brukergrensesnitt, oppgave 4 Øverste del av vinduet viser at Anne Ås har foretatt tre reiser. Vi har klikket på den øverste av disse og fått fram detaljene i nederste del av vinduet. På figuren nedenfor har vi gjort det samme med den midterste av de tre reisene: 9