Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Filtrering:

01.1: Person.java

a) Skriv en klasse Person som inneholder en privat instansvariabel navn av typen String.

b) Skriv en konstruktør i klassen Person som tar en tekststreng som parameter, og setter denne inn som personens navn.

c) Skriv et fullstendig program som oppretter to Person-objekter. Du velger selv navn på personene.

d) Tegn datastrukturen slik den ser ut etter utført program.

01.2: Hus.java

a) Opprett en klasse Hus, og utvid Person.java fra oppgave 1.1 slik Person har en referanse til et objekt av denne.

b) Skriv og utfør et fullstendig program som oppretter et Person-objekt og etHus-objekt, og la personen eie dette huset. Tegn datastrukturen slik den utvikler seg mens programmet utføres. (Her vil du ikke få noe utskrift som indikerer at programmet er riktig).

c) Utvid programmet slik at også huset vet hvem eieren er. Skriv til slutt ut navnet på personen som eier huset. Tegn datastrukturen slik den utvikler seg mens programmet utføres.
Hint: La Hus-objektet være slik at det inneholder en peker til et Person-objekt

d) I oppgavene over skulle du lage to objekter som peker på hverandre. Diskuter når du kan sette slike pekere i konstruktøren, og når du må gjøre det ved hjelp av egne metoder. Diskuter også hva som skjer om pekerne er private og når de ikke er det (public).

e) Skriv programmer som gjør begge deler (dvs. setter flest mulig peker i konstruktørene kontra det å sette alle pekerne senere (f.eks. ved hjelp av metoder). Tegn og forklar.

class Hus{
    private Person eier;

    public void settEier(Person p) {
        eier = p;
    }
}

01.3: Beholder.java

I denne oppgaven skal vi lage en beholder som skal kunne holde på elementer av vilkårlig type. Vi kommer til å opprette klassene Kvadrat.java, Sirkel.java og KvadratBeholder.java for å teste denne.

a) Start med å skrive en klasse Kvadrat. Et kvadrat har en sidelengde som er av typen double, og denne skal være deklarert private. Kvadrat skal ha to offentlige metoder, en til å beregne omkrets, og en til å beregne areal.

b) Dette er en uferdig beholder for kvadratobjekter:

public class KvadratBeholder {

    private ??? kvadrat;

    public ??? settInn(??? kvadrat) {
        this.kvadrat = kvadrat;
    }

    public ??? taUt() {
        return this.kvadrat;
    }
}

Fyll inn for de fire ???.

c) Skriv en klasse Sirkel, denne kan være helt tilsvarende Kvadrat, men skal ha en radius i stedet for sidelengde.
(Hint: Du kan bruke Math.PI for å få en god tilnærming til verdien av pi)

d) Vi ønsker å ha en beholder for sirkler også. Istedet for å skrive en beholder for sirkler kan vi generalisere kvadrat-beholderen slik at den kan holde på et objekt av vilkårlig type. Dette kan vi gjøre ved å skrive beholderen som en parametrisert klasse. Skriv klassen Beholder.

01.4: Parkeringsplass.java

I denne oppgaven lager vi klassene Bil.java og Motorsykkel.java, for å teste beholderen vår.

I denne oppgaven skal vi lage en klasse for å modellere en parkeringsplass. På parkeringsplassen kan både biler og motorsykler parkere. Dette må vi ta høyde for i programmet vårt.

a) Opprett klassen Bil.java. Hver bil skal inneholde informasjon om registreringsnummer og antall passasjerseter.

b) Opprett klassen Motorsykkel.java. Hver motorsykkel skal inneholde informasjon om registreringsnummer og motorstørrelse i kubikkcentimeter (avrundet til nærmeste heltall).

c) Skriv klassen Parkeringsplass.java. Klassen skal være generisk, slik at både biler og motorsykler kan benytte parkeringsplassen. Parkeringsplassen må inneholde en peker til kjøretøyet som er parkert på plassen, samt offentlige metoder for å parkere kjøretøy, og kjøre parkerte kjøretøy ut av parkeringsplassen.

01.5: Parkeringshus.java

I denne oppgaven trenger du klassene Bil.java, Motorsykkel.java og Parkeringsplass.java fra forrige oppgave.

Vi skal nå modellere et parkeringshus. Parkeringshuset vårt skal ha to etasjer, og det er 10 plasser i hver etasje.

a) Skriv klassen Parkeringshus.java. Klassen skal inneholde to arrayer, etasje1 og etasje2 av pekere til objekter av Parkeringsplass. Hver array skal ha 10 plasser.

b) Skriv et fullstendig program som gjør følgende:

  • Opprett tre biler og tre motorsykler
  • Opprett parkeringsplasser i første og andre etasje, og parker to bilene og motorsyklene på plassene. Du velger selv hvilke som skal stå hvor. (Tips: Husk at klasseparameteren til de nyopprettede parkeringsplassene må stemme overens med typen av kjøretøy som skal parkere på plassen).
  • La alle motorsyklene kjøre ut av parkeringshuset. Husk å sette pekerne til parkeringsplass-objektene de har stått på til null, slik at man evt. kan opprette nye parkeringsplasser med annen generisk parameter her, om man trenger plassen senere.

c) Tegn datastrukturen slik den ser ut etter endt kjøring av programmet du skrev i b.