Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Visual Basic.
Wzorce projektowe
Autorzy: James W. Cooper
Tumaczenie: Jaromir Senczyk
Tytu oryginau: Visual Basic. Design Patterns. VB 6.0
and VB.NET
ISBN: 83-7197-710-7
Liczba stron: 440
Ta ksika jest praktycznym podrcznikiem tworzenia programw w jzyku Visual Basic
(w wersji 6 oraz .NET) wykorzystujcych wzorce projektowe. Moe suy take jako
krtkie wprowadzenie do programowania w nowej wersji .NET jzyka Visual Basic.
Wzorce projektowe omwiono w niej w szeregu krtkich rozdziaw, z ktrych kady
przedstawia jeden wzorzec i ilustruje jego wykorzystanie za pomoc jednego lub wicej
kompletnych i dziaajcych programw z okienkowym interfejsem uytkownika. Kady
rozdzia zawiera te diagramy UML ilustrujce powizania pomidzy klasami
wystpujcymi w implementacji wzorca.
Dziki niniejszej ksice czytelnik dowie si, e wzorce projektowe stanowi
powszechnie stosowany sposb organizacji obiektw w programach w celu ich
uproszczenia i uatwienia pniejszych modyfikacji. Wzorce projektowe wprowadzaj
take zasb nowych poj, dziki ktremu atwiej mona opisa konstrukcje tworzonych
programw.
Programici w trakcie zapoznawania si z tematyk wzorcw projektowych doznaj
zwykle momentu olnienia odkrywajc potg poznawanego wzorca. Moment ten
oznacza, e wanie uwiadomili sobie, w jaki sposb mog wykorzysta dany wzorzec
w swojej pracy.
Spis treci
Przedmowa......................................................................................................... 13
Cz I
Rozdzia 1.
Rozdzia 2.
Diagramy UML............................................................................... 23
Dziedziczenie .................................................................................................................24
Interfejsy ........................................................................................................................25
Kompozycja ...................................................................................................................26
Adnotacje .......................................................................................................................27
Diagramy UML program WithClass.........................................................................27
Pliki projektw Visual Basica........................................................................................28
Rozdzia 3.
Rozdzia 4.
Programowanie obiektowe............................................................. 47
Tworzenie obiektw w Visual Basicu ...........................................................................48
Tworzenie instancji obiektw ........................................................................................49
Program do pomiaru odlegoci .....................................................................................49
Metody wewntrz obiektw...........................................................................................50
Zmienne .........................................................................................................................50
Rozdzia 5.
Rozdzia 6.
Dziedziczenie i interfejsy................................................................ 59
Interfejsy ........................................................................................................................59
Symulator inwestycji......................................................................................................60
Implementacja symulatora .............................................................................................61
Kiedy uy interfejsu? ...................................................................................................62
Metody wsplne .............................................................................................................65
Interfejsy ukryte .............................................................................................................66
Podsumowanie ...............................................................................................................67
Rozdzia 7.
Rozdzia 8.
Spis treci
5
Wywoywanie wyjtkw..............................................................................................100
Operacje na plikach......................................................................................................100
Klasa File ..............................................................................................................101
Odczyt danych z pliku tekstowego .......................................................................102
Zapis danych w pliku tekstowym..........................................................................102
Wyjtki a operacje na plikach ......................................................................................102
Sprawdzanie osignicia koca pliku ..........................................................................103
Klasa FileInfo...............................................................................................................103
Klasa vbFile .................................................................................................................104
Cz II
Rozdzia 9.
Cz III
Spis treci
Cz IV
Wzorce czynnociowe.................................................279
Spis treci
10
Spis treci
11
Dodatki .......................................................................................417
Dodatek A
Bibliografia....................................................................................................... 423
Skorowidz......................................................................................................... 425
Rozdzia 28.
Wzorzec Observer
W tym rozdziale przedstawimy, w jaki sposb zastosowa wzorzec Observer do prezentacji tych samych danych jednoczenie w kilku rnych formach. Jest to czste wymaganie w programach pisanych dla systemw posiadajcych okienkowy interfejs uytkownika. Na przykad program umoliwiajcy analiz cen akcji moe prezentowa
dane za pomoc wykresu, tabeli i listy. Kada zmiana cen akcji powinna automatycznie
spowodowa odpowiedni zmian we wszystkich formach prezentacji.
Do takiego sposobu dziaania przyzwyczaiy nas popularne programy, jak na przykad
arkusz kalkulacyjny Excel. Z drugiej strony system Windows nie zawiera adnego wsparcia umoliwiajcego jego atw implementacj. Gdyby nawet tak byo, to i tak programowanie z wykorzystaniem API systemu Windows w jzyku C jest do skomplikowane. Tymczasem w programach pisanych w jzyku Visual Basic moemy osign
podany efekt stosujc wzorzec Observer.
Wzorzec Observer zakada, e osobne obiekty reprezentuj dane programu, a osobne
zajmuj si ich prezentacj, oraz e te drugie obserwuj zmiany zachodzce w danych.
Sytuacj t ilustruje schemat przedstawiony na rysunku 28.1.
Rysunek 28.1.
Prezentacja
danych za
pomoc listy
oraz w postaci
graficznej
Implementujc wzorzec Observer, dane okrelamy zwykle jako podmiot (ang. Subject),
a kad z form jego prezentacji mianem obserwatora (ang. Observer). Kady z obserwatorw zgasza podmiotowi zainteresowanie jego danymi poprzez wywoanie metody
podmiotu. Kady z obserwatorw musi te posiada znany podmiotowi interfejs, ktrego
metody podmiot wywouje, gdy zajdzie zmiana w jego danych. Oba te interfejsy moemy zdefiniowa na przykad jak poniej.
Cz IV Wzorce czynnociowe
362
Korzyci pync ze zdefiniowania tych interfejsw jest to, e mog je atwo implementowa praktycznie dowolne klasy bez wzgldu na ich rzeczywist funkcjonalno.
Klasa okna programu bdzie implementowa interfejs . Oznacza to, e musi
udostpni metod umoliwiajc obserwatorom zgoszenie zainteresowania przechowywanymi przez ni danymi. Metoda
bdzie umieszcza kolejnego
obserwatora w kolekcji.
!
W programie utworzymy dwa obiekty reprezentujce obserwatorw. Jeden bdzie pokazywa wybrany kolor i jego nazw, a drugi doda kolor do listy.
" #
$
%
&
'%()
%
*
%
!
+
!,%
*
%
&"
!
+
!,%
363
!
+
!&
&
#&
&
//
!01&
$
2
&
//
!01&
$
3
&
//
!01&
$
0
!
4556
755
!
Okno prezentujce list wybranych dotd kolorw bdzie take peni rol obserwatora.
Reprezentujca je klasa pokazana jest poniej.
-
#
.
!
+
'89
)%
1(%
8
& !
*
*
*
$
&:!&.
)
1;
.) 1
<8
=
% ) 1
%
"
$
>
?
!&
$
!
:
Cz IV Wzorce czynnociowe
364
Rysunek 28.3.
Wybr koloru
w gwnym oknie
programu
prezentowany
jednoczenie
w formie
graficznej
i na licie. Efekt
zastosowania
wzorca Observer
0@
0@
Gwne okno programu rwnie bdzie zawiera trzy przyciski wyboru i reprezentowa podmiot zawiadamiajcy obserwatorw o zmianach. Aby uproci program, wszystkie trzy przyciski otrzymaj wspln metod obsugi zdarze.
*
,
A
$
%
A
A
A
.2!&16
,
A
.!&16
,
A
.!&16
,
*
*
20
$
&?. 6
20
"
$
5
?
!&
>
365
*
$
&?.
6
! !?:
:
,
!<" !"
.
%0@
+0 !%
$
+
)&.
0@
!
.
!
&
,
!<" !"
.
*
"
*
0 ,
0 ,
%0@
+0 !%
&"
$
+
)&.
$
%
"//6
>B6
*%!"!0
,
$
%
0 ,&!01
A
!6
%
A
.,
0@
!
.
@0
!
!
$
&
!?#%
&
//
.!01&
$
!2
&
//
.!01&
$
!0
&
//
.!01&
$
!3
Cz IV Wzorce czynnociowe
366
.A0@
6
0@
*
3.,
$
!3.,
!*%6
6
,6
C56
D5
&
W bardziej zoonych programach obserwatorzy mog wymaga rnych, czsto zoonych komunikatw. Kady z nich moe dokonywa wtedy niezbdnej konwersji, ale
w tym celu lepiej bdzie zastosowa wzorzec Adapter.
Innym problemem zwizanym z zastosowaniem wzorca Observer bdzie obserwacja
podmiotu, ktrego dane mog zmienia si w rny sposb. Na przykad pozycje listy
mog by dodawane lub usuwane, ale mog by te modyfikowane. W takim przypadku
musimy wysya do obserwatorw rne rodzaje komunikatw. Mona te wysya
nadal jeden rodzaj komunikatu, a w odpowiedzi obserwator zapyta o charakter zaistniaych zmian.
Rysunek 28.4.
Klasy
implementujce
interfejsy
obserwatora
i podmiotu
w przykadowym
programie
wykorzystujcym
wzorzec Observer
Konsekwencje stosowania
wzorca Observer
Wzorzec Observer wprowadza abstrakcyjne powizania z podmiotem. Podmiot nie zna
szczegw dziaania adnego z obserwatorw. Moe wic si okaza, e wobec wystpienia szeregu przyrostowych zmian danych podmiotu zostanie wysana do obserwatora
367
Zagadnienia do przemylenia
Wersja przykadowego programu, ktr napisalimy korzystajc z wersji 6 jzyka Visual
Basic rni si w dziaaniu od wersji napisanej w Visual Basic .NET tym, e zamknicie ktregokolwiek z okien obserwatorw nie powoduje zamknicia pozostaych okien
i zakoczenia pracy programu. W jaki sposb mona zastosowa dodatkowego obserwatora, aby uzyska efekt w postaci zakoczenia programu?