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

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

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

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

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

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

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

LO191D/LC191D Videregående programmering

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

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

Gjennomgang av eksamen H99

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

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

LC191D/LO191D Videregående programmering mai 2010

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Eksamensoppgave i IFUD1025 Programmering i Java

INF106 Objektorientert programmering

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Endret litt som ukeoppgave i INF1010 våren 2004

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

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

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

Antall sider (inkl. forsiden): 6

UNIVERSITETET I OSLO

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

Informasjon Prøveeksamen i IN1000 høsten 2018

6108 Programmering i Java. Leksjon 8. GUI: Grafisk brukergrensesnitt. Del 2: Roy M. Istad 2015

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

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

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

INF Seminaroppgaver til uke 3

UNIVERSITETET I OSLO

EKSAMEN. Objektorientert programmering

UNIVERSITETET I OSLO

Løsningsforslag til eksamen i INF1000 våren 2006

OPPGAVE 5b og 8b Java Kode

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

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

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

HØGSKOLEN I SØR-TRØNDELAG

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

Informasjon Eksamen i IN1000 høsten 2017

UNIVERSITETET I OSLO

TOD063 Datastrukturer og algoritmer

UNIVERSITETET I OSLO

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

TDT4100 Objektorientert programmering

INF1000: Forelesning 7

Grafisk Brukergrensesnitt

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

Eksamen. Objektorientert Programmering IGR 1372

Introduksjon til objektorientert programmering

Eksamen IN1010/INF1010 våren 2018

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

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

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

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

Seminaroppgaver IN1010, uke 2

INF1000 Metoder. Marit Nybakken 16. februar 2004

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

UNIVERSITETET I OSLO

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

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java

import javax.swing.*; import java.awt.*;

Eksamensoppgave i IFUD1025 Programmering i Java

Dagens tema Kapittel 8: Objekter og klasser

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

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

Leksjon 6. Objekt. Evt. importsetninger. public class Klasse { Konstruktør. Objektmetoder. Innkapsling (private): set-og get-metoder

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

INF1000: Forelesning 7. Konstruktører Static

UNIVERSITETET I OSLO

Transkript:

Eksamen i Programmering 18. februar 2002 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 parameternavn som kan 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 du ikke har gjort, kan du gjøre kall p~ metoden selv om du ikke har programmert den. Du forutsetter da at den utfører det den er tiltenkt ~ gjøre. Det er viktig at du svarer (i alle fall litt) p~ alle deloppgavene.. Merk deg at svært mye av programmeringen g~r ut p~ ~ gjøre kall på passende metoder av dem som er omtalt i oppgaven. Merk deg derfor hva de omtalte metodene utfører. Pass p~ ved metodekall at argumenter er av riktig type og sørg for å gjøre bruk av dataene som metodene returnerer.. Svar nøyaktig p~ det du blir spurt om. Dersom du mener at oppgaveteksten ikke gir deg tilstrekkelig informasjon eller er uklar, kan du gjøre dine egne forutsetninger. Gjør i s~ fall rede for disse.. Ved sensur vil alle bokstaverte deloppgaver (a, b, c,...) telle like mye.

Eksamen i Programmering 18. februar 2002 Side 2 av 7 CAMPINGPLASS I denne eksamensoppgaven skal du lage deler av et java-program for administrasjon aven campingplass. Av hensyn til oppgavens størrelse har vi utelatt en del funksjonalitet som det ellers ville vært ønskelig å hatt med i et slikt program. I oppgave 5 og 6 er det vist bilder av programmets brukergrensesnitt. De enkelte oppgavene inneholder nærmere informasjon. Oppgave 1 I denne oppgaven skal du programmere informasjon om kunden, herunder klassen Kunde. Klassen skal samle nødvendig. kundens navn. startdagen leien (dagens nummer (0..364) innenfor året). leiens varighet i antall dager. plassens/hyttas nummer (jfr. oppgave 2 Klassen skal ha en konstruktør som mottar startverdier for alle datafeltene, samt aksessmetoder (get-metoder) for disse. Oppgave 2 I denne oppgaven skal du programmere en abstrakt klasse som samler alle dataene som skal registreres for de forskjellige plassene man kan leie, enten det dreier seg om en enkelt teltplass, en campingvognplass eller en campinghytte. Nedenfor finner du en skisse av klassen: public abstr.ct class Plass public static final int ARSLENGDE = 365; liser bort fra skuddar protected Kund.[] gjest. new Kunde[ ARSLENGDE ]; protect8d int nr; Ilskal genereres auto..tisk private static int n8stenu...r = 1; Ilfor auto.atisk generering av nr protected double døgnpris; ]. <konstruktør> <..tod.r> abstract public String tostring( Klassen er såpass omfattende at vi har valgt å dele oppgaven Inn i flere deloppgaver, Programmer klassens konstruktør for initialisering av instansvariablene (datafeltene), og aksess-metoder (get-metoder) for henholdsvis nr og pris. nr skal genereres slik at alle plasser f~ret unikt nr. For ~ kunne leie en plass, m~ programmet først sjekke om plassen er ledig. Indeksene i arrayen Kunde[] gjest tilsvarer dagene i ~ret minus 1 (dvs. indeks O tilsvarer 1. januar, indeks 1 tilsvarer 2. januar, indeks 364 tilsvarer 31. desember osv.), og gjest[i] refererer til det kundeobjektet som har bestilt plassen for den tilsvarende dagen. p~ ledige dager er gjest[i] == null. public boolean ledig( int startdag, int antdager)

Eksamen i Programmering 18. februar 2002 Side 3 av 7 Metoden skal undersøke om plassen er ledig fra og med startdagen i det antallet dager som parameteren Ant Dager angir. Hvis plassen er ledig, skal metoden returnere true, hvis ikke skal den returnere false. Campingplassen er kun åpen i sommerhalvåret. Du kan derfor forutsette at utleie-tidsrommet ikke passerer et årsskifte. public boolean reserver( Kunde k ) Metoden reserverer plassen for kunden k, under forutsetning av at plassen er ledig i tidsperioden som er registrert for k. Hvis reservasjonen g~r greit, skal metoden returnere true i motsatt fall skal den returnere false. d) public double sjekkut Kunde k ) Metoden frigjør plassen som var reservert for k og returnerer skyldig beløp. e) public Kunde utleidtil String navn) Metoden returnerer en referanse til det Kunde-objektet som inneholder parameteren navn, eventuelt null dersom dette ikke finnes. (Du kan anta at alle kunder har forskjellige navn og at hver kunde har leid/reservert plassen for bare en tidsperiode.) Oppgave 3 Du skal nå programmere tre konkrete subklasser til den abstrakte klassen Plass. Hver av de tre klassene skal ha en konstruktør for nødvendig initialisering, samt en tostring-metode som returnerer relevante opplysninger om plassen, herunder hva slags plass det dreier seg om. Programmer subklassen Teltplass til Plass. For teltplasser skal det ikke registreres andre data enn de som skal registreres for alle typer plasser. Programmer subklassen Campingvognplass til Plass. Noen campingvognplasser er utstyrt med en terrasse. Det skal registreres om plassen har dette eller ikke. Programmer subklassen Campinghytte til Plass. For campinghytter skal det registreres hvor mange sengeplasser den har.

Eksamen i Programmering 18. februar 2002 Side 4 av 7 Oppgave 4 Klassen Campingplass representerer campingplassen med alle utleie-enhetene (plassene). Nedenfor finner du en skisse av klassen. public class Ca.pingplass public static final int SIlE. 100; private static final int UTVIDELSE. 10; private Plass[] plasser. new Plass[ SIlE ]; private int antplasser 8 O; public static final int TELTPLASS. O; public static final int CAMPINGVOGNPLASS 8 1; public static final int CAMPINGHYTTE 8 2; <konstruktør> f <metoder> public void nyplass( Plass objekt) Metoden kalles n~r det skal legges inn en ny plass i programmet. Den mottar en referanse til den nye plassen, og skal sette denne inn i arrayen. Hvis arrayen er full, skal den utvides med s~ mange elementer som konstanten UTVIDELSE angir. private int objekttypec Plass objekt) Metoden skal avgjøre om den innkomne parameteren objekt refererer til en Teltplass, Campingvognplass eller en Campinghytte, og skal returnere den tilhørende int-konstanten. public String visledige( int type, int startdag, int antdager) Metoden skal returnere en tekst som inneholder informasjon om alle plasser av angitt type som er ledig i den tidsperioden som parametrene angir. Hvis ingen slike plasser er ledige, skal metoden returnere informasjon om dette. d). private int finnplass( int plassnr) Metoden skal undersøke om det finnes en plass med det plassn,. som parameteren angir, og s~ fall returnere arrayindeksen til plassen. I motsatt fall skal metoden returnere -l.

Eksamen i Programmering 18. februar 2002 Side 5 av i e) public boolean reserverplass( Kunde k Metoden skal reservere plass for kunden som parameteren k angir. Hvis plassen finnes og er ledig i den aktuelle tidsperioden, skal den reserveres for kunden, og metoden skal returnere true. Hvis ikke, skal metoden returnere false. f public double sjekkut String navn Metoden kalles når personen med navnet som parameteren angir forlater campingplassen. Den skal returnere det beløp som personen skal betale, og sørge at plassen blir ledig igjen. Hvis derimot den navngitte personen ikke er registrert, skal metoden returnere O. Oppgave 5 Nedenfor ser du et bilde av brukergrensesnittet for reservasjon av de forskjellige plassene og hyttene. Bru kerg rensesnittet er definert av klassen Reservasjon. Følgende skisse gjengir en del av denne klassen. Legg spesielt merke til hjelpemetoden finndagnr() som du vil f~ bruk for i andre metoder i klassen.

Ilen i Programmering 18. februar 2002 Side 6 av 7 public class Reservasjon extends Jframe private JTextfi typefelt, navnefelt, dagfelt,.ndfelt, Irsfelt antdg t, nrfelt; private JButton digknapp, resknapp, utknapp; private JTextAr ledigliste; private Ca8ping ss plassen; private Knappel er lytter; public Reservasjon( Campingplass p ) super( "Reservasjon av plasser og hytter" ); plassen = p; <Oppretter komponenter, lager layout og foretar nødvendig initialisering. IIHjelpe.etode som leser inn dato og Ilreturnerer datoens dagnu.mer innenfor Ar.t (fra O til 364). private int finndagnr() int dag. Integer.parseInt( dagfelt.gettext() ); int.nd = Integer.parseInt(.ndfelt.getText() ); int Ar = Integer.parseInt( Arsfelt.getText() ); Calendar start. new GregorianCalendar( Ar,.nd - 1, dag ); r.turn start.get( Calendar.DAY_OF_YEAR ) - 1;. <..tad.r> ). private class Knappelytter imple.ents Actionlistener public void actionperfor.ed( ActionEvent e ) it ( e.getsource().. ledigknapp) visledige(); else it ( e.getsource().. resknapp) reserver(); else it ( e.getsource().. utknapp ) sjekkut();. public void visledige() Metoden skal skrive ut i tekstomrsdet ledigliste en oversikt over plasser/hytter av valgt type som er ledig i det tidsrom som er angitt. public void reserver() Metoden skal foreta reservasjon av plass/hytte av valgt type i det angitte tidsrom for kunden det er angitt navn for. Den skal skrive ut melding om utfallet av reservasjonen.. public void sjekkut() Metoden skal registrere at kunden med angitt navn sjekker ut (forlater campingplassen). Den skal skrive ut skyldig beløp.

Eksamen i Programmering 18. februar 2002 Side 7 av 7 Oppgave 6 Nedenfor kan du se et bilde av brukergrensesnittet for registrering av campingplassens plasser og hytter. - Fyll ut med relevante data om plassen.l1lytta scxn skal registreres. Typenr (O=teltplass, 1=campingvognplass, 2=hytte) D Døgnpris L==~~ CampIngvognplass med terrasse? (J,IN) D AntaU senger i hytte D I Registrer plassjhytte I Klassen som definerer dette er skissert nedenfor. public class Plassregistrering extends JFrame ( private JTextfield typefelt, sengefelt, prisfelt, terrassefelt; private JButton regknapp; private Ca.pingplass plassen; private Knappelytter lytter; public Plassregistrering( Ca.pingplass p super( "Oppdat.ring av plassregister" ); plassen = p; <Oppretter ko.pon.nter, lager layout og foretar nødvendig initialisering.>. public void registrernyplass() 000. private class Knappelytter i.ple8ents Actionlistener public vold actionperfor.ed( ActionEvent e if ( 8.g8tSourCe() == regknapp r8gistr8rnyplass(); public void registrernyplass( Metoden skal lese inn fra vinduet relevante data for en ny plass/hytte legge disse inn i programmets register over plasser/hytter. av den angitte type og OBSI Klassene som er beskrevet i eksamensoppgaven vil til sammen ikke utgjøre et fullstendig program, da det bl.a. mangler en main-metode. Du skal Imidlertid ikke programmere annet enn det som det er spørsm~1 om i oppgavene.