[delphi] stosowanie akcesorów

0

witam

Czy stosowanie akcesorów zawsze jest zalecane?
Jaki ma sens np. odczytywanie zmiennej przez Obiekt.GetZmienna; zamiast Obiekt.Zmienna; ?

0

masz kontrolę nad tym, co może być wpisane do tego pola, całą walidację robisz w jednym miejscu, jeśli zmienisz nazwę/typ zmiennej będzie to banalne do poprawienia bo robisz to tylko w jednym miejscu, wreszcie jest to bardziej logiczne.

0

Dzięki za odp.
Jeśli chodzi o walidację, to mogę użyć wyjątków w akcesorach?
Czy jest to niewskazane?

0

o jakie akcesoria ci chodzi bo nigdy się z tym okresleniem nie spotkałem.

0
pinokio999 napisał(a)

o jakie akcesoria ci chodzi bo nigdy się z tym okresleniem nie spotkałem.

Chodzi mi o akcesory, czyli metody pozwalające uzyskać dostęp do zmiennych prywatnych "z zewnątrz" :)

0

możesz. Zauważ, że Delphi (D7, inne pewnie podobnie) sam (CTRL+SHIFT+C) tworzy akesor Set natomiast odczyt jest "wprost" ze zmiennej prywatnej. Tak jak napisał ŁF akcesory mają tą zaletę, że możesz np. sprawdzić co jest przypisywane do danej zmiennej. Dodatkowo jeszcze możesz w akcesorach wywoływać inne metody, co pozwala w bardzo prosty sposób np. zmienić jakiś znacznik przy zmianie właściwości (np. ustawić obiektowi znacznik "zmieniony")

0

Ja jeszcze dodam, że zastosowanie akcesorów pozwala na łatwe zaimplementowanie obsługi zdarzeń w klasie czy komponencie, bo przy zapisie (Set) lub odczycie (Get) wystarczy po prostu wywołać funkcję zdarzenia. Zapis bezpośrednio ze zmiennej może nie dać tej możliwości (przy odczycie rzadziej zdarzenie jest konieczne).

Ogólnie pytanie o sens akcesorów jest pytaniem o sens enkapsulacji. Gdy piszesz program samemu, może być dobrym nawykiem, pozwalającym na tworzenie eleganckiego kodu. Gdy piszesz z kimś pozwala ograniczyć dostęp i uniemożliwić niepoprawne wykorzystanie klasy innych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1