Strona 1 z 1

Referencje

: 13 sie 2007 15:51
autor: CHRISTOPCHER
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

Re: Referencje

: 13 sie 2007 18:14
autor: CHRISTOPCHER
Uzupełniając moje zapytanie czym "referencje" roznia sie od "property node " ?

Re: Referencje

: 14 sie 2007 06:42
autor: jogurt_owocowy
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

Re: Referencje

: 17 sie 2007 07:10
autor: mac_671
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ć

Re: Referencje

: 17 sie 2007 14:20
autor: CHRISTOPCHER
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 .

Re: Referencje

: 21 sie 2007 06:54
autor: mac_671
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

Re: Referencje

: 21 sie 2007 16:19
autor: jogurt_owocowy
zmieniam rowniez orginal ktory zostanie juz z nowa wartoscia nawet po zakonczeniu programu
Tak twoje rozumienie jest prawidlowe.
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.
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.
Referencje zostały wprowadzone do LV po to by osobnicy chący korzystać z programowania obiektowo - orientowanego mieli taką możliwość w LV.
Co przez to rozumiesz, mac?

Re: Referencje

: 23 sie 2007 11:53
autor: mac_671
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

Re: Referencje

: 23 sie 2007 18:32
autor: jogurt_owocowy
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ę?