INF100 INNLEVERING 3 HØSTEN 2004

Like dokumenter
INF100/INF100-F - INNLEVERING 2 HØSTEN 2005

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

INF Obligatorisk innlevering 5

Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006

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

Seminaroppgaver IN1010, uke 2

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

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

TOD063 Datastrukturer og algoritmer

Informasjon Prøveeksamen i IN1000 høsten 2018

MAT-INF 1100: Obligatorisk oppgave 1

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

IN1010 V19, Obligatorisk oppgave 2

UNIVERSITETET I OSLO

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

UNIVERSITETET I OSLO

Oblig4 - forklaringer. Arne og Ole Christian

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

Obligatorisk oppgave 4: Lege/Resept

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

UNIVERSITETET I OSLO

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

Eksamen IN1010/INF1010 våren 2018

Obligatorisk oppgave 5: Labyrint

INF Uke 10. Ukesoppgaver oktober 2012

INF Innleveringsoppgave 6

Introduksjon til objektorientert programmering

INF1000 Eksamen 2014 (modifisert)

INF1000 Prøveeksamen Oppgave 7 og 9

Eksamensoppgaver 2014

UNIVERSITETET I OSLO

INF Løsning på seminaropppgaver til uke 8

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2009

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

UNIVERSITETET I OSLO

Eksamen Oppgave a) public class DayTime { public final int hours, minutes;

INF Obligatorisk innlevering 6

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I)

UNIVERSITETET I OSLO

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 h2006

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

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

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

2 Om statiske variable/konstanter og statiske metoder.

IN1010 V18, Obligatorisk oppgave 5

INF Ekstrainnlevering

Test 2 OOP. - Prøveeksamen

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

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl

INF1000: Forelesning 7. Konstruktører Static

Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000

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

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

UNIVERSITETET I OSLO

Hvordan angripe en større oppgave? (og hva skal jeg gjøre i oblig 7!?)

INF1010 våren januar. Objektorientering i Java

Objektorientert programmering i Python

IN Seminaroppgaver til uke 11

Eksamensoppgave i IFUD1025 Programmering i Java

Innhold uke 8. Objekter: Bruk og intern organisering. Beskjeder: Oblig 1 6. Beskjeder: Oblig 7 (og 8)

UNIVERSITETET I OSLO

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

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

Forelesning inf Java 5

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

Forelesning inf Java 5

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

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

Oblig2 - obligatorisk oppgave nr. 2 (av 4) i INF1000 v2008

Prosjektoppgave. i «IMT Objekt-orientert programmering» våren 2016

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

INF1000 Behandling av tekster

Velkommen til. INF våren 2017

Løse reelle problemer

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Eksamensoppgave i IFUD1025 Programmering i Java

Brukermanual for Quizbuilder

Gjennomgang av eksamen H99

UNIVERSITETET I OSLO

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

Transkript:

