092

092



Po

class Uwaga { private:

int m_nLicznik; public:

Uwaga(void) : m_nLicznik(1)

{

}

void UstawLicznik(int nWart)

{

if (nWart <= 0) m_nLicznik = 1; else

m_nLicznik = nWart;

}

int RóbCoś(int nWart)    {    i

return nWart %    m_nLicznik;    I

}    I

}    f

Sprawdzanie parametrów jest ważne, ale zabiera także dużo czasu. Należy więc i sprawdzać je tylko wtedy, gdy jest to konieczne, czyli na przykład w publicznych funkcjach składowych. Rozważmy zamieszczony kod. Klasa ma prywatną zmienną : składową z funkcją dostępową. Zmienna m_nLicznik jest zainicjalizowana przez kon- i struktor, a zakres zmiennej jest kontrolowany przez funkcję dostępową. Możemy mieć I zatem pewność, że zmienna m_nLicznik nie uzyska wartości niedodatniej przez jakieś zewnętrzne działania. Ponieważ metoda RóbCoś chroni się przed mniejszymi od wartościami zmiennej m_nLicznik, sprawdzanie parametru nie jest konieczne. W bardziej złożonej sytuacji klasa mogłaby mieć kilka prywatnych funkcji. W zależności od przeznaczenia tych funkcji, można by było zrezygnować ze sprawdzania przez nie poprawności parametrów, zwłaszcza wtedy, gdy robiłyby to wywołujące je funkcje publiczne.

Dygresja

W razie wątpliwości lepiej sprawdzić więcej, niż popełnić błąd. Ponadto można dodać do kodu asercje.


Wyszukiwarka

Podobne podstrony:
19 p07 #include <stdio.h> class próba{ private: int *pi_Dane; public: próba(); -próba()
19 p08 #include <stdio.h> class próba { private: int *pi_Dane; public: próba(); -próba()
Język C++ - praktyczne wskazówki Po class Napis { private: const int m_cchTest; int m_cch; char
~Napis(void){ if(m_pch) delete m_pch;} }; Po class Napis{ private: const int m_cchTest; int
}}; class NiePochodna{ private: int m_i; float m_f1; float m_f2; public: NiePochodnaO :
Po class Napis{ private: const int m_cchTest; int m_cch; char *m_pch; void lnicjNapis(const cha
class Punkt{ private int x, y; public void Przesuń(int dx, int dy){ x += dx; y += dy;} public Punkt(
JavaPOJO Kotlin M class Person { private String name; public Person(String name) this.name = name;}

więcej podobnych podstron