Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 kwi 2024, o 10:54


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
 Tytuł: Enkapsulacja ?
PostNapisane: 19 mar 2013, o 11:10 
Offline
Nowy

Dołączył(a): 17 gru 2012
Posty: 17
Pomógł: 1

Witam,

Panowie mam pewien dylemat zawsze podczas pisania większego programu. Chodzi o enkapsulacje zmiennych. Tak wiem, że C jako takie nie wspiera tego mechanizmu jednak można go implementować.

Pytanie jest następujące na jakiej podstawie podejmujecie decyzje czy zmienna zadeklarowana w jednym module do której dostęp jest potrzeby innym module będzie globalna czyli zadeklarowana w pliku nagłówkowym ze słówkiem extern czy też będzie zmienna static w danym module a możliwość zmiany i odczytu jej stanu będzie zrealizowana przez dodatkowe funkcje np. get_variable() set_variable().

Z moich dotychczasowych poszukiwań w tym temacie większość artykułów, postów i komentarzy sugeruje nie używanie zmiennych globalnych a jeżeli są konieczne to ograniczenie ich do minimum. Jest to dla mnie w pełni zrozumiałe.
Z drugiej strony implementacja enkapsulacji powoduje dodatkowy narzut kodu jak i czasu wykonania.

Ciekawy jestem czy zastanawiacie się podczas pisania kodu nad takimi tematami a jeśli tak to jakie rzeczy bierzecie pod uwagę?

Pozdrawiam,
Marcin



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2013, o 11:30 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

to o czym piszesz szerzej stosowane jest w obiektówce w językach typu C++

tutaj dodawanie funkcji set_ ... czy get_variable() .... to rzeczywiście narzut i zależy ściśle od konkretnego projektu czy rozwiązania, ja rzadko z tego korzystam co nie znaczy że nigdy a chyba namiastkę takiego podejścia (pełnej ochrony własnych bibliotek) pokazałem w poradniku:

http://mirekk36.blogspot.com/2012/12/ws ... a-bez.html

gdzie rzeczywiście poszedłem w pokazaniu rozwiązań w C, które prawie sprowadzają się do C++ ;)

ale takie podejście trzeba bardzo wyważać i wątpię aby w prostych projektach, które na co dzień robimy miało to aż takie znaczenie.

Minimaliztyczny przykład takiego podejścia masz w rozdziale na temat multipleksowania wyświetlaczy LED w niebieskiej książce:

http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

gdzie udostępnione są jako właśnie globalne ze specyfikatorem extern zmienne dla użytkownika biblioteki cy1, cy2, cy3, cy4

i próba ich obudowy w metody (bo tak trzeba byłoby to prawie nazwać) set_ lub get_ może być pozbawiona sensu w tak prostym przykładzie, lecz z drugiej strony gdyby chcieć mocno rozbudować taką bibliotekę i wprowadzić jeszcze większe usprawnienia dla użytkownika biblioteki - to czemu nie ..... wszystko to kwestia pomysłu i bieżących potrzeb.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO