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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 22 lip 2025, o 22:43


    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: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 2 gości


    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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO