INF Obligatorisk innlevering 5

Like dokumenter
INF Innleveringsoppgave 6

INF Obligatorisk innlevering 6

INF Ekstrainnlevering

Seminaroppgaver IN1010, uke 2

INF Obligatorisk innlevering 7

INF Obligatorisk innlevering 7

2 Om statiske variable/konstanter og statiske metoder.

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

Jentetreff INF1000 Debugging i Java

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF100 INNLEVERING 3 HØSTEN 2004

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

UNIVERSITETET I OSLO

INF Seminaroppgaver til uke 3

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

Introduksjon til objektorientert programmering

Oblig4 - forklaringer. Arne og Ole Christian

Obligatorisk oppgave 4: Lege/Resept

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

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

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

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

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

IN1010 V18, Obligatorisk oppgave 5

Obligatorisk oppgave 5: Labyrint

INF1000: Forelesning 7. Konstruktører Static

UNIVERSITETET I OSLO

Velkommen til. INF våren 2016

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

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

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

IN1010 V19, Obligatorisk oppgave 2

Obligatorisk oppgave 2: Bilhierarki

INF1000: noen avsluttende ord

IN1000 Obligatorisk innlevering 7

Obligatorisk Innlevering 2

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

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

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

INF1000: Forelesning 7

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

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

UNIVERSITETET I OSLO

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

Finne ut om en løsning er helt riktig og korrigere ved behov

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

MAT-INF 1100: Obligatorisk oppgave 1

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

UNIVERSITETET I OSLO

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

INF1000 Prøveeksamen Oppgave 7 og 9

UNIVERSITETET I OSLO

MAT-INF 1100: Obligatorisk oppgave 1

INF1000: noen avsluttende ord

UNIVERSITETET I OSLO

Sudokubrettet Et sudokubrett består av n n ruter. Vi bruker følgende begreper i oppgaven:

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

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

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

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

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

løsningsforslag-uke5.txt

UNIVERSITETET I OSLO

Dagens tema: 12 gode råd for en kompilatorskriver

Obligatorisk oppgave 1 INF1020 h2005

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

Drosjesentralen. I-120: Obligatorisk oppgave 2, 2000

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

INF 1010, vår 2005 Løsningsforslag uke 11

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

TOD063 Datastrukturer og algoritmer

Eksamensoppgaver 2014

UNIVERSITETET I OSLO

Enkle generiske klasser i Java

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Endret litt som ukeoppgave i INF1010 våren 2004

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Test 2 OOP. - Prøveeksamen

UNIVERSITETET I OSLO

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

INF1010 våren januar. Objektorientering i Java

Objektorientert programmering i Python

UNIVERSITETET I OSLO

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

INF1000 Eksamen 2014 (modifisert)

INF Uke 11. Ukeoppgaver oktober 2012

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Transkript:

INF1000 - Obligatorisk innlevering 5 Frist: 2. Oktober kl 22:00 Temaer denne uka: Klasser og objekter. I denne obligen skal du som nytt tema jobbe med klasser og objekter, i tillegg til å bruke det du tidligere har lært om blant annet metoder og arrayer. Denne obligen er større i omfang enn de foregående obligene, så regn med at du må bruke noe lenger tid. Om det er noe du ikke har fått til, husk å spesifisere dette i README-filen. Oppgave 5.1) Tema: Klasser og objekter Filnavn: Oppgave51.java, Bil.java Du skal skrive en klasse Bil som skal modellere kjøringen av biler. Biler kan ikke kjøre dersom de ikke har nok bensin. Hver kilometer en bil kjøres, legges til den totale kilometerstanden. a) Gitt følgende grensesnitt, fyll ut metodene og bruk fornuftige variabler i klassen for å få metodene til å returnere korrekte verdier. class Bil { // Nok bensin? Kjor "km" kilometer. public boolean kjortur(int km) { } } // Fyll tanken, dersom det er plass til spesifisert mengde bensin. public boolean fylltank(double liter) { } // Hent maksimal kjoredistanse, gitt bensinmengde på tanken. public double hentmaksdistanse() { } // Hent bilens totale kilometerstand. public int hentkilometerstand() { } 1

Vi antar her at alle biler kjøpes nye (kilometerstand 0), med full tank. Det er nødvendig å spesifisere tankstørrelse og bensinforbruk pr. kilometer ved opprettelse av en ny bil. I klassen vil du trenge instansvariablene kilometerstand, tankstorrelse og bensinforbruk. Det vil også være lurt å ha en egen variabel tank for å holde på antall liter i tanken til enhver tid. Dersom noe skulle gå galt, for eksempel at du forsøker å kjøre lenger enn du har bensin til, skal metodene gi tilbakemelding om at dette ikke går til terminalen. b) Skriv et program som tester klassen Bil. Lag et eller flere objekter av Bil og skriv flere tester av alle metodene der du sjekker at de reagerer som de skal for forskjellige typer input. Husk at en del av testingen bør være kall på metodene med parametere som gir feilmelding. f.eks. fylltank(99999.99); Gir feilmeldingene dine mening? Synes du denne oppgaven var vanskelig? Se øvingsoppgave 5.01. Oppgave 5.2) Tema: Teorioppgave Filnavn: Teori.txt Gi korte svar på spørsmålene under: a) Hva er grensesnittet til en klasse? Hvordan skiller det seg fra implementasjonen av en klasse? b) Hva er en instansmetode og hvordan skiller den seg fra en statisk metode (slike metoder vi har jobbet med tidligere)? Forklar dette ved å vise til både konkrete eksempler på en instansmetode og en statisk metode. Oppgave 5.3-5.4 (gir 2 poeng!) Tema: Objektorientering Filnavn: Oppgave54.java, Isbod.java Det er sommer, det er varmt, og folket vil ha is! Du skal lage et enkelt system som skal holde styr på ansatte for sjefen i en isbod. Å være ansatt i isbod er meget sesongbetinget, og hvor mange ansatte som trengs varierer fra uke til uke. Vi antar her at de som har vært ansatt kortest (lavest ansiennitet), vil bli avskjediget først, dersom noen må gå. a) Skriv en klasse Isbod. Lag en privat String-array med ti plasser i klassen. Denne skal inneholde navn på de ansatte. Lag også en heltallsvariabel for å lagre antall ansatte. 2

