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

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

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

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

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

Ol Emnekode: Faglig veileder: I L~~25 A - E!8 Viho~d~.1. F ntall oppga~ forsiden): ;;;handskr~vn-;

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

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

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

Antall sider (inkl. forsiden): 6

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Les gjennom hele oppgavesettet før du begynner å besvare deloppgavene.

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

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

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

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

EKSAMEN. Algoritmer og datastrukturer

Eksamensoppgave i IFUD1025 Programmering i Java

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF106 Objektorientert programmering

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

LO191D/LC191D Videregående programmering

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

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

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

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

UNIVERSITETET I OSLO

INF1000: noen avsluttende ord

Eksamensoppgave i IFUD1025 Programmering i Java

Gjennomgang av eksamen H99

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

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

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

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

EKSAMEN. Objektorientert programmering

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

EKSAMEN med løsningsforslag

TDT4100 Objektorientert programmering

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

INF1000 Metoder. Marit Nybakken 16. februar 2004

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Eksamen IN1010/INF1010 våren 2018

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Tittel Objektorientert systemutvikling 1. Eksamenstid, fra-til Ant. oppgaver 6

2 Om statiske variable/konstanter og statiske metoder.

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Eksamen Objektorientert Programmering 2011

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Emnekode: I-Dato: I ~ Antall oppgaver: I I Aiie -sk:i=rftlige - bme trykte og håndskrevne, samt alle typer

EKSAMEN. Emne: Algoritmer og datastrukturer

INF1000 Prøveeksamen Oppgave 7 og 9

UNIVERSITETET I OSLO

Obligatorisk oppgave 4: Lege/Resept

Introduksjon til objektorientert programmering

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Høgskoleni østfold EKSAMEN

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Transkript:

Side av? Bokmålstekst Emne: PROGRAMMERING (gammelt pensum, 12 studiep.),j G~upper: I Diverse Emnekode: LO 125 A Dato: 15.12.2004 I Faglig veileder Eva Vlhovde Eksamenstld: 09.00-14.00 Eksamensoppgaven best~r av: I Tillatte hjelpemidler: Antall sider (inkl. forsiden): 7 Alle trykte og håndskrevne Antall oppgaver: 4 Antall vedlegg: O Kandidaten må selv kontrollere at oppgavesettet er fullstendig. Ved eventuelle uklarheter i oppgaveteksten skal du redegjøre for de forutsetninger du legger til grunn for løsningen. Les gjennom hele oppgavesettet før du begynner å besvare deloppgavene.. Hold deg til de Identifikator-navnene som er brukt i oppgaveteksten, dog med unntak av metodenes parametemavn som kan velges fritt.. Dersom det er en del oppgave du Ikke f~r til, bør du g~ videre til den neste. F r du bruk for en metode fra en deloppgave du ikke har gjort, kan du gjøre kall p~ metoden selv om du Ikke har programmert den. Du forutsetter da at den utfører det den er tiltenkt ~ gjøre. Det er viktig at du svarer (I alle fall litt) p~ alle deloppgavene.. Merk deg at svært mye av programmeringen g r ut p~ ~ gjøre kall p~ passende metoder av dem som er omtalt i oppgaven. Merk deg derfor hva de omtalte metodene utfører. Pass p~ ved metodekall at argumenter er av riktig type og sørg for ~ gjøre bruk av dataene som metodene returnerer. ". Svar nøyaktig p~ det du blir spurt om. Dersom du mener at oppgaveteksten Ikke gir deg tilstrekkelig informasjon eller er uklar, kan du gjøre dine egne forutsetninger. Gjør I d fall rede for disse.. Ved sensur vil alle bokstaverte deloppgaver (a, b, c,...) telle Ilke mye, bortsett fra Oppgave 1 som teller dobbelt. file ://H:\prog\Le gekontormed Gammel Ordning\xfe bo4gammel.htm I 13.12.2004

Side 2 av 7 Du skal lage et program som skal brukes ved en legevakt. Programmet skal h~ndtere mottak av pasienter som kommer til legevakten i løpet aven dag ved ~ henvise hver pasient til en ledig lege. I tillegg skal programmet lagre pasientjournaler for legenes pasienter. (Med pasient journal mener vi en tekst som inneholder data om pasienten og pasientens sykdom(mer).) Programmet vil best~ av fire klasser; Pasient, Lege, LegeVakten og PasientMottak. Objekter av typene Pasient og Lege vil i oppgaveteksten bli omtalt som henholdsvis pasienter og leger. Av hensyn til oppgavens størrelse er programmet svært forenklet I forhold til det som normalt ville kreves av et slikt program, men er bygget opp slik at det er mulig ~ legge til ønsket funksjonalltet ved senere anledninger. OPPGA VE 1 I denne oppgaven skal du programmere klassen Pasient. Klassen skal ha følgende datafelt:. Pasientens navn. Pasientens personnummer / / Bør være heltall av hensyn til resten av oppgaven. Pasientens diagnose Du må selv avgjøre hvilke datatyper som skal brukes, og hvilken aksessform datafeltene skal ha. Klossen skal ha en konstruktør som initialiserer datafeltene. Konstruktøren skal kun ha pasientens navn og personnummer som parametre. Klassen skal i tillegg ha get-metoder for pasientens navn og personnummer, samt en setmetode for ~ sette diagnose p~ pasienten. Til slutt skal klassen ha en tostring-metode. Metoden skal returnere en tekst som inneholder alle data om pasienten. Flett inn forklarende ord slik at den returnerte teksten ligner p& en pasient journal. Hvis det ikke er stilt noen diagnose, skal dette fremg& av teksten. OPPGAVE 2 I denne oppgaven skal du programmere flere av lege-klassens metoder. Nedenfor ser du en skisse av klassen: ~ub~ic class Lege p vate St ring navn; p vate static final int MAX - 14; / / max antall pasienter som legen kan behandle / / I løpet aven dag vate Pasient [] pasienter; / / array som kan lagre legens pasienter i løpet aven dag p. vate int antall - O; / / antall pasienter som legen behandler i løpet av dagen. vate int neste - O; / / indeksen til neste pasient som legen skal behandle pujblic Lege(String n) { I navn - ni pasienter - new Pasient [MAX) i antall - Oi neste - Oi file:/ /H: \prog\legekontormedgammel Ordning\xfeb04gammel.html 13.12.2004

EK$AMENSOPPGA VE Side 3 av 7 p~lic String getnavn() return navn; p~lic int getantall return antall; < metoder du skal programmere> Pasient-objektene skal settes inn i arrayen pasienter etter hvert som pasientene bestiller time hos legen, og du kan anta at disse objektene ligger kontinuerlig etter hverandre. Variabelen antall skal til enhver tid holde rede p~ hvor mange pasienter legen har. Variabelen neste skal "peke ut" den neste pasienten som skal behandles, slik at objektene med indeks mindre enn neste representerer pasienter som allerede er behandlet av legen, mens de med indeks større eller lik neste, og samtidig mindre enn antall, venter p~ ~ bli behandlet. I hver deloppgave f~r du oppgitt metodens signatur og returverdi, men du m~ selv programmere metodekroppen. Denne er beskrevet i pseudo-kode i hver metode: a) ~~lic St ring bestilltime(pasient p) < Pasienten p skal settes inn i arrayen av pasienter tilhørende denne legen, under forutsetning av at det er plass. I s~ fall skal nødvendig oppdatering av et eller flere datafelt finne sted og metoden skal s~ returnere legens navn. Hvis legen ikke har plass til pasienten, skal metoden returnere null. > b) p~lic Pasient nestepasient{ < Metoden skal returnere den pasienten som stsr for tur til S bli behandlet av legen. Hvis ingen venter p& tur, skal metoden returnere null. c) p~lic Pasient finnpaaient(int pnr) { I < Hvis pasienten med personnummer lik pnr er en av legens pasienter, skal dette pasientobjektet returneres av metoden. I motsatt fall skal metoden returnere null. > d) p~lic boolean setdiagnose(string d,int pnr) < Hvis pasienten med personnummer lik pnr er en av legens pasienter I file :/ /fl: \prog\legekontormed Gamme l Ordning \xfe bo4gamm el.html 13.12.2004

