## 2 Abstraktin luokan määrittely **Tehtävä:** Tehtävänäsi on kirjoittaa luokan Kuvio määrittely. Kyseinen luokka on abstrakti luokka, josta periytetään luokka Nelio. Määrittele ja toteuta Kuvio-luokkaan seuraavat ominaisuudet: - char-tyypin jäsenmuuttuja tekstuuri_ - Parametrillinen muodostin, jolle välitetään muodostamisen yhteydessä char-tyypin parametri, jonka arvo sijoitetaan muuttujaan tekstuuri_ - Jäsenfunktio PalautaTekstuuri(), joka palauttaa sitä kutsuttaessa jäsenmuuttujan tekstuuri_ arvon - Puhtaasti virtuaalinen funktio Piirra, joka ei palauta arvoa, eikä ota vastaan parametreja Toteuttamaasi abstraktia luokkaa testataan pääohjelmassa, jossa muodostetaan Kuvio-luokasta periytetty nelio-olio jota pyydetään tulostamaan itsensä. Älä kopioi pääohjelmaa vastaukseesi: ``` int main() { int sivun_pituus; char tekstuuri; cout << "Anna muodostettavan neliön sivun pituus: "; cin >> sivun_pituus; cout << "Syötä merkki, jota käytetään neliön tekstuurina: "; cin >> tekstuuri; Kuvio* nelio = new Nelio(tekstuuri, sivun_pituus); nelio->Piirra(); delete nelio; return 0; } ``` Example output: ``` Anna muodostettavan neliön sivun pituus: 10 Syötä merkki, jota käytetään neliön tekstuurina: # ########## ########## ########## ########## ########## ########## ########## ########## ########## ########## ``` **Vastaus:** ``` #include using namespace std; class Kuvio { public: Kuvio(char tekstuuri); char PalautaTekstuuri(); virtual void Piirra() = 0; ~Kuvio(); private: char tekstuuri_; }; Kuvio::Kuvio(char tekstuuri) : tekstuuri_(tekstuuri) { } char Kuvio::PalautaTekstuuri() { return tekstuuri_; } Kuvio::~Kuvio() {} void Kuvio::Piirra() {} //** Pre-defined code in the assignment **// class Nelio : public Kuvio { public: Nelio(char tekstuuri, int sivun_pituus); void Piirra(); private: int sivun_pituus_; }; Nelio::Nelio(char tekstuuri, int sivun_pituus) : Kuvio(tekstuuri), sivun_pituus_(sivun_pituus) { } void Nelio::Piirra() { int i, j; for(i=0; i< sivun_pituus_; i++) { for(j=0; j> sivun_pituus; cout << "Syötä merkki, jota käytetään neliön tekstuurina: "; cin >> tekstuuri; Kuvio* nelio = new Nelio(tekstuuri, sivun_pituus); nelio->Piirra(); delete nelio; return 0; } //** ---------- ---------- ---------- **// ```