1 (6) OPPIMISTEHTÄVÄT 11 (opetusviikko 15) Periytyminen, Rajapinta, Kertaus 1) Periytyminen: Periytä Henkilo-luokasta Tyontekija-aliluokka. Tyontekija-luokalla on attribuutti tuntipalkka (desimaaliluku). Katso tarkemmat tiedot luokkakaaviosta alla. Henkilo - nimi - osoite + Henkilo() + Henkilo(...) +setnimi() +setosoite() +getnimi() +getosoite() (periytyy) TyontekijaOhjelma Tyontekija - tuntipalkka +Tyontekija() +Tyontekija(...) +settuntipalkka() +gettuntipalkka() (käyttää) + = public - = private Tee Tyontekija-luokkaan parametriton ja parametrillinen konstruktori. Parametrilliselle konstruktorille annetaan parametrina nimi, osoite ja tuntipalkka. Tee Tyontekija-luokkaan tuntipalkka-attribuutille get- ja set-metodit sekä tostring-metodi. Tee pääohjelma TyontekijaOhjelma, missä Tyontekija-luokan olio luodaan parametrittomalla konstruktorilla. Muuta työntekijän tiedot set-metodeilla. Näytä tiedot get-metodeilla. Syötä työntekijan tiedot! Anna nimi: Matti Korhonen Anna osoite: Helsinki Anna tuntipalkka: 15,00 TYÖNTEKIJÄTIEDOT Nimi: Matti Korhonen Osoite: Helsinki Tuntipalkka: 15.0 2) Periytyminen: Tee Tuote-luokka, jolla on attribuutit tuotekoodi, nimi, hinta. Periytä Tuoteluokasta KirjaTuote-aliluokka ja DVDTuote-aliluokka. KirjaTuote-luokalla on attribuutit sivumäärä ja sidosasu (pokkari/kovakantinen). DVDTuote-luokan attribuutit kesto ja ikäsuositus. Katso tarkemmin luokkakaavio alla.
2 (6) Tuote -tuotekoodi -nimi -hinta +Tuote() +Tuote(...) +settuotekoodi() +setnimi() +sethinta() +gettuotekoodi() +getnimi +gethinta() - = private += public periytyy periytyy TuotteetOhjelma KirjaTuote -sivumaara -sidosasu +KirjaTuote() +KirjaTuote(...) +setsivumaara() +setsidosasu() +getsivumaara() +getsidosasu() DVDTuote -kesto -ikasuositus +DVDTuote() +DVDTuote(...) +setkesto() +setikasuositus() +getkesto() +getikasuositus() käyttää käyttää Tee pääohjelma TuotteetOhjelma, missä luodaan yksi KirjaTuote-luokan olio ja yksi DVDTuoteluokan olio. Tuotteille asetetaan alla olevan esimerkin mukaiset tiedot ja lopuksi tiedot tulostetaan näytölle. Syötä kirjatuotteen tiedot! Anna tuotekoodi: 1 Anna nimi: Peppi Pitkätossu seikkailee Anna hinta: 35,50 Anna sivumäärä: 25 Anna sidosasu: kovakantinen Syötä dvdtuotteen tiedot! Anna tuotekoodi: 2 Anna nimi: Risto Räppääjä ja viileä Venla Anna hinta: 14,90 Anna kesto(min): 75 Anna ikäsuositus: S KIRJATUOTTEEN TIEDOT: Tuotekoodi: 1 Nimi: Peppi Pitkätossu seikkailee Hinta: 35.5 Sivumäärä: 25 Sidosasu: kovakantinen DVDTUOTTEEN TIEDOT: Tuotekoodi: 2 Nimi: Risto Räppääjä ja viileä Venla
3 (6) Hinta: 14.9 Kesto(min): 75 Ikäsuositus: S 3) Rajapinta: Korttipino on rajapinta, jossa voidaan lisätä ja poistaa korttipinosta vain päällimmäinen Pelikortti-luokan olio. (Tee Pelikortti-luokka, jonka attribuutteja ovat maa (merkkijono), numero (int).) Tee Korttipino-rajapintaluokka (interface), jonka neljä palvelua ovat: void lisaa(pelikortti kortti), Pelikortti poista(), // tämä metodi palauttaa viittauksen poistettuun Pelikortti-luokan olioon int annakoko(), Pelikortti anna(int index). Tee Korttipakka-luokka, joka toteuttaa Korttipino-rajapinnan. Katso tarkemmin luokkakaavio alla. <<Interface>> Korttipino +lisaa(pelikortti kortti) +poista() +annakoko() +anna(int index) Korttipakka (toteuttaa) 0..* Pelikortti -maa: String -numero: int +Pelikortti() +Pelikortti(...) +setmaa() +setnumero() +getmaa() +getnumero() +lisaa(pelikortti kortti) +poista() +annakoko() +anna(int index) 1 käyttää KorttipakkaOhjelma Korttipakka-luokalla on kortit-attribuutti, joka on lista Pelikortti-tyyppisiä olioita. Tee KorttipakkaOhjelma, missä luodaan Korttipakka-luokan olio ja lisätään sitten Pelikortti-luokan olioita pakkaan. Lopuksi tulostetaan korttipakan sisältö korttipakan päällimmäisestä kortista aloittaen. Tehtävä vastaa kahta tehtävää. Anna pelikortin maa(-lopettaa):pata Anna pelikortin numero: 3 Anna pelikortin maa(-lopettaa):ruutu Anna pelikortin numero: 7 Anna pelikortin maa(-lopettaa):hertta Anna pelikortin numero: 10 Anna pelikortin maa(-lopettaa):- Korttipakassa on 3 korttia: Hertta 10 Ruutu 7 Pata 3
4 (6) 4) Kertaus: Tee luokka Opiskelija, jolla on attribuutit opiskelijanumero (merkkijono), nimi (merkkijono). Tee Opiskelija-luokkaan parametriton ja parametrillinen konstruktori, get-ja setmetodit sekä tostring-metodi. Tee luokka Suoritus, jolla on attribuutit kurssitunnus (merkkijono), arvosana (kokonaisluku) ja suorituspaiva (Date-luokka). Tee luokkaan parametriton ja parametrillinen konstruktori, get-ja setmetodit sekä tostring-metodi. Lisää Opiskelija-luokkaan attribuutti suoritukset, joka on lista Suoritus-luokan olioita. Lisää suoritukset-attribuutille get-metodi ja addsuoritus-metodi, jolla listaan voidaan lisätä uusi suoritus. Katso tarkemmin luokkakaavio alla. Opiskelija -opiskelijanro: String -nimi: String +Opiskelija() +Opiskelija(...) +setopiskelijanro() +setnimi() +getopiskelijanro() +getnimi() +getsuoritukset() +addsuoritus() 1 0..* Suoritus -kurssitunnus: String -arvosana: int -suorituspvm: Date +Suoritus() +Suoritus(...) +setkurssitunnus() +setarvosana() +setsuorituspvm +getkurssitunnus() +getarvosana() +getsuorituspvm() OpiskelijaSuoritusSovellus (köyttää) - opiskelijat: ArrayList<Opiskelija> -lisaaopiskelija() -naytaopiskelija() -naytaopiskelijat() -lisaasuoritus()... Tee OpiskelijaSuoritusSovellus, millä voidaan käsitellä useita opiskelijoita. Anna valintasi (0-4): 1 Anna opiskelijanumero: a11 Anna nimi: Kalle Korhonen Anna valintasi (0-4): 1 Anna opiskelijanumero: a22 Anna nimi: Liisa Laaksonen
5 (6) Anna valintasi (0-4): 2 Opiskelijanumero: a11 Nimi: Kalle Korhonen Opiskelijanumero: a22 Nimi: Liisa Laaksonen Anna valintasi (0-4): 4 Anna opiskelijanumero: aaa Opiskelijaa ei ole numerolla aaa Anna valintasi (0-4): 4 Anna opiskelijanumero: a1234567 Anna kurssitunnus: ICT1TA006 Anna arvosana: 5 Anna suorituspäivä (pp.kk.vvvv): 21.12.2013 Anna valintasi (0-4): 4 Anna opiskelijanumero: a1234567 Anna kurssitunnus: SWD4TA013 Anna arvosana: 4 Anna suorituspäivä (pp.kk.vvvv): 28.2.2014 Anna valintasi (0-4): 2 Opiskelijanumero: a11 Nimi: Kalle Korhonen
6 (6) ICT1TA006 5 SWD4TA013 4 Opiskelijanumero: a22 Nimi: Liisa Laaksonen Anna valintasi (0-4): 3 Anna opiskelijanumero: aa Opiskelijaa ei ole numerolla aa Anna valintasi (0-4): 3 Anna opiskelijanumero: a11 Opiskelijanumero: a1234567 Nimi: Kalle Korhonen ICT1TA006 5 SWD4TA013 4 Anna valintasi (0-4): 0