Oblig 3 tips litt mer tips enn i oppgaven

Like dokumenter
1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

Oblig 4Hybelhus litt mer tips enn i oppgaven

Oblig 3 tips litt mer tips enn i oppgaven

Gulbrand Grås husleiesystem

Gulbrand Grås Husleiesystem

Oblig3Hybelhus (INF Høst 2011) én av to mulige oppgaver for oblig3 (du løser denne eller Oblig3Pi)

Oblig4Hybelhus (INF Høst 2013) én av to mulige oppgaver for oblig4 (du løser denne eller Oblig4Pi)

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 nr. 3 (av 4) i INF1000, V-2007

Repetisjon. INF gruppe 13

Gulbrand Grås husleiesystem

Oblig 3 (INF Høst 2010)

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

Generelt om oblig 3. Oppgaveteksten kort sammendrag. Deloppgaver/menyvalg 15/03/2010. INF1000 Forelesning 9

NB!!!! VIKTIG ANGÅENDE DATAFILA:

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

Oblig3 - obligatorisk oppgave nr. 3 (av 4) i INF1000

(MVC - Model, View, Control)

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oblig4 - forklaringer. Arne og Ole Christian

INF1000: Forelesning 7

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

INF1000: noen avsluttende ord

Løsningsforslag til eksamen 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; }

Null, && og søppeltømmeren. INF Forelesning 9: Mer om objekter og klasser, tips til oblig 3. Eksempel Student med én konstruktør

INF1000: Forelesning 7. Konstruktører Static

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

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

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

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

(! )! #!! *#+,$&!! &#$

3 #$ *#+,$&!! &#$ (! )! #! 6 &#)%#. / 5$ #%#.67 / "## #&! %# # & #!!& %&$ # $!!!!# $#

UNIVERSITETET I OSLO

INF Forelesning oppsummering forts. Et meget enkelt banksystem. Oppsummering om klasser, objekter, pekere og.

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

Sensur-veiledning INF1000 h 2013 (fasit) am - 6. des. 2013

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

INF1000: noen avsluttende ord

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

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

Bruk av class Scanner, FileWriter og Formatter som alternativ til EasyIO i INF1000.

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

Gjennomgang av eksamen H99

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

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

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

Stringer er ordentlige objekter. Uke 8 - Mer om objekter og klasser. Tips Oblig3. Eksempel Student med en konstruktør

INF1000: Forelesning 6. Klasser og objekter del 1

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Klasser, objekter, pekere og UML. INF gruppe 13

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

UNIVERSITETET I OSLO

INF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)

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

1. Separatorer (skilletegn) i easyio

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

UNIVERSITETET I OSLO

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

Endret litt som ukeoppgave i INF1010 våren 2004

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

Løsningsforslag ukeoppg. 7: okt (INF Høst 2010)

Løsningsforslag, inf101, våren 2001

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

De neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11).

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Uke 7 - Objekter, klasser og pekere (+ litt først om args[])

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Forelesning inf Java 5

Forelesning inf Java 5

UNIVERSITETET I OSLO

Objekter. Uke 8 - Objekter, klasser og pekere. Verden består av mange objekter, noen ganske like, noen ulike. Klasser og objekter i verden

Løsningsforslag ukeoppg. 2: 31. aug - 6. sep (INF Høst 2011)

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

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF1000 (Uke 4) Mer om forgreninger, While-løkker

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

Dagens tema Kapittel 8: Objekter og klasser

Repetisjon INF 1000 våren 2006

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

INF1000 : Forelesning 3

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

INF1000 oppgaver til uke 38 (17 sep 23 sep)

Oblig4 - forklaringer. Arne og Ole Christian

INF1000. Marit Nybakken 10. februar 2004

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

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

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

Transkript:

