121 612
edycji
Nie podano opisu zmian |
m (Wycofano edycje użytkownika 83.29.159.150 (dyskusja). Autor przywróconej wersji to 82.41.253.223.) |
||
'''Hermetyzacja''' (inna używana nazwa to enkapsulacja<ref>{{cytuj książkę|nazwisko=Grębosz|imię=Jerzy|tytuł=Symfonia C++ Standard|wydawca=Edition 2000|miejsce=Kraków|data=2005|strony=416|isbn=83-7366-073-9}}</ref>, [[język angielski|ang.]] ''encapsulation'') – jedno z założeń [[Programowanie obiektowe|programowania obiektowego]]. Hermetyzacja polega na ukrywaniu pewnych danych składowych lub [[metoda (programowanie obiektowe)|metod]] obiektów danej [[Klasa_(programowanie_obiektowe)|klasy]] tak, aby były one dostępne tylko metodom wewnętrznym danej klasy lub [[funkcja zaprzyjaźniona|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ą''.
== Przyczyny stosowania hermetyzacji ==
Można wyróżnić trzy główne powody wprowadzenia hermetyzacji do programowania obiektowego:
#wyodrębnia interfejs
#uodparnia tworzony model na błędy,
#lepiej oddaje rzeczywistość,
=== Wyodrębnia interfejs ===
==== Przykład ====
Posiadając zdefiniowany interfejs programista klasy ma pełną swobodę implementacji mechanizmu, w jaki klasa będzie wykonywała swoje zdanie. Jeżeli klasa ma za zadanie np. gromadzić zbiór liczb podawanych do niej pojedynczo a następnie, w dowolnym momencie, zwrócić maksimum tej kolekcji, to interfejs w żaden sposób nie narzuca programiście
Niech dana będzie klasa interfejsowa definiująca jedynie interfejs, czyli zbiór jedynie publicznych, abstrakcyjnych i [[Metoda_wirtualna|wirtualnych metod]]. Metody te, zgodnie z definicją metody abstrakcyjnej, nie są wytłumaczone w obrębie tej klasy, a jedynie określono, że klasa dziedzicząca po tej klasie wytłumaczyć jak każda z tych metod działa. Na przykładzie:
<source lang="cpp">
|