CentrumXP.pl » Witamy
CentrumXP.pl
 
Szukaj
Subskrypcja
Powiadomienie e-mailem o nowościach na CentrumXP.pl:
E-mail: Zapisz
Czy zamierzasz pobrać Internet Explorer 9?


CentrumXP.pl » Microsoft .NET » Kurs C#, cz. II » Dodaj do ulubionych Dodaj do ulubionych   Dodaj do ulubionych Wersja do wydruku

05. Hermetyzacja danych

Autor: Paweł Kruczkowski    Opublikowano: 24 października 2006    Odsłon: 66518    »Skomentuj...
Strona:
Zobacz również:

01. Zmienne, stałe, wyrażenia i odstępy w C# 2.0

02. Usuwanie obiektów

03. Przekazywanie parametrów

04. Przeciążanie metod i konstruktorów

06. Dziedziczenie i polimorfizm

07. Abstrakcja w C#

08. Porozmawiajmy o klasach

09. Struktury

10. Interfejsy, część 1

11. Interfejsy, część 2

12. Słowniki w C# 2.0

13. Łańcuchy w C# 2.0

14. Wyrażenia regularne

15. Wyjątki - część I

16. Wyjątki - część II

17. Delegaty i zdarzenia

18. Operacje wejścia - wyjścia cz.1

19. Operacje wejścia - wyjścia cz. 2

20. Atrybuty i mechanizm refleksji

»Uzyskaj pomoc na forum

Jedną z najważniejszych cech dobrego programowania obiektowego jest dostarczenie użytkownikowi takiego programu, który będzie nadawał się do dalszej rozbudowy bez poprawy tego, co już zostało napisane. Jak taki cel osiągnąć? Po prostu poprzez zaprojektowanie klasy w taki sposób, aby zabezpieczyć ją przed ingerencją z zewnątrz. Innymi słowy, należy ukryć wewnętrzną strukturę definiowanej przez nas klasy. Taki mechanizm nazywamy hermetyzacją. Często pojęcie to określane jest enkapsulacją, bądź po prostu ukrywaniem danych.

Ukrywanie wewnętrznej struktury obiektu jest bardzo ważne z kilku powodów. Po pierwsze, obiekt taki jest odizolowany, a więc nie jest narażony na celowe, bądź niezamierzone działanie ze strony użytkownika. Po drugie, obiekt ten na pewno jest chroniony od niepożądanych referencji ze strony innych obiektów. Po trzecie, obiekt taki – jeśli jest to tylko możliwe, nie wpływa na zmiany, czy jakieś małe korekty wprowadzone w implementacji. Po prostu obie strony nie kolidują wówczas ze sobą. I po czwarte, dzięki ukryciu wewnętrznej struktury obiektu, można uzyskać jego przenośność. Innymi słowy, zastosować definiującą go klasę w innym fragmencie kodu, czy też programie.

A więc jak widzimy, poznane przez nas pojęcie hermetyzacji odgrywa w programowaniu obiektowych ogromne znaczenie. Przejdźmy więc od razu do przykładu, który będzie dotyczył enkapsulacji.

public class Punkty
{
    private int a;
    private int b;
 
    //definicja metod, ktore beda pobierac wartosci a i b
    public int GetA()
    {
        return a;
    }
 
    public int GetB()
    {
        return b;
    }
    //definicja metod, ktore beda zmieniac wartosci a i b
    public void SetA(int nowyA)
    {
        this.a = nowyA;
    }
    public void SetB(int nowyB)
    {
        this.b = nowyB;
    }
}
 
public class Glowna
{
    static void Main()
    {
        //deklarujemy obiekt p klasy Punkty
        Punkty p = new Punkty();
        //przypisanie odpowiednich wartosci zmiennym w obiekcie p
        p.SetA(10);
        p.SetB(20);
 
        //pobranie odpowiednich wartosci ze zmiennych obiektu p
        int wart1 = p.GetA();
        int wart2 = p.GetB();
        System.Console.WriteLine("Współrzędne punktu wynoszą: {0}.{1}", wart1, wart2);
     }
}

