Oppgaver uke 4

Fortsett på pargprogrameringsoppgaven fra forrige uke:

Dere skal nå lage et program som modellerer et parkeringshus.

Et Parkeringshus skal ha parkeringsplasser hvor både Motorsykler og Biler kan parkere. Motorsykler og Biler har en del til felles, bl.a. har de begge en sjåfør og et registreringsnummer. En bil skal også kunne holde på alt fra 2 til 5 personer (spesifisert i det bilen lages), og en av disse må være sjåføren.

a)  Tegn opp hvordan dette vil se ut (klassehierarki)

b)  Skriv alle klassene og inkluder riktige instansvariabler.
Enn så lenge skal klassene ikke ha noen metoder. Hint: Det kan være lurt at Motorsykkel og Bil arver av samme klasse, hvorfor tror du det?

c)  Parkeringshus skal ha to metoder: en for å sette inn en bil eller en motorsykkel på en bestemt plass, og en for å fjerne en bil eller motorsykkel - også på en gitt plass. (Den andre metoden skal returnere bilen/motorsyklen som står på plassen, og hvis ingen biler/motsykler er der skal null returneres).

d)  Lag unntakshåndtering til parkeringshuset for å håndtere tilfeller der man prøver å sette inn et kjøretøy når det er fullt eller på en ugyldig plass.

Hint: ArrayIndexOutOfBoundsException

e)  Bruk polymorfi for å endre på toString()-metoden til både Bil og Motorsykkel, slik at det skriver ut relevant informasjon

f) Gjør det samme med Parkeringshuset slik at det skriver ut informasjon om alle kjøretøyene som har parkert der.

Mindre oppgaver:

1.a - Dyr, Hund og Katt: 

Skriv en abstrakt klasse Dyr. Klassen skal være tom, utenom en abstrakt metode lagLyd(). Lag deretter to subklasser av dyr; Hund og Katt. 

Om man kaller på lagLyd i et hundeobjekt skal det printes “Voff!” til terminalen. Om man kaller på lagLyd i et katteobjekt skal det printes “Mjau!”


1.b - Diskuter i grupper: Hvilken fordel får vi ved å ha en superklasse med en tom metode lagLyd?

I felleskap/gruppen: Skriv et testprogram som demonstrerer denne fordelen.

 

1.c - Tegning:

På egen hånd: Tegn klassehierarki og datastruktur til oppgaven. 

Diskuter med gruppen: Sammenlign tegninger. Hva har dere gjort ulikt?

2.a - Person og student: 

Diskuter hvilke metoder her som er eksempler på overriding, og hvilke metoder som er eksempler på overloading. Fyll inn @Override der det hører hjemme. 

class Person {
    String navn = "ikke registrert.";
    String adresse = "ikke registrert.";

    public void registrerPerson(String n) {
        navn = n;
    }

    public void registrerPerson(String n, String a) {
        navn = n;
        adresse = a;
    }

    public void skrivPerson() {
        System.out.println("Navn: " + navn + ", adresse: " + adresse);
    }
}

class Student extends Person {
    String idnr = "ikke registrert.";

    public void registrerPerson(String n, String i) {
        navn = n;
        idnr = i;
    }

    public void registrerPerson(String n, String i, String a) {
        navn = n;
        idnr = i;
        adresse = a;
    }

    public void skrivPerson() {
        System.out.println("Navn: " + navn + ", studentnr: " + idnr + ", adresse: " + adresse);
    }
}
 

2.b - Opprettelse av person og studenter:

Opprett 3 personer. 1 av dem skal være en student. Velg selv hvilke metoder du vil benytte, men prøv ut litt forskjellig. Skriv deretter ned hva som skrives ut hvis du kaller på “skrivPerson()” på Person-objektene dine. 

 

Diskusjon 1 - hva skrives ut her:

Person a = new Student();
a.registrerPerson(“Lise”, “Holmveien 2”);
a.skrivPerson(); 

Diskusjon 2 - hva skrives ut her:

Person a = new Student();
a.registrerPerson(“Siri”);
a.skrivPerson();

Diskusjon 3 - hva skjer her:

Person a = new Person();
a.registrerPerson(“Siri”, “1235”, “Trimveien 9”);
a.skrivPerson();

 

Publisert 19. feb. 2023 22:47 - Sist endret 19. feb. 2023 22:47