Strona 1 z 1

Podstawy OOP w LabVIEW - dziedziczenie właściwości

: 05 gru 2016 13:48
autor: MK_Zuk
Witam.
W końcu postanowiłem zabrać się za programowanie obiektowe w LabVIEW.
O ile "zabawa" metodami (dynamic dispatch) jest dla mnie już chyba zrozumiała to mam problem
jak odwołać się do właściwości zawartej w klasie rodzica z poziomu klasy potomnej.
Na ostatnim NI days dowiedziałem się, że trzeba użyć węzłów More Generic i More Specific.
Postanowiłem spróbować na chyba najprostszym przykładzie figur.
Klasa figura z właściwością kolor oraz dwie klasy dziedziczące: Kolo i Prostokat.
Zrobiłem 2 wersje:
1. Test - działa ale jakoś tak "na około" i nazwy funkcji są różne w klasie rodzica i klasach potomnych
(Set/Get Kolor w figura oraz Write/Read Kolor w dziedziczących)
2. Test z dziedziczeniem - (Set/Get Kol we wszystkich klasach) da się uruchomić ale zwraca błąd, że zagnieżdżenie
funkcji. Próba zastosowania Property Node w klasach dziedziczących, żeby odwołać się do właściwości kolor klasy figura
nie pokazuje tej właściwości.

Mógłbym prosić o pomoc gdzie jest błąd?

Pozdrawiam
Zuk

Re: Podstawy OOP w LabVIEW - dziedziczenie właściwości

: 05 gru 2016 21:46
autor: micard
słowo klucz to "data member accessor"
Klikasz PPM na klasę -> new-> Vi for Data member access
Tam jest kilka opcji z których diekawe to wybór dostępu zapis/odczyt, dynamicznych/statycznych implementacji, oraz dostępności przez property node.
W załączniku małe demo na zwierzakach

Podstawy OOP w LabVIEW - dziedziczenie właściwości

: 06 gru 2016 13:30
autor: MK_Zuk
Dzięki serdeczne.
Czyli trzeba w klasie nadrzędnej zdeklarować accesory i udostępnić jako Property Node.
Jeszcze mam pytanko odnośnie funkcji dajGlos.vi
Czy w funkcjach z klas potomnych musi być wywoływana pusta funkcja z klasy zwierzak?

micard, gratuluję poczucia humoru (metoda z przechodniem w nazwie... =)) )

Podstawy OOP w LabVIEW - dziedziczenie właściwości

: 06 gru 2016 14:52
autor: micard
Tak to już jest jak się siedzi na forum z dobrym browarkiem w dłoni :)

Domyślnie funkcja rodzica nie musi być wywoływana, ale w ustawieniach klasy zwierzak możesz ustawić opcję dla danej metody dynamicznej, że implementaca przeciążajaca rodzica musi się ona odwoływac do metody rodzica.

Re: Podstawy OOP w LabVIEW - dziedziczenie właściwości

: 07 gru 2016 11:18
autor: TMa
Dodam od siebie jedną kwestię - enkapsulacja! Ustawianie property nogi powinno być prywatne aby przypadkowo nie zmutować zwierzaka. Zazwyczaj takie właściwości ostawia się w konstruktorze i pozostają niezmienne. LV bezpośrednio nie wspiera (lub nie domaga się) konstruktora, ale w praktyce jest to przydatna opcja.
Odczyt pozostaje public albo lepiej protected.

Podstawy OOP w LabVIEW - dziedziczenie właściwości

: 08 gru 2016 08:36
autor: micard
Zdecydowanie się zgadzam ;]