b) Skriv en instansmetode public void ansett(string navn), som registrerer en ny ansatt. Navnet på den nyansatte skal lagres på første ledige plass i arrayen (har man 5 ansatte, skal neste ansatte komme på plass 5 i arrayen). Husk at du må sjekke at det ikke alt er 10 ansatte da kan du ikke ansette flere! c) Skriv en instansmetode public void gisistemannsparken(), som gir den som sist ble ansatt sparken. Programmet skal da gi en utskrift med navnet på den som ble ansatt, fjerne vedkomne fra arrayen. Husk å senke antallet ansatte med én. d) Skriv en instansmetode public void printalleansatte(), som skriver ut alle ansatte i rekkefølge, der den første har lengst ansiennitet, og den siste har kortest. Til denne oppgaven skal du bruke en for-løkke. e) Lag en klasse Oppgave54, og opprett en main-metode. Lag et Isbod-objekt. Ansett tre personer. Skriv ut alle ansatte, og sjekk at korrekte navn kommer ut. Spark så den siste, og skriv ut på nytt. Legg deretter til en ny ansatt. Sjekk at utskrift nok en gang blir korrekt. Se vedlegg A for kjøreeksempel. f) FRIVILLIG. Lag en konstruktør til Isbod som gjør at du kan spesifisere under opprettelsen av et Isbod-objekt hvor mange ansatte de har plass til. For å teste, prøv å lag flere objekter av Isbod med plass til ulikt antall ansatte, og kall på ansett() helt til de har nok medarbeidere i alle isbodene. Sjekk at dette stemmer overens med tallet du sendte inn. Du har nå implementert en konstruksjon som kalles en "stack". Dette er en datastruktur som brukes mye i "det virkelige programmeringsliv", og som du nok kommer til å jobbe mye med som programmerer! Oppgave 5.5) Tema: Egen oppgave Filnavn: MinOppgave5.java a) Skriv en egen oppgavetekst som handler om klasser og objekter. b) Løs oppgaven du skrev i a). Løsningen må inneholde minst én ekstra klasse i tillegg til MinOppgave5. Husk at du skal levere både løsningen og oppgaveteksten du skrev i a). 3

Vedlegg A - kjøreeksempler til oppgave 5.3-5.4 Kallene: Isbod minisbod = new Isbod(); minisbod.ansett("bjarte"); minisbod.ansett("steinar"); minisbod.ansett("tore"); minisbod.printalleansatte(); minisbod.gisistemannsparken(); minisbod.ansett("helga"); minisbod.printalleansatte(); skal gi lignende følgende utskrift: > Ansatte Bjarte! > Ansatte Steinar! > Ansatte Tore! > Printer alle ansatte: > - Bjarte > - Steinar > - Tore > Gir Tore sparken! > Ansatte Helga! > Printer alle ansatte: > - Bjarte > - Steinar > - Helga 4

Krav til innleveringen 1. Klassenavnet og filnavnet skal være identisk. 2. Klassenavn skal skrives med stor forbokstav. 3. Variabelnavn skal ha liten forbokstav. 4. Oppgaven må kunne kompilere og kjøre på IFI sine maskiner. 5. Kun.java-filen skal innleveres. 6. Ikke bruk æ, ø eller å i.java-filene(heller ikke som kommentarer eller utskrift). 7. Filene skal inneholde gode kommentarer som forklarer hva programmet gjør. 8. Programmet skal inneholde gode utskriftssetninger som gjør det enkelt for bruker å forstå. 9. Metodenavn skal skrives med liten forbokstav. 10. Koden skal være riktig indendert. Er du usikker, se Appendix J i Big Java. 11. Hver klasse skal ligge i sin egen.java-fil. Fremgangsmåte for innleveringer i INF1000 1. Lag en fil som heter README.txt. Følgende spørsmål skal være besvart i filen: (a) Hvordan synes du innleveringen var? Hva var enkelt og hva var vanskelig? (b) Hvor lang tid (ca) brukte du på innleveringen? (c) Var det noen oppgaver du ikke fikk til? Hvis ja: Hvilke(n) oppgave er det som ikke fungerer i innleveringen? Hvorfor tror du at oppgaven ikke fungerer? Hva ville du gjort for å få oppgaven til å fungere hvis du hadde mer tid? 2. Logg inn på Devilry. 3. Lever de 6.java-filene (minst 2 filer på siste oppgave), samt teori.txt, README.txt i samme innlevering. 4. Husk å trykke lever og sjekk deretter at innleveringen din er komplett. Den obligatoriske innleveringen er minimum av hva du bør ha programmert i løpet av en uke. Du finner flere oppgaver for denne uken her og flere utfordringsoppgaver her. 5