Ukeoppgaver 7:  5 - 11. okt (INF1000 - H?st 2011)

Klasser og objekter del 2  (kap. 8 (hele) og 12 (hele) i "Rett p? Java" 3. utg.)

M?l
F? et f?rste innblikk i hvordan man programmerer med klasser og objekter.

[N?kkeloppg.]: Oppgave merket med n?kkelsymbol er plukket ut som spesielt representativ for de viktigste temaene fra ukens forelesning, og alle b?r ha som minimumsm?l ? l?se denne selvstendig.

Oppgaver

For de som ?nsker ? lese en annerledes og fin forklaring av klasser og objekter anbefaler vi "objekter.pdf" i Marit Nybakkens notater, skrevet av en legendarisk tidligere gruppel?rerinne i kurset.

  1. Oppgavene fra forrige uke: (kap. 8, oppg. 1 - 6, side 175)
    Det er en god idé ? starte med enkle oppgaver n?r du skal l?re ? programmere med objekter, s? begynn med ? l?se ferdig de av oppgave 0 - 6 fra forrige uke som du ikke ble ferdig med.


  2. [N?kkeloppg.]: Modell av barneskole:  (kap. 8, oppg. 7, side 176)
    [ Flere tips til denne oppgaven finner du i kommentar #11 - #18 i bloggposten "Ukeoppgaver". ]
    En forenklet modell av en barneskole er: ?En barneskole har N klasserom (for eksempel N=17) og underviser barn i klasser p? alle klassetrinn fra 1 til 7. P? et klassetrinn er det et antall grupper. Det er maksimalt 28 elever i en gruppe. Det kan godt hende at det er opptil 4 grupper p? et bestemt klassetrinn (eks. 2A, 3B, ...). En gruppe er alene om ? bruke ett bestemt klasserom.?

    (a) Lag et klassediagram i UML om oppplysningene (klassene Skole, KlasseTrinn, og Gruppe).

    (b) Programmér s? klassene i Java slik at du ved hjelp av en heltallsarray-parameter til konstrukt?ren til klassen Skole f?r opprettet en array med pekere til syv KlasseTrinn-objekter (Arrayen som brukes som parameter skal inneholde 7 elementer, som angir hvor mange grupper det er i hvert av klassetrinnene 1 - 7). Hvert av disse (KlasseTrinn-objekter) har en array med plass til: fire pekere til hvert sitt Gruppe-objekt. La parameteren til Skole-konstrukt?ren bestemme hvor mange Gruppe-objekter du lager i hvert KlasseTrinn-objekt.

    (c) Legg inn et navn i hvert Gruppe-objekt (1A, 4B, osv.). Lag en metode skrivUt() i hver av de tre klasseene, slik at du ved kall p? skrivUt()-metoden i det ene Skole-objektet du har, f?r skrevet ut alle navnene p? gruppene slik at du starter med f?rsteklassene.


  3. UML klasse- og objekt-diagrammer:  (kap. 12, oppg. 1 - 5, side 239)
    • Oppgave 1:
      En student har null eller flere eksamener. Lag et klassediagram om dette forholdet mellom klassene Student og Eksamen.
    • Oppgave 2:
      Ane har frimerker fra forskjellige land i frimerkesamlingen sin. Lag et objektdiagram for et datasystem som skal kunne skrive ut hvilke frimerker Ane har fra et bestemt land, alle frimerkene hun har, og data om et bestemt frimerke.
    • Oppgave 3:
      En B-bank har flere bankkonti, og en kunde kan ha flere bankkonti i B-bank.
      (a) Lag et klassediagram i UML over B-bank, kunder, og konti, og f? med antall p? forholdene mellom klassene.
      (b) Finn ut hvordan du vil lage en programstruktur som kan svare p? sp?rsm?l om hvilke bankkonti en kunde har i B-bank, og som kan skrive ut samlet saldo p? alle konti for en kunde og samlet for B-bank. Tegn et objektdiagram for systemet.
    • Oppgave 4:
      En forenklet modell av en barneskole er at den har N klasserom (for eksempel N = 17) og underviser barn i klasser p? alle klassetrinn fra 1 til 7. Det er ikke lov ? ha flere enn 28 elever i én klasse. Det kan godt hende at det er mer enn én klasse p? et bestemt klassetrinn (eks. 2A og 2B), og hver klasse har sitt eget klasserom.
          Tenk at du skal lage et system som h?ndterer at det begynner og slutter elever (skoleklasser kan bli opprettet og nedlagt). Tegn et klassediagram for problemet.
    • Oppgave 5:
      (Se side 240 i l?reboka)

L?sningsforslag

Her kan du finne l?sningsforslag til n?kkeloppgaven, og noen av oppgavene fra l?reboka har l?sningsforslag p? L?rebokens hjemmeside. Det anbefales ? l?se oppgavene p? egen h?nd f?r du studerer l?sningsforslagene.


Tibakemelding om dette oppgavesettet kan du skrive i bloggen eller sende p? mail til josek [a] ifi.uio.no