Obligatorisk oppgave 3 Gulbrand Grås husleiesystem Oblig 3 tips litt mer tips enn i oppgaven lørdag 3. okt 2009 I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert fra -3. I hver etasje finner vi 6 hybler og et fellesareal. Hver hybel navngis med etasje + en bokstav. Første hybel har bokstaven B, siste hybel har bokstaven G. Fellesarealet er markert med bokstaven A. For eksempel 2A fellesarealet i andre etasje, mens E er hybel E i første etasje. Guldbrand Grå krever 5000 kroner i måneden for en hybel de to nederste etasjene. Månedsprisen for en hybel i toppetasjen er 6000 kroner på grunn av utsikten. Guldbrand har beregnet 200 kroner i utgifter per hybel per måned (strøm, faste avgifter, avskrivinger), selv om det ikke bor noen der. Arne Maus 2 Generell løsningsmetode Husk vi skal lage en kopi av virkeligheten i Java-programmet. Finn klassene (hvilke objekter er det i problemet). Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?) 2. Finn ut hvilke objekter som eier objekter ( tegn UML diagram). Lag pekere (enkle pekere, arrayer eller HashMap er) som binder systemet sammen 3. Finn ut hva systemet skal gjøre = metoder vi skal ha.. Finn på et navn på hver av dem foreløpig uten kode inni {. 4. Plasser metodene (og andre datafelter) i de klassene de naturlig hører hjemme 5. Finn ut hvordan vi skal kjøre programmet anta at vi har laget en klasse som er selve systemet (class HusleieSystem). Lag et objekt av HusleieSystem (fra main) 2. I konstruktoren leser du inn file(ne) i systemet og lager alle objektene som selve HusleieSystem eier for eksempel Et hybelhus Utsyn med sine 2 hybler. 3. Kall en kommandoløkke() metode i HusleieSystem. 4. Skriv ut nytt innhold av filer når kommandoløkke() er ferdig 5. Ferdig! 6. Lag et kjørende system med (bare) tomme metoder 7. Programmer hver metode for seg, test 3. Finn klassene - Substantiv-metoden : understrek alle Gulbrand Grås firma HaiHus AS leier ut studenthybler i Ruritanias hovedstad Uqbar. Du skal klhjl hjelpe han ålage et system for å administrere iit utleie tli og effektivt ffktit kreve inn ubetalt husleie. I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert fra -3. I hver etasje finner vi 6 hybler og et fellesareal. Hver hybel navngis med etasje + en bokstav. Første hybel har bokstaven B, siste hybel har bokstaven G. Fellesarealet er markert med bokstaven A. For eksempel 2A fellesarealet i andre etasje, mens E er hybel E i første etasje. Guldbrand Grå krever 5000 kroner i måneden for en hybel de to nederste etasjene. Månedsprisen for en hybel i toppetasjen er 6000 kroner på grunn av utsikten... 4

. Finn klassene - Substantiv-metoden : understrek alle Gulbrand Grås firma HaiHus AS leier ut studenthybler i Ruritanias hovedstad Uqbar. Du skal lhjelpe han ålage et system for å administrere i utleie og effektivt t kreve inn ubetalt husleie. I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert fra -3. I hver etasje finner vi 6 hybler og et fellesareal. Hver hybel navngis med etasje + en bokstav. Første hybel har bokstaven B, siste hybel har bokstaven G. Fellesarealet er markert med bokstaven A. For eksempel 2A fellesarealet i andre etasje, mens E er hybel E i første etasje. Guldbrand Grå krever 5000 kroner i måneden for en hybel de to nederste etasjene. Månedsprisen for en hybel i toppetasjen er 6000 kroner på grunn av utsikten. studenthybel, hovedstad, system, utleie, studenthus, etasje, hybel, månedspris, toppetasje, kroner, oppgave, etasje, fellesareal, bokstav, husleie,.. 5. Substantivene er forslag til klasser Alt for mange A. Noen kutter vi ut A. Angår ikke datasystemet: hovedstad B. Noen er egentlig handlinger (utleie, utdeling, innkreving) og blir kanskje metoder B. Noen blir til enkle variable inne i en klasse A. De som ikke inneholder noe mer, ingen indre struktur (etasjenr, bokstav, husleie,..) C. Noen blir til klasser A. Typisk de som er gjentatt mange ganger (hybel, studenthus, etasje), men kanskje også bare én gang g (student) studenthybel, hovedstad, system, utleie, studenthus, etasje, hybel, månedspris, toppetasje, kroner, oppgave, etasje, fellesareal, bokstav, husleie,.. 6 2. Tegn UML klassediagram (første forslag)2 2. UML klassediagram (forslaget fra oppgave-teksten) Hva er best? studenthu studenthus th s studenthu s 3 Etasje 6 student- hus 8 0.. 0.. 7 8

2b) Lag pekere ( nå henger det sammen) 3. Finn ut hva systemet skal gjøre = metoder vi skal ha utsyn studenthus 8 0.. Her er kravene til metoder fra oppgaven alle (med ett mulig unntak) blir egne metoder Tillegg: kommandoløkke() + meny() stu student-hus denthus hyblene 0 2 0 5 Hbl studenten studenten 0. Avslutt. Skriv oversikt 2. Registrer ny leietager 3. Registrer (frivillig) utflytting 4. Registrer betaling fra leietager 5. Månedskjøring av husleie 6. Sjekk om leietagere skal kastes ut 7. Lag backup av data.txt 9 Alle blir metoder noen trenger parametre det ordnes etterpå. 0 4. Plasser metodene (og andre datafelter) i de klassene de naturlig hører hjemme. Mange muligheter. 4. Plasser datafelter i klasser kommandoløkke() + meny() 0. Avslutt. Skriv oversikt 2. Registrer ny leietager 3. Registrer (frivillig) utflytting 4. Registrer betaling fra leietager 5. Månedskjøring av husleie 6. Sjekk om leietagere skal kastes ut 7. Lag backup av data.txt studenthus 8 0.. Det som ikke ble klasser etasjenr, bokstav, husleie, : Navn, adresse,..? Andre variable for eksempel når vi lager objekter ( Hus: oversiktstabell, innflyttingfraventeliste, kommandoløkke, meny, månedskjøring, sjekkomutkasting : reginnflytting, regutflytting, regbetaling, sjekkomutkasting : 2

5. Kjøre systemet hybeldata.txt systemets database class HusleieSystem { public static void main (String[] args) { Hus hh = new Hus (); hh.kommandoløkke(); 8 3 4 Lesing av redusert hybeldata.txt : M:\INF000\Oblig3tips>java LesData :Ole Brun, med saldo:2400 :TOM HYBEL, med saldo:3000 2; C; Ole Brun; 2400; 3; A; TOM HYBEL; 3000; Når vi har med en string ti sep av separatortegn t til en innlesningsmetode i i klassen In, er det som leses en gruppe med tegn som er de tegnene som finnes mellom to skilletegnene i teksten sep For å si det enklere: Først hoppes det over alle skilletegn i sep, så leses alt frem til neste skilletegn som det vi egentlig er interessert i. Eks. int i =fil.inint( ; ); vil først hoppe over alle blanke og ;, så lese de neste tegnene til første blanke eller ; og prøve å tolke det som et heltall. 5 Merk ingen blanke skilletegn når vi leser inn navnet - HVORFOR 6

Tabell Tips 2 7 8 Tips 5 Tips 3 Hver gang g metoden tilkalltorpedo() blir kalt skal du skrive til slutten av filen torpedo.txt (uten å overskrive det som allerede ligger der). Da må du åpne filen med append. Det gjøres ved å ha en ekstra parameter når du åpner filen: (B,..,E), Out fil = new Out("Torpedo.txt", true); Husk alltid å lukke filer når du er ferdig å lese/skrive til dem! i = (int) (bokstav -'B'); char bokstav = (char) ('B' + i); 9 20

Tips 4 Tips 5: 2 22 import easyio.*; class Oblig3 { public static void main(string [] args) { Utsyn s = new Utsyn(); s.menyløkke(); class { String navn; // studentens navn int saldo; // studentens saldo // evt. metoder for å behandle studentene class { leietager; // peker på leietager. Er hybelen tom, er denne null boolean toppetasje; // true = 6000kr/mnd i leie // false = 5000kr/mnd i leie // evt. metoder for å behandle hyblene? class Utsyn { [][] hyblene = new [3][6]; // deklarer objektvariable for // økonomi-/månedsberegning In tast = new In(); Out skjerm = new Out(); String DATAFIL = "data.txt"; // Konstruktør for klassen Utsyn Utsyn() { // opprett hybler: // hyblene[etg][rom] = new (); // Les inn fra datafil. Opprett studentobjekter // for de hyblene hvor det bor studenter: // hyblene[etg][rom].leietager ] l = // new (); void menyløkke() { int kommando = -; while (kommando!= 0) { // skriv ut menyen skjerm.outln("hovedmeny"); skjerm.outln( outln("0. Avslutt"); // hent kommando fra bruker skjerm.out("kommando: "); kommando = tast.inint(); // utfør kommando switch(kommando) { case 0: avslutt(); break; case : skrivoversikt(); break; case 2: regnyleietager(); break; case 3: regflytting(); break; case 4: regbetaling(); break; //... fyll ut resten selv default: // gi feilmelding 23 24

// metoder for de forskjellige kommandoene i menyløkke() void skrivoversikt() { /*... */ void regnyleietager() { /*... */ void regflytting() { /*... */ void regbetaling() g() { /*... */ //... fyll ut med minst 4 ekstra metoder void avslutt() { /*... */ Lykke til! 25