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 15. feb. 2023 23:30 - Sist endret 15. feb. 2023 23:30