innledning eksamen inf1010 våren 2017 - universitetet i oslo · eksamen inf1010 våren 2017 1/12...

76
Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i oppgave 5G) PRAKTISK INFORMASJON Hvis du synes noen deler av oppgaven er uklar kan du legge dine egne forutsetninger til grunn og gjøre dine egne rimelige antagelser. Gjør i så fall rede for disse forutsetningene og antagelsene. Unngå å bruke en stor del av tiden din på oppgaver som gir deg få poeng. Faglærer prøver å besøker eksamenslokalet mellom klokka 10 og 11 for å oppklare eventuelle uklarheter og feil i oppgaveteksten. Tillatte hjelpemidler Eneste tillatte hjelpemiddel er læreboken, samt utdelt ekstrakapittel om tråder. Tegning på papir I oppgave 1A skal svaret tegnes på papir (skisseark). Instruksjon om utfylling av skisseark finner du på pulten din. Husk å notere kodenummeret og annen informasjon med én gang; du vil ikke få tid til å gjøre dette etter at eksamen er over. Det blir IKKE gitt ekstratid for å fylle ut informasjonsboksene på skisseark (engangskoder, kand.nr. o.l.). OBS: denne oppgaven er merket som type "muntlig" i oppgaveoversikten av tekniske årsaker. Om du har behov for å tegne andre datastrukturer (tilhørende andre oppgaver enn 1A) for å vise sensor hvordan du tenker når du skriver algoritmer, så tegner du dette etter svaret på oppgave 1A, skriver tydelig på tegningen hvilken/hvilke oppgave(r) tegningen tilhører, og leverer alt som svar på oppgave 1A. Blandede tekst/kodesvar I noen oppgaver skal du både skrive tekst og program. Du kan da skrive teksten inn i ”programboksen” uten å passe på riktig Java-syntaks, dvs. du behøver ikke kommentere ut teksten du skriver. Ekstraoppgave Oppgave 5G er en ekstraoppgave. Du vil ikke tape poeng hvis du ikke løser denne, men du kan få ekstra poeng ved å gjøre det. (Eventuelle poeng over 100 vil ikke telle ved fastsettelse av karakter). INNLEDNING Du har søkt jobb i konsulentselskapet SykehusData og er blitt kalt inn til et intervju der du blir bedt om å vise at du er en god Java-programmerer. SykehusData legger vekt på at de ansatte er gode i objektorientert programmering, og du må derfor løse oppgavene i dette oppgavesettet for å vise dette. Hele oppgavesettet handler om å lage deler av et datasystem for sykehus. Du skal ikke utvikle et fullstendig kjørbart program, og heller ikke et program som gjør så mye. Du skal bare lage deler av det som kunne tenkes å bli et program i et sykehus. Du vil nok også se at det kan være ting du blir bedt om å programmere som kan være nokså unaturlig og urealistisk i et virkelig sykehus. Grunnen til dette er at SykehusData ønsker at du skal vise at du er god i å programmere på forskjellige måter. På sykehuset er det ansatte og pasienter, men oppgave 1 handler hovedsakelig om ansatte. I oppgave 2 skal du lage beholdere for pasienter, mens i oppgave 3 skal du lage avdelinger på sykehuset. I oppgave 4 skal du sette det hele sammen til et fullt sykehus. Til slutt skal du i oppgave 5 bruke tråder til å analysere sykdomsbildet hos noen pasienter. Om klassen Pasient. I mange av oppgavene skal du programmere med pasienter. Du skal bruke den definisjonen av klassen Pasient som du ser under. Du kan anta at alle programmene du lager i dette oppgavesettet ligger i samme pakke eller katalog som klassen Pasient , og programmene har dermed tilgang til å lese og skrive i alle variable i klassen.

Upload: others

Post on 03-Mar-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

1/12

Innledning

EksamenINF1010våren2017Totalt100poengmulige+5bonuspoeng(ioppgave5G)PRAKTISKINFORMASJONHvisdusynesnoendeleravoppgaveneruklarkanduleggedineegneforutsetningertilgrunnoggjøredineegnerimeligeantagelser.Gjørisåfallredefordisseforutsetningeneogantagelsene.Unngååbrukeenstordelavtidendinpåoppgaversomgirdegfåpoeng.Faglærerprøveråbesøkereksamenslokaletmellomklokka10og11foråoppklareeventuelleuklarheterogfeilioppgaveteksten.TillattehjelpemidlerEnestetillattehjelpemiddelerlæreboken,samtutdeltekstrakapittelomtråder.TegningpåpapirIoppgave1Askalsvarettegnespåpapir(skisseark).Instruksjonomutfyllingavskissearkfinnerdupåpultendin.Huskånoterekodenummeretoganneninformasjonmedéngang;duvilikkefåtidtilågjøredetteetterateksamenerover.DetblirIKKEgittekstratidforåfylleutinformasjonsboksenepåskisseark(engangskoder,kand.nr.o.l.).OBS:denneoppgavenermerketsomtype"muntlig"ioppgaveoversiktenavtekniskeårsaker.Omduharbehovforåtegneandredatastrukturer(tilhørendeandreoppgaverenn1A)foråvisesensorhvordandutenkernårduskriveralgoritmer,såtegnerdudetteettersvaretpåoppgave1A,skrivertydeligpåtegningenhvilken/hvilkeoppgave(r)tegningentilhører,oglevereraltsomsvarpåoppgave1A.Blandedetekst/kodesvarInoenoppgaverskaldubådeskrivetekstogprogram.Dukandaskriveteksteninni”programboksen”utenåpassepåriktigJava-syntaks,dvs.dubehøverikkekommentereuttekstenduskriver.EkstraoppgaveOppgave5Gerenekstraoppgave.Duvilikketapepoenghvisduikkeløserdenne,mendukanfåekstrapoengvedågjøredet.(Eventuellepoengover100vilikketellevedfastsettelseavkarakter).INNLEDNINGDuharsøktjobbikonsulentselskapetSykehusDataogerblittkaltinntiletintervjuderdublirbedtomåviseatduerengodJava-programmerer.SykehusDataleggervektpåatdeansatteergodeiobjektorientertprogrammering,ogdumåderforløseoppgaveneidetteoppgavesettetforåvisedette.Heleoppgavesettethandleromålagedeleravetdatasystemforsykehus.Duskalikkeutvikleetfullstendigkjørbartprogram,oghellerikkeetprogramsomgjørsåmye.Duskalbarelagedeleravdetsomkunnetenkesåblietprogramietsykehus.Duvilnokogsåseatdetkanværetingdublirbedtomåprogrammeresomkanværenoksåunaturligogurealistiskietvirkeligsykehus.GrunnentildetteeratSykehusDataønskeratduskalviseatduergodiåprogrammerepåforskjelligemåter.Påsykehuseterdetansatteogpasienter,menoppgave1handlerhovedsakeligomansatte.Ioppgave2skaldulagebeholdereforpasienter,mensioppgave3skaldulageavdelingerpåsykehuset.Ioppgave4skaldusettedethelesammentiletfulltsykehus.Tilsluttskalduioppgave5bruketrådertilåanalyseresykdomsbildethosnoenpasienter.

OmklassenPasient.

Imangeavoppgaveneskalduprogrammeremedpasienter.DuskalbrukedendefinisjonenavklassenPasientsomduserunder.DukanantaatalleprogrammenedulageridetteoppgavesettetliggerisammepakkeellerkatalogsomklassenPasient,ogprogrammenehardermedtilgangtilåleseogskriveiallevariableiklassen.

Page 2: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

2/12

