C++/Czym jest obiekt: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
→‎Autorekursja: wskaźnik this może też wybierać metody
→‎Kontrola dostępu: Ulogicznienie przykładu. Powiązanie z poprzednią częścią artykułu.
Linia 171:
 
Dzięki specyfikatorom dostępu inni programiści mają ułatwione korzystanie z utworzonej przez nas klasy, gdyż metody i pola, których nie powinni modyfikować, bo mogłoby to spowodować niepoprawne działanie obiektu, są oznaczone jako private lub protected i nie mogą z nich korzystać. Funkcje, które zapewniają pełną funkcjonalność klasy oznaczone są jako public i tylko do nich ma dostęp użytkownik klasy (do protected również, ale z ograniczeniami). Oto zmodyfikowany przykład z kostką, który zobrazuje cele kontroli dostępu:
 
<source lang="cpp">
class Kostka{
public :
unsigned int maks; //domyślnym specyfikatorem jest private
 
public:
unsigned int wartosc;
 
void Losuj();
void Wypisz();
int DajWartosc();
void ZmienIloscScian(unsigned int _maks);
private:
unsigned int wartosc;
unsigned int maks;
};
 
voidint Kostka::ZmienIloscScianDajWartosc(unsigned int _maks)
{
return this->wartosc;
}
 
void Kostka::ZmienIloscScian(unsigned int maks)
{
if(_maksmaks > 20)
this->maks = 20;
else
this->maks = _maks;
}
</source>
 
Zmodyfikowana klasa zezwala tylko na kostki maksymalnie dwudziestościenne. Ręczne modyfikacje zmiennej maks są zabronione, można tego dokonać jedynie poprzez funkcję ZmienIloscScian, która zapobiega przydzieleniu większej ilości ścianek niż 20. Prywatny jest też atrybut wartość. Przecież nie chcemy aby była ona ustawiona inaczej niż przez losowanie! Dlatego możemy udostępnić jej wartość do odczytu poprzez metodę DajWartosc(), ale modyfikowana może być tylko na skutek działania metody Losuj().
 
== Ćwiczenia ==