Obligatorisk oppgave 2: Bilhierarki

Like dokumenter
Obligatorisk oppgave 4: Lege/Resept

Objektorientert design av kode. Refaktorering.

Obligatorisk oppgave 5: Labyrint

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Obligatorisk oppgave 1: Regneklynge

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

INF Obligatorisk innlevering 7

IN1010 V18, Obligatorisk oppgave 5

Seminaroppgaver IN1010, uke 2

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

INF våren 2017

IN1010 V19, Obligatorisk oppgave 2

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

INF Obligatorisk innlevering 5

UNIVERSITETET I OSLO

INF Innleveringsoppgave 6

Obligatorisk oppgave 6 i INF1010: Dekryptering

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

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

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

2 Om statiske variable/konstanter og statiske metoder.

INF Obligatorisk innlevering 7

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

UNIVERSITETET I OSLO

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

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

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

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

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

Obligatorisk oppgave 4 i INF1010, våren 2014: "Leger og resepter" Versjon 1.1

2 Om statiske variable/konstanter og statiske metoder.

INF Ekstrainnlevering

UNIVERSITETET I OSLO

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

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

Eksamen IN1010/INF1010 våren 2018

Generiske mekanismer i statisk typede programmeringsspråk

INF Obligatorisk innlevering 6

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

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

Drosjesentralen. I-120: Obligatorisk oppgave 2, 2000

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

UNIVERSITETET I OSLO

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

INF1010 våren Arv og subklasser del 1

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Velkommen til. INF våren 2016

UNIVERSITETET I OSLO

IN1000 Obligatorisk innlevering 7

Læringsmål for forelesningen

INF1010 Arv. Marit Nybakken 2. februar 2004

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Velkommen til. INF våren 2017

Løkker og arrayer. Løse problemer med programmering. INF1000, uke3 Geir Kjetil Sandve

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Objektorientert programmering i Python

UNIVERSITETET I OSLO

Klasser, objekter, pekere og UML. INF gruppe 13

INF1010 våren Arv og subklasser del 1

UNIVERSITETET I OSLO

INF1010 våren februar. Arv og subklasser, del 2

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

UNIVERSITETET I OSLO

Obligatorisk oppgave 1 i INF 4130, høsten 2008

Introduksjon til objektorientert programmering

Oppgaven består av to deler, del A og del B. Alle skal besvare både del A og del B, men det finnes noen valgmuligheter innenfor hver del.

Obligatorisk oppgave 1 i INF 4130, høsten 2009

Enkle generiske klasser i Java

INF1010 våren 2018 tirsdag 23. januar

(MVC - Model, View, Control)

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

INF1010 våren februar. Arv og subklasser, del 2. Repetisjon. Repetisjon - Biler. Repetisjon: Klasser - Subklasser

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

UNIVERSITETET I OSLO

INF1010 våren januar. Objektorientering i Java

INF1010 siste begreper før oblig 2

Kapittel 7: Mer om arv

INF1010, 21. januar Klasser med parametre = Parametriserte klasser = Generiske klasser

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

INF1010 våren Arv og subklasser - del 2

klassen Vin må få en ny variabel Vin neste alle personvariable (personpekere) i listeklassen må byttes til Vin

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

K O N T I N U A S J O N S E K S A M E N

Oblig 3 tips litt mer tips enn i oppgaven

INF1010 våren 2010 Torsdag 4. februar. Arv og subklasser del I. Emneoversikt subklasser (2 uker) Hva er en subklasse? Eksempel: Universitetsregister

Litt om Javas class-filer og byte-kode

Oblig 4Hybelhus litt mer tips enn i oppgaven

GJØVIK INGENIØRHØGSKOLE

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

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

UNIVERSITETET I OSLO

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

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

INF1010 våren Arv og subklasser - del 2

Obligatorisk oppgave 1 INF1020 h2005

Transkript:

Obligatorisk oppgave 2: Bilhierarki INF1010 Frist: mandag 20. februar 2017 kl. 12:00 Versjon 1.0.1 (62f8e31 ). Endringer siden versjon 1.0 Innhold 1 Innledning 1 2 Tegning av klassehierarkiet 2 3 Implementasjon 2 4 Hovedprogram 2 4.1 Innlesning fra fil........................... 2 4.2 Informasjon om bilene........................ 3 4.3 Datastrukturtegning......................... 4 5 Oppsummering 4 1 Innledning I denne oppgaven skal du lage et klassehierarki av biler. Noen biler er drevet av fossilt brennstoff, andre er drevet av elektrisitet fra et batteri. Når vi skal modellere dette i et program, trenger vi å se på hva bilene har til felles og organisere dem i et klassehierarki slik at vi kan samle det som er felles i superklasser, så kan vi lage mer spesialiserte subklasser for de spesifikke biltypene. Du skal skrive et program for en venn som har et lite bilutsalg. Han har beskrevet behovet sitt slik: Alle biler har et skilt (også kalt kjennemerke av Statens vegvesen) hvor bilens registreringsnummer står. Dette registreringsnummeret kan bestå av både bokstaver og tall.

Alle biler er enten elbiler eller fossilbiler. Elbiler har et batteri med en kapasitet målt i kwh. Fossilbiler har et gitt CO2-utslipp målt i g/km. Alle fossilbiler er enten personbiler eller lastebiler. Personbiler har et antall seter som er godkjent for passasjerer. Lastebiler har en nyttevekt, målt i kg, som bestemmer hvor tungt den kan lastes. Med personbil mener vi altså personbil drevet av fossilt drivstoff. Til ettertanke. Heldigvis for deg selger ikke din venn hybridbiler, men hvor ville du plassert en hybridbil i dette hierarkiet? Du skal altså i denne oppgaven ikke ta hensyn til at din venn kanskje senere skal selge hybridbiler. Vi kommer til å ta opp dette med hybridbiler i denne sammenhengen senere i INF1010. 2 Tegning av klassehierarkiet Tegn opp klassehiearkiet som er beskrevet i innledningen. Det er ikke nødvendig å ta med noe annet enn navnene på klassene. 3 Implementasjon Skriv programmet til de fem klassene. Du står fritt til å lage hvilke variabler du måtte ønske for å ta vare for de egenskapene som beskrevet i oppgaveteksten. I tillegg skal alle biler kunne skrive ut informasjon om seg selv. Tips. Hvis du implementerer denne metoden i alle klassene, kan du kalle superklassens metode for å slippe å gjenta mye kode. 2

4 Hovedprogram 4.1 Innlesning fra fil Skriv et program som leser en fil med data om biler og oppretter et objekt for hver bil (hver linje) i filen. Navnet på filen oppgis som et kommandolinjeargument (i String[] args). Referansene til disse objektene skal legges inn i en ArrayList<Bil> eller et array av typen Bil. Hvis du bruker et array, kan du anta at det ikke er mer enn 100 biler i filen. Hver linje i filen starter med et ord som identifiserer klassen objektet tilhører. Deretter kommer verdiene på variablene i objektet. Du kan anta at det ikke er feil i filen. Filen vil inneholde linjer som er på formen EL <reg.nr.> <batterikapasitet> PERSONBIL <reg.nr.> <utslipp> <seter> LASTEBIL <reg.nr.> <utslipp> <nyttevekt> Her er en eksempelfil, 1.in. Du finner denne filen og flere andre eksempelfiler på http://folk.uio.no/inf1010/v17/oblig/2/samples/. EL EK43536 31.5 LASTEBIL SR87875 452.5 2550.4 PERSONBIL AR34345 119.5 8 EL EL14545 60 PERSONBIL DK65437 135.7 4 4.2 Informasjon om bilene Når hele filen er lest inn, skal du gå gjennom alle bilene og skrive ut data om et filtrert utvalg av alle bilene (de andre bilene skal du ikke skrive ut noen informasjon om). Hvilket filter som skal brukes, bestemmes av et kommandolinjeargument. Programmet ditt skal støtte følgende filtre: 1. Alle biler (intet kommandolinjeargument) 2. Bare elbiler (EL som kommandolinjeargument) 3. Bare fossilbiler (FOSSIL som kommandolinjeargument) Programmet skal altså kunne brukes som følger: $ java Oblig2 <inputfil> [filter] Her er noen kjøreeksempler: $ java Oblig2 2.in Type motorvogn: Personbil Reg.nr: BS95857 CO2-utslipp: 72.2000 Seter: 5 Type motorvogn: Lastebil 3

Reg.nr: YG48124 CO2-utslipp: 603.500 Nyttevekt: 5003.20 Type motorvogn: Elbil Reg.nr: EK10100 Batterikapasitet (kwh): 90.0000 $ java Oblig2 2.in EL Type motorvogn: Elbil Reg.nr: EK10100 Batterikapasitet (kwh): 90.0000 $ java Oblig2 2.in FOSSIL Type motorvogn: Personbil Reg.nr: BS95857 CO2-utslipp: 72.2000 Seter: 5 Type motorvogn: Lastebil Reg.nr: YG48124 CO2-utslipp: 603.500 Nyttevekt: 5003.20 Merk. Dette er bare et eksempel på hvordan utskriften kan se ut. Utskriften fra programmet ditt kan godt være formatert annerledes, så lenge den samme informasjonen kommer med. 4.3 Datastrukturtegning Tegn datastrukturen slik den ser ut rett før programmet terminerer når du har lest inn filen over (1.in). Du trenger ikke å tegne inn metoder i objektene. 5 Oppsummering Du skal: Tegne klassehierarkiet Implementere klassene Lage et hovedprogram som oppretter instanser av biler basert på input fra en fil og etterpå skriver ut info om alle de innleste bilene, eller bare fossilbilene eller bare elbilene. 4

Tegne datastrukturen som oppstår under kjøring av hovedprogrammet Tegningen av klassehierarkiet og datastrukturen skal leveres sammen med koden på Devilry. Lykke til! Stein Gjessing, Stein Michael og Kristian 5