Side 4 av 7 skal diagnosen til pasienten settes Ilk d, og metoden skal returnere true. Hvis legen ikke har pasienten, skal metoden returnere false. > e) public String journal(int pnr } < Metoden skal returnere en tekst som inneholder navnet p legen og journalen til pasienten (se pasientens tostring-metode) med personnummer Ilk pnr, under forutsetning av at hun/han er en av legens pasienter. I motsatt fall skal metoden returnere en tekst som forteller at denne pasienten Ikke blir behandlet av legen. > OPPGAVE 3 I denne oppgaven skal du programmere metodene til klassen LegeVakten. Nedenfor ser du en skisse av klassen: public class LegeVakten private Lege[ legene; p~lic LegeVakten(Lege[ ( Ilegene - l; l < metoder du skal programmere> Konstruktøren tar Imot en array som Inneholder Lege-objekter. Du kan anta at arrayen er full, dvs. ingen av elementene har verdien null. I hver deloppgave f r du oppgitt metodens signatur og returverdl, men du m~ selv programmere metodekroppen..denne er beskrevet i pseudo-kode i hver metode: a) p~lic Lege finnlege(string n) < Hvis det finnes en lege med navn lik n p legevakten, skallegeobjektet for denne returneres av metoden. I motsatt fall skal metoden returnere null. > b) public Lege finnlediglege } < Metoden skal returnere den legen p~ legevakten som har færrest pasienter (uavhengig av om disse er behandlet eller Ikke). Ved likt antall spiller det Ingen rolle hvem som velges. > file:/ /li: \prog\legekontormed GammelOrdning \xfe bo4gamm el.htrnl 13.12.2004

EKSAMENS OPPGAVE Side 5 av 7 c) ~lic String bestilllegetime Pasient p) < Metoden skal bestille time for pasienten p hos den legen som har færrest pasienter (uavhengig av om disse er behandlet eller ikke). Returverdien skal være navnet p legen som pasienten har f tt time hos. Hvis denne legen ikke har plass til flere pasienter, skal metoden returnere null. (Denne situasjonen kan kun oppst hvis ingen av legene kan ta imot flere pasienter.) > d) ~~lic Pasient nestepasient(string n) < Metoden skal returnere den neste pasient som skal behandles av legen med navn lik n, under forutsetning av at denne legen jobber ved legevakten. Hvis denne legen ikke jobber der, eller vedkommende ikke har noen pasienter som skal behandles, skal metoden returnere null e) ppblic pasi.nt søkpasient int pn: Metoden skal returnere pasienten som har personnummer lik pnr. Hvis ingen av legene ved legevakten har en slik pasient, skal metoden returnere null. > f) p~lic String pasientjournal int pnr) Metoden skal returnere pasient journalen til pasienten som har personnummer lik pnr. Hvis ingen av legene ved legevakten har en slik pasient, skal metoden returnere null. > g) ~r1ic boolean setpasientdiagnose(strin~dr int pnr) < Metoden skal sette diagnose p pasienten med personnummer lik pnr og returnere true. Diagnosen er gitt av parameteren d. Dersom ingen av legene ved legevakten har en slik pasient, skal metoden returnere false, OPPGAVE 4 Klassen PasientMottak definerer brukergrensesnittet til programmet: file:/ /li: \prog \LegekontorMed Gammel Ordning\xfe bo4gammel.html 13.12.2004

EKSAMENSOPPGA VE Side 6 av 7 Nedenfor ser du en skisse av klassen: < i~port-setninger ~ic:cla8s PasientMottak extends JFrame private JTextField legefelt, pasientnavnfelt, pasientnrfeit; private JTextArea utskriftsområde; private JButton nytime, nestepasient, diagnose; private LegeVakten legevakten; private static final int EGENANDEL - 150; < datafelt du skal programmere under deloppgave e) > public PasientMottak() { < oppretter brukergrenaqnitt > < kode du skal programmere under deloppgave e) > Lege[) legene = opprettleqevakt(); legevakten - new LegeVakten(legene); this.setsize(350, 300); this.setvisible(true); < Metoder du skal programmere> J < Privat lytteklasse du skal prograilu1lere under deloppgave er> Din oppgave blir programmere klassens metoder, samt lytteobjekt for knappene. I hver deloppgave f r du oppgitt metodens signatur og returverdi, men du m selv programmere metodekroppen. Denne er beskrevet i pseudo-kode i hver metode: a) pu~lic Lege[] opprettlegevakt() < Følgende leger skal jobbe p~ legevakten: "Kristiansen","Liew, "Vogt", "Haug" og "Brun". Metoden skal returnere en array som innholder lege-objekter tilsvarende disse legene. Arrayen skal ikke være lengre enn file://li: \prog\le gekontormed Gammel Ordning\xfe bo4 gamin el.html 13.12.2004

EK$AMENSOPPGA VE Side 7 av 7 antallet leger. > b) pubfic void bestilllegetime() } < Når brukeren klikker ps "Bestil. timen-knappen skal denne metoden kalles. Du kan forutsette at navnet og personnummeret til pasienten da er fylt ut av brukeren. Metoden skal bestille legetime, under forutsetning av at det finnes en ledig lege som har plass. I så fall skal metoden skrive en tekst i utskriftsområdet som forteller hvem pasienten har fstt time hos. I motsatt fall skal det skrives en melding om at "ingen leger har ledige timer i dag". > c} PUb~iC vold nestepasient( J < N&r brukeren klikker p& "Neste pasient"-knappen skal denne metoden kalles. Du kan forutsette at brukeren av programmet har fylt ut navnet p& en lege i tekstfeltet legefei t. Metoden skal finne neste pasient som venter p& denne legen, for s& & skrive pasientens navn og personnummer i henholdsvis pasientnavnfelt og pasientnrfeit. I tillegg skal utskriftsomr&det "blankes ut". Hvis ingen pasienter venter p& tur eller legenavnet er ukjent (skrevet feil, eller legen ikke jobber ps legevakten), skal det skrives melding om det i utskriftsomrsdet. > d) pub~ic vold setdiagnose() < Ngr brukeren klikker p& "Diagnose"-knappen skal denne metoden kalles. Du kan forutsette at brukeren av programmet har skrevet en diagnose i utskriftsomrgdet og at personnummeret til pasienten den gjelder for st&r i tekstfeltet pasientnrfeit. Diagnosen skal s& lagres i pasientobjektet med dette personnummeret. Hvis dette gikk bra, skal pasientens journal skrives til utskriftsomrgdet. Journalen skal inneholde navnet pg legen som har behandlet pasienten, og ellers alle data som er lagret om vedkommede pasient. I tillegg skal det gis opplysninger om egenandelen som pasienten mg betale. Hvis det ikke finnes en lege med det aktuelle navnet, eller det ikke finnes noen pasient med det aktuelle personnummeret, skal det skrives melding om det til utskriftsomrgdet. > e) Du skal n~ programmere en indre klasse slik at den fungerer som et lytteobjekt for brukergrensesnittets knapper. Du skal i tillegg tilføye et nødvendig datafelt, samt programmere nødvendig kode I konstruktøren for ~ opprette lytteobjekt og knytte knappene til lytteobjektet. Sørg for at lytteobjektet kaller opp de riktige metodene av de du har definert over, alt etter som hvilken hendelse som finner sted. Merknad For at de fire klassene som er beskrevet ovenfor skal gi et kjørbart program, m~ det tilføyes en rnain-metode. Denne skal du Ikke programmere. file://li: \prog\le gekontormed GammelOrdni ng \xfe bo4gamme I.html 13.12.2004