|
|
- ## 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<iostream>
- 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_; j++)
- {
- if(j == sivun_pituus_ - 1)
- {
- cout << PalautaTekstuuri() << endl;
- }
- else
- {
- cout << PalautaTekstuuri();
- }
- }
- }
- }
-
- 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;
- }
- //** ---------- ---------- ---------- **//
- ```
|