(H) Eläintarha¶
Tavoite: Opin periyttämään yksinkertaisen luokan valmiina annetusta kantaluokasta ja lisäämään periytettyyn luokkaan toiminnallisuutta.
Ohjeita:
Hae ohjelmakoodipohja: templates/12/zoo/
-> student/12/zoo/
.
Tutki ensin valmiina annettuja luokkia sekä pääohjelmaa, jossa luodaan erilaisia olioita ja kutsutaan olioille metodeja.
Tehtävänäsi on toteuttaa periyttämällä uudet luokat
Mammal
, Giraffe
ja Cockatoo
siten, että:
Mammal
osaa suorittaa kaikki samat toimenpiteet kuinAnimal
, ja sen liikkuessa kuuluu ääni"Kip kop kip kop"
. Tämän lisäksi sillä on metodisuckle(std::ostream& output)
, joka tulostaa"Mus mus"
.Giraffe
osaa suorittaa kaikki samat toimenpiteet kuinMammal
, ja lisäksi sillä on metodimake_noise(std::ostream& output)
, joka tulostaa"Ori ori ori!"
.Cockatoo
osaa suorittaa kaikki samat toimenpiteet kuinBird
, ja sillä on metodising(std::ostream& output)
, joka tulostaa"Kee-ow kee-ow!"
.
Yllä olevaa on yritetty selkeyttää myös alla olevassa kuvassa. Kuvaan on merkitty kunkin luokan määrittelemät julkiset metodit sekä luokkien yksityiset jäsenmuuttujat. Metodien parametrit ja paluuarvot on jätetty selkeyden vuoksi kuvasta pois.
Valmiina annetussa testipääohjelmassa on kommenttimerkkien sisällä esimerkkejä siitä, miten toteutettavia luokkia on tarkoitus käyttää. Voit muokata testipääohjelmaa ja kirjoittaa siihen kattavampia testejä, koska automaattitarkastin ei testaa palautuksesi pääohjelmaa, vaan ainoastaan toteuttamiasi luokkia.
Vinkkejä tehtävän tekemiseen:
- Jos ymmärsit edellisen materiaaliosion pohjalta, miten periytyminen toimii, huomaat, että tässä tehtävässä ei tarvita kuin muutama ohjelmakoodirivi. Sinun ei siis tarvitse kopoioida mitään valmiina annettua ohjelmakoodia mihinkään.
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.