INF100 INNLEVERING 3 HØSTEN 2004 Krav til innlevering For at innleveringen skal godkjennes må følgende leveres: Oversikt Et dokument som inneholder en oversikt over innleveringen. Den skal inneholde en kort beskrivelse av alle filene som blir levert inn og skal også oppgi navn, gruppenummer og epost-adresse. Hvis du ikke går på noen gruppe, skal du skrive ingen gruppe. Kildekode All kildekode skal selvsagt legges ved. Kildekoden skal være godt kommentert slik at det er lett å sette seg inn i programmenes virkemåte. Koden skal også være godt indentert (dvs. ha innrykk der programmet tilsier det) og lett å lese (f.eks. fornuftig bruk av variabelnavn). Kjøreeksempel For hvert program, skal det være med en fil som inneholder en logg av en typisk kjøring av programmet. Et slikt kjøreeksempel viser hvordan programmet brukes og hva programmet skriver ut. Under Linux kan filer med kjørelogg lages slik: 1. Kjør kommandoen: script logg.txt 2. Kjør programmet ditt fra kommandolinjen ved hjelp av kommandoen: java Mittprogram 3. Avslutt med kommandoen exit All skjermutskrift som ble produsert mens skriptet ble kjørt ligger nå på filen logg.txt. Alle filene som skal leveres pakkes i en egen zip-fil. Se nærmere beskrivelse i innleveringssystemet. Du skal ikke levere inn filene som inneholder bytekode (filene med navn *.class). Besvarelsen skal leveres elektronisk ved hjelp av innleveringssystemet, som det finnes en lenke til på kursets hjemmeside. Innleveringsfristen er mandag 15. november 2004 kl 16.00. Besvarelsen skal bedømmes av gruppeleder, som setter en poengsum på en skala fra 0 (dårligste karakter) til 100 (beste karakter). Innlevering etter fristen eller ingen innlevering vil resultere i poengsummen 0. Gjennomsnittet av poengsummene på de tre innleveringene i INF100 høsten 2004 teller 20% av sluttkarakteren. Det er tillatt at to studenter (ikke flere) samarbeider om innleveringen og leverer identiske besvarelser. Begge må levere hver for seg og oppgi navn, brukernavn og gruppe for samarbeidspartneren i oversiktsdokumentet. 1

Denne innleveringen inneholder flere klasser som arbeider sammen. Hver klasse skal ligge i en fil for seg. Alle klasser og klassemedlemmer (metoder, feltvariabler, etc.) skal ha kommentarer på Javadoc-format. Oppgaven spesifiserer en rekke metoder som skal lages, men lag gjerne flere hvis det er hensiktsmessig. Bruk innkapsling for å skille ekstern oppførsel (kontrakt) fra intern implementasjon av hver klasse. Oppgave 1 (30%): Mer tid Vi skal først utvide klassen Tid fra forrige innlevering med noen nye metoder. Ta utgangspunkt i klassen du selv leverte inn, eventuelt i løsningsforslaget som er utlagt. Vi trenger følgende nye metoder i klassen Tid: int avstand(tid tiltid) returnerer antall minutter mellom tidspunktet i det aktuelle objektet og tidspunktet i tiltid. Returverdien er negativ hvis tiltid er tidligere enn det aktuelle objektet (anta samme døgn). int compareto(tid annentid) returnerer en positiv verdi hvis det aktuelle objektet er senere enn annentid (anta samme døgn), en negativ verdi hvis det aktuelle objektet er tidligere, og 0 hvis tidspunktene er like. static Tid parsetid(string s) lager et tidsobjekt av en streng på formen tt:mm, f.eks. "10:15", og returnerer en referanse til dette objektet. Hvis strengen har feil format (f.eks. "10h15" eller "33:33") returneres null. Dernest skal vi lage en ny klasse Tidsrom som gjør bruk av klassen Tid. Et objekt av klassen Tidsrom representerer et gitt tidsintervall innenfor ett og samme døgn. Klassen skal ha en konstruktør som tar to tidsobjekter som parametre, som angir henholdsvis start- og slutt-tidspunktet for intervallet. Følgende instansmetoder skal implementeres: Tid hentstart() returnerer starttidspunktet. Tid hentslutt() returnerer sluttidspunktet. int hentvarighet() returnerer varigheten av intervallet i minutter. boolean equals(tidsrom annettidsrom) returnerer true hvis og bare hvis det aktuelle objektet og annettidsrom er like (dvs. både start- og slutttidene er like). int compareto(tidsrom annettidsrom) returnerer en positiv verdi hvis starttiden for det aktuelle objektet er senere enn for annettidsrom og en negativ verdi hvis starttiden for det aktuelle objektet er tidligere. Hvis starttidene er like, sammenlignes sluttidene på samme måte. Hvis både start- og sluttidene er like, returneres 0. 2

boolean overlapper(tidsrom annettidsrom) returnerer true hvis og bare hvis tidsrommene i det aktuelle objektet og annettidsrom overlapper. (Det regnes ikke som overlapp hvis det andre tidsrommet starter i samme minutt som det første slutter.) String tostring() returnerer en strengrepresentasjon av et tidsrom, f.eks. "12:15-14:00". Oppgave 2 (40%): Dagsplan Hovedsaken i denne oppgaven er å lage en klasse Dagsplan, der hvert objekt representerer en liste av aktiveteter en bestemt dag (se eksempel i siste oppgave). Listen skal implementeres som en tabell av referanser. Hver aktivitet består at et tidsrom og en beskrivende tekst (en streng). Et Dagsplan-objekt opprettes ved hjelp av et konstruktørkall men en eller to parametre. Den første parameteren er tabellstørrelsen (dvs. maksimalt antall parametre). Den andre, frivillige parameteren er en streng som navngir dagsplanen (kan f.eks. være "mandag"). En nyopprettet dagsplan har ingen aktiviteter. Klassen tilbyr følgende metoder: String hentnavn() returnerer navnet på dagsplanen, eller null hvis navn ikke ble angitt. int hentantallaktiviteter() returnerer antall aktiviteter som er lagt inn. boolean erfull() returnerer true hvis aktivitetstabellen er full, slik at det ikke er plass til flere aktiviteter. boolean erledig(tidsrom når) returnerer true hvis tidsrommet når ikke overlapper med aktiviteter som allerede er lagt inn. boolean leggtil(tidsrom når, String beskrivelse) legger inn en ny aktivitet i planen hvis mulig. To betingelser må være oppfylt: Det må være plass i tabellen, og tidsrommet må ikke overlappe med andre aktiviteter i tabellen. Metoden returnerer true hvis innleggingen var vellykket. void skrivliste() skriver ut en liste over alle aktiviteter til terminalen, helst sortert etter tidspunkt. void skrivtilfil(printwriter tekstskriver) skriver ut en liste over alle aktiviteter til en fil via tekststrømmen tekstskriver. void lesfrafil(bufferedreader tekstleser) leser inn og legger til aktiviteter fra en fil som ble skrevet av metoden skrivtilfil(), via tekststrømmen tekstleser. Tips: I tillegg til klassen Dagsplan er det lurt å lage en enkel klasse for aktiviteter. 3

Oppgave 3 (30%): Timeplan-program Basert på klassen Dagsplan skal vi lage et program for å holde rede på en timeplan for en uke (mandag til fredag). Programmet skal være menystyrt og ha følgende funksjoner: 1. Legge inn en aktivitet en gitt dag. Programmet sjekker at det er ledig plass. 2. Liste ut alle aktiviteter en gitt dag. 3. Lagre timeplanen (alle dager) i en fil... Som vanlig bør programmet sjekke brukerens inntastinger på en fornuftig måte. Legg ved et kjøreeksempel som inkluderer lagring på fil, og legg også ved filen som ble lagret. Tips: Kanskje en ukeplan-klasse også er en god ide, nå som vi er så godt i gang... Eksempel på programdialog (brukerens inntastinger er understreket): Velkommen til Planlegging! Starttid: (tt:mm) 12:15 Sluttid: (tt:mm) 14:00 Beskrivelse: Forelesning INF100 Starttid: (tt:mm) 13:00 4

Sluttid: (tt:mm) 15:00 Ikke ledig tid. Starttid: (tt:mm) 10:15 Sluttid: (tt:mm) 12:00 Beskrivelse: Forelesning MAT111 Ditt valg: (1-5) 2 tirsdag 10:15-12:00 Forelesning MAT111 12:15-14:00 Forelesning INF100 Ditt valg: (1-5) 3 Filnavn: min_plan.txt Planen er skrevet til filen min_plan.txt Ditt valg: (1-5) 5 Avslutter programmet. 5