Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Nauka podejścia obiektowego

Ostatnio zmodyfikowano 2021-02-05 22:05
Autor Wiadomość
wwojtas
Temat założony przez niniejszego użytkownika
Nauka podejścia obiektowego
» 2021-02-05 20:37:19
Cześć !

Uczę się aktualnie podejścia obiektowego w C++. Jednak nie jest to tak do końca oczywiste dla mnie na początku. Już powoli zaczynam to rozumieć, ale może macie dla mnie jakieś rady (już przerobiłem materiał teoretyczny i kilka filmików oglądnąłem). Ale u mnie to jest tak, że  pewnego dnia po prostu musi się ta lampka zaświecić, musi pojawić się zrozumienie i dalej już leci.. no właśnie ta lampka jeszcze się nie świeci,  w związku z tym prośba..
może macie jakieś swoje proste przykłady, jak zrozumieć, będę wdzięczny jeśli załączycie jakiś kod może z komentarzem co z czego się bierze i jak mają się współzależności, jakie macie podejście do podejścia obiektowego...

Przyznam, że świetnie pomaga zrozumieć tematykę artykuł: https://cpp0x.pl/dokumentacja/standard-C++/protected/357 z przykładem załączonego kodu. Np.: bardzo zrozumiale odpowiada na pytanie (moje własne) skąd się bierze to, a tamto ( w tym przykładzie: cena lub ilość produktów)??
Więc do tego służą: gettery i settery?? czy tak?? - takie pytania mnie nurtują !
To są proste pytania dla doświadczonych kodem, ale myślę, że z Waszą pomocą pojawi się szybsze zrozumienie i u mnie ...

Z góry serdecznie dziękuję !
P-178070
pekfos
» 2021-02-05 22:05:58
Więc do tego służą: gettery i settery?? czy tak?? - takie pytania mnie nurtują !
Do czego służą mają w samej nazwie, są do pobierania i ustawiania jakiejś wartości. Lepszym pytaniem byłoby "po co są", czemu nie mieć po prostu publicznego pola, na którym można zrobić to samo. Czasem jest bardzo przydatne że pobranie czy ustawienie jakiegoś pola w klasie musi się odbyć przez specjalnie wydzielony do tego kod, co się osiąga właśnie przez ustawienie pola jako niepublicznego i jedyny dostęp do niego jest wtedy przez publiczne "settery" i "gettery". Jednym z powodów może być utrzymywanie spójności między tym polem a innymi w klasie.
https://github.com/SFML/SFML/blob/master/src/SFML/Graphics/Transformable.cpp#L55
C/C++
void Transformable::setPosition( float x, float y )
{
   
m_position.x = x;
   
m_position.y = y;
   
m_transformNeedUpdate = true;
   
m_inverseTransformNeedUpdate = true;
}
Tu poza ustawianiem pozycji jest zapisywana informacja że "transform" i "inverseTransform" nie są już aktualne i będą musiały być w przyszłości obliczone ponownie z uwzględnieniem nowej ustawionej pozycji.
Innymi typowymi powodami użycia jest synchronizacja dostępu do pola w aplikacjach wielowątkowych, albo walidacja ustawianych danych. Bywa też że powodu zwyczajnie nie ma, ale te metody i tak są dodane. Gdyby w przyszłości miał się pojawić jakiś powód, to łatwiej dodać kod do już istniejącej metody, niż modyfikować wszystkie użycia publicznego pola.
P-178071
« 1 »
  Strona 1 z 1