W klasie Punkty zadeklarowaliśmy sobie dwie zmienne składowe (a i b), które są liczbami całkowitymi i będą stanowić współrzędne danego punktu. Zadeklarowaliśmy sobie również 2 metody (GetA() oraz GetB()), które będą pobierać wartości, jakie są przechowywane w tych zmiennych. Klasa Punkty dostarcza nam również dwie metody (SetA() oraz SetB()), dzięki którym będziemy przypisywać zmiennym składowym nowe wartości.


1 2 3 4 5 6 Dalej» 

Aktualna ocena to: 3,51

Oceń artykuł...
Porażka Kiepski Taki Sobie Dobry Super!

Tagi:  

A teraz:    Dodaj do ulubionych Dodaj do ulubionych    Wydrukuj Wydrukuj    Wyślij link znajomemu Wyślij link znajomemu    Skomentuj Skomentuj

Komentarze do 05. Hermetyzacja danych

Dodaj komentarz»

kulluk 26 lipca 2007, 15:22

Bardzo dobry artykuł, bardzo dobre przykłady. Pozdr dla autora.

Pitrol 22 kwietnia 2008, 19:51

Kurs jest bardzo ambitnie zrobiony ,tak więc duże podziękowania dla autora:)

Ka 9 listopada 2008, 19:42

Obawiam sie że na stronie 6 wkradła się nieścisłość. Akcesor set jest wywoływany jedynie w przytoczonych ostatnich trzech liniach kodu, a nie we wszystkich 6. 

hmm 8 marca 2009, 20:02

enkapsulacja to co innego niż hermetyzacja... nie nalezy sie sugerowac wikipedia rowniez:D

ehe 17 czerwca 2009, 18:12

może mi ktoś powiedzieć, po co na stronie 4 są te linie:
[size= 10pt; font-family: "Courier New"">      [/size">  
czas.Dzien = dzien;

<br /> [size= 10pt; font-family: "Courier New"">         [/size">czas.Miesiac = miesiac;
<br /> [size= 10pt; font-family: "Courier New"">         [/size">czas.Rok = rok;



bo ja nie rozumie. po co obrabiać zmienne, którym już nadalismy nową wartość, i po obróbce w sumie nic się nie zmienia? wykomentowałem te linie w kodzie przez // i program się tak samo skompilował i dał ten sam wynik co z tymi liniami przetwarzającymi dane.
więc... po co one są?
po to żeby wykorzystać funkcję SET i przenieść ich wartość na właściwości w klasie Czas? to wszystko fajnie i w ogóle, ale w WriteLine przecież piszemy wartości zmiennych lokalnych. Przydało by się, aby autor pokazał jak wydobywać wartości bezpośrednio ze zmiennych ukrytych w klasie.
aby wykorzystać tę operację do czegokolwiek, ostatni wiersz kodu powinien wyglądać tak:
 System.Console.WriteLine("\nPo aktualizacji mamy datę: {0}-{1}-{2}", czas.Rok, czas.Miesiac, czas.Dzien);
bo wtedy tu pobieramy bezpośrednio wartości z klasy Czas.

crv 22 lipca 2010, 13:35

[size= 13px; line-height: 18px">Te 4 linijki są po to by uaktualnić dane w obiekcie czas. Oczywiście można było wyciąć poprzednie 4 linijki i zmiany dokonać teraz tutaj a przy wypisywaniu posłużyć się kodem jak post wyżej jednak w tutaj nie chodzi o pisanie świetnych, zoptymalizowanych programów tylko o pokazanie pewnych mechanizmów. Trzeba przyjąć iż kurs czytają również początkujący w tej dziedzinie więc wg. mnie nie powinno im się mieszać w głowach pokazując po kolei poszczególne składniki języka w jak najprostszy sposób.[/size">
[size= 13px; line-height: 18px">pozdro [/size">

Andrew viewx7 24 października 2010, 17:51

Świetny artykuł, bardzo zrozumiale napisany.


Dodaj swój komentarz

»Zasady udzielania komentarzy

Autor:  
Komentarz:
Dodaj komentarz
© 2012 Onex Group
Onex Group O Onex Group  |  O CentrumXP.pl  |  Kontakt  |  Reklama
Nasze serwisy: CentrumXP.plXboxSpot.pl  |  Jama Mastaha