Enkapsulacja - Google

Enkapsulacja

Z Wikipedii

Skocz do: nawigacji, szukaj

Enkapsulacja (z ang. encapsulation, kapsułkowanie, hermetyzacja lub inaczej ukrywanie informacji) to jedno z założeń paradygmatu programowania obiektowego. Polega ono na ukrywaniu pewnych danych składowych lub metod obiektów danej klasy tak, aby były one (i ich modyfikacja) dostępne tylko metodom wewnętrznym danej klasy lub funkcjom z nią zaprzyjaźnionym. Z pełną enkapsulacją mamy do czynienia wtedy, gdy dostęp do wszystkich pól w klasie jest możliwy tylko i wyłącznie poprzez metody lub inaczej: gdy wszystkie pola w klasie znajdują się w sekcji prywatnej (lub chronionej).

[edytuj] Przyczyny stosowania enkapsulacji:

  • Uodparnia tworzony model na błędy polegajÄ…ce np. na błędnym przypisywaniu wartoÅ›ci oraz umożliwia wykonanie czynnoÅ›ci pomocniczych, jak np. pobranie z konta 10% wypÅ‚acanej kwoty jako prowizji (nie uwidocznione w przykÅ‚adzie).

Przykład:

typedef double TypPieniedzy;
 
 class KontoBankowe {
   public:
     KontoBankowe( const TypPieniedzy saldoPoczatkowe = 0 ) throw();
     bool wplac( const TypPieniedzy kwota ) throw();
     bool wyplac( const TypPieniedzy kwota ) throw();
     TypPieniedzy podajStanKonta() const throw();
   private:
     TypPieniedzy saldo;
 };
 
 KontoBankowe::KontoBankowe( const TypPieniedzy saldoPoczatkowe = 0 ) throw()
   :
   saldo( saldoPoczatkowe )
   {
 }
  bool KontoBankowe::wplac( const TypPieniedzy kwota ) throw()  {
   if ( kwota > 0 ) {
     saldo += kwota;
     return true;
   }
   return false;
 }
 
 bool KontoBankowe::wyplac( const TypPieniedzy kwota ) throw() {
   if ( ( kwota > 0 ) && ( kwota <= saldo ) ) {
       saldo -= kwota;
       return true;
   }
   return false;
 }
 
 TypPieniedzy KontoBankowe::podajStanKonta() const throw() {
   return saldo;
 }
Mamy klasę KontoBankowe. Nie powinno się tak zdarzyć, że stan konta mógłby być modyfikowany przez zwykłe odwołanie się do danej saldo (np.: mojeKonto.saldo = 123;). Tu saldo konta bankowego jest daną chronioną (dostęp jest private), do której dostęp mają tylko funkcje zaprzyjaźnione lub funkcje składowe (wewnętrzne) (tu: podajStanKonta, wplac i wyplac). Powinno się zapewnić maksymalne bezpieczeństwo w odniesieniu do danej saldo. Stąd też metoda TypPieniedzy podajStanKonta() jest oznaczona jako const, wartość kwoty w metodach bool wplac( const TypPieniedzy kwota ) i bool wyplac( const TypPieniedzy kwota ) jest określona również jako const aby jej wartość nie została "przypadkiem" zmieniona w trakcie działania tych metod. Enkapsulacja ma też na celu sprawdzanie poprawności wpisywanych danych (czy powinno się dać wpłacić na konto kwoty będącej wartością ujemną?).
  • Lepiej oddaje rzeczywistość. W powyższym przykÅ‚adzie obrazuje atomowe operacje na koncie bankowym, podczas gdy odwoÅ‚anie siÄ™ bezpoÅ›rednie do salda nie oznaczaÅ‚oby nic szczególnego.
  • Umożliwia rozbicie modelu na mniejsze elementy. DziÄ™ki stosowaniu enkapsulacji można budować modele rzeczywistoÅ›ci jako struktury skÅ‚adajÄ…ce z mniejszych modułów, z których każdy ma pewne okreÅ›lone dane i okreÅ›lone metody wpÅ‚ywania na ich stan i sprawdzania go. Na przykÅ‚ad w tworzeniu modelu samochodu można użyć moduÅ‚u silnika, który ma okreÅ›lony szereg danych wewnÄ™trznych (np. opisujÄ…cych jego stan w trakcie pracy) i metod wewnÄ™trznych (np. pobranie paliwa, wywoÅ‚anie reakcji, ruch wirnika). Wszystko to jednak jest nieistotne dla użytkownika (a nawet nie powinno być dostÄ™pne), który ma możliwość użycia tylko zapÅ‚onu i wyłączenia silnika.

Politycy oceniają działania ws. stanu wojennego
Goście Salonu Politycznego rozmawiali o decyzji sądu w sprawie osób odpowiedzialnych za wprowadzenie stanu wojennego. Sąd postanowił zwrócić oskarżycielom z IPN akta, w których są zarzuty wobec dziewięciu osób - w tym Wojciecha Jaruzelskiego. Zgodnie z decyzją sądu Instytut musiałby przesłuchać między innymi Michaiła Gorbaczowa i Margaret Thatcher.
Najbardziej kobieca służba w Polsce
Z Agencji Bezpieczeństwa Wewnętrznego wyrzucono tak wielu mężczyzn, że jest najbardziej sfeminizowaną służbą mundurową w Polsce - informuje tygodnik "Wprost" na swojej stronie internetowej.
Kolejne rozmowy lekarzy z kierownictwem szpitala w Iławie
Lekarze ze szpitala powiatowego w Iławie (warmińsko-mazurskie) przystąpili do kolejnych rozmów z kierownictwem placówki. Chodzi o ponowne zatrudnienie w szpitalu, po tym jak zwolnili się oni w proteście wobec poprzedniej dyrektorki Wiesławy Jastrząb.
"Lewica od dawna była do kupienia"
Publicyści goszczący w Salonie Prasowym Trójki, rozmawiali o wecie prezydenta wobec nowelizacji ustawy o radiofonii i telewizji.
Kontrowersyjna nominacja w TVP - "to nie handel, tak wyszło"
- To nie byÅ‚ żaden handel, tak akurat wyszÅ‚o – tak Ryszard Kalisz z SLD (klub parlamentarny Lewica) odrzucaÅ‚ zarzut o targach SLD z PiS i nominacji Piotra Gadzinowskiego na czÅ‚onka i wiceprzewodniczÄ…cego Rady Programowej TVP. PoseÅ‚ byÅ‚ goÅ›ciem radia TOK FM.
Linki: Strona g³ówna