Tehtävät
- Muokatkaa tunneilla tehtyä esimerkkiä Tietokone-luokasta siten, että lisäätte luokkaan kaksi uutta jäsenmuuttujaa (ominaisuutta) ja mainiin toisen olion Tietokone-luokasta, määrittäen myös sen ominaisuudet.
- Esitelkää yksi luokka, jossa on privaatti jäsenmuuttuja, sekä yksi julkinen metodi.
- Mallintakaa CAuto-luokka, jossa tulee olla vähintään 5 jäsenmuuttujaa ja niille asetus ja tulostusfunktiot.
Lisäksi kirjoittakaa muodostin, jossa antaa alkuarvot jäsenmuuttujille.
Funktioiden ja muuttujien tulee olla public-tyyppisiä. - Tehkää yksi luokka (siis esittely ja toteutus metodeille), jossa on yksi privaatti jäsenmuuttuja, sekä yksi parametriton julkinen metodi.
Luokaa luokasta olio main():ssa ja kutsukaa metodia.
Metodin toteutuksessa voi esim. tulostaa tekstin. - Tehkää yksi luokka, jossa on privaatti jäsenmuuttuja.
Kirjoittakaa luokalle parametriton muodostin, jossa jäsenmuuttujalle annetaan (alku)arvo.
Luokaa luokasta olio main():ssa. - Tehkää luokka, jossa on yksi julkinen metodi, jolla on bool-tyyppinen parametri.
Riippuen tämän parametrin arvosta, tulostakaa eri tekstit (esim. if/else-rakenteen avulla) - Tehkää luokka, jossa on kolme privaattia jäsenmuuttujaa, sekä PARAMETRILLINEN muodostin, jossa kaikille kolmelle muuttujalle annetaan arvo.
Luo luokasta olio main():ssa. - Muuttakaa CAuto-luokkaa siten, että kaikki muuttujat sekä TulostaMerkki(), TulostaMalli(), jne. -funktiot ovat private-tyyppisiä.
Kirjoittakaa public-tyyppinen Tulosta()-funktio, joka kutsuu private-tyyppisiä Tulosta()-funktioita.
Tulostakaa auton tiedot main():sta. - Lisätkää CAuto-luokkaan vähintään kaksi ominaisuutta (valmistusvuosi, väri jne) ja tehkää niille asetus- ja tulostusmetodit.
Muuttakaa Tulosta()-metodia siten, että se kutsuu myös näitä lisättyjä metodeja. - Tehkää kokonaan uusi luokka, jossa on min. 2 muuttujaa ja näille asetusfunktiot.
Lisätkää luokkaan muodostin, jolla EI OLE parametreja.
Alustakaa muuttujat muodostimessa oletusarvoihin. - Kopioikaa koostuminen-sivulla annettu esimerkki 2 ja siirtäkää jokainen luokka omaan tiedostoonsa.
Tätä ei tarvitse saada kääntymään! - Tehkää seuraavat jäsenfunktiot:
CTietokone-luokalle int Suorita(int, int, char);
CProsessori-luokalle int Laske(int, int, char);
Luokkien metodeilla tulee olla toteutukset, joiden avulla voidaan suorittaa seuraavat laskutoimitukset: yhteenlasku, vähennyslasku, kertolasku ja jakolasku.
Ideana on että main:ssa voidaan antaa seuraava funktiokutsu: pc.Suorita(10, 2, '+'); Tämä funktio puolestaan kutsuu CProsessori-luokan funktiota Laske(), joka palauttaa paluuarvona laskennan tuloksen. Kutsuketju siis on seuraava: main()>Suorita()>Laske().
Vihje: voitte käyttää CProsessori-luokan Laske()-metodissa switch...case-rakennetta. - Lisätkää vielä CRAM-luokalle void Talleta(int); ja int Palauta(); -funktiot ja tehkää toteutukset näille.
Käyttäkää CTietokone-luokan Suorita()-funktiossa näitä tallentaaksenne laskettu arvo 'muistiin'. - Kopioikaa CElain ja CKissa luokat Periytyminen-sivun esimerkki 1:stä.
Tehkää toteutukset jäsenfunktioille.
Lisätkää main()-funktio ja luokaa siellä olio CKissa-luokasta.
Testatkaa mitä jäsenfunktioita voitte kutsua. - Tehkää luokka, jossa on kaksi privaattia jäsenmuuttujaa, näille julkiset asetus- sekä privaatit tulostafunktiot.
Lisäksi tehkää luokkaan julkinen Tulosta()-funktio, joka puolestaan kutsuu privaatteja tulostafunktioita.
Luokaa luokasta olio, asettakaa muuttujille jotkin arvot ja tulostakaa ne.
HUOM: Tässä tehtävässä tehty luokka on enkapsuloitu... - (Tämä tehdään tehtävän 15 pohjalta)
Lisätkää luokka, joka perii tehtävässä 15 tekemäsi luokan.
Tehkää perilliseen kaksi protected-tyyppistä muuttujaa ja niille tulostafunktiot.
Lisätkää vielä julkinen Tulosta()-funktio (tätä kutsutaan funktion ylikirjoittamiseksi),
joka kutsuu vanhemman Tulosta()-funktiota perillisen tulostafunktioiden lisäksi (kts. periytyminen-sivun lopusta).
Luokaa perillisestä olio mainissa ja kutsukaa Tulosta-funktiota. - Tehkää luokka, jossa on funktio, joka ottaa 2 parametria. Määritä nämä parametrit vakioiksi (const) ja testatkaa mitä tapahtuu jos niitä yrittää muuttaa.
- Tehkää luokka, jossa on yksi vakio jäsenmuuttuja (const), alustakaa se.
Lisätkää luokkaan jäsenfunktio, joka käyttää vakio-jäsenmuuttujaa (esim. tulostaa sen). - Tehkää kaksi luokkaa joista toinen perii toisen.
Kirjoittakaa molempiin muodostimet, joissa vaikka tulostatte tekstin.
Luokaa olio perillisestä ja selvittäkää vastaus kysymykseen: "Kutsutaanko vanhemman muodostinta ja missä vaiheessa?" - Tehkää kaksi luokkaa, CAuto ja CMoottori, joista CAuto koostuu CMoottorista.
Kutsukaa CMoottori-luokan metodia CAuto-luokan metodista, jota puolestaan kutsutaan main():sta.
Luokaa olio CAutosta ja selvittäkää vastaus kysymykseen: "Kutsutaanko CMoottorin muodostinta ja missä vaiheessa?" - Tehkää luokka, jossa on kolme vakiota (const) jäsenmuuttujaa (huom! taulukot eivät toimi!) ja tehkää luokasta olio mainissa.
Älkää vielä tehkö näitä, ne tulevat muuttumaan:
- Tehkää yksi luokka, jossa on privaatti jäsenmuuttuja sekä julkinen metodi, joka palauttaa jäsenmuuttujan arvon.
Tehkää lisäksi parametriton muodostin, jossa jäsenmuuttujalle annetaan alkuarvo.
Luokaa olio main():ssa ja kutsukaa metodia, joka palauttaa jäsenmuuttujan arvon
Tulostakaa eri tekstit if/else -rakenteen avulla, riippuen palautetusta arvosta. - -Tehkää luokka, jossa on kolme jäsenmuuttujaa.
-Kirjoittakaa luokkaan julkinen metodi TeeJotain(), jolla on kaksi parametria, joiden arvot kopioidaan kahdelle jäsenmuuttujalle.
-Kirjoittakaa luokkaan lisäksi privaatti parametriton metodi TeeJotain(), jossa alustetaan kolmas jäsenmuuttuja alkuarvoon.
-Kutsukaa parametrillisesta funktiosta parametritonta metodia.
-Luokaa main():ssa olio luokasta ja kutsukaa parametrillista metodia.
Huom! Molempien metodien nimi tulee olla TeeJotain()! - -Tehkää luokka, jossa on kaksi vakiometodia.
-Kutsukaa näitä metodeita main():sta, const-tyyppisen olion kautta. - -Tehkää main():iin kaksi saman tyyppistä muuttujaa, joilla on eri arvot.
-Lisätkää osoitin, joka on samaa tyyppiä kuin muuttujat.
-Tulostakaa molempien muuttujien arvot osoittimen kautta. - -Kirjoittakaa FUNKTIO, joka ottaa parametrina osoittimen
-Muuttakaa annetun osoittimen osoittamaa arvoa
-Tarkistakaa (esim debuggerilla tai ruudulle tulostamalla) että arvo muuttuu. - -Kirjoittakaa funktio, jolla on parametreina kaksi (saman tyyppistä) osoitinta.
-Vaihtakaa osoittimien arvot keskenään;
-Tarkistakaa (esim debuggerilla tai ruudulle tulostamalla) että arvot vaihtuivat. - -Luokaa kolmen alkion osoitintaulukko.
-Luokaa kolme muuttujaa (samaa tyyppiä kuin osoitintaulukko).
-Pistäkää kaikki taulukon osoittimet osoittamaan muuttujiin.
-Tarkistakaa (esim debuggerilla tai ruudulle tulostamalla) että osoittimet toimivat. - -Luokaa kaksi luokkaa, joista toinen perii toisen.
-Tehkää vanhempi-luokkaan vähintään yksi virtuaalinen funktio.
-Ylikirjoittakaa tämä virtuaalinen funktio perillisessä.
-Käyttäkää perillistä sen luokasta tehdyn olion kautta sekä vanhemman luokan osoittimen kautta.
-Testatkaa mitä tapahtuu, jos muutatte virtuaalisen funktion tavalliseksi funktioksi (eli poistatte sanan virtual funktion määrittelyn edestä). - -Luokaa vanhempi-luokka, jossa on vähintään yksi aito virtuaalinen funktio.
-Luokaa kaksi luokkaa, jotka perivät ja toteuttavat vanhempi-luokan.
-Luokaa CKokoelma-luokka ja lisätkää siihen vanhempi-luokan tyyppinen osoitintaulukko.
-Luokaa main():ssa CKokoelma-luokasta olio ja perillisistä useita olioita.
-Viekää oliot CKokoelma-luokkaan ja tallentakaa ne osoitintaulukkoon.
-Varmistukaa, että osoitintaulukko toimii, esim kutsumalla olioiden funktioita, tai jollain muulla tavalla.