Hermetyzacja w C# jako wstęp do Programowania Obiektowego.

Do czego służy i czym jest Hermetyzacja w programowaniu.

Hermetyzacja jest jedną z zasad programowania obiektowego, która uniemożliwia dostęp do szczegółów implementacji naszego kodu.

Hermetyzacja w rozumieniu programowania ma za zadanie ukrywanie w obiektach tego do czego użytkownik nie powinien mieć dostępu. Innymi słowy polega na ukrywaniu pewnych danych składowych lub metod obiektów danej klasy tak, aby były one dostępne tylko dla metod wewnętrznych danej klasy lub funkcjom “zaprzyjaźnionym”.

 

Gdy dostęp do wszystkich pól danej klasy jest możliwy wyłącznie poprzez metody, lub inaczej mówiąc: gdy wszystkie pola w klasie znajdują się w sekcji prywatnej lub chronionej, to taką hermetyzację nazywa się hermetyzacją pełną.

 

Chcąc wykorzystać hermetyzację w naszym kodzie musimy zapoznać się z pojęciem Modyfikatorów dostępu.

Co to są Modyfikatory Dostępu i jak je używać w programowaniu.

 

  • Public – Dostęp do danej klasy bez ograniczeń. Składowe z tym prefixem kluczowym są dostępne dla wszystkich metod wszystkich klas;
  • Private – Składowe te dostępne są tylko dla metod klas w której się znajdują;
  • Protected – Składowe chronione są dostępne dla klasy, w której się znajdują oraz dla klas dziedziczących po klasie bazowej;
  • Internal – Składowe wewnętrze są dostępne dla klasy znajdującej się w danej bibliotece;
  • Protected Internal – Składowe chronione są dostępne tylko dla klasy, w której się znajdują oraz dla klas dziedziczących po klasie bazowej tylko w obrębie danej biblioteki.

Zobaczmy jak dane modyfikatory na przykładzie znanego nam już programu o prostokącie dostępnego na GitHubie.

 

Ok, przejdźmy do pierwszego modyfikatora jakim jest PUBLIC.

 

Public – Nie ma żadnych ograniczeń. Zmienne składowe, metody danej klasy są widoczne dla innych metod i obiektów. Każda zmienna czy metoda opatrzona modyfikatorem dostępu public jest dostępna z zewnątrz klasy.

Przykład:

Private – Modifikator dostępu private pozwala nam na ukrycie pól oraz metod danej klasy. Składowe takie dostępne są tylko z wnętrza danej klasy. Co równie istotne, instancja klasy prywatnej również nie ma dostępu do jej prywatnych składników.

Jako przykład użyjemy powyższej metody

 

         

W powyższym przykładzie klasa z polami: lengthSideA oraz lengthSideB została zdefiniowana jako prywatna. Dopóki metody Circuit() oraz ShowResults() są zdefiniowane jako publiczne, mamy do do tych pól dostęp z wnętrza metody Main() używając instancji klasy Prostokat o nazwie p.

Protected – Modyfikator dostępu protected pozwala klasie pochodnej uzyskać dostęp do pól i metody klasy bazowej. Takie zachowania pozwala na implementację dziedziczenia. Temat Dziedziczenia omówię w innym poście.

 

Internal – Modyfikator dostępu internal pozwala na wystawienie klasy, tj. jej pól oraz metod dla innych metod i obiektów, które znajdują się w danej bibliotece. Mówiąc inaczej, każda składowa klasy z modyfikatorem dostęp internal może być dostępna z dowolnej klasy czy metody zdefiniowanej w naszej aplikacji.

 

 

Protected Internal – Modifikator dostępu protected internal pozwala klasie na ukrycie pól oraz metod przed innymi klasami lub metodami z wyjątkiem klas pochodnych w tej samej aplikacji. Modyfikator ten jest również używany przy wspomnianej wcześniej implementacji dziedziczenia.

 

W powyższym przykładzie, możemy zauważyć, że metoda Circuit() nie ma zdefiniowanego żadnego modyfikatora dostępu. W takim wypadku pojawia się pytanie: jaki będzie domyślny modyfikator dostępu dla takiej metody? Domyślnie jest to private.

 

Pytania? sugestie? piszcie komentujcie.

Oczywiście cały Przykłady dostępne na GitHubie.

 

Post Author: Csharpowe Zmagania

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.