Třídy - doplnění
V této části se budeme nejdříve zabývat použitím soukromých metod a potom ukázkami dynamické alokace objektů.
Soukromé metody
V předchozích kapitolách jsme všechny metody, které jsme vytvořili, označily jako veřejné. Byly to tedy metody, které můžeme používat v souvislosti s objektem dané třídy kdekoliv v programu.
V objektu můžeme ale používat taky soukromé metody, ty jsou použitelné jenom v ostatních metodách třídy. Jako soukromé označujeme nejčastěji různé ověřovací metody. Jedná se o metody, které kontrolují použití správných hodnot u datových položek třídy.
Doplníme si do třídy Vozidlo metodu pro ověření roku výroby. Povolíme jenom hodnoty 1950 až 2050. Metoda v případě špatné hodnoty nastaví nejbližší hodnotu.
// příklad definice třídy
class Vozidlo
{
private:
string Spz;
int RokVyroby;
int MaxRychlost;
int SpravnyRok(int r) ; //overovaci soukroma metoda
public:
Vozidlo(); //musime uvest, kdyz pouzivame i parametricke konstruktory
Vozidlo(string s);
Vozidlo(string s, int rv);
bool NastavSpz(string s);
void NastavRokVyroby(int rv);
string DejSpz() const;
int DejRokVyroby() const;
};
Metodu si musíme nově definovat. Potom tuto metodu použijeme ve všech metodách, kde nastavujeme rok.
int Vozidlo::SpravnyRok(int r)
{
if (r < 1950) r = 1950;
if (r > 2050) r = 2050;
return r;
}
Vozidlo::Vozidlo(string s, int rv)
{
this->Spz = s;
this->RokVyroby = SpravnyRok(rv);
this->MaxRychlost = 0;
}
void Vozidlo::NastavRokVyroby(int rv)
{
this->RokVyroby = SpravnyRok(rv);
}