W klasach zmienne często stają się prywatne dla enkapsulacji, a ograniczenie zmiennych do pewnego zakresu umożliwia lepszą kontrolę błędów i mniej błędów. Ma to sens, ponieważ im mniej miejsc dostępnych jest zmienna, tym mniej miejsc może wystąpić błąd związany z tą zmienną.Jaki jest punkt dostępu do prywatnych zmiennych poprzez funkcje getter i setter (accessor)?
Jednak zawsze widzę zmienne miały charakter prywatny, a następnie funkcję getter i setter używany do pobierania tej wartości (czasami nawet wskaźnik do tej zmiennej!). Na przykład int a
jest prywatny, aby uniemożliwić publiczny dostęp, ale wtedy getA()
i setA()
umożliwiają bezpośredni dostęp do nich.
Więc nie zbieraj funkcji i funkcji ustawiacza, które nie pozwalają na zachowanie prywatności? Chodzi mi o to, że zmienne prywatne z funkcjami dostępowymi są takie same jak zmienne publiczne, a tylko kod umożliwiający dostęp do nich. (object.variable vs object.getVariable())
Czy istnieje powód, dla którego ludzie wprowadzają zmienne jako prywatne z funkcjami akcesor? Czy są jakieś zalety w porównaniu z upublicznieniem?
mówię o programowaniu w ogóle, ale przede wszystkim w językach C (czyli C, C++, C#, Obj-C).
To naprawdę zależy od języka. W restrykcyjnie językach OO (C#, Java), gettery/settery są popularnym idiomem, podczas gdy w swobodniejszym języku, takim jak C++, są one zwykle złym stylem. –