Każdy jest innym i nikt sobą samym.

Konstrukcja właściwości klasy
wykorzystuje te korzyści wynikające z korzystania z metod dostępu podczas projektowania RAD.
Jak wspomniałem przed chwilą, do języków związanych z narzędziami typu RAD
(np. Delphi i C++ Builder) dodawana jest konstrukcja, która udostępnia tzw. właściwość obiektu wiążąc parę metod i związanych z daną właściwością. W Object Pascalu należy właściwości zadeklarować osobno za pomocą słowa (do C++
w C++ Builderze Borland dodał w tym celu niestandardowe słowo kluczowe 22 ).
Dla programisty używającego klasy korzystanie z właściwości5 niczym nie różni się od modyfikowania pola. Jednak różnica istnieje i to poważna; zmiana wartości właści-wości powoduje wywołanie metody , a jej odczytanie — metody . W Delphi i C++ Builderze właściwości obiektów mogą być dostępne w Object Inspector, jeżeli zadeklarowane są jako (' — czyli opublikowane (nowy zakres dostępu).
W Javie sytuacja jest nieco prostsza. Po pierwsze, nie istnieje specjalne słowo kluczowe pozwalające na konstruowanie właściwości. Przez to tworząc „ręcznie” kod źródłowy nadal mamy dostęp tylko do metod i . Po drugie, wszystkie środowiska programistyczne RAD Javy, w tym JBuilder, rozpoznają właściwości tylko po odpowiednio zdefiniowanej parze metod dostępu i i dodają tak określoną wła-
ściwość do odpowiedników inspektora. W tej sytuacji z właściwości możemy korzystać jedynie podczas projektowania RAD.
W kolejnych ćwiczeniach zajmiemy się tworzeniem metod dostępu do pól
i , które będą rozpoznawane jako określające właściwości komponentu
i zostaną dodane do właściwości widocznych w inspektorze.
5 Należy zwrócić uwagę, że w czystym C++ właściwością nazywa się zazwyczaj to, co w Javie i Object Pascalu jest polem. Standard C++ nie zna konstrukcji właściwości. Jest on dodany np. w C++ Builderze jako element niestandardowy (dlatego słowo kluczowe ma tu dwa znaki podkreślenia).
244
JBuilder X. Efektywne programowanie w Javie
Można stworzyć te metody ręcznie, ale o wiele szybciej można je zdefiniować korzystając z minimalnego wsparcia, jakie w wersji JBuilder Foundation jest dostępne przy budowaniu komponentów JavaBean (szczątkowe fragmenty BeansExpress).
Ćwiczenie 6.13.
Aby przygotować metody pozwalające na czytanie i modyfikację właściwości
i :
1. Zmieniamy zakładkę na górze okna edytora na MigajacyPrzycisk.
Jeżeli nie jest dostępna, to korzystając z okna projektu, otwieramy plik
MigajacyPrzycisk.java z pakietu .
2. Dolną zakładkę edytora zmieniamy na Bean6, a w niej wybieramy
podzakładkę Properties.
3. Zobaczymy tabelę z zadeklarowanymi polami klasy: ,
i (rysunek 6.5) Kolumny tej tabeli to: nazwa właściwości (Name),
zadeklarowany typ (Type), możliwość pobrania wartości przez metodę
(Getter), możliwość zmodyfikowania wartości przechowywanej przez
właściwość metodą (Setter) oraz sposób związania (Binding).
Rysunek 6.5.
Jedyny element
narzędzia
BeansExpress
dostępny w wersji
Foundation
4. Przy właściwościach i zaznaczamy pozycje w kolumnach
Getter i Setter. W kodzie klasy powstaną odpowiednie metody 3 ,
3 , 3 i 3 . W ten sposób zwykłe pole zmieni
się we właściwość.
6 Zakładka Bean ukrywa wspomniane wcześniej narzędzie BeansExpress. Niestety, w wersji Foundation jest ono nieaktywne. Jedyny element, który jest dostępny, wykorzystujemy w tym ćwiczeniu.
Rozdział 6. ♦ Komponenty JavaBean od środka
245
Jeżeli zajrzymy do kodu komponentu na zakładce Source, zauważymy nowe metody
3 , 3 , 3 i 3 . Ich budowa jest typowa dla metod
dostępu do właściwości. Definiowaliśmy bardzo podobne w klasie 1 w rozdziale 2.
Możliwość automatycznego tworzenia metod i jest jedynie drobnym frag-mentem możliwości narzędzia o nazwie BeanExpress w pełni dostępnego na zakładce
Bean tylko w wersjach komercyjnych JBuildera oraz przez miesiąc po zainstalowaniu jego darmowej wersji. Zakładka Properties, którą teraz wykorzystaliśmy, jest w wersji Foundation jedyną, jaka działa. Pozostałe zakładki po upływie miesiąca przełączane są w tryb tylko do odczytu.
Ćwiczenie 6.14.
Aby zobaczyć nowe właściwości:
1. Z menu Project wybieramy polecenie Rebuild Project "helion.jpx".
Naciśnięcie kombinacji klawiszy Ctrl+F9 odpowiadającej poleceniu Make Project
"helion.jpx" z tego samego menu nie wystarczy, aby inspektor zobaczył nowe zdarzenia.
Obecność metod Nazwa i Nazwa o odpowiednich sygnaturach jest wystarcza-
jącym sygnałem dla inspektora, żeby dodał do listy właściwość nazwa. W naszym przypadku będą to właściwości i .
Ćwiczenie 6.15.
Aby w aplecie za pomocą inspektora zmienić okres migania
przycisku ) na 500 milisekund:
1. W edytorze przechodzimy do klasy apletu .
2. Zmieniamy zakładkę na Design.
3. Zaznaczamy komponent ).
4. W oknie inspektora zobaczymy wszystkie właściwości komponentu, a między
nimi trzy nowe właściwości i . Zmieńmy właściwość
zaznaczonego komponentu na 500.
Po wykonaniu ćwiczenia przycisk zacznie migać znacznie szybciej (dwa razy na sekundę).
Ćwiczenie 6.16.
Aby do komponentu dodać metody kontrolujące uruchamianie i zatrzymywanie wątku,
a w konsekwencji włączać i wyłączać miganie przycisku:
1. W edytorze przechodzimy do klasy , zakładka Source.
2. Do klasy komponentu dodajemy metodę :
246
JBuilder X. Efektywne programowanie w Javie
; !# ; !$
" *# ; !$
"
*#)) $;#$
%
)
%
3. Dodajemy również metodę :
; !#$
"#4) $
%
4. Nie zmieniając zakładki klasy ani zakładki Source, kompilujemy projekt

Tematy