Hermetyzacja:
- Zapewnia utrzymanie właściwego stanu klasy. Pola klasy są inicjowane, modyfikowane i odczywywane w sposób przewidziany przez autora klasy.
- Ukrycie wewnętrznego stanu klasy, a udostępnienie tylko tego co jest niezbędne do komunikacji z innymi klasami
- Użycie odpowiednich modyfikatorów dostępu do pól i metod,
- Innymi słowy, nie pozwalajcie innym mieszać w stanie waszej klasy, gdyż to utrudnia odnajdywanie błędów.
Przykładowe zadanie polega na napisaniu klasy Licznik
, ma być ona wykorzystywana w wielu modułach zliczających rozpoczęcie i zakończenie jakiegoś zdarzenia. Licznik nie może być mniejszy od 0. Klasa Licznik
ma 3 metody Zwiększ()
, Zmniejsz()
, WypiszStan()
.
class Licznik
{
public int stan;
public void Zwieksz()
{
this.stan += 1;
}
public void Zmniejsz()
{
if (this.stan > 0)
this.stan -= 1;
}
public void WypiszStan()
{
Console.Write(this.stan);
}
}
Licznik l1 = new Licznik();
l1.Zmniejsz();
l1.Zmniejsz();
l1.stan = -200;
l1.Zwieksz();
l1.WypiszStan();
Co należałoby poprawić w klasie Licznik
?
Najlepszym wyjściem byłoby uniemożliwienie zmiany zmiennej stan
, ustalając jej dostęp z public
na private
.
Dzięki temu nikt nie może dostać się do zmiennej i jest to zablokowane na poziomie kompilacji.
Źródło: https://drive.google.com/drive/folders/0B4rqQMWTVxb8WTVkS2kySTRpN1k?usp=sharing