Tässä harjoituksessa opiskellaan perintää ja UML-luokkakaavioiden tulkintaa. Materiaalissa asiaan liittyy kappale Periytyminen ja UML luokkakaavio. Kannattaa myös katsoa videot:
Noudata käytäntöä, että kullekin luokalle luodaan oma header-tiedosto ja oma cpp-tiedosto, joilla on sama nimi kuin luokalla. Tämä hoituu automaattisesti, kun luot luokat Qt-Creatorin toiminnolla "Add New -> C++ Class". Tutustu aluksi UML-kaavion symbooleihin kts. https://peatutor.com/cplus/index.php#uml.
Harjoitus3a (perintä)
Kantaluokka Chef:
- Luotuasi projektin, lisää siihen yllä esitetyn UML-kaavion mukainen luokka Chef. Luo luokka Qt:n toiminnolla "Add New ...C++ Class"
- Toteuta Chef-luokka niin, että jäsenfunktiot mukaan lukien konstruktori ja destruktori tulostavat debug tietoa ruudulle. Konstruktorille annetaan parametrina kokin nimi.
- Luo mainissa Chef-luokasta automaattinen olio (pinomuistiin), anna kokin nimeksi Gordon Ramsay
- Kutsu metodeja makeSalad ja makeSoup
- Suorita sovellus, jolloin tulos pitäisi näyttää seuraavalta:
Ohjelman tulostuksen pitäisi näyttää seuraavalta:
Aliluokka ItalianChef:
- Lisää luokka ItalianChef, joka perii luokan Chef
- Toteuta ItalianChef-luokka niin, että jäsenfunktiot mukaan lukien konstruktori ja destruktori tulostavat debug tietoa ruudulle. Konstruktorille annetaan parametrina kokin nimi. Metodi getName() palauttaa kokin nimen.
Huomaa, että koska Chef-luokan muodostin ottaa parametrin, sinun on kutsuttava ItalianChef luokan konstruktorissa tuota muodostinta kts. https://peatutor.com/cplus/index.php#inheritance
- Luo mainissa ItalianChef-luokasta automaattinen olio (pinomuistiin), anna kokin nimeksi Anthony Bourdain
- Kutsu metodeja makeSalad, makeSoup, makePasta ja getName (tulosta sen palauttama nimi cout:lla)
- Suorita sovellus, jolloin tulos pitäisi näyttää seuraavalta:
Ohjelman tulisi tulostaa edellisen lisäksi seuraavaa: