headerphoto

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);
    }