classPasient{finalStringfnr;finalStringnavn;Pasientneste;finalstaticintMAXPASPRIO=10;intprioritet;//0<=prioritet<=MAXPASPRIOintsengNr=-1;Pasient(Stringnavn,Stringfnr,intprio){this.navn=navn;this.fnr=fnr;prioritet=prio;}}Deternaturligatallepasienterharenprioritetavhengigavhvormyesmerterdeharoghvorsykedeer.Mangepasientervilogsåbliinnlagtogdeterderfornaturligatdeharenidentifikasjonavdensengenellerdensengeplassendeliggeri,oghererdetteangittsometheltall(sengNr,sengnummer).Deandrevariableneogkonstanteneiklassenvilbliforklartetterhvert.NB:vedkopieringoglimingavkodevilkodeboksensetteinnekstrablankelinjermellomhverkodelinje.Vierklaroverdetteproblemetsomdessverreskyldestekniskeårsakerutenforvårkontroll.Duvilikkeblitrukketforeventuelleformatteringsproblemerrelaterttildette.

1(a) Oppgave1AIdenneoppgavenskaldubrukedigitalhåndtegning.Brukegetskisseark(utdelt).Seinstruksjonforutfyllingavskissearkpåpult.Tegnoppklassehierarkietforansattepåsykehuset.Ikketamedvariable,konstanterellermetoder.Hvisdueritvilomnoekandethendedufårnoentipsvedålesevidereomdeenkelteansatte.

Makspoeng:2

1(b) Oppgave1BSkriviJavaalledeleravdetteklassehierarkietsomharmedlegerågjøre(ogsomfølgerbeskrivelsenioppgave1Aoginnledningentiloppgave1B).Sagtpåenannenmåte:Duskalskrivealledeleneavdetteklassehierarkietunntattdetsomharmedsykepleiereågjøre.

Skrivdittsvarher...

Page 3: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

3/12

Skrivdittsvarher...

Makspoeng:9

2(a) Oppgave2ASkrivklassenPasientAdm.Skrivdittsvarher...

Makspoeng:4

2(b) Oppgave2B

1

1

Page 4: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

4/12

SkrivklassenPasientPrio.Skrivdittsvarher...

Makspoeng:16

2(c) Oppgave2CSkrivklassenPasientTabell.Skrivdittsvarher...

Makspoeng:12

1

1

Page 5: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

5/12

3(a) Oppgave3ASkrivklassenAvdeling.Skrivdittsvarher...

Makspoeng:10

3(b) Oppgave3BSkrivdetoklasseneAkuttenogSengepost.Skrivdittsvarher...

Makspoeng:10

1

1

Page 6: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

6/12

4(a) Oppgave4ASkrivdetremetodenesomklassenSykehusskalinneholde.Skrivdittsvarher...

Makspoeng:5

4(b) Oppgave4BSkrivklassenSykehusmedtoavdelinger,enakuttavdelingogensengepostmed100sengerogenmain-metodesom:

Opprettertopasienterogskriverdeminnpå(setterdeminni)akutt-avdelingen.Overførerenavpasientenefraakutt-avdelingentilsengepostenSkriverdenandrepasientenutfra(henterpasientenutfra)akutt-avdelingen.

Skrivdittsvarher...

1

Page 7: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

7/12

Skrivdittsvarher...

Makspoeng:7

5(a) Oppgave5A1. Forklarkorthvilkeforandringerdumågjøreiprogrammenedulagetsomsvarpåoppgavene2,3og4nårklassenPasientblirabstrakt?

2. SkrivdenabstraktesuperklassenPasientogdetosubklasseneKvinneligPasientogMannligPasient.3. Beskrivhvordanprogrammetdittirestenavoppgave5skalkalledefirestatiskemetodeneiSykehuspåenmestmuligobjektorientertmåte.Skrivgjerneenellerflerekortekodebitersomviserdetteogsomdukanbrukesenereioppgave5.

NB:vedkopieringoglimingavkodevilkodeboksensetteinnekstrablankelinjermellomhverkodelinje.Vierklaroverdetteproblemetsomdessverreskyldestekniskeårsakerutenforvårkontroll.Duvilikkeblitrukketforeventuelleformatteringsproblemerrelaterttildette.

Skrivdittsvarher...

1

Page 9: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

9/12

Oppgave5CSkrivtråd-klassenSil.ParametrenetilkonstruktørenskalinneholdereferansertilPasientPrio-objektetogAnalyseBuffer-objektet.Entrådterminerernårdenikkefårreturnertetpasient-objektfraPasientPrio-objektet.Skrivdittsvarher...

Makspoeng:5

5(d) Oppgave5DSkrivklassenAnalyseBuffer.Rekkefølgenpåinnsetingoguttakbørværeførst-inn-først-ut,menellerskanduvelgehvaslagsdatastrukturduvilbruke,ogdeterlovåhentenoefraJava-biblioteket.Skrivdittsvarher...

Makspoeng:5

1

1

Page 10: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

10/12

Makspoeng:5

5(e) Oppgave5ESkrivtråd-klassenAnalyse.Ikketenkpåattrådeneskalterminere.Skrivdittsvarher...

Makspoeng:2

5(f) Oppgave5FSkrivenmetodekaltutforAnalyse(utføranalyse)somhartoparametre.DeneneerenreferansetiletPasientPrio-objekt,denandreerantallanalysetrådersomskalopprettes.Metodenskal:

OppretteetAnalyseBuffer,oppretteogstarteMAXPASPRIO+1tråderavklassenSilogoppretteogstartetråderavklassenAnalyse

Huskatidenneoppgavenskalduikkeprøveåterminereanalyse-trådenepåenfornuftigmåte

Skrivdittsvarher...

1

Page 11: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

11/12

Skrivdittsvarher...

Makspoeng:5

5(g) Ekstraoppgave5GNB!Detteerenekstraoppgave.Hvisduikkeløserdenneoppgavenkandufortsattfå100poengogfullpott.Forklarogbegrunnmegetkorthvordandetteprogrammetkanmodifiseresslikatalletrådeneallikevelterminererpåenfornuftigmåte?Taenkopiavprogramkodendinfrabesvarelsenavoppgavene5C–5FogmodifiserdenslikatalletrådeneterminererfornuftigogutforAnalyse-metodenførstterminerernåralletrådeneogsåharterminert.Foratsensorskalsehvilkeforandringerduhargjortpåprogrammetdittskalduskriveenen-bokstavskommentar(Fforforandring)påsluttenavallelinjenedumodifisererellerleggerinn,foreksempelslik://FNB:vedkopieringoglimingavkodevilkodeboksensetteinnekstrablankelinjermellomhverkodelinje.Vierklaroverdetteproblemetsomdessverreskyldestekniskeårsakerutenforvårkontroll.Duvilikkeblitrukketforeventuelleformatteringsproblemerrelaterttildette.

Skrivdittsvarher...

1

Page 12: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

EksamenINF1010våren2017

12/12

Skrivdittsvarher...

Makspoeng:5

1

Page 13: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 1.aAttached

Page 14: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise1(11pointsintotal)Introductiontoexercise1ATherearetwokindsofemployeesatthehospital:doctorsandnurses.Somedoctorsareconsultants(chiefphysician).Someconsultantsandsomenurseshavespecialtrainingsothattheyhaveanadditionalroleasadministrators.Theprogrammustbeabletodealwiththisroleinthesamewayindependentlyofwhetheranemployeeisaconsultantoranurse.Introductiontoexercise1BAllemployeeshaveanemployeeidentifier(aString)andaname(alsoaString).Bothattributesareconstantsandarespecifiedasanobjectisbeingcreated.Itshouldnotbepossibletocreateanyobjectsofthisclass.Doctorshaveanadditionaldoctoridentificationnumber(aninteger).Allconsultantshaveaspecialtytype(String).Alloftheseattributesareconstantsaswellandarespecifiedwhencreatingobjectsoftheseclasses.Donotwritemethodsforreadingtheconstants.Thoseconsultantsandnurseswhoarealsoadministratorshaveadepartmentcode(aString),andwemustbeabletoretrievethedepartmentcodeofanyadministrator.Thiscodeisalsospecifiedatobjectcreationtime.

Page 15: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 1.aAttached

Page 16: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave1(totalt11poeng)Innledningtiloppgave1ADetertotyperansattepåsykehuset:Legerogsykepleiere.Noenlegereroverleger.Noenoverlegerognoensykepleierehartattenegenutdanningsomgjøratdeitillegghardenekstrarollenatdeeradministratorer.Detteerenrollesomprogrammetskalkunnebehandlepåsammemåteuavhengigomdeteroverlegerellersykepleiere.Innledningtiloppgave1BAlleansatteharenansattidentifikasjon(enString)ogetnavn(ogsåenString).Beggedelererkonstanterogoppgisidetetobjektopprettes.Detskalikkekunnelagesobjekteravdenneklassen.EnlegeharitilleggetlegeNummer(etheltall).Alleoverlegerharenspesialiseringstype(String).Alledisseegenskapeneerogsåkonstanterogskaloppgisidetdetlagesobjekteravdisseklassene.Ikkelagmetoderforåleseavkonstantene.Deoverlegeneogsykepleiernesomitilleggeradministratorerharenansvarskode(enString),ogforalleadministratorerskalvikunnefinneutderesansvarskode.Ogsådennekodenskaloppgisnårdetopprettesobjekteravdisseklassene.

Page 17: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 1.bAttached

Page 18: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise1(11pointsintotal)Introductiontoexercise1ATherearetwokindsofemployeesatthehospital:doctorsandnurses.Somedoctorsareconsultants(chiefphysician).Someconsultantsandsomenurseshavespecialtrainingsothattheyhaveanadditionalroleasadministrators.Theprogrammustbeabletodealwiththisroleinthesamewayindependentlyofwhetheranemployeeisaconsultantoranurse.Introductiontoexercise1BAllemployeeshaveanemployeeidentifier(aString)andaname(alsoaString).Bothattributesareconstantsandarespecifiedasanobjectisbeingcreated.Itshouldnotbepossibletocreateanyobjectsofthisclass.Doctorshaveanadditionaldoctoridentificationnumber(aninteger).Allconsultantshaveaspecialtytype(String).Alloftheseattributesareconstantsaswellandarespecifiedwhencreatingobjectsoftheseclasses.Donotwritemethodsforreadingtheconstants.Thoseconsultantsandnurseswhoarealsoadministratorshaveadepartmentcode(aString),andwemustbeabletoretrievethedepartmentcodeofanyadministrator.Thiscodeisalsospecifiedatobjectcreationtime.

Page 19: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 1.bAttached

Page 20: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave1(totalt11poeng)Innledningtiloppgave1ADetertotyperansattepåsykehuset:Legerogsykepleiere.Noenlegereroverleger.Noenoverlegerognoensykepleierehartattenegenutdanningsomgjøratdeitillegghardenekstrarollenatdeeradministratorer.Detteerenrollesomprogrammetskalkunnebehandlepåsammemåteuavhengigomdeteroverlegerellersykepleiere.Innledningtiloppgave1BAlleansatteharenansattidentifikasjon(enString)ogetnavn(ogsåenString).Beggedelererkonstanterogoppgisidetetobjektopprettes.Detskalikkekunnelagesobjekteravdenneklassen.EnlegeharitilleggetlegeNummer(etheltall).Alleoverlegerharenspesialiseringstype(String).Alledisseegenskapeneerogsåkonstanterogskaloppgisidetdetlagesobjekteravdisseklassene.Ikkelagmetoderforåleseavkonstantene.Deoverlegeneogsykepleiernesomitilleggeradministratorerharenansvarskode(enString),ogforalleadministratorerskalvikunnefinneutderesansvarskode.Ogsådennekodenskaloppgisnårdetopprettesobjekteravdisseklassene.

Page 21: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 2.aAttached

Page 22: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Introductiontoexercise2.(29pointsintotal)Inthisexercise,youwillcreateanabstractsuperclasswithtwosubclasses.TheseclassesshouldbeabletoadministratePatientobjects.Youwillneedtomakeuseoftheseinexercise3,soweencourageyoutoreadexercise3beforesolvingexercise2.TheabstractsuperclassshallbenamedPatientAdm(shortforpatientadministration)andismeanttoadministratepatientswhoarehospitalized.Theclassshouldhavethreemethods:voidinsertPatient(Patientp),Patientretrieve(Patientp)andPatientretrieve(inti),whereiisapatientpriority.Bothretrievemethodsmustremovethepatientfromthecontainer.

Page 23: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 2.aAttached

Page 24: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Innledningtiloppgave2.(totalt32poeng)Duskalidenneoppgavenlageenabstraktsuperklassemedtosubklasser.DisseklasseneskalkunneadministrerePasient-objekter.Duvilfåbrukfordisseioppgave3,sålesgjerneoppgave3førdubegynneråbesvareoppgave2.DenabstraktesuperklassenskalhetePasientAdm(forkortelseforpasientadministrasjon)ogbrukestilåadministrerepasientersomerpåsykehuset.Klassenskalhatremetoder:voidsettInnPasient(Pasientp),PasienthentUt(Pasientp)ogPasienthentUt(inti),derierenpasientprioritet.BeggehentUt-metodeneskalfjernepasientenfrabeholderen.

Page 25: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 2.bAttached

Page 26: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Introductiontoexercise2BTheclassPatientPrio(patientpriority)shallbeasubclassofPatientAdm.UsingthePatientPrioclass,theprogramshallbeabletoinsertpatientsaccordingtopriority,observingaFirst-In-First-Out(FIFO)orderingwithinthesamepriority.Themotivationforthisclassisthatwhenpatientsarriveatthehospital,anurseassignsthemaprioritydependingonhowurgentlythepatientsneedtreatment.Tofacilitatethis,theprogramshallcontainonelistperpriority.YoumustwritealinkedlistsimplementationyourselfthatadherestothisFIFOprinciplewithinthesameprioritybyusingthenext-referencethatalreadyexistswithinthePatientobjects.PatientPriomustcontaintwoarraysoflengthMAXPATPRIO+1andoftypePatient,wherethearrayindexdenotespriority.Onearraycontainstheheadsofthelists,theotherthetailsofthelists,seetheillustrationforaMAXPATPRIOvalueof3below.Sincewealsoemploypriority0theprogramwillthuslycontainMAXPATPRIO+1lists.Wheninsertingapatient,theprogrammustusethepatient'sprioritytofindtheappropriatelisttoinsertherinto.Themethodretrieve(i)retrievesrecordsfromthelistofindexiaccordingtotheFIFO-principle.Themethodretrieve(p)mustusethepatient'sprioritytoselecttheappropriatelist,andretrievetheobjectthatpreferstofromthelist.Thismethodmustalsoreturnareferencetotheretrievedpatient,ornullincasethespecifiedpatientisnotfoundinthelist.

Illustrationwithtwoarraysoflength4andafewpatientobjectsthatarelinkedtogether.

(Admittedly,weprobablywouldn'tusetwoarraysinthismannertomanagethesequeuesinarealprogram.Werequireyoutodoitthiswaysoastoallowyoutodemonstrateyourabilitytoprogramlinkedlists).

0 1 2 3

0 1 2 3

null

null

null

null

null

Page 27: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 2.bAttached

Page 28: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Innledningtiloppgave2BKlassenPasientPrio(pasientprioritet)skalværeensubklasseavPasientAdm.IklassenPasientPrioskalprogrammetkunnesettinnpasienteretterprioritet,ogdetskalværeførst-inn-først-ut(first-in-first-out,FIFO)rekkefølgeinnensammeprioritet.Motivasjonenbakdenneklasseneratnårpasienterkommertilsykehusetvilensykepleiergipasientenenprioritetavhengigavhvorfortpasientenmåbehandles.Derforskalprogrammetinneholdeenlisteperprioritet.DuskalselvskrivelenketelistersomimplementererdetteFIFO-prinsippetinnensammeprioritetvedåbrukeneste-referansensomaltfinnesiPasient-objektene.PasientPrioskalinneholdentoarrayeravlengdeMAXPASPRIO+1ogavtypePasient,derindeksenangirprioritet.Denenearrayeninneholderpekeretilstarteneavlistene,denandrearrayeninneholderpekeretilobjektenesomliggerbakerstilistene,sefigurmedMAXPASPRIOlik3nedenfor.Sidenviogsåbrukerprioritet0vilprogrammetfølgeliginneholdeMAXPASPRIO+1antalllister.Nårenpasientsettesinnskalprogrammetbrukepasientensprioritettilåfinneriktiglisteåsetteinni.MetodenhentUt(i)henterutfralistenmedindeksietterFIFO-prinsipp.MetodenhentUt(p)skalbrukepasientensprioritettilåfinneriktigliste,oghenteobjektetppekerpåutavlisten.Densistemetodenskalogsåreturnereenreferansetilpasientensombletattut,menomdennepasientenikkeblirfunnetilistenskalmetodenereturnerenull.

Figurmedtoarrayeravlengde4ognoenpasientobjektersomerlenketsammen.

(Iparentesbemerkesdetatvinokikkevillebruketoslikearrayerpådennemåtenietvirkeligprogram,mendetgjøresherforatduskalviseatdubeherskeråprogrammerelenkedelister)

0 1 2 3

0 1 2 3

null

null

null

null

null

Page 29: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 2.cAttached

Page 30: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Introductiontoexercise2CThePatientTableclassshallbeasubclassofPatientAdm.ObjectsofthePatientTableclassshallcontainanarrayoftypePatient.Thelengthofthisarrayisspecifiedwhencreatinganewobject.Themotivationforthisclassisthateveryindexinthearrayrepresentsabedorbedlocationwithinthehospital.Whenanelementinthearrayisnull,thatbedisconsideredvacant.Whenanelementcontainsa(non-null)referencetoapatient,thenthatpatientisoccupyingthelocation.Wheninsertingpatients,priorityshallnotbetakenintoconsideration.However,inordertoensurethatalllocationsmaybetakenintouse,youmaynotstarttosearchforavacantlocationstartingatindex0,butratherstartingwherethelastpatientwasinserted(uponthepreviouscalltoinsertPatient).Programmingthiscorrectlyisanimportantpartofthisexercise.Whenapatienthasbeenassignedalocationinthearray,theidentifier(index)ofthislocationmustbeassignedtothevariablebedNointhepatientobject.

Page 31: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 2.cAttached

Page 32: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Innledningtiloppgave2CKlassenPasientTabellskalværeensubklasseavPasientAdm.ObjekteravklassenPasientTabellskalinneholdeenarrayavtypenPasient.Lengdenpådennearrayenoppgisnårdetopprettesetnyttobjekt.Motivasjonenbakklassenerathverindeksiarrayenkananginummeretpåensengellerensengeplasspåsykehuset.Nårenreferanseiarrayenernull,erdennesengenellersengeplassenledig.Nårreferansenikkeernullpekerdenpåpasientensomliggerpådenneplassen.Nårdusetterinneenpasientspillerikkeprioritetennoenrolle.Menforatallesengerellersengeplasserskalbrukes,skalduikkestarteletingetterledigsengeplassfra0,menfradersistepasientblesattinn(vedforrigekallpåsettInnPasient).Atduprogrammererdetteriktigerenviktigdelavdenneoppgaven.NårenpasientharfåttenplassiarrayenskalnummeretpådenneplassentilordnesvariabelensengNripasient-objektet.MetodenhentUt(i)skalfinneogtauten(vilkårlig)pasientmedprioritetliki.Letgjernefraindeks0ogoppover.Omdetikkefinnesnoenpasientmeddenneprioritetenreturneresnull.MetodenhentUt(p)skalbrukepasientenssengNrtilåfjernepasientenfrabeholderen.NårenpasienttasutsettessengNrtil-1.

Page 33: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 3.aAttached

Page 34: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise3(20pointsintotal)Theprogramyouwritetosolvethisexercisemaybeshortcomparedtotheamountofpointsatstake.Therefore,itisimportantthatyoutakeyourtimeconsideringhowtowriteagoodsolution.InthisexerciseyouwillstartoffbydefiningaWardclassthatwillbethesuperclassofallhospitalwards(departments).Thenyouwilldefinetwosubclasses,EmergencyDeptandInpatientWard.ThemannerinwhichallwardsreceiveandretrievepatientsmustbedefinedintheWardsuperclass.Anywardmustbeabletoadministratethepatientsthatarepresentintheward,thereforeallwardsmustcontainanobjectwhichisasubclassofPatientAdm.TheWardclassshallcontainthreemethods:

• voidinsert(Patientp)• Patientretrieve(Patientp)• Patientretrieve(inti),whereiisapriority.

Thesemethodsmustnotbeabstract,butrathercontainfullimplementationswhichshouldnotbeoverridableinsubclasses.TheclassesEmergencyDeptandInpatientWardshallbothbesubclassesofWard.IntheEmergencyDeptclassallpatientswillbeinsertedandremovedaccordingtotheirpriority.UsethePatientPrioclasstoadministratethepatientsofthisward.IntheInpatientWardclassallpatientswillbeinsertedandremovedwithrespecttotheavailablebedsontheward.Aninpatientwardisawardwithagivennumberofbeds,specifiedwhencallingtheconstructoroftheclass.UsethePatientTableclasstoimplementthis.(Itissomewhatartificialthatpatientscanberetrievedbasedonprioritywithinthisward,butthatishowitworksforthepurposeofthisexercise).

Page 35: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 3.aAttached

Page 36: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave3(totalt20poeng)Idenneoppgavenkanprogrammetdulagerværekortiforholdtilantallpoeng.Deterderforviktigatdubrukertidpååskjønnehvordanengodløsningskalprogrammeres.DuskalidenneoppgavenførstdefinereenklasseAvdelingsomskalværesuperklassentilalleavdelingenepåsykehuset.Deretterskaldudefineretosubklasser,AkuttenogSengepost.MåtenalleavdelingertarimotogtarutpasienterskaldefineresisuperklassenAvdeling.Enhveravdelingmåkunneadministreredepasientenesomerpådenneavdelingen,derformåalleavdelingerinneholdeetobjektsomerensubklasseavPasientAdm.KlassenAvdelingskalinneholdetremetoder:

• voidsettInn(Pasientp)• PasienthentUt(Pasientp)• PasienthentUt(inti),derierenprioritet.

Detremetodeneskalikkeværeabstrakte,menderimotinneholdefullkodesomikkeskalkunneredefineresisubklasser.KlasseneAkuttenogSengepostskalbeggeværesubklassertilAvdeling.IklassenAkuttenskalallepasientertasimotogsettesinnbasertpåprioritet.BrukklassenPasientPriotilåadministrerepasientenepådenneavdelingen.IklassenSengepostskalallepasientertasimotogsettesinnbasertpåledigesengerellersengeplasser.Ensengeposterenavdelingmedetantallsengersomangissomenkonstruktørtilavdelingen.BrukklassenPasientTabelltildette.(Deterlittkunstigatpasienterkanblitattutfraensengepostbasertpåprioritet,mendeterslikdeteridenneoppgaven).

Page 37: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 3.bAttached

Page 38: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise3(20pointsintotal)Theprogramyouwritetosolvethisexercisemaybeshortcomparedtotheamountofpointsatstake.Therefore,itisimportantthatyoutakeyourtimeconsideringhowtowriteagoodsolution.InthisexerciseyouwillstartoffbydefiningaWardclassthatwillbethesuperclassofallhospitalwards(departments).Thenyouwilldefinetwosubclasses,EmergencyDeptandInpatientWard.ThemannerinwhichallwardsreceiveandretrievepatientsmustbedefinedintheWardsuperclass.Anywardmustbeabletoadministratethepatientsthatarepresentintheward,thereforeallwardsmustcontainanobjectwhichisasubclassofPatientAdm.TheWardclassshallcontainthreemethods:

• voidinsert(Patientp)• Patientretrieve(Patientp)• Patientretrieve(inti),whereiisapriority.

Thesemethodsmustnotbeabstract,butrathercontainfullimplementationswhichshouldnotbeoverridableinsubclasses.TheclassesEmergencyDeptandInpatientWardshallbothbesubclassesofWard.IntheEmergencyDeptclassallpatientswillbeinsertedandremovedaccordingtotheirpriority.UsethePatientPrioclasstoadministratethepatientsofthisward.IntheInpatientWardclassallpatientswillbeinsertedandremovedwithrespecttotheavailablebedsontheward.Aninpatientwardisawardwithagivennumberofbeds,specifiedwhencallingtheconstructoroftheclass.UsethePatientTableclasstoimplementthis.(Itissomewhatartificialthatpatientscanberetrievedbasedonprioritywithinthisward,butthatishowitworksforthepurposeofthisexercise).

Page 39: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 3.bAttached

Page 40: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave3(totalt20poeng)Idenneoppgavenkanprogrammetdulagerværekortiforholdtilantallpoeng.Deterderforviktigatdubrukertidpååskjønnehvordanengodløsningskalprogrammeres.DuskalidenneoppgavenførstdefinereenklasseAvdelingsomskalværesuperklassentilalleavdelingenepåsykehuset.Deretterskaldudefineretosubklasser,AkuttenogSengepost.MåtenalleavdelingertarimotogtarutpasienterskaldefineresisuperklassenAvdeling.Enhveravdelingmåkunneadministreredepasientenesomerpådenneavdelingen,derformåalleavdelingerinneholdeetobjektsomerensubklasseavPasientAdm.KlassenAvdelingskalinneholdetremetoder:

• voidsettInn(Pasientp)• PasienthentUt(Pasientp)• PasienthentUt(inti),derierenprioritet.

Detremetodeneskalikkeværeabstrakte,menderimotinneholdefullkodesomikkeskalkunneredefineresisubklasser.KlasseneAkuttenogSengepostskalbeggeværesubklassertilAvdeling.IklassenAkuttenskalallepasientertasimotogsettesinnbasertpåprioritet.BrukklassenPasientPriotilåadministrerepasientenepådenneavdelingen.IklassenSengepostskalallepasientertasimotogsettesinnbasertpåledigesengerellersengeplasser.Ensengeposterenavdelingmedetantallsengersomangissomenkonstruktørtilavdelingen.BrukklassenPasientTabelltildette.(Deterlittkunstigatpasienterkanblitattutfraensengepostbasertpåprioritet,mendeterslikdeteridenneoppgaven).

Page 41: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 4.aAttached

Page 42: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise4(12pointsintotal)Inthisexercise,youwilldefineaHospitalclasswithtwowards:anemergencydepartmentandaninpatientward.Youwillwriteamainmethodsuchthatanemergencydepartmentandaninpatientwardarecreated,beforecreating2patientswhoaretheninsertedintotheemergencydepartment.Then,apatientwillbetransferredfromtheemergencydepartmenttotheinpatientward,andfinallyanotherpatientwillbedischargedfromtheemergencydepartment.TheHospitalclassshallcontainthreemethodssothat:oneadmitsapatienttoaward(i.e.insertsthepatientintothatward),anothermethodtransfersapatientfromonewardtoanotherandathirdmethodthatdischargesapatientfromaward(removesapatientfromthatward),respectively.Allofthesemethodsreceiveareferencetothepatientinquestionasaparameter.Theadmissionanddischargemethodsmustalsoreceiveareferencetothewardinquestion,whilstthetransferalmethodmustreceivereferencestobothwardsconcerned.

Page 43: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 4.aAttached

Page 44: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave4(totalt12poeng)IdenneoppgavenskalduskriveenklasseSykehusmedtoavdelinger,enakutt-avdelingogensengepost.Tilsluttskalduskriveenmain-metodeslikatdetopprettesenakutt-avdelingogensengepost-avdeling,videreskaldetopprettes2pasientersomsettesinnpåakutten.Deretterskalenpasientoverføresfraakuttentilsengeposten,ogtilsluttskalenpasientskrivesutfraakutten.KlassenSykehusskalinneholdetremetodersomhhv.skriverenpasientinnpåenavdeling(dvssetterpasienteninnpådenneavdelingen),overførerenpasientfraenavdelingtilenannenogskriverenpasientutfraenavdeling(tarpasientenutavavdelingen).Allemetodeneskalhaenreferansetilenpasientsomparameter.Skrivinnogskrivutskalhaenreferansetildenaktuelleavdeling,menoverførskalhatoparametreitilleggtilpasienten(referansertildetoaktuelleavdelingene)

Page 45: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 4.bAttached

Page 46: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise4(12pointsintotal)Inthisexercise,youwilldefineaHospitalclasswithtwowards:anemergencydepartmentandaninpatientward.Youwillwriteamainmethodsuchthatanemergencydepartmentandaninpatientwardarecreated,beforecreating2patientswhoaretheninsertedintotheemergencydepartment.Then,apatientwillbetransferredfromtheemergencydepartmenttotheinpatientward,andfinallyanotherpatientwillbedischargedfromtheemergencydepartment.TheHospitalclassshallcontainthreemethodssothat:oneadmitsapatienttoaward(i.e.insertsthepatientintothatward),anothermethodtransfersapatientfromonewardtoanotherandathirdmethodthatdischargesapatientfromaward(removesapatientfromthatward),respectively.Allofthesemethodsreceiveareferencetothepatientinquestionasaparameter.Theadmissionanddischargemethodsmustalsoreceiveareferencetothewardinquestion,whilstthetransferalmethodmustreceivereferencestobothwardsconcerned.

Page 47: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 4.bAttached

Page 48: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave4(totalt12poeng)IdenneoppgavenskalduskriveenklasseSykehusmedtoavdelinger,enakutt-avdelingogensengepost.Tilsluttskalduskriveenmain-metodeslikatdetopprettesenakutt-avdelingogensengepost-avdeling,videreskaldetopprettes2pasientersomsettesinnpåakutten.Deretterskalenpasientoverføresfraakuttentilsengeposten,ogtilsluttskalenpasientskrivesutfraakutten.KlassenSykehusskalinneholdetremetodersomhhv.skriverenpasientinnpåenavdeling(dvssetterpasienteninnpådenneavdelingen),overførerenpasientfraenavdelingtilenannenogskriverenpasientutfraenavdeling(tarpasientenutavavdelingen).Allemetodeneskalhaenreferansetilenpasientsomparameter.Skrivinnogskrivutskalhaenreferansetildenaktuelleavdeling,menoverførskalhatoparametreitilleggtilpasienten(referansertildetoaktuelleavdelingene)

Page 49: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.aAttached

Page 50: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise5.(25pointsintotal+5bonuspoints)Femaleandmalepatients,andprocessingofpatientdatausingthreads.ThefirstpartofthisexerciserevolvesaroundturningtheclassPatientintoanabstractclass,subsequentlydefiningtwosubclasses,FemalePatientandMalePatient.Thenyouwillprocesspatientdatausingmultiplethreads.Youwillwritetwothreadclasses,oneclasstofilterout(classSieve)patientsthatareintheriskgroupforcontractingadisease,andaclass(classAnalysis)thatfurtheranalysesthesepatients.Thereshallbeonesieve(filter)threadforeachpriority,thatisMAXPATPRIO+1sievethreads.Sievethreadno.imustreaddatafromanobjectofthePatientPrioclassbycallingtheretrieve(i)method.YoumustusethePatientPrioclassevenifyouhavenotsolvedexercise2.Foreverypatientretrieved,astaticmethodintheHospitalclassshouldbecalled.Thesemethodsreturntrueifthispatientisintheriskgroupandthusrequiresfurtherattention,orfalseintheinversecase.Wewillassumethatthesearepreexistingmethods,writtenalongtimeagoandthatyoumaynotmodify.Formales,themethodiscalledpublicstaticbooleaninRiskGroupMale(Patientp),forwomenthemethodispublicstaticbooleaninRiskGroupFemale(Patientp).AllpatientsfoundtobeintheriskgroupareplacedinabufferoftheclassAnalysisBuffer.Thesievethreadsterminatewhentheretrieve()methodsreturnnull.Theanalysisthreadsmustretrievepatientsfromtheanalysisbuffer.Foreachretrievedpatient,astaticmethodintheHospitalclassshouldbecalled.Inthemalecase,thismethodispublicstaticvoidpotentiallyInfectedMale(Patientp),inthefemalecaseitiscalledpublicstaticvoidpotentiallyInfectedFemale(Patientp).Asabove,thesemethodswerewrittenalongtimeagoandcannotbemodified,onlycalledfromyourprogram.Furtherprocessingoftheseriskpatientstakesplacewithinthesemethods.Consequently,theanalysisthreadsdonotneedtotakeanyfurtheractionafterthesemethodsreturnandmayretrievethenextpatientatthattime.Introductiontoexercise5A(Exercise5Adoesnotinvolveanythreads).CopythecodeforthePatientclassfromthemainintroductionsectionandmodifyitsothatPatientbecomesanabstractclass.Further,writetwosubclasses,FemalePatientandMalePatient.Inlaterpartsofexercise5youwillneedtocallthefourstaticmethodsinHospitaltoprocesspatientdata.Yourprogramneedstocalldifferentmethodsformenandwomen,andyoumaynowassumethatyouwillbedealingwithobjectsoftheclassesFemalePatientandMalePatient.Itmaybewisetounderstand(andperhapsevensolve)therestofexercise5beforeansweringexercise5A.

Page 51: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.aAttached

Page 52: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave5(totalt25poeng+5bonuspoeng)KvinneligeogMannligepasienterogbehandlingavpasientdatavedhjelpavtråder.StartenavdenneoppgavendreiersegomålageklassenPasientabstrakt,ogderetterlagetosubklasseravdenneklassen,kaltKvinneligPasientogMannligPasient.Deretterskaldubehandlepasientdatavedhjelpavtråder.Duskallagetotrådklasser,enklasseforåsileut(classSil)pasientersomerifaresonenforåfåensykdom,ogenklasse(classAnalyse)somanalysererdissepasientene.Detskalværeensil-trådforhverprioritet,altsåMAXPASPRIO+1sil-tråder.Sil-trådnriskallesedatafraetobjektavklassenPasientPriovedåkallemetodenhentUt(i).DuskalbrukeklassenPasientPrioselvomduikkeharsvartpåoppgave2.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehussomreturnerertruehvisdetteerenpasientsomerifaresonenogderforskalanalyseres,falsehvisikke.Detteermetodersomalleredefinnes,somblelagetforlengesidenogsomduikkekanforandre.FormennhetermetodenpublicstaticbooleaniFaresonenMann(Pasientp),forkvinnerhetermetodenpublicstaticbooleaniFaresonenKvinne(Pasientp).AllepasientersomerifaresonenskalleggesinnietbufferavklassenAnalyseBuffer.Sil-trådeneterminerernårhentUt-metodenereturnerernull.Analyse-trådeneskalhentepasienterfraanalysebufferet.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehus.FormennskalmetodenpublicstaticvoidkanHaSykdomMann(Pasientp)kalles,forkvinnerskalmetodenpublicstaticvoidkanHaSykdomKvinne(Pasientp)kalles.Detteerogsåmetodersomblelagetforlengesiden,ogsomduikkekangjørenoemed,barekallefradittprogram.Viderebehandlingavdepasientenesomkanhasykdommenskjeridissemetodene.Detbetyratnårdissemetodenereturnererskalanalyse-trådeneikkegjørenoemermeddennepasienten,menbarehenteutennypasientfraanalysebufferet.Innledningtiloppgavene5A(Oppgave5Aharikkenoemedtråderågjøre).DuskalkopiereklassenPasientfraoppgavesettetsinnledningogmodifiseredenslikatdenblirabstrakt.DeretterskaldulagetosubklasserKvinneligPasientogMannligPasient.Idetotrådklassenesomduskalskrivesenereioppgave5skaldukalledefirestatiskemetodeneiSykehusforåbehandlepasientdata.ProgrammetmåkalleforskjelligemetoderforkvinnerogmennognåkanduantaatduharmedobjekteravklasseneKvinneligPasientogManneligPasientågjøre.Detkanderforværelurtåforstå(ogkanskjetilåmedløse)restenavoppgave5førdubesvareroppgave5A.

Page 53: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.bAttached

Page 54: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise5.(25pointsintotal+5bonuspoints)Femaleandmalepatients,andprocessingofpatientdatausingthreads.ThefirstpartofthisexerciserevolvesaroundturningtheclassPatientintoanabstractclass,subsequentlydefiningtwosubclasses,FemalePatientandMalePatient.Thenyouwillprocesspatientdatausingmultiplethreads.Youwillwritetwothreadclasses,oneclasstofilterout(classSieve)patientsthatareintheriskgroupforcontractingadisease,andaclass(classAnalysis)thatfurtheranalysesthesepatients.Thereshallbeonesieve(filter)threadforeachpriority,thatisMAXPATPRIO+1sievethreads.Sievethreadno.imustreaddatafromanobjectofthePatientPrioclassbycallingtheretrieve(i)method.YoumustusethePatientPrioclassevenifyouhavenotsolvedexercise2.Foreverypatientretrieved,astaticmethodintheHospitalclassshouldbecalled.Thesemethodsreturntrueifthispatientisintheriskgroupandthusrequiresfurtherattention,orfalseintheinversecase.Wewillassumethatthesearepreexistingmethods,writtenalongtimeagoandthatyoumaynotmodify.Formales,themethodiscalledpublicstaticbooleaninRiskGroupMale(Patientp),forwomenthemethodispublicstaticbooleaninRiskGroupFemale(Patientp).AllpatientsfoundtobeintheriskgroupareplacedinabufferoftheclassAnalysisBuffer.Thesievethreadsterminatewhentheretrieve()methodsreturnnull.Theanalysisthreadsmustretrievepatientsfromtheanalysisbuffer.Foreachretrievedpatient,astaticmethodintheHospitalclassshouldbecalled.Inthemalecase,thismethodispublicstaticvoidpotentiallyInfectedMale(Patientp),inthefemalecaseitiscalledpublicstaticvoidpotentiallyInfectedFemale(Patientp).Asabove,thesemethodswerewrittenalongtimeagoandcannotbemodified,onlycalledfromyourprogram.Furtherprocessingoftheseriskpatientstakesplacewithinthesemethods.Consequently,theanalysisthreadsdonotneedtotakeanyfurtheractionafterthesemethodsreturnandmayretrievethenextpatientatthattime.Introductiontoexercise5A(Exercise5Adoesnotinvolveanythreads).CopythecodeforthePatientclassfromthemainintroductionsectionandmodifyitsothatPatientbecomesanabstractclass.Further,writetwosubclasses,FemalePatientandMalePatient.Inlaterpartsofexercise5youwillneedtocallthefourstaticmethodsinHospitaltoprocesspatientdata.Yourprogramneedstocalldifferentmethodsformenandwomen,andyoumaynowassumethatyouwillbedealingwithobjectsoftheclassesFemalePatientandMalePatient.Itmaybewisetounderstand(andperhapsevensolve)therestofexercise5beforeansweringexercise5A.

Page 55: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.bAttached

Page 56: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave5(totalt25poeng+5bonuspoeng)KvinneligeogMannligepasienterogbehandlingavpasientdatavedhjelpavtråder.StartenavdenneoppgavendreiersegomålageklassenPasientabstrakt,ogderetterlagetosubklasseravdenneklassen,kaltKvinneligPasientogMannligPasient.Deretterskaldubehandlepasientdatavedhjelpavtråder.Duskallagetotrådklasser,enklasseforåsileut(classSil)pasientersomerifaresonenforåfåensykdom,ogenklasse(classAnalyse)somanalysererdissepasientene.Detskalværeensil-trådforhverprioritet,altsåMAXPASPRIO+1sil-tråder.Sil-trådnriskallesedatafraetobjektavklassenPasientPriovedåkallemetodenhentUt(i).DuskalbrukeklassenPasientPrioselvomduikkeharsvartpåoppgave2.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehussomreturnerertruehvisdetteerenpasientsomerifaresonenogderforskalanalyseres,falsehvisikke.Detteermetodersomalleredefinnes,somblelagetforlengesidenogsomduikkekanforandre.FormennhetermetodenpublicstaticbooleaniFaresonenMann(Pasientp),forkvinnerhetermetodenpublicstaticbooleaniFaresonenKvinne(Pasientp).AllepasientersomerifaresonenskalleggesinnietbufferavklassenAnalyseBuffer.Sil-trådeneterminerernårhentUt-metodenereturnerernull.Analyse-trådeneskalhentepasienterfraanalysebufferet.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehus.FormennskalmetodenpublicstaticvoidkanHaSykdomMann(Pasientp)kalles,forkvinnerskalmetodenpublicstaticvoidkanHaSykdomKvinne(Pasientp)kalles.Detteerogsåmetodersomblelagetforlengesiden,ogsomduikkekangjørenoemed,barekallefradittprogram.Viderebehandlingavdepasientenesomkanhasykdommenskjeridissemetodene.Detbetyratnårdissemetodenereturnererskalanalyse-trådeneikkegjørenoemermeddennepasienten,menbarehenteutennypasientfraanalysebufferet.Innledningtiloppgavene5A(Oppgave5Aharikkenoemedtråderågjøre).DuskalkopiereklassenPasientfraoppgavesettetsinnledningogmodifiseredenslikatdenblirabstrakt.DeretterskaldulagetosubklasserKvinneligPasientogMannligPasient.Idetotrådklassenesomduskalskrivesenereioppgave5skaldukalledefirestatiskemetodeneiSykehusforåbehandlepasientdata.ProgrammetmåkalleforskjelligemetoderforkvinnerogmennognåkanduantaatduharmedobjekteravklasseneKvinneligPasientogManneligPasientågjøre.Detkanderforværelurtåforstå(ogkanskjetilåmedløse)restenavoppgave5førdubesvareroppgave5A.

Page 57: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.cAttached

Page 58: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise5.(25pointsintotal+5bonuspoints)Femaleandmalepatients,andprocessingofpatientdatausingthreads.ThefirstpartofthisexerciserevolvesaroundturningtheclassPatientintoanabstractclass,subsequentlydefiningtwosubclasses,FemalePatientandMalePatient.Thenyouwillprocesspatientdatausingmultiplethreads.Youwillwritetwothreadclasses,oneclasstofilterout(classSieve)patientsthatareintheriskgroupforcontractingadisease,andaclass(classAnalysis)thatfurtheranalysesthesepatients.Thereshallbeonesieve(filter)threadforeachpriority,thatisMAXPATPRIO+1sievethreads.Sievethreadno.imustreaddatafromanobjectofthePatientPrioclassbycallingtheretrieve(i)method.YoumustusethePatientPrioclassevenifyouhavenotsolvedexercise2.Foreverypatientretrieved,astaticmethodintheHospitalclassshouldbecalled.Thesemethodsreturntrueifthispatientisintheriskgroupandthusrequiresfurtherattention,orfalseintheinversecase.Wewillassumethatthesearepreexistingmethods,writtenalongtimeagoandthatyoumaynotmodify.Formales,themethodiscalledpublicstaticbooleaninRiskGroupMale(Patientp),forwomenthemethodispublicstaticbooleaninRiskGroupFemale(Patientp).AllpatientsfoundtobeintheriskgroupareplacedinabufferoftheclassAnalysisBuffer.Thesievethreadsterminatewhentheretrieve()methodsreturnnull.Theanalysisthreadsmustretrievepatientsfromtheanalysisbuffer.Foreachretrievedpatient,astaticmethodintheHospitalclassshouldbecalled.Inthemalecase,thismethodispublicstaticvoidpotentiallyInfectedMale(Patientp),inthefemalecaseitiscalledpublicstaticvoidpotentiallyInfectedFemale(Patientp).Asabove,thesemethodswerewrittenalongtimeagoandcannotbemodified,onlycalledfromyourprogram.Furtherprocessingoftheseriskpatientstakesplacewithinthesemethods.Consequently,theanalysisthreadsdonotneedtotakeanyfurtheractionafterthesemethodsreturnandmayretrievethenextpatientatthattime.Introductiontoexercise5A(Exercise5Adoesnotinvolveanythreads).CopythecodeforthePatientclassfromthemainintroductionsectionandmodifyitsothatPatientbecomesanabstractclass.Further,writetwosubclasses,FemalePatientandMalePatient.Inlaterpartsofexercise5youwillneedtocallthefourstaticmethodsinHospitaltoprocesspatientdata.Yourprogramneedstocalldifferentmethodsformenandwomen,andyoumaynowassumethatyouwillbedealingwithobjectsoftheclassesFemalePatientandMalePatient.Itmaybewisetounderstand(andperhapsevensolve)therestofexercise5beforeansweringexercise5A.

Page 59: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.cAttached

Page 60: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave5(totalt25poeng+5bonuspoeng)KvinneligeogMannligepasienterogbehandlingavpasientdatavedhjelpavtråder.StartenavdenneoppgavendreiersegomålageklassenPasientabstrakt,ogderetterlagetosubklasseravdenneklassen,kaltKvinneligPasientogMannligPasient.Deretterskaldubehandlepasientdatavedhjelpavtråder.Duskallagetotrådklasser,enklasseforåsileut(classSil)pasientersomerifaresonenforåfåensykdom,ogenklasse(classAnalyse)somanalysererdissepasientene.Detskalværeensil-trådforhverprioritet,altsåMAXPASPRIO+1sil-tråder.Sil-trådnriskallesedatafraetobjektavklassenPasientPriovedåkallemetodenhentUt(i).DuskalbrukeklassenPasientPrioselvomduikkeharsvartpåoppgave2.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehussomreturnerertruehvisdetteerenpasientsomerifaresonenogderforskalanalyseres,falsehvisikke.Detteermetodersomalleredefinnes,somblelagetforlengesidenogsomduikkekanforandre.FormennhetermetodenpublicstaticbooleaniFaresonenMann(Pasientp),forkvinnerhetermetodenpublicstaticbooleaniFaresonenKvinne(Pasientp).AllepasientersomerifaresonenskalleggesinnietbufferavklassenAnalyseBuffer.Sil-trådeneterminerernårhentUt-metodenereturnerernull.Analyse-trådeneskalhentepasienterfraanalysebufferet.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehus.FormennskalmetodenpublicstaticvoidkanHaSykdomMann(Pasientp)kalles,forkvinnerskalmetodenpublicstaticvoidkanHaSykdomKvinne(Pasientp)kalles.Detteerogsåmetodersomblelagetforlengesiden,ogsomduikkekangjørenoemed,barekallefradittprogram.Viderebehandlingavdepasientenesomkanhasykdommenskjeridissemetodene.Detbetyratnårdissemetodenereturnererskalanalyse-trådeneikkegjørenoemermeddennepasienten,menbarehenteutennypasientfraanalysebufferet.Innledningtiloppgavene5A(Oppgave5Aharikkenoemedtråderågjøre).DuskalkopiereklassenPasientfraoppgavesettetsinnledningogmodifiseredenslikatdenblirabstrakt.DeretterskaldulagetosubklasserKvinneligPasientogMannligPasient.Idetotrådklassenesomduskalskrivesenereioppgave5skaldukalledefirestatiskemetodeneiSykehusforåbehandlepasientdata.ProgrammetmåkalleforskjelligemetoderforkvinnerogmennognåkanduantaatduharmedobjekteravklasseneKvinneligPasientogManneligPasientågjøre.Detkanderforværelurtåforstå(ogkanskjetilåmedløse)restenavoppgave5førdubesvareroppgave5A.

Page 61: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.dAttached

Page 62: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise5.(25pointsintotal+5bonuspoints)Femaleandmalepatients,andprocessingofpatientdatausingthreads.ThefirstpartofthisexerciserevolvesaroundturningtheclassPatientintoanabstractclass,subsequentlydefiningtwosubclasses,FemalePatientandMalePatient.Thenyouwillprocesspatientdatausingmultiplethreads.Youwillwritetwothreadclasses,oneclasstofilterout(classSieve)patientsthatareintheriskgroupforcontractingadisease,andaclass(classAnalysis)thatfurtheranalysesthesepatients.Thereshallbeonesieve(filter)threadforeachpriority,thatisMAXPATPRIO+1sievethreads.Sievethreadno.imustreaddatafromanobjectofthePatientPrioclassbycallingtheretrieve(i)method.YoumustusethePatientPrioclassevenifyouhavenotsolvedexercise2.Foreverypatientretrieved,astaticmethodintheHospitalclassshouldbecalled.Thesemethodsreturntrueifthispatientisintheriskgroupandthusrequiresfurtherattention,orfalseintheinversecase.Wewillassumethatthesearepreexistingmethods,writtenalongtimeagoandthatyoumaynotmodify.Formales,themethodiscalledpublicstaticbooleaninRiskGroupMale(Patientp),forwomenthemethodispublicstaticbooleaninRiskGroupFemale(Patientp).AllpatientsfoundtobeintheriskgroupareplacedinabufferoftheclassAnalysisBuffer.Thesievethreadsterminatewhentheretrieve()methodsreturnnull.Theanalysisthreadsmustretrievepatientsfromtheanalysisbuffer.Foreachretrievedpatient,astaticmethodintheHospitalclassshouldbecalled.Inthemalecase,thismethodispublicstaticvoidpotentiallyInfectedMale(Patientp),inthefemalecaseitiscalledpublicstaticvoidpotentiallyInfectedFemale(Patientp).Asabove,thesemethodswerewrittenalongtimeagoandcannotbemodified,onlycalledfromyourprogram.Furtherprocessingoftheseriskpatientstakesplacewithinthesemethods.Consequently,theanalysisthreadsdonotneedtotakeanyfurtheractionafterthesemethodsreturnandmayretrievethenextpatientatthattime.Introductiontoexercise5A(Exercise5Adoesnotinvolveanythreads).CopythecodeforthePatientclassfromthemainintroductionsectionandmodifyitsothatPatientbecomesanabstractclass.Further,writetwosubclasses,FemalePatientandMalePatient.Inlaterpartsofexercise5youwillneedtocallthefourstaticmethodsinHospitaltoprocesspatientdata.Yourprogramneedstocalldifferentmethodsformenandwomen,andyoumaynowassumethatyouwillbedealingwithobjectsoftheclassesFemalePatientandMalePatient.Itmaybewisetounderstand(andperhapsevensolve)therestofexercise5beforeansweringexercise5A.

Page 63: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.dAttached

Page 64: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave5(totalt25poeng+5bonuspoeng)KvinneligeogMannligepasienterogbehandlingavpasientdatavedhjelpavtråder.StartenavdenneoppgavendreiersegomålageklassenPasientabstrakt,ogderetterlagetosubklasseravdenneklassen,kaltKvinneligPasientogMannligPasient.Deretterskaldubehandlepasientdatavedhjelpavtråder.Duskallagetotrådklasser,enklasseforåsileut(classSil)pasientersomerifaresonenforåfåensykdom,ogenklasse(classAnalyse)somanalysererdissepasientene.Detskalværeensil-trådforhverprioritet,altsåMAXPASPRIO+1sil-tråder.Sil-trådnriskallesedatafraetobjektavklassenPasientPriovedåkallemetodenhentUt(i).DuskalbrukeklassenPasientPrioselvomduikkeharsvartpåoppgave2.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehussomreturnerertruehvisdetteerenpasientsomerifaresonenogderforskalanalyseres,falsehvisikke.Detteermetodersomalleredefinnes,somblelagetforlengesidenogsomduikkekanforandre.FormennhetermetodenpublicstaticbooleaniFaresonenMann(Pasientp),forkvinnerhetermetodenpublicstaticbooleaniFaresonenKvinne(Pasientp).AllepasientersomerifaresonenskalleggesinnietbufferavklassenAnalyseBuffer.Sil-trådeneterminerernårhentUt-metodenereturnerernull.Analyse-trådeneskalhentepasienterfraanalysebufferet.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehus.FormennskalmetodenpublicstaticvoidkanHaSykdomMann(Pasientp)kalles,forkvinnerskalmetodenpublicstaticvoidkanHaSykdomKvinne(Pasientp)kalles.Detteerogsåmetodersomblelagetforlengesiden,ogsomduikkekangjørenoemed,barekallefradittprogram.Viderebehandlingavdepasientenesomkanhasykdommenskjeridissemetodene.Detbetyratnårdissemetodenereturnererskalanalyse-trådeneikkegjørenoemermeddennepasienten,menbarehenteutennypasientfraanalysebufferet.Innledningtiloppgavene5A(Oppgave5Aharikkenoemedtråderågjøre).DuskalkopiereklassenPasientfraoppgavesettetsinnledningogmodifiseredenslikatdenblirabstrakt.DeretterskaldulagetosubklasserKvinneligPasientogMannligPasient.Idetotrådklassenesomduskalskrivesenereioppgave5skaldukalledefirestatiskemetodeneiSykehusforåbehandlepasientdata.ProgrammetmåkalleforskjelligemetoderforkvinnerogmennognåkanduantaatduharmedobjekteravklasseneKvinneligPasientogManneligPasientågjøre.Detkanderforværelurtåforstå(ogkanskjetilåmedløse)restenavoppgave5førdubesvareroppgave5A.

Page 65: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.eAttached

Page 66: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise5.(25pointsintotal+5bonuspoints)Femaleandmalepatients,andprocessingofpatientdatausingthreads.ThefirstpartofthisexerciserevolvesaroundturningtheclassPatientintoanabstractclass,subsequentlydefiningtwosubclasses,FemalePatientandMalePatient.Thenyouwillprocesspatientdatausingmultiplethreads.Youwillwritetwothreadclasses,oneclasstofilterout(classSieve)patientsthatareintheriskgroupforcontractingadisease,andaclass(classAnalysis)thatfurtheranalysesthesepatients.Thereshallbeonesieve(filter)threadforeachpriority,thatisMAXPATPRIO+1sievethreads.Sievethreadno.imustreaddatafromanobjectofthePatientPrioclassbycallingtheretrieve(i)method.YoumustusethePatientPrioclassevenifyouhavenotsolvedexercise2.Foreverypatientretrieved,astaticmethodintheHospitalclassshouldbecalled.Thesemethodsreturntrueifthispatientisintheriskgroupandthusrequiresfurtherattention,orfalseintheinversecase.Wewillassumethatthesearepreexistingmethods,writtenalongtimeagoandthatyoumaynotmodify.Formales,themethodiscalledpublicstaticbooleaninRiskGroupMale(Patientp),forwomenthemethodispublicstaticbooleaninRiskGroupFemale(Patientp).AllpatientsfoundtobeintheriskgroupareplacedinabufferoftheclassAnalysisBuffer.Thesievethreadsterminatewhentheretrieve()methodsreturnnull.Theanalysisthreadsmustretrievepatientsfromtheanalysisbuffer.Foreachretrievedpatient,astaticmethodintheHospitalclassshouldbecalled.Inthemalecase,thismethodispublicstaticvoidpotentiallyInfectedMale(Patientp),inthefemalecaseitiscalledpublicstaticvoidpotentiallyInfectedFemale(Patientp).Asabove,thesemethodswerewrittenalongtimeagoandcannotbemodified,onlycalledfromyourprogram.Furtherprocessingoftheseriskpatientstakesplacewithinthesemethods.Consequently,theanalysisthreadsdonotneedtotakeanyfurtheractionafterthesemethodsreturnandmayretrievethenextpatientatthattime.Introductiontoexercise5A(Exercise5Adoesnotinvolveanythreads).CopythecodeforthePatientclassfromthemainintroductionsectionandmodifyitsothatPatientbecomesanabstractclass.Further,writetwosubclasses,FemalePatientandMalePatient.Inlaterpartsofexercise5youwillneedtocallthefourstaticmethodsinHospitaltoprocesspatientdata.Yourprogramneedstocalldifferentmethodsformenandwomen,andyoumaynowassumethatyouwillbedealingwithobjectsoftheclassesFemalePatientandMalePatient.Itmaybewisetounderstand(andperhapsevensolve)therestofexercise5beforeansweringexercise5A.

Page 67: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.eAttached

Page 68: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave5(totalt25poeng+5bonuspoeng)KvinneligeogMannligepasienterogbehandlingavpasientdatavedhjelpavtråder.StartenavdenneoppgavendreiersegomålageklassenPasientabstrakt,ogderetterlagetosubklasseravdenneklassen,kaltKvinneligPasientogMannligPasient.Deretterskaldubehandlepasientdatavedhjelpavtråder.Duskallagetotrådklasser,enklasseforåsileut(classSil)pasientersomerifaresonenforåfåensykdom,ogenklasse(classAnalyse)somanalysererdissepasientene.Detskalværeensil-trådforhverprioritet,altsåMAXPASPRIO+1sil-tråder.Sil-trådnriskallesedatafraetobjektavklassenPasientPriovedåkallemetodenhentUt(i).DuskalbrukeklassenPasientPrioselvomduikkeharsvartpåoppgave2.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehussomreturnerertruehvisdetteerenpasientsomerifaresonenogderforskalanalyseres,falsehvisikke.Detteermetodersomalleredefinnes,somblelagetforlengesidenogsomduikkekanforandre.FormennhetermetodenpublicstaticbooleaniFaresonenMann(Pasientp),forkvinnerhetermetodenpublicstaticbooleaniFaresonenKvinne(Pasientp).AllepasientersomerifaresonenskalleggesinnietbufferavklassenAnalyseBuffer.Sil-trådeneterminerernårhentUt-metodenereturnerernull.Analyse-trådeneskalhentepasienterfraanalysebufferet.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehus.FormennskalmetodenpublicstaticvoidkanHaSykdomMann(Pasientp)kalles,forkvinnerskalmetodenpublicstaticvoidkanHaSykdomKvinne(Pasientp)kalles.Detteerogsåmetodersomblelagetforlengesiden,ogsomduikkekangjørenoemed,barekallefradittprogram.Viderebehandlingavdepasientenesomkanhasykdommenskjeridissemetodene.Detbetyratnårdissemetodenereturnererskalanalyse-trådeneikkegjørenoemermeddennepasienten,menbarehenteutennypasientfraanalysebufferet.Innledningtiloppgavene5A(Oppgave5Aharikkenoemedtråderågjøre).DuskalkopiereklassenPasientfraoppgavesettetsinnledningogmodifiseredenslikatdenblirabstrakt.DeretterskaldulagetosubklasserKvinneligPasientogMannligPasient.Idetotrådklassenesomduskalskrivesenereioppgave5skaldukalledefirestatiskemetodeneiSykehusforåbehandlepasientdata.ProgrammetmåkalleforskjelligemetoderforkvinnerogmennognåkanduantaatduharmedobjekteravklasseneKvinneligPasientogManneligPasientågjøre.Detkanderforværelurtåforstå(ogkanskjetilåmedløse)restenavoppgave5førdubesvareroppgave5A.

Page 69: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.fAttached

Page 70: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise5.(25pointsintotal+5bonuspoints)Femaleandmalepatients,andprocessingofpatientdatausingthreads.ThefirstpartofthisexerciserevolvesaroundturningtheclassPatientintoanabstractclass,subsequentlydefiningtwosubclasses,FemalePatientandMalePatient.Thenyouwillprocesspatientdatausingmultiplethreads.Youwillwritetwothreadclasses,oneclasstofilterout(classSieve)patientsthatareintheriskgroupforcontractingadisease,andaclass(classAnalysis)thatfurtheranalysesthesepatients.Thereshallbeonesieve(filter)threadforeachpriority,thatisMAXPATPRIO+1sievethreads.Sievethreadno.imustreaddatafromanobjectofthePatientPrioclassbycallingtheretrieve(i)method.YoumustusethePatientPrioclassevenifyouhavenotsolvedexercise2.Foreverypatientretrieved,astaticmethodintheHospitalclassshouldbecalled.Thesemethodsreturntrueifthispatientisintheriskgroupandthusrequiresfurtherattention,orfalseintheinversecase.Wewillassumethatthesearepreexistingmethods,writtenalongtimeagoandthatyoumaynotmodify.Formales,themethodiscalledpublicstaticbooleaninRiskGroupMale(Patientp),forwomenthemethodispublicstaticbooleaninRiskGroupFemale(Patientp).AllpatientsfoundtobeintheriskgroupareplacedinabufferoftheclassAnalysisBuffer.Thesievethreadsterminatewhentheretrieve()methodsreturnnull.Theanalysisthreadsmustretrievepatientsfromtheanalysisbuffer.Foreachretrievedpatient,astaticmethodintheHospitalclassshouldbecalled.Inthemalecase,thismethodispublicstaticvoidpotentiallyInfectedMale(Patientp),inthefemalecaseitiscalledpublicstaticvoidpotentiallyInfectedFemale(Patientp).Asabove,thesemethodswerewrittenalongtimeagoandcannotbemodified,onlycalledfromyourprogram.Furtherprocessingoftheseriskpatientstakesplacewithinthesemethods.Consequently,theanalysisthreadsdonotneedtotakeanyfurtheractionafterthesemethodsreturnandmayretrievethenextpatientatthattime.Introductiontoexercise5A(Exercise5Adoesnotinvolveanythreads).CopythecodeforthePatientclassfromthemainintroductionsectionandmodifyitsothatPatientbecomesanabstractclass.Further,writetwosubclasses,FemalePatientandMalePatient.Inlaterpartsofexercise5youwillneedtocallthefourstaticmethodsinHospitaltoprocesspatientdata.Yourprogramneedstocalldifferentmethodsformenandwomen,andyoumaynowassumethatyouwillbedealingwithobjectsoftheclassesFemalePatientandMalePatient.Itmaybewisetounderstand(andperhapsevensolve)therestofexercise5beforeansweringexercise5A.

Page 71: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.fAttached

Page 72: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave5(totalt25poeng+5bonuspoeng)KvinneligeogMannligepasienterogbehandlingavpasientdatavedhjelpavtråder.StartenavdenneoppgavendreiersegomålageklassenPasientabstrakt,ogderetterlagetosubklasseravdenneklassen,kaltKvinneligPasientogMannligPasient.Deretterskaldubehandlepasientdatavedhjelpavtråder.Duskallagetotrådklasser,enklasseforåsileut(classSil)pasientersomerifaresonenforåfåensykdom,ogenklasse(classAnalyse)somanalysererdissepasientene.Detskalværeensil-trådforhverprioritet,altsåMAXPASPRIO+1sil-tråder.Sil-trådnriskallesedatafraetobjektavklassenPasientPriovedåkallemetodenhentUt(i).DuskalbrukeklassenPasientPrioselvomduikkeharsvartpåoppgave2.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehussomreturnerertruehvisdetteerenpasientsomerifaresonenogderforskalanalyseres,falsehvisikke.Detteermetodersomalleredefinnes,somblelagetforlengesidenogsomduikkekanforandre.FormennhetermetodenpublicstaticbooleaniFaresonenMann(Pasientp),forkvinnerhetermetodenpublicstaticbooleaniFaresonenKvinne(Pasientp).AllepasientersomerifaresonenskalleggesinnietbufferavklassenAnalyseBuffer.Sil-trådeneterminerernårhentUt-metodenereturnerernull.Analyse-trådeneskalhentepasienterfraanalysebufferet.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehus.FormennskalmetodenpublicstaticvoidkanHaSykdomMann(Pasientp)kalles,forkvinnerskalmetodenpublicstaticvoidkanHaSykdomKvinne(Pasientp)kalles.Detteerogsåmetodersomblelagetforlengesiden,ogsomduikkekangjørenoemed,barekallefradittprogram.Viderebehandlingavdepasientenesomkanhasykdommenskjeridissemetodene.Detbetyratnårdissemetodenereturnererskalanalyse-trådeneikkegjørenoemermeddennepasienten,menbarehenteutennypasientfraanalysebufferet.Innledningtiloppgavene5A(Oppgave5Aharikkenoemedtråderågjøre).DuskalkopiereklassenPasientfraoppgavesettetsinnledningogmodifiseredenslikatdenblirabstrakt.DeretterskaldulagetosubklasserKvinneligPasientogMannligPasient.Idetotrådklassenesomduskalskrivesenereioppgave5skaldukalledefirestatiskemetodeneiSykehusforåbehandlepasientdata.ProgrammetmåkalleforskjelligemetoderforkvinnerogmennognåkanduantaatduharmedobjekteravklasseneKvinneligPasientogManneligPasientågjøre.Detkanderforværelurtåforstå(ogkanskjetilåmedløse)restenavoppgave5førdubesvareroppgave5A.

Page 73: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.gAttached

Page 74: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Exercise5.(25pointsintotal+5bonuspoints)Femaleandmalepatients,andprocessingofpatientdatausingthreads.ThefirstpartofthisexerciserevolvesaroundturningtheclassPatientintoanabstractclass,subsequentlydefiningtwosubclasses,FemalePatientandMalePatient.Thenyouwillprocesspatientdatausingmultiplethreads.Youwillwritetwothreadclasses,oneclasstofilterout(classSieve)patientsthatareintheriskgroupforcontractingadisease,andaclass(classAnalysis)thatfurtheranalysesthesepatients.Thereshallbeonesieve(filter)threadforeachpriority,thatisMAXPATPRIO+1sievethreads.Sievethreadno.imustreaddatafromanobjectofthePatientPrioclassbycallingtheretrieve(i)method.YoumustusethePatientPrioclassevenifyouhavenotsolvedexercise2.Foreverypatientretrieved,astaticmethodintheHospitalclassshouldbecalled.Thesemethodsreturntrueifthispatientisintheriskgroupandthusrequiresfurtherattention,orfalseintheinversecase.Wewillassumethatthesearepreexistingmethods,writtenalongtimeagoandthatyoumaynotmodify.Formales,themethodiscalledpublicstaticbooleaninRiskGroupMale(Patientp),forwomenthemethodispublicstaticbooleaninRiskGroupFemale(Patientp).AllpatientsfoundtobeintheriskgroupareplacedinabufferoftheclassAnalysisBuffer.Thesievethreadsterminatewhentheretrieve()methodsreturnnull.Theanalysisthreadsmustretrievepatientsfromtheanalysisbuffer.Foreachretrievedpatient,astaticmethodintheHospitalclassshouldbecalled.Inthemalecase,thismethodispublicstaticvoidpotentiallyInfectedMale(Patientp),inthefemalecaseitiscalledpublicstaticvoidpotentiallyInfectedFemale(Patientp).Asabove,thesemethodswerewrittenalongtimeagoandcannotbemodified,onlycalledfromyourprogram.Furtherprocessingoftheseriskpatientstakesplacewithinthesemethods.Consequently,theanalysisthreadsdonotneedtotakeanyfurtheractionafterthesemethodsreturnandmayretrievethenextpatientatthattime.Introductiontoexercise5A(Exercise5Adoesnotinvolveanythreads).CopythecodeforthePatientclassfromthemainintroductionsectionandmodifyitsothatPatientbecomesanabstractclass.Further,writetwosubclasses,FemalePatientandMalePatient.Inlaterpartsofexercise5youwillneedtocallthefourstaticmethodsinHospitaltoprocesspatientdata.Yourprogramneedstocalldifferentmethodsformenandwomen,andyoumaynowassumethatyouwillbedealingwithobjectsoftheclassesFemalePatientandMalePatient.Itmaybewisetounderstand(andperhapsevensolve)therestofexercise5beforeansweringexercise5A.

Page 75: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Question 5.gAttached

Page 76: Innledning Eksamen INF1010 våren 2017 - Universitetet i oslo · Eksamen INF1010 våren 2017 1/12 Innledning Eksamen INF1010 våren 2017 Totalt 100 poeng mulige + 5 bonuspoeng (i

Oppgave5(totalt25poeng+5bonuspoeng)KvinneligeogMannligepasienterogbehandlingavpasientdatavedhjelpavtråder.StartenavdenneoppgavendreiersegomålageklassenPasientabstrakt,ogderetterlagetosubklasseravdenneklassen,kaltKvinneligPasientogMannligPasient.Deretterskaldubehandlepasientdatavedhjelpavtråder.Duskallagetotrådklasser,enklasseforåsileut(classSil)pasientersomerifaresonenforåfåensykdom,ogenklasse(classAnalyse)somanalysererdissepasientene.Detskalværeensil-trådforhverprioritet,altsåMAXPASPRIO+1sil-tråder.Sil-trådnriskallesedatafraetobjektavklassenPasientPriovedåkallemetodenhentUt(i).DuskalbrukeklassenPasientPrioselvomduikkeharsvartpåoppgave2.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehussomreturnerertruehvisdetteerenpasientsomerifaresonenogderforskalanalyseres,falsehvisikke.Detteermetodersomalleredefinnes,somblelagetforlengesidenogsomduikkekanforandre.FormennhetermetodenpublicstaticbooleaniFaresonenMann(Pasientp),forkvinnerhetermetodenpublicstaticbooleaniFaresonenKvinne(Pasientp).AllepasientersomerifaresonenskalleggesinnietbufferavklassenAnalyseBuffer.Sil-trådeneterminerernårhentUt-metodenereturnerernull.Analyse-trådeneskalhentepasienterfraanalysebufferet.ForhverpasientsomhentesutskaldetkallesenstatiskmetodeiklassenSykehus.FormennskalmetodenpublicstaticvoidkanHaSykdomMann(Pasientp)kalles,forkvinnerskalmetodenpublicstaticvoidkanHaSykdomKvinne(Pasientp)kalles.Detteerogsåmetodersomblelagetforlengesiden,ogsomduikkekangjørenoemed,barekallefradittprogram.Viderebehandlingavdepasientenesomkanhasykdommenskjeridissemetodene.Detbetyratnårdissemetodenereturnererskalanalyse-trådeneikkegjørenoemermeddennepasienten,menbarehenteutennypasientfraanalysebufferet.Innledningtiloppgavene5A(Oppgave5Aharikkenoemedtråderågjøre).DuskalkopiereklassenPasientfraoppgavesettetsinnledningogmodifiseredenslikatdenblirabstrakt.DeretterskaldulagetosubklasserKvinneligPasientogMannligPasient.Idetotrådklassenesomduskalskrivesenereioppgave5skaldukalledefirestatiskemetodeneiSykehusforåbehandlepasientdata.ProgrammetmåkalleforskjelligemetoderforkvinnerogmennognåkanduantaatduharmedobjekteravklasseneKvinneligPasientogManneligPasientågjøre.Detkanderforværelurtåforstå(ogkanskjetilåmedløse)restenavoppgave5førdubesvareroppgave5A.