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;
}
//** ---------- ---------- ---------- **//