logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Delphi - do czego sekcja private/public i jaki komp. RS232

prokopcio 10 Mar 2007 11:05 2228 15
REKLAMA
  • #1 3662791
    prokopcio
    Poziom 29  
    Posty: 2027
    Pomógł: 39
    Ocena: 143
    Witam.

    Programuję już dłuższy czas w Delphi i aż wstyd się przyznać ale niemam pojęcia do czego służą w kodzie:

    private
    { Private declarations }
    public
    { Public declarations }

    Wszystko deklaruję poza tym obszarem.

    i drugie pytanko - do tej pory piszę swoje procedurki i funkcje transmisyjne RS232 (nadawanie i odbiór) ale szczerze wolałbym użyć jakiegoś prostego w obsłudze gotowego komponentu. Chciałbym, żeby można było wysyłać dane "bajt po bajcie" i mieć obsługę zdarzenia po odebraniu danych lub pojedyńczych bajtów... Co polecilibyście?
  • REKLAMA
  • Pomocny post
    #2 3662820
    masterix
    Poziom 14  
    Posty: 51
    Pomógł: 8
    Ocena: 3
    private i public to określenie dostępu do danych funkcji/zmiennych. Jesli coś masz zadeklarowane jako private to nie możesz się do tego dobrać z zewnątrz danego elementu ( czyli np z zewnątrz klasy, która zawiera elementy private ) a tylko z wewnątrz czyli np funkcje dostępowe w klasie, które są prywatne.

    Do danych publicznych masz ogólnie dostęp ;)

    pzdr.
  • REKLAMA
  • #3 3662860
    prokopcio
    Poziom 29  
    Posty: 2027
    Pomógł: 39
    Ocena: 143
    Tak to jest jak się uczy samemu tylko potrzebnych wyrywków programowania z Delphi - dlatego pewnie nie mam pojęcia za bardzo o czym napisałeś i pewnie pojawi się jeszcze ogromna ilość pytań... np. słyszałem o wspomnianych przec Ciebie Klasach ale naprawdę nie wiem też co to takiego ;-) ... w szkole to mnie uczyli assemblera i turbo pascala a w delphi piszę programy doczytując tylko te elementy, które potrzebuję... niestety brak mi podstaw...
  • Pomocny post
    #4 3662896
    masterix
    Poziom 14  
    Posty: 51
    Pomógł: 8
    Ocena: 3
    Więc klasa jest to jakis model rzeczywistej obiektu, taki jeden ze standardowych przykładów to samochód.

    Masz samochód i jakie cechy on posiada? Ano, ma 4 koła + zapasowe, ma kierownicę, skrzynię biegów etc, ma rocznik, przebieg, zużycie paliwa. To są cechy, które możesz przetrzymywać jako dane w klasie. To najlepiej jak są dane prywatne ( private ) ew chronione ( protected ), ale o tym na razie nie mysl ;)

    A teraz co możesz zrobić z tym samochodem: włączyć, ruszyć, wrzucić inny bieg, zatrzymać, włączyć światła etc.

    To są tzw metody i one muszą być publiczne abyś mógł je wywołać w swoim programie.

    Pisałem też o funkcjach dostępowych tzw akcesorach. Są to funkcje dzięki którym możesz np dowiedzieć się jaki rocznik jest danego samochodu, jaki ma przebieg i czy ma koło zapasowe.

    A teraz po co to wszystko ?

    Klasy są po to aby lepiej modelować konkretne, rzeczywiste rzeczy i chyba tego dokładniej tłumaczyć nie trzeba. A ustawianie zmiennych w sekcji private jest głównie po to ( z początku wydaje się to utrudnieniem ), że jak programista zmieni wnętrze klasy to Ty nie musisz zmieniać swojego programu, tylko nadal korzystasz z akcesorów. I mimo np aktualizacji klasy Ty nie musisz nic zmieniać w swoich programach, w których korzystałeś z danej klasy.

    Nie wiem czy jaśniej Ci się zrobiło po mojej wypowiedzi, jak coś to pisz ;)

    pzdr.
  • #5 3663093
    prokopcio
    Poziom 29  
    Posty: 2027
    Pomógł: 39
    Ocena: 143
    no troszkę jaśniej, ale muszę to jeszcze przetrawiś - mam prośbę, czy mógłbyś wykorzystanie klasy przedstawić na jakimś bardzo prostym przykładzie? kawałeczek przykładowego kodu dużo by mi pomógł...

    Dzięki za wykładzik...

    Dodano po 9 [minuty]:

    A od czego powinno zacząć się pisanie programu (oczywiście poza ustaleniem co on ma robić ;-) )... chodzi mi o to w jakiej kolejności co się robi. Ja robię tak:

    1. Odpalam Delphi ;-)
    2. Nazywam sobie jakoś Główne okno (Form1 - Name)
    3. Ustalam ikonkę, autora itp...
    4. Tworzę sobie katalog
    5. Zapisuję Projekt i Unit1 pod nazwą programu
    6. Tworzę "Ciało" programu - przyciski, labele itp...
    7. Piszę podprogramy obsługi zdarzeń, w miedzy czasie dodając potrzebne zmienne i stałe globalne...
  • #6 3663658
    masterix
    Poziom 14  
    Posty: 51
    Pomógł: 8
    Ocena: 3
    No w delphi to raczej nie, ale w C++ to bez większego problemu. Po prostu w Delphi od jakiegoś czasu nie siedzę ;) A jeśli koniecznie chcesz w Delphi to każdy komponent jest klasą zdaje się, więc podejrzyj kod :)

    A co do kolejności to zależy zarówno od Twoich nawyków jak i od wielkości programu. Jeśli jest on duży to warto na kartce sobie rozpisać co i jak do czego, nazwy ważnych zmiennych/klas wraz z interfejsem etc ( a jeszcze lepiej to zrobić sobie schemat UML )

    pzdr.
  • REKLAMA
  • #7 3664223
    Stepel
    Poziom 20  
    Posty: 490
    Pomógł: 26
    Ocena: 28
    to ja poproszę ten przykład w C++ :)
  • #8 3666771
    masterix
    Poziom 14  
    Posty: 51
    Pomógł: 8
    Ocena: 3
    Proszę bardzo:
    address
    {
    	std::string city;
    	std::string street;
    	unsigned int no;
    };
    
    class user
    {
    	unsigned int age;
    	std::string name;
    	address addr;
    	public:
    		user();// konstruktor
    		~user();// destruktor
    		// akcesory
    		unsigned int get_age() const;
    		address get_address() const;
    		std::string get_name() const;
    		// ustawianie danych
    		void set_age( unsigned int new_age );
    		// itd. analogicznie pozostałe dane
    };
    Najpierw zdefiniowalem sobie strukturę address, która przechowuje adres ( dane w strukturze są domyślnie publiczne ), żeby pokazać, że w klasie może być też inna struktura danych a nie tylko typy podstawowe ;)

    Dalej jest interfejs klasy, zaczyna się od zmiennych ( domyślnie są prywatne ), dalej mamy funkcje, które są publiczne ( krótko skomentowane )

    pzdr.
  • REKLAMA
  • #9 3668529
    lukzak2298
    Poziom 18  
    Posty: 667
    Pomógł: 5
    Ocena: 91
    prokopcio napisał:

    i drugie pytanko - do tej pory piszę swoje procedurki i funkcje transmisyjne RS232 (nadawanie i odbiór) ale szczerze wolałbym użyć jakiegoś prostego w obsłudze gotowego komponentu. Chciałbym, żeby można było wysyłać dane "bajt po bajcie" i mieć obsługę zdarzenia po odebraniu danych lub pojedyńczych bajtów... Co polecilibyście?


    Proponuje ComPort <-- taki komponent
  • #10 3677557
    prokopcio
    Poziom 29  
    Posty: 2027
    Pomógł: 39
    Ocena: 143
    a czy ktoś może przeprowadzić mnie jak dziecko za ręką - krok po kroku przez proces zainstalowania komponentu do wysłania i odebrania znaku? albo prosze o jakiś link z opisem bo nie potrafię nic znaleźć
  • #12 3681246
    prokopcio
    Poziom 29  
    Posty: 2027
    Pomógł: 39
    Ocena: 143
    tak... używam winapi ale chcę skorzystać teraz (przetestować) komponenty... ale niestety nie potrafię ich instalować :-(
  • #14 3684168
    prokopcio
    Poziom 29  
    Posty: 2027
    Pomógł: 39
    Ocena: 143
    może być comport 3 - napisz jak go zainstalować, najlepiej zamieść tą wersję, której używasz, żeby nie było nieporozumień no i daj jakiś przykładzik (linijkę kodu) jak się wysyła jakąś daną. ;-)
  • Pomocny post
    #15 3684219
    lukzak2298
    Poziom 18  
    Posty: 667
    Pomógł: 5
    Ocena: 91
    W tej paczuszce jest wszystko czego Ci potrzeba: pliki do chyba wszystkich wersji Delphi, instrukcja instalacji, przykłady. Poczytaj a jak cos nie będzie jasne to wołaj.

    https://www.elektroda.pl/rtvforum/topic514127.html#2644445
    https://www.elektroda.pl/rtvforum/topic514127.html#2644445
    A w ogóle to wpisz w elektrodzie ComPort i dowiesz się wszystkiego na ten temat
  • Pomocny post
    #16 3685107
    Konto nie istnieje
    Konto nie istnieje  

Podsumowanie tematu

✨ W dyskusji wyjaśniono, że sekcje private i public w Delphi określają poziom dostępu do zmiennych i funkcji w klasach: private oznacza dostęp tylko wewnątrz klasy, natomiast public umożliwia dostęp z zewnątrz. Przedstawiono też podstawowe pojęcie klas na przykładzie samochodu, gdzie cechy (pola) są prywatne, a metody (funkcje) publiczne. Autor pytał o prosty komponent do obsługi transmisji RS232, umożliwiający wysyłanie i odbiór danych bajt po bajcie z obsługą zdarzeń. Polecono komponent ComPort (w tym ComPort 3) jako łatwy w użyciu do komunikacji szeregowej w Delphi. Podano link do paczki z plikami, instrukcją instalacji i przykładami użycia ComPorta. Poruszono także temat instalacji komponentów w Delphi oraz zaproponowano kurs programowania obiektowego w C++ jako pomoc w zrozumieniu klas i ich zastosowań. Przykład klasy w C++ z prywatnymi polami i publicznymi metodami akcesorów został przedstawiony w celu lepszego zobrazowania tematu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA