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



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

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

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

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

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

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

LO191D/LC191D Videregående programmering

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

HØGSKOLEN I SØR-TRØNDELAG

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

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

UNIVERSITETET I OSLO

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

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

UNIVERSITETET I OSLO

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Repitisjonskurs. Arv, Subklasser og Grensesnitt

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

INF Seminaroppgaver til uke 3

HØGSKOLEN I SØR-TRØNDELAG

Endret litt som ukeoppgave i INF1010 våren 2004

Eksamen. Objektorientert Programmering IGR 1372

UNIVERSITETET I OSLO

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

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

INF106 Objektorientert programmering

INF1000 Metoder. Marit Nybakken 16. februar 2004

LC191D/LO191D Videregående programmering mai 2010

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

UNIVERSITETET I OSLO

Antall sider (inkl. forsiden): 6

HØGSKOLEN I SØR-TRØNDELAG

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

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

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

EKSAMEN. Objektorientert programmering

2 Om statiske variable/konstanter og statiske metoder.

Gjennomgang av eksamen H99

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

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

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

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

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

OO-eksempel. Modellen ser slik ut: Studenter + antstudenter : int = 0

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

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

Eksamensoppgave i IFUD1025 Programmering i Java

UNIVERSITETET I OSLO

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

HØGSKOLEN I SØR-TRØNDELAG

Post-it spørsmål fra timen (Arv og subklasser)

Introduksjon til objektorientert programmering

INF1010 Arv. Marit Nybakken 2. februar 2004

TDT4100 Objektorientert programmering

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

HØGSKOLEN I SØR-TRØNDELAG

TDT4100 Objektorientert programmering

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

UNIVERSITETET I OSLO

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

HØGSKOLEN I SØR-TRØNDELAG

INF Uke 10. Ukesoppgaver oktober 2012

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

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

UNIVERSITETET I OSLO

Obligatorisk oppgave 4: Lege/Resept

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Eksamen IN1010/INF1010 våren 2018

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010

UNIVERSITETET I OSLO

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Oblig 4Hybelhus litt mer tips enn i oppgaven

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

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

UNIVERSITETET I OSLO

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo

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

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

OPPGAVE 5b og 8b Java Kode

UNIVERSITETET I OSLO

Transkript:

~tte hjelpemiddel: Alle trykte og håndskrevne --- Kandidaten må selv kontrollere at oppgavesettet er fullstendig. nnføring skal være med blå eller svart penn. 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 ~an velges fritt.. Dersom det er en deloppgave du ikke f~r til, bør du g~ videre til den neste. F~r du bruk for en metode fra en deloppgave d~ ikke har gjort, kan du gjøre kall p~ metoden selv om du ikke har pro~rammert den. Du forutsetter du svarer (i da alle at fall den litt) utfører p~ alle det deloppgavene. den er tiltenkt ~ gjør~. Det er viktig at '. 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 metod~kall at argumenter er av riktig type og sørg for ~ gjøre bruk ~v dataene som metodene returnerer. '. Svar nøyaktig p~ det du blir spurt om. Dersom du mener at oppgaveteksten ikke gir deg tilstrekkelig informasjonfiler er uklar, kan du gjøre dine egne forutsetninger. Gjør i ~ fall rede f r disse.. Ved sensur vil alle bokstaverte deloppgaver (a, b, c,.. ) telle like mye, unntatt 2 a) som teller dobbelt ~ mye som de andre.

Eksamensoppgaven går ut p& & lage et program til bruk i r,sepsjonen på et hotell. For at oppgaven ikke skal bli for stor, har vi begrenset programmet til å vise ledige rom, reservere rom, vise hvilke gjester som til enhver tid bor på hotellet, samt sjekke ut gjester ved avreise. Programmet ir)neholder et klassehierarki, best&ende av den abstrakte superklassen Rpm og de konkrete subklassene Enkeltrom og Dobbeltrom. Programmets datas~ruktur finner vi i klassen Hotell, mens programmets brukergrensesnitt er laqt til klassen Hotelldrift. Hotellet holder stengt i jule- og nyttårs-helgen slik at dere kan se bort fra problematikken knyttet til passeringen av et årsskjfte. Nedenfor finner du en skisse av klassen Rom. Noen av me~ene er oppgitt, og disse kan du fritt gjøre kall p~ der du finner det fomufti. Dagene i ~ret er nummerert fra 1 og oppover. arrayen gjest vil gjest[i] refe ere til navnet p~ gjesten som bor p~ eller har reservert rommet for dag nu mer i. For enkelhets skyld skal vi i denne oppgaven g~ ut fra at alle gj~ster har forskjellige navn og at hver gjest bare har reservert et romlfor en enkelt, sammenhengende periode. public abstract class Rom { public protected static int final nr; int romnummeret ANTDAGER = 358; fra nyttår 08 til 08 1ed julaften protected StringO gjest; public Rom( int n ) { nr = n; gjest = new String[ ANTDAGER + l]; public abstract double sjekkut( int dag, int måned, int år}; / /Hje/pemetode som returnerer datoens dagnummer / /innenfor året (fra 1 ti/366). public static int årsdag( int dag, int måned, int år ) {. Calendar start = new GregorlanCalendar( år, måned. l, da, 12, O);, return start.get( Calendar.DAY_OF _YEAR); / /Hjelpemetode som returnerer datoens dagnummer / /innenfor vedkommende uke (fra 1 til 7, 1 formandag, 7 for søn as). public static int ukedag( int dag, int måned, int år) { Calendar start = new GregorianCalendar( år, måned. 1, da, 12,0); return (start.get( Calendar.DAY_OF _WEEK) + 5) % 7 +1;, public int getnr() { return nr; } < metoder du skal programmere i de følgende deloppgavene ~ } J

a) Programmer metoden public boolean erledig( int dag, int måned, int år, int antda,er) Metoden skal sjekke om rommet er ledig i det antall dager som parameteren antdager angir, fra og med den datoen parametrene dag, ~åned og år angir, samt sjekke at denne perioden er innenfor hotellets ~pning~tid (se innledningen). Hvis s~ er tilfelle, skal metoden returnere true, i motsatt fall skal den returnere false. b) Programmer metoden public boolean reserver( int dag, int måned, int år, int antda~er, String navn.} Metoden skal reservere rommet i det antall dager som parameteren antdager angir, fra og med den datoen parametrene dag, måned og år representerer, for personen som parameteren navn angir, under forutsetning av at rommet er ledig i den ønskede periode. Hvis dette lar seg gjøre, skal metoden returnere true, ellers skal den returnere false. c) Programmer metoden public boolean weekend( int dag) {...} Den innkomne parameteren dag vil representere en av uk~s syv dager. Metoden skal avgjøre om dag er en ukedag eller om dag tilhører helgen (det vil si lørdag eller søndag). Hvis det siste er tilfelle, skal metpden returnere true, i motsatt fall skal den returnere false. Mandag regnes fom ukens første dag. : d) Programmer metoden public String getgjest( int dag, int måned, int år) {.. Hvis datoen som parametrene angir er innenfor hotellets ~øningstid og rommet er utleid p~ denne dagen, skal metoden returnere navnet på gjesten. Hvis rommet er ledig på den aktuelle dagen, skal metoden returnere null. Hotellet har to typer rom, Dobbeltrom og Enkeltrom. Disse ~assene er begge subklasser til den abstrakte klassen Rom, og er nesten helt!like. Det som skiller dem er leieprisene, det vil si verdiene til konstantenej UKE og WEEKEND. Dere skal derfor kun programmere den ene av dem. :.3

a) Programmer klassen Dobbeltrom. Klassen skal være en ~onkret subklasse til klassen Rom. Den skal inneholde to konstanter UKE = 1420.0 og WEEKEND = 850.0 som representerer leieprisene per dag for henhold$vis ukedager og weekend (se spørsm 1 c i oppgave 1). Klassen skal ha en k~nstruktør som foretar nødvendig initialisering. tillegg m& den mplement~re den abtrakte metode sjekkut som den har arvet fra superklassen Rom (s~ Oppgave 1). Metodens parametre angir datoen for utsjekkingsdagen. Vær oppmerksom p at denne kan være tidligere enn siste dagen gjesten har re$ervert rommet for. Metoden skal returnere skyldig beløp for leien av rom~et. (Det skal bare betales for de dager gjesten har vært der.) Metoden skal d,ssuten ledigstille rommet i den perioden gjesten hadde reservert det for. Nedenfor finner du en skisse over klassen Hotell. Rommene' er plassert i arrayen rom, der hver referanse i arrayen enten refererer t et objekt av typen Dobbeltrom, eller refererer til et objekt av typen Enk trom. Hotellet har i alt 50 rom, der romnumrene går fra log oppover. Enkelt mmene har romnummer som er oddetall, mens alle dobbeltrom mene h r romnummer som er partall. public class Hotell public static final int ANTROM = 50; public static final int ENKELTROM = l, DOBBELTROM = 2; private RomD rom = new Rom[ ANTROM + l ]; < konstruktør> < metoder som du skal programmere i de følgende deloppga~ene > a) Programmer klassens kontruktør slik at den genererer rjomobjektene med romnumre som beskrevet ovenfor. b) Programmer metoden public String gjesteliste( int dag, int måned, int år ) {...} Metoden skal returnere en tekst som inneholder navnene og de tilhørende romnumrene på alle gjestene som bor p& hotellet p& den d~toen som parametrene angir, en linje pr. gjest. Hvis hotellet ikke har noen gjester denne dagen, skal metoden returnere informasjon om det. c) Programmer metoden public String ledigerom( int dag, int mnd, int år, int antdager, int type) {. Metoden skal returnere en oversikt, i form aven tekst, som! viser hvilke rom som er ledige av den typen som parameteren type angir, i ~t tidsrommet de andre parametrene angir. (Dvs. fra og med dag:mnd:år i a~dager dager). Metoden skal bare gi informasjon om romnumrene. Hvis in en rom av riktig type er ledig i den angitte perioden, skal metoden returner informasjon om det. 11

d) Programmer metoden public boolean reserver( int romnr, String navn, int dag, int t nd, int år, int antdager) {...} Metoden skal ut fra parametrene reservere det angitte ro$ et for personen med gitt navn i den angitte tidsperioden, der datoen gir sta dagen. Du kan forutsette at dato har gyldige verdier, men må sjekke at ro met eksisterer. e) Programmer metoden public double sjekkut( int romnr, int dag, int mnd, int år) {..} Metodens parametre angir hvilket rom det skal sjekkes ut fra, samt datoen for utsjekkingsdagen. Metoden skal returnere skyldig beløp for leien av rommet, og dessuten sørge for at rommet ledigstilles i den!perloden gjesten hadde m~ sjekke reservert at rommet det for. eksisterer. Du kan forutsette at dato har gyldige verdier, men Nedenfor ser du et bilde av programmets brukergrensesniti, samt en skisse av klassen Hotelldrift. Dag: D Måned: D Ar ()(XXX): [~~ Antall dager: D! Type rom (1=enkeltrom, 2=dobbeltrom): D~~~. Navn: Romnummer:9' [~~~~~~J[~~~~J Vis gjesteliste 5'

import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Hotelldrift extends JFrame { private JTextField darfelt, månedfelt, årfelt, antallfelt, navnf t, nrfeit, typefelt private JTextArea utskriftsområde; private JButton visledi.ge, reserver, sjekkut, visliste; private Knappelytter lyner = new KnappelytterO; private Hotell hotellet = new HoteilO; private int dag, måned, år; public HotelldriftO super( "Hotell Java" ); visledige.addactionlistener( lytter ); reserver.addactionlistener( lytter ); sjekkut.addactionlistener( lytter ); vlsliste.addactionlistener( lytter ); < metoder du skal programmere i de følgende deloppgaven1 > } private class Knappelytter... {...} / /som du skal programmere under punkt 3 f) de følgende metodene skal all informasjon til brukeren sk t ives inn JT extarea-objektet utskriftsom råde. a) Programmer følgende metoder: private void lesdato{) J Metoden leser inn dag, m~ned og ~r for en dato og lagrer dt n i de tilhørende instansvariablene. public void visgjestelisteo {...} Metoden skal skrive ut en oversikt over alle gjester med til~ørende rom som bor p~ hotellet p~ en bestemt dato skrevet inn av brukeren~ public void visledigeromo Metoden skriver ut en oversikt over hvilke rom som er ledi~ av den typen og i det tidsrommet brukeren har valgt. Hvis ingen rom av ri~ig type er ledig i denne perioden, skal metoden gi informasjon om det. b) Programmer metoden public void reserverrom() {...} Metoden skal ut fra dataene brukeren skriver inn, reserver i for gjesten det valgte rommet i den valgte tidsperioden. Metoden skal gi p ssende tilbakemelding til bruker. ~

c) Programmer metoden public void sjekkuto {...} Metoden skal utfra de dataene brukeren skriver inn sørge ~r at utsjekking fra angitt rom p~ angitt dato finner sted. Metoden skal skrive ~t skyldig beløp, og dessuten sørge for at rommet ledigstilles i den perioden gj~sten hadde reservert det for. i d) Programmer den indre klassen Knappelytter slik at den ft nger opp de hendelsene som finner sted i brukergrensesnittet, og sørge for at de tilhørende oppgavene blir utført. e) Til slutt skal du programmere applikasjonskiassen orivep onneholdende main-metode som starter hele programmet. Klassen skal p rammeres slik en at applikasjonen avsluttes n~r man klikker p~ lukkeknappe i vinduets øvre høyre hjørne. SLUTT 1