HØGSKOLEN I SØR-TRØNDELAG



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

LO191D/LC191D Videregående programmering

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

HØGSKOLEN I SØR-TRØNDELAG

INF106 Objektorientert programmering

HØGSKOLEN I SØR-TRØNDELAG

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

UNIVERSITETET I OSLO

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

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

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG

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

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

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

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

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

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

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

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

Eksamensoppgave i IFUD1025 Programmering i Java

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

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

LC191D/LO191D Videregående programmering mai 2010

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

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

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

HØGSKOLEN I SØR-TRØNDELAG

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

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

Eksamensoppgave i IFUD1025 Programmering i Java

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Eksamen IN1010/INF1010 våren 2018

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Løsningsforslag til eksamen i INF1000 våren 2006

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Eksamensoppgave i IFUD1025 Programmering i Java og IINI4013 Programmering i Java

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

INF1000 Metoder. Marit Nybakken 16. februar 2004

UNIVERSITETET I OSLO

Objektorientert Programmering Ekstraordinær eksamen 2014

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

OPPGAVE 5b og 8b Java Kode

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

Gjennomgang av eksamen H99

HØGSKOLEN I SØR-TRØNDELAG

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

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

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

Endret litt som ukeoppgave i INF1010 våren 2004

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

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

EKSAMEN ITF Webprogrammering 1 Dato: Eksamenstid: Hjelpemidler: 2 A4 ark (4 sider) med egenproduserte notater (håndskrevne/maskinskrevne)

UNIVERSITETET I OSLO

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

EKSAMEN. Objektorientert programmering

INF Løsning på seminaropppgaver til uke 8

TDT4100 Objektorientert programmering

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

UNIVERSITETET I OSLO

Transkript:

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Målform: Eksamensdato: Bokmål 9.mai 202 Varighet/eksamenstid: 0900-300 Emnekode: Emnenavn: Klasse(r): Studiepoeng: LC9D/LO9D Videregående programmering HING20HA, gjentak, nettstudenter 6 sp Faglærer(e): (navn og telefonnr på eksamensdagen) Else Lervik, tlf 73 55 95 50 Anette Wrålsen, tlf 73 55 89 29 Kontaktperson(adm.) (fylles ut ved behov kun ved kursemner) Ingrid Island, tlf 73 55 95 64 Hjelpemidler: Oppgavesettet består av: (antall oppgaver og antall sider inkl. forside) Vedlegg består av: (antall sider) Lærebøker, alle håndskrevne og trykte hjelpemidler. 3 oppgaver og 7 sider (inkludert forside og vedlegg) 2 sider Merknad: Oppgaveteksten kan beholdes av studenter som sitter eksamenstiden ut. NB! Les gjennom hele oppgavesettet før du begynner arbeidet, og disponer tiden. Dersom noe virker uklart i oppgavesettet, skal du gjøre dine egne antagelser og forklare dette i besvarelsen. Lykke til!

Les dette! All programmering skal skje i Java. Det er tillatt å ha flere medlemmer i klassene enn det som er oppgitt i teksten. Les gjennom hele oppgavesettet før du begynner å programmere. Pass på at du ikke gjør verken mer eller mindre enn det oppgavene spør etter. Men dersom du trenger flere metoder/konstruktører for å lage det oppgavene spør etter, skal du også programmere disse. En fornuftig oppdeling i metoder ut over det oppgaven spør etter, kan gi plusspoeng ved bedømmelsen. Dersom du mener det mangler opplysninger, sett dine egne forutsetninger. Alle oppgavene arbeider med den samme problemstillingen som du får en introduksjon til nedenfor. Det vil kunne være slik at du i en oppgave med fordel kan bruke klasser/metoder du skal ha laget i en tidligere oppgave. Dersom du av en eller annen grunn ikke har laget disse klassene/metodene, kan du, når du skal løse andre oppgaver, anta at de eksisterer. Du trenger ikke sette opp import-setninger. Felles problemstilling for alle oppgavene Vi skal lage klasser som kan brukes i et programsystem som holder orden på utflukter som arrangeres for passasjerene på et cruiseskip. Skipet besøker mange destinasjoner (gitt ved et entydig navn), og det tilbys flere utflukter på hver destinasjon. Alle utfluktene er dagsutflukter. Hver utflukt har et navn som sammen med destinasjonen er entydig. Om utflukten lagrer vi i tillegg en kort beskrivelse, oppmøtetidspunkt, varighet og pris. Passasjerene melder seg på utflukter etter ønske. Om en passasjer lagrer vi kundenummer (entydig), navn og foretrukket guide-språk (norsk, engelsk, tysk, fransk eller spansk). Vi ser bort fra at en passasjer kan følge guider på andre språk enn det foretrukne. Alle utfluktene kjøres med buss. Minstekravet for å kjøre en utflukt er 0 påmeldte. Det er plass til 45 deltakere i hver buss. Eventuell guide og hjelpepersoner kommer i tillegg, og de skal ikke tas hensyn til i beregningene nedenfor. Vi skiller mellom tre typer utflukter: Utflukt med plassbestilling i en sal (f.eks. konsert eller teater), der hvert sete er nummerert med radnummer og setenr på raden. Vi antar at alle radene er like lange. Utflukt med guide. Passasjerene organiseres etter språk. Det allokeres (minst) én buss pr. språk. Minstekravet til antall påmeldte gjelder nå et bestemt språk. Antall plasser er ikke begrenset på noen av språkene. Selvstendig utflukt. Dette er også en bussutflukt, men altså uten guide. Antall busser er kun avhengig av antall deltakere, ikke hvilket språk de foretrekker. Det er ikke begrensning på antall plasser. 2

Du skal forholde deg til følgende sammenheng mellom klassene: destinasjoner Destinasjon dest Cruiseskip passasjerer deltakere utflukter Passasjer utflukter Utflukt UtfluktMedGuide SelvstUtflukt UtfluktMed- Setebest Klassene Passasjer og Utflukt er gitt i vedlegg og 2. Spesielt skal klassen Utflukt utvides nedenfor, men du kan utvide klassen Passasjer også, dersom du finner det hensiktsmessig. Oppgave vekt 40% Du skal programmere klassene Destinasjon, UtfluktMedGuide, SelvstUtflukt og UtfluktMedSetebest med passende attributter og konstruktører som tar relevante argumenter. Videre skal følgende to oppgaver kunne utføres for alle typer utflukter i denne sammenhengen skal du også utvide klassen Utflukt. (Husk å ta hensyn til ønsket guide-språk i klassen UtfluktMedGuide les detaljer på siden foran.) Finn antall busser som skal bestilles. Metodehode: public int finnantbusser() // returnerer 0 hvis for få påmeldte Reserver plass til en gruppe passasjerer. Metodehode: public boolean reserverplass(passasjer[] pass) I klassen UtfluktMedSetebest skal setene modelleres som en to-dimensjonal tabell: private String[][] seter; // navnene på de som har reservert setene Antall rader og antall seter pr. rad skal være argument til konstruktøren. Du kan anta at det eksisterer en metode som registrerer passasjerene på passende seter, og som returnerer true eller false avhengig av om det ble plass til alle. Dersom det ikke er plass til alle, får ingen plass. Denne metoden har følgende hode: private boolean finnseter(passasjer[] pass) - - DU SKAL IKKE PROGRAMMERE DENNE METODEN - 3

Oppgave 2 vekt 30% Klassen Cruiseskip har to objektvariabler: private ArrayList<Passasjer> passasjerer = new ArrayList<Passasjer>(); private ArrayList<Destinasjon> destinasjoner = new ArrayList<Destinasjon>(); Lag to metoder i denne klassen:. Påmeldingsfristen for utfluktene på en bestemt destinasjon er ute, og du skal lage en metode som finner antall busser som skal bestilles på denne destinasjon. Metodehodet skal se slik ut: public int finnantbusser(string destnavn) 2. Lag en metode som registrerer påmeldinger til en utflukt. Metodehodet skal se slik ut: public ArrayList<Integer> registrerpåmeldinger(int[] kundenr, Utflukt utflukt) Metoden skal sjekke kundenumrene ved å søke i passasjerlisten. Ugyldige kundenummer skal returneres til klienten. For øvrig skal kundene meldes på utflukten. Du kan anta at parameteren utflukt refererer til et Utflukt-objekt som allerede er registrert i systemet. Oppgave 3 vekt 30% Du skal jobbe med innledende utviklingsarbeid knyttet til følgende grafiske brukergrensesnitt for å reservere seter i en konsert- eller teatersal: Røde knapper. Seter som ikke kan reserveres, fordi de allerede er reservert av andre. Grå knapper. Seter som brukeren foreløpig har reservert. Brukeren kan angre ved å trykke på knappen. 4

Hvert sete er en knapp (JButton). Teksten på knappen er radnummer og setenummer på raden. Merk at nummereringen på knappene starter på (og ikke 0). En bruker som ønsker å reservere seter får opp dette vinduet. Seter som allerede er reservert er røde, og de er det ikke mulig å trykke på. Hvis brukeren trykker på en av de andre knappene, anses dette som en foreløpig reservasjon, og knappen blir grå. Brukeren kan oppheve reservasjonen ved å trykke en gang til, da blir knappen hvit igjen. Nederst i vinduet er det satt opp en knapp som brukeren skal trykke på når reservasjonen er ferdig. Da blir de grå knappene røde og ikke mulig å trykke på. At brukeren har reservert det antall seter han har bedt om, skal sjekkes ved trykking på denne knappen. Hvis antallet er feil, skal permanent reservasjon ikke skje, men en melding skal komme. (Med permanent reservasjon menes at navnene lagres i den todimensjonale tabellen setenavn, se klientprogram nedenfor.) Dette brukergrensesnittet skal ikke settes sammen med løsningen fra oppgave og 2. I stedet har vi laget følgende lille testprogram: class TestCruiseskip { public static void main(string[] args) { String[][] setenavn = new String[7][0]; setenavn[][4] = "Ole Olsen"; // sete 2, 5 - allerede reservert setenavn[][5] = "Kari Olsen"; // sete 2, 6 - allerede reservert String[] navn = {"Ingrid Ås", "Kåre Hansen", "Ivar Bø"; // 3 seter skal reserveres Gui sal = new Gui(setenavn, navn); sal.setvisible(true); Merk at navn og antall for ønsket reservasjon er input til Gui-konstruktøren. Du skal ikke programmere innlesing av dette. Du skal lage brukergrensesnittet slik det er beskrevet over. Gui tar både setenavn og navn som argumenter (se eksemplet over). Klassen skal ikke ha sine egne utgaver av disse tabellene, men jobbe direkte på tabellene i klientprogrammet. 5

Vedlegg - klassen Passasjer class Passasjer { private final int kundenr; private final String navn; private final String språk; private ArrayList<Utflukt> utflukter = new ArrayList<Utflukt>(); public Passasjer(int kundenr, String navn, String språk) { this.kundenr = kundenr; this.navn = navn; this.språk = språk; public int getkundenr() { return kundenr; public String getnavn() { return navn; public String getspråk() { return språk; 6

Vedlegg 2 - klassen Utflukt abstract class Utflukt { public static int MIN_ANTALL = 0; public static int ANT_PR_BUSS = 45; private final String navn; private final Destinasjon dest; private final String beskrivelse; private final String starttid; private final String slutttid; private final double pris; private ArrayList<Passasjer> deltakere = new ArrayList<Passasjer>(); protected Utflukt(String navn, Destinasjon dest, String beskrivelse, String starttid, String slutttid, double pris) { this.navn = navn; this.dest = dest; this.beskrivelse = beskrivelse; this.starttid = starttid; this.slutttid = slutttid; this.pris = pris; public String getnavn () { return navn; public Destinasjon getdest() { return dest; public String getbeskrivelse() { return beskrivelse; public String getstarttid() { return starttid; public String getslutttid() { return slutttid; public double getpris() { return pris; 7