Referencje
-
- Posty: 71
- Rejestracja: 05 mar 2007 00:00
Referencje
Witam
Podczas mojej pracy z labview zpotkałem się z terminem "referencje" , jednak nie znalazłem w internecie ani na forum odpowiedzi na moje podstawowe pytania Co to są referencje i do czego może mi się przydać. Zdaje sobie sprawe że pytanie może nie jest z najwyższej połki jednak bardzo bym prosił o przybliżenie mi tego terminu.
Pozdrawiam
Podczas mojej pracy z labview zpotkałem się z terminem "referencje" , jednak nie znalazłem w internecie ani na forum odpowiedzi na moje podstawowe pytania Co to są referencje i do czego może mi się przydać. Zdaje sobie sprawe że pytanie może nie jest z najwyższej połki jednak bardzo bym prosił o przybliżenie mi tego terminu.
Pozdrawiam
-
- Posty: 71
- Rejestracja: 05 mar 2007 00:00
Re: Referencje
Uzupełniając moje zapytanie czym "referencje" roznia sie od "property node " ?
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Referencje
Referencja to jakby wskaźnik do panelu, viaja, kontrolki... czegokolwiek. Property Node to klocek umożliwiający kontrolę własności różnych elementów (panelu, viaja, kontrolki, ...).
Masz referencję, którą podłączasz do Property Node i w ten sposób masz dostęp do własności obiektu wskazywanego przez referencję. Możesz też węzeł własności związać na stałe z jedną tylko kontrolką - wtedy nie trzeba już oczywiście podłączać referencji.
Tak to w skrócie wygląda (:
Pozdrawiam
Masz referencję, którą podłączasz do Property Node i w ten sposób masz dostęp do własności obiektu wskazywanego przez referencję. Możesz też węzeł własności związać na stałe z jedną tylko kontrolką - wtedy nie trzeba już oczywiście podłączać referencji.
Tak to w skrócie wygląda (:
Pozdrawiam
Re: Referencje
Referencje zostały wprowadzone do LV po to by osobnicy chący korzystać z programowania obiektowo - orientowanego mieli taką możliwość w LV.
Jeżeli programowanie Obiektowe nie jest Ci znane, a chyba nie jest bo pytasz, czym jest referencja narazie się tym nie przejmuj, ponieważ większość obiektów labview przekazuje sobie parametry przez wartość.
Różnica między przekazywaniem parametrów przez referencję i przez wartość polega na tym, że:
Przekazując wartość z VI do VI przekazujesz "Kopię" wartośći na której będzie pracowało drugie VI i zwróci wynik. Czyli zmiany tej wartości wewnątrz drugiego VI nie "zepsują" oryginalnej wartości bo prabują na kopii.
Przekazując referencję przekazujesz caly obiekt, tzn. gdybyś zmienił tą wartość zmiana będzie widoczna wszędzie w programie.
Jeśli interesuje cię programowanie obiektowe polecam Symfonię C++ J. Grębosza gdzie tłumaczy on wszystko łopatologicznie i jest to super książka na start.
Co do referencji nie pamiętam dokładnie ale Grębosz tłumaczył to chyba na podstawie zdjęcia teściowej ( zrobił to inaczej niż ja tutaj ... ale ;] kto ma teściową szybko załapie osochodzi)
Tzn jeśli zrobisz zdjęcie teściowej i przekarzesz je psu, a on je pogryzie ( przekazanie parametru przez wartość ) nie pójdziesz do więzienia.
Jeśli jednak zepchniesz prawdziwą teściową ( przekazanie przez referencję ) do jamy z krokodylami w Zoo.
To naprawdę stanie jej się krzywda i zostaniesz zamknięty ;]
Pozdro,
mac_671
* Edit:
Tylko chciałem uściślić ze mówiac że przekazując coś przez referencję przekazujesz cały obiekt ... jest to skrót myślowy aby zrozumieć różnicę między przekazaniem przez wartość a referencję. W rzeczywistości referencja jest informacją o adresie w pamięci tego obiektu także nie przekazuje się całego obiektu ale mówi się gdzie można go znaleźć by nim manipulować
Jeżeli programowanie Obiektowe nie jest Ci znane, a chyba nie jest bo pytasz, czym jest referencja narazie się tym nie przejmuj, ponieważ większość obiektów labview przekazuje sobie parametry przez wartość.
Różnica między przekazywaniem parametrów przez referencję i przez wartość polega na tym, że:
Przekazując wartość z VI do VI przekazujesz "Kopię" wartośći na której będzie pracowało drugie VI i zwróci wynik. Czyli zmiany tej wartości wewnątrz drugiego VI nie "zepsują" oryginalnej wartości bo prabują na kopii.
Przekazując referencję przekazujesz caly obiekt, tzn. gdybyś zmienił tą wartość zmiana będzie widoczna wszędzie w programie.
Jeśli interesuje cię programowanie obiektowe polecam Symfonię C++ J. Grębosza gdzie tłumaczy on wszystko łopatologicznie i jest to super książka na start.
Co do referencji nie pamiętam dokładnie ale Grębosz tłumaczył to chyba na podstawie zdjęcia teściowej ( zrobił to inaczej niż ja tutaj ... ale ;] kto ma teściową szybko załapie osochodzi)
Tzn jeśli zrobisz zdjęcie teściowej i przekarzesz je psu, a on je pogryzie ( przekazanie parametru przez wartość ) nie pójdziesz do więzienia.
Jeśli jednak zepchniesz prawdziwą teściową ( przekazanie przez referencję ) do jamy z krokodylami w Zoo.
To naprawdę stanie jej się krzywda i zostaniesz zamknięty ;]
Pozdro,
mac_671
* Edit:
Tylko chciałem uściślić ze mówiac że przekazując coś przez referencję przekazujesz cały obiekt ... jest to skrót myślowy aby zrozumieć różnicę między przekazaniem przez wartość a referencję. W rzeczywistości referencja jest informacją o adresie w pamięci tego obiektu także nie przekazuje się całego obiektu ale mówi się gdzie można go znaleźć by nim manipulować
-
- Posty: 71
- Rejestracja: 05 mar 2007 00:00
Re: Referencje
Dziekuje za wyjasnienie
Rozumiem ze referencja to jak by adres do komorki pamieci, i zmieniajac np wartosc przez wybranie value uzywajac property node z referencji do okreslonego obiektu zmieniam rowniez orginal ktory zostanie juz z nowa wartoscia nawet po zakonczeniu programu .
Rozumiem ze referencja to jak by adres do komorki pamieci, i zmieniajac np wartosc przez wybranie value uzywajac property node z referencji do okreslonego obiektu zmieniam rowniez orginal ktory zostanie juz z nowa wartoscia nawet po zakonczeniu programu .
Re: Referencje
Tak twoje rozumienie jest prawidlowe.
Tylko kapkę jeszcze uszczegółowię:
Referencja sama w sobie nie jest jedynie zapisem adresu, ale rowniez typu obiektu.
Tzn Samo podanie miejsca w pamieci bylo by to troche malo.
Oprocz tego ze musimy wiedziec gdzie szukac, trzeba tez wiedziec Co szukac.
Czyli referencja ma informacje o adresie oraz type ( definicji obieku ).
Pozdrawiam,
Mac_671
Tylko kapkę jeszcze uszczegółowię:
Referencja sama w sobie nie jest jedynie zapisem adresu, ale rowniez typu obiektu.
Tzn Samo podanie miejsca w pamieci bylo by to troche malo.
Oprocz tego ze musimy wiedziec gdzie szukac, trzeba tez wiedziec Co szukac.
Czyli referencja ma informacje o adresie oraz type ( definicji obieku ).
Pozdrawiam,
Mac_671
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Referencje
zmieniam rowniez orginal ktory zostanie juz z nowa wartoscia nawet po zakonczeniu programu
Nie jest. Przynajmniej nie ten fragment. W ogóle jak na mój gust to objaśnianie referencji z LV na gruncie referencji z C++ trochę mija się z celem.Tak twoje rozumienie jest prawidlowe.
Oczywiście koincydencja nazw nie jest przypadkowa i referencje w LV i w C++ mają dużo wspólnego (w szczególności z ich pomocą można poprawić znacząco wydajność programu), ale za daleko się w tych porównaniach zapędzić nie można - dataflow rządzi się swoimi prawami.
Co przez to rozumiesz, mac?Referencje zostały wprowadzone do LV po to by osobnicy chący korzystać z programowania obiektowo - orientowanego mieli taką możliwość w LV.
Ostatnio zmieniony 23 sie 2007 18:33 przez jogurt_owocowy, łącznie zmieniany 1 raz.
Re: Referencje
Ok przyznaje ze z tymi referencjami i Obiektowka to bylo niezrozumiale i sie zagalopowalem ( bylo tego nie pisac, ale jak juz sie napisalo to sie trzeba wytlumaczyc ;] )
Chodzilo mi o spojzenie na referencje zaserwowane w przykladzie :
labviewexampleslvoopReferenceObjectReferenceObject.lvproj
Co do tego ze uzywam ksiazki z C++ by tlumaczyc czym jest referencja i ze jest to nieadekwatne mysle ze nie popelnilem az takiego swietokradztwa.
Referencje jako pojecie w programowianiu sa rozumiane blikoznacznie niezaleznie czy mamy doczynienia z LV , C# , Java czy C++. A kolega pytal o pojecie, takie bylo moje rozumienie. ( chcialem mu zaserwowac definicje w miare zjadliwa wiec uzylem tej z Grebosza bo mysle ze jest adekwatna ).
Wiesz dobre zrozumienie czym jest referencja nie jest wcale takie proste od samego poczatku, i wydaje mi sie ze wymaga troche obyca z tematem.
Uwazam ze jego rozumienie na tym etapie jest dobre i wystarczajace;]
Pozatym ... sam tlumaczyles pojecie na zasadzie przyblizen. Powiedziales ze referencja to tak jakby wskaznik. ( Sa to pojecia pokrewne i bardzo ze soba zwiazane sam uzyles retoryki C++ ;] , ale przeciez obaj wiemy ze wskaznik i referencja to nie jest to samo ).
Pozdro,
Mac_671
Chodzilo mi o spojzenie na referencje zaserwowane w przykladzie :
labviewexampleslvoopReferenceObjectReferenceObject.lvproj
Co do tego ze uzywam ksiazki z C++ by tlumaczyc czym jest referencja i ze jest to nieadekwatne mysle ze nie popelnilem az takiego swietokradztwa.
Referencje jako pojecie w programowianiu sa rozumiane blikoznacznie niezaleznie czy mamy doczynienia z LV , C# , Java czy C++. A kolega pytal o pojecie, takie bylo moje rozumienie. ( chcialem mu zaserwowac definicje w miare zjadliwa wiec uzylem tej z Grebosza bo mysle ze jest adekwatna ).
Wiesz dobre zrozumienie czym jest referencja nie jest wcale takie proste od samego poczatku, i wydaje mi sie ze wymaga troche obyca z tematem.
Uwazam ze jego rozumienie na tym etapie jest dobre i wystarczajace;]
Pozatym ... sam tlumaczyles pojecie na zasadzie przyblizen. Powiedziales ze referencja to tak jakby wskaznik. ( Sa to pojecia pokrewne i bardzo ze soba zwiazane sam uzyles retoryki C++ ;] , ale przeciez obaj wiemy ze wskaznik i referencja to nie jest to samo ).
Pozdro,
Mac_671
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Referencje
Mówię "wskaźnik" nie w rozumieniu "klasycznych" języków programowania tylko w zwykłym, słownikowym znaczeniu. To w końcu informatyka czerpie terminy z języka potocznego, a nie na odwrót (:
Tak samo jak wskaźnik i referencja to nie to samo, tak samo referencja w LV i referencja w C++ to nie to samo. Jeśli nie dajesz się do tego przekonać, to pomyśl nad tym:
Tak w LV przekażemy do funkcji argument przez wartość (co zresztą nie jest do końca prawdą):
[img]http://www.labview.pl/uploads/veir/2+2.gif[/img]
A jak to zrobić przez referencję?
Tak samo jak wskaźnik i referencja to nie to samo, tak samo referencja w LV i referencja w C++ to nie to samo. Jeśli nie dajesz się do tego przekonać, to pomyśl nad tym:
Tak w LV przekażemy do funkcji argument przez wartość (co zresztą nie jest do końca prawdą):
[img]http://www.labview.pl/uploads/veir/2+2.gif[/img]
A jak to zrobić przez referencję?