|
|
- ## 1 Joukkue koostuu pelaajista
-
- **Tehtävä:**
-
- Alla näet UML-kaavion, joka on osa suurempaa oliosuunnitelmaa. Sinun
- tehtävänäsi on toteuttaa kaavion mukainen luokka "Pelaaja". Kuten kuvasta
- voidaan nähdä, Joukkue-luokka koostuu pelaajista. Tämä ei kuitenkaan vaikuta
- sinun osuuteesi ohjelmiston toteutuksessa - riittää, kun osaat kirjoittaa
- luokan UML-kaavion osoittamalla tavalla.
-
- Ohessa joitakin huomioita, joita tarvitset kaavion tulkinnassa:
-
- - Merkit "-" ja "+" jäsenten edessä määrittelevät jäsenen näkyvyyden. (+ = public, - = private)
-
- - Notaatiossa esitetään ensin jäsenmuuttujan tai parametrin nimi ja tämän jälkeen tietotyyppi.
-
- - Jäsenfunktioiden paluuarvot näkyvät notaatiossa funktioiden otsikoiden perässä kaksoispisteellä eroteltuna.
-
- ```
- +---------------------------------+
- | Pelaaja |
- +---------------------------------+
- +--------+ |- rooli_: string |
- |Joukkue +-------------------------+- nimi_ : string |
- |--------| 1 40 |- pelinro_: int |
- +--------+ +---------------------------------+
- |+ AsetaNimi(nimi:string):void* |
- |+ KerroNimi():string |
- |+ AsetaRooli(rooli:string):void* |
- |+ KerroRooli():string |
- |+ AsetaNro(nro:int):void* |
- |+ KerroNro():int |
- +---------------------------------+
- ```
-
- Example output:
-
- ```
- Nimi: Matti Meikäläinen
- Rooli: Maalivahti
- Pelinumero: 1
-
- Nimi: Kale Kokkola
- Rooli: Vaihtopenkin lämmittäjä
- Pelinumero: 82
-
- Nimi: Simo Supermies
- Rooli: Hyökkääjä
- Pelinumero: 99
- ```
-
- **Vastaus:**
-
- ```
- #include<iostream>
- using namespace std;
-
- class Pelaaja
- {
- public:
- void AsetaNimi(string nimi)
- {
- nimi_ = nimi;
- }
-
- string KerroNimi()
- {
- return nimi_;
- }
-
- void AsetaRooli(string rooli)
- {
- rooli_ = rooli;
- }
-
- string KerroRooli()
- {
- return rooli_;
- }
-
- void AsetaNro(int nro)
- {
- pelinro_ = nro;
- }
-
- int KerroNro()
- {
- return pelinro_;
- }
-
- private:
- string rooli_;
- string nimi_;
- int pelinro_;
- };
-
- //** Pre-defined code in the assignment **//
- class Joukkue
- {
- public:
- void LisaaPelaaja(string nimi, string rooli, int nro);
- void TulostaJoukkue();
- Joukkue();
- ~Joukkue();
-
- private:
- Pelaaja* pelaajat[30];
- int pelaajia_;
- };
-
- Joukkue::Joukkue() : pelaajia_(0)
- {
- int i;
- for (i=0; i<30; i++) {
- pelaajat[i] = NULL;
- }
- }
-
- Joukkue::~Joukkue()
- {
- int i;
- for (i=0; i<30; i++) {
- delete pelaajat[i];
- }
- }
-
- void Joukkue::LisaaPelaaja(string nimi, string rooli, int nro)
- {
- pelaajat[pelaajia_] = new Pelaaja();
- pelaajat[pelaajia_]->AsetaNimi(nimi);
- pelaajat[pelaajia_]->AsetaRooli(rooli);
- pelaajat[pelaajia_]->AsetaNro(nro);
- pelaajia_++;
- }
-
- void Joukkue::TulostaJoukkue()
- {
- int i;
- for(i=0; i<30; i++) {
- if(pelaajat[i] != NULL)
- {
- cout << "Nimi: " << pelaajat[i]->KerroNimi() << endl;
- cout << "Rooli: " << pelaajat[i]->KerroRooli() << endl;
- cout << "Pelinumero: " << pelaajat[i]->KerroNro() << endl << endl;
- }
- }
- }
-
- int main()
- {
- Joukkue VioPa;
- VioPa.LisaaPelaaja("Matti Meikäläinen", "Maalivahti", 1);
- VioPa.LisaaPelaaja("Kale Kokkola", "Vaihtopenkin lämmittäjä", 82);
- VioPa.LisaaPelaaja("Simo Supermies", "Hyökkääjä", 99);
-
- VioPa.TulostaJoukkue();
- return 0;
- }
- //** ---------- ---------- ---------- **//
- ```
|