��IDZ DO
IDZ DO
PRZYK�ADOWY ROZDZIA�
PRZYK�ADOWY ROZDZIA�
Programowanie obiektowe
SPIS TRE CI
SPIS TRE CI
w Visual Basic .NET
dla ka�dego
KATALOG KSI��EK
KATALOG KSI��EK
Autorzy: Richard Simon, Leslie Koorhan, Ken Cox
KATALOG ONLINE
KATALOG ONLINE
T�umaczenie: Jadwiga Gnybek
ISBN: 83-7197-783-2
ZAM�W DRUKOWANY KATALOG
ZAM�W DRUKOWANY KATALOG
Tytu� orygina�u: TY Object Oriented Programming
with Visual Basic.NET in 21 Days
Format: B5, stron: 374
TW�J KOSZYK
TW�J KOSZYK
Visual Basic to j�zyk programowania pozwalaj�cy nawet pocz�tkuj�cym programistom
DODAJ DO KOSZYKA
DODAJ DO KOSZYKA
pisa� zaawansowane aplikacje wykorzystuj�ce wszystkie mo�liwo ci system�w
operacyjnych z rodziny Windows. Jego kolejne wersje w coraz wi�kszym stopniu
korzysta�y z technik programowania zorientowanego obiektowo (OOP). Najnowsza
CENNIK I INFORMACJE
CENNIK I INFORMACJE
z nich, Visual Basic .NET jest uwie�czeniem tej ewolucji.
Je li chcesz tworzy� aplikacje w VB .NET, musisz nauczy� si� programowa� obiektowo.
ZAM�W INFORMACJE
ZAM�W INFORMACJE
O NOWO CIACH
O NOWO CIACH
Z pewno ci� pomo�e Ci w tym ksi��ka Programowanie obiektowe w Visual Basic
.NET . Informacje w niej zawarte przydadz� si� tak�e, gdy zaczniesz u�ywa� innych
ZAM�W CENNIK j�zyk�w programowania opartych na obiektach, takich jak C++, C# czy Java.
ZAM�W CENNIK
Ten podr�cznik, ��cz�cy praktyczne �wiczenia z niezb�dn� dawk� przydatnej teorii,
nauczy Ci� samodzielnie tworzy� aplikacje u�ywaj�ce obiekt�w, dziedziczenia,
CZYTELNIA
CZYTELNIA
poliformizmu i sterowania za pomoc� zdarze�. Dowiesz si� r�wnie� jak obs�ugiwa�
b��dy. Odr�bne rozdzia�y po wi�cono obiektom zdalnym (aplikacjom klient-serwer),
FRAGMENTY KSI��EK ONLINE
FRAGMENTY KSI��EK ONLINE
udost�pnianiu aplikacji poprzez Internet tworzeniu atrakcyjnego interfejsu u�ytkownika
oraz j�zykowi XML. Poznasz tak�e rodowisko projektowe Visual Studio .NET. Swoj�
wiedz� b�dziesz m�g� sprawdzi� za pomoc� licznych quiz�w.
Ksi��ka zawiera:
" Wprowadzenie do programowania obiektowego w Visual Basic .NET
" Wyja nienie terminologii zwi�zanej z programowaniem obiektowym
" Om�wienie rodowiska Visual Studio .NET oraz tworzenia interfejs�w u�ytkownika
za pomoc� Windows Forms i WebForms
" Praktyczne �wiczenia i quizy sprawdzaj�ce wiedz�
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis tre[ci
O Autorze .......................................................................................11
Wstp .............................................................................................13
Jak zorganizowana jest ta ksi|ka? ...................................................................................14
Konwencje u|yte w ksi|ce ..............................................................................................15
RozdziaB 1. Programowanie zorientowane obiektowo budowa aplikacji
sterowanej zadaniami ......................................................................17
Tworzenie projektu ...........................................................................................................18
Definiowanie obiektu SimpleMsg.....................................................................................19
Tworzenie obiekt�w w Visual Basic .NET.................................................................19
Dodawanie wBa[ciwo[ci..............................................................................................20
Tworzenie klasy SmartMsg...............................................................................................22
Dziedziczenie w Visual Basic .NET...........................................................................22
Dodanie metody Write() .............................................................................................23
Dodanie metody Read() ..............................................................................................24
Budowa obiektu MsgReader .............................................................................................25
Tworzenie okna formularza ........................................................................................26
WywoBanie obiektu SmartMsg ...................................................................................28
Wy[wietlanie obiektu SmartMsg................................................................................29
ObsBuga zdarzeD OK i Anuluj.....................................................................................30
Aczymy wszystko w caBo[ .............................................................................................31
Sub main()...................................................................................................................31
Ustawianie parametr�w startowych............................................................................31
Podsumowanie ..................................................................................................................32
Pytania i odpowiedzi .........................................................................................................32
Warsztaty...........................................................................................................................33
Quiz.............................................................................................................................33
wiczenie....................................................................................................................33
RozdziaB 2. Terminologia wykorzystywana w OOP ...............................................35
Obiekt................................................................................................................................35
Klasa..................................................................................................................................36
Pola i zakresy ....................................................................................................................37
Prywatne .....................................................................................................................38
Chronione....................................................................................................................39
Publiczne.....................................................................................................................39
Pola statyczne..............................................................................................................40
Klasy finalne i abstrakcyjne........................................................................................41
WBa[ciwo[ci ......................................................................................................................43
4 Programowanie obiektowe w Visual Basic .NET dla ka|dego
Metody i ich dziaBanie.......................................................................................................44
Zdarzenia i delegaty ..........................................................................................................45
Konstruktory......................................................................................................................47
Destruktory........................................................................................................................48
Interfejsy............................................................................................................................49
Podsumowanie ..................................................................................................................50
Pytania i odpowiedzi .........................................................................................................50
Warsztaty...........................................................................................................................51
Quiz.............................................................................................................................51
wiczenie....................................................................................................................51
RozdziaB 3. Zawieranie danych i cech w obiekcie ...............................................53
Projektowanie publicznego interfejsu klasy......................................................................54
Ochrona p�l klas................................................................................................................55
Definiowanie prywatnych p�l klasy..................................................................................56
Zastosowanie hermetyzacji w projektowaniu obiekt�w ...................................................58
Podsumowanie ..................................................................................................................64
Pytania i odpowiedzi .........................................................................................................64
Warsztaty...........................................................................................................................65
Quiz.............................................................................................................................65
wiczenie....................................................................................................................65
RozdziaB 4. Tworzenie nowych obiekt�w na bazie obiekt�w ju| istniejcych.........67
Mechanizm dziedziczenia .................................................................................................68
Klasa bazowa ..............................................................................................................68
Dziedziczenie klas ......................................................................................................69
Dodawanie danych......................................................................................................70
Dodawanie funkcji ......................................................................................................70
Optymalizacja klas ............................................................................................................70
Nadpisywanie zmiana funkcjonalno[ci istniejcych metod ..................................71
Wykorzystanie klas abstrakcyjnych............................................................................72
Wykorzystanie p�l chronionych .................................................................................73
Wykorzystanie p�l wsp�Bdzielonych ..........................................................................73
Tworzenie klas finalnych............................................................................................74
Wykorzystanie dziedziczenia w Visual Basic .NET.........................................................75
Proste dziedziczenie klas tworzenie klasy MailMsg .............................................75
Dziedziczenie tworzenie formularza transakcji .....................................................77
Podsumowanie ..................................................................................................................81
Pytania i odpowiedzi .........................................................................................................82
Warsztaty...........................................................................................................................83
Quiz.............................................................................................................................83
wiczenie....................................................................................................................83
RozdziaB 5. Nadawanie obiektom cech polimorficznych .......................................85
Zalety polimorfizmu..........................................................................................................85
Wykorzystanie polimorfizmu w Visual Basic .NET.........................................................86
Dziedziczenie polimorfizmu.......................................................................................86
Klasy abstrakcyjne a polimorfizm ..............................................................................90
Polimorfizm interfejsu ................................................................................................92
Podsumowanie ..................................................................................................................94
Pytania i odpowiedzi .........................................................................................................95
Warsztaty...........................................................................................................................95
Quiz.............................................................................................................................95
wiczenie....................................................................................................................96
Spis tre[ci 5
RozdziaB 6. Budowa obiekt�w zBo|onych poprzez Bczenie obiekt�w.....................97
R�|nica pomi�dzy kompozycj a dziedziczeniem............................................................97
Asocjacja.....................................................................................................................99
Agregacja ....................................................................................................................99
Kompozycja ................................................................................................................99
Projektowanie obiekt�w przy u|yciu kompozycji ..........................................................100
Podsumowanie ................................................................................................................105
Pytania i odpowiedzi .......................................................................................................105
Warsztaty.........................................................................................................................106
Quiz...........................................................................................................................106
wiczenie..................................................................................................................106
RozdziaB 7. Poznajemy [rodowisko programistyczne Visual Basic .NET..............107
Praca w Microsoft .NET Framework ..............................................................................108
Common Language Runtime (CLR).........................................................................108
Biblioteka klas .NET.................................................................................................109
Praca z Visual Basic .NET IDE ......................................................................................109
Wykorzystanie okna Solution Explorer ....................................................................111
Project .......................................................................................................................112
Referencje .................................................................................................................113
Referencje WWW.....................................................................................................113
Toolbox .....................................................................................................................114
Form Designer ..........................................................................................................115
Uruchamianie i debugowanie aplikacji...........................................................................117
Wykorzystywanie systemu pomocy Help Online ...........................................................118
Podsumowanie ................................................................................................................120
Pytania i odpowiedzi .......................................................................................................120
Warsztaty.........................................................................................................................121
Quiz...........................................................................................................................121
wiczenie..................................................................................................................121
RozdziaB 8. Typy danych w Visual Basic .NET ...................................................123
Poznajemy typy danych Visual Basic .NET ...................................................................124
Typ Object ................................................................................................................124
Synonimy typ�w Common Numeric Data................................................................125
U|ywanie zmiennych typu BaDcuch znak�w (String) ...............................................126
Praca z danymi typu Data .........................................................................................127
U|ywanie zmiennych typu Boolean .........................................................................128
Tworzenie struktur ....................................................................................................128
Praca ze zmiennymi typu wyliczeniowego...............................................................129
U|ywanie tablic ........................................................................................................131
Podsumowanie ................................................................................................................132
Pytania i odpowiedzi .......................................................................................................132
Warsztaty.........................................................................................................................133
Quiz...........................................................................................................................133
wiczenie..................................................................................................................133
RozdziaB 9. Organizowanie klas w grupy ...........................................................135
Przestrzenie nazw............................................................................................................136
Praca z przestrzeniami nazw .NET ...........................................................................137
U|ywanie przestrzeni nazw ......................................................................................138
Tworzenie przestrzeni nazw .....................................................................................140
Podsumowanie ................................................................................................................141
Pytania i odpowiedzi .......................................................................................................141
Warsztaty.........................................................................................................................142
Quiz...........................................................................................................................142
wiczenie..................................................................................................................142
6Programowanie obiektowe w Visual Basic .NET dla ka|dego
RozdziaB 10. Tworzenie interfejsu u|ytkownika ...................................................143
Wybieramy wBa[ciwy formularz .....................................................................................144
U|ywanie formularzy Windows......................................................................................145
Formularze Windows................................................................................................145
Tworzenie formularza Windows...............................................................................149
Rozbudowa formularza Windows.............................................................................152
Formularze WWW ..........................................................................................................153
Praca z formularzem WWW i ASP.NET..................................................................153
Tworzenie formularza WWW ASP.NET .................................................................154
Podsumowanie ................................................................................................................158
Pytania i odpowiedzi .......................................................................................................158
Warsztaty.........................................................................................................................159
Quiz...........................................................................................................................159
wiczenie..................................................................................................................159
RozdziaB 11. Tworzenie i u|ywanie komponent�w ...............................................161
Tworzenie klas komponent�w Visual Basic .NET .........................................................161
Komponenty..............................................................................................................162
Projektowanie i implementacja komponent�w.........................................................164
Programowanie klas do u|ycia w trakcie pracy aplikacji ...............................................166
Klasy Reflection........................................................................................................167
Programowanie obiekt�w nieznanych ......................................................................168
Podsumowanie ................................................................................................................170
Pytania i odpowiedzi .......................................................................................................171
Warsztaty.........................................................................................................................171
Quiz...........................................................................................................................171
wiczenie..................................................................................................................171
RozdziaB 12. Budowa aplikacji WWW .................................................................173
Zorientowane obiektowo aplikacje ASP.NET w Visual Basic .NET .............................173
Tworzenie projektu WWW.......................................................................................174
Tworzenie interfejsu u|ytkownika............................................................................174
Serwisy WWW................................................................................................................181
Tworzenie serwis�w WWW .....................................................................................182
U|ywanie serwis�w WWW......................................................................................183
Podsumowanie ................................................................................................................185
Pytania i odpowiedzi .......................................................................................................186
Warsztaty.........................................................................................................................186
Quiz...........................................................................................................................186
wiczenie..................................................................................................................186
RozdziaB 13. Instalacja projekt�w Visual Basic .NET...........................................187
Asemblacje......................................................................................................................188
U|ycie asemblacji ...........................................................................................................189
Instalowanie asemblacji ..................................................................................................190
Asemblacje lokalne...................................................................................................190
Asemblacje WWW ...................................................................................................192
Podsumowanie ................................................................................................................195
Pytania i odpowiedzi .......................................................................................................196
Warsztaty.........................................................................................................................197
Quiz...........................................................................................................................197
wiczenie..................................................................................................................197
Spis tre[ci 7
RozdziaB 14. Praca z interfejsami obiekt�w ........................................................199
Interfejsy i OOP ..............................................................................................................199
Wielokrotne dziedziczenie........................................................................................200
Polimorfizm interfejs�w ...........................................................................................201
Tworzenie interfejsu Contract.........................................................................................202
Programowanie interfejs�w.............................................................................................204
Implementacja interfejs�w ..............................................................................................205
Metody ......................................................................................................................205
WBa[ciwo[ci ..............................................................................................................206
Zdarzenia...................................................................................................................207
U|ycie interfejsu jako wywoBania zwrotnego .................................................................208
Podsumowanie ................................................................................................................210
Pytania i odpowiedzi .......................................................................................................210
Warsztaty.........................................................................................................................211
Quiz...........................................................................................................................211
wiczenie..................................................................................................................211
RozdziaB 15. ObsBuga zdarzeD, komunikat�w i powiadomieD................................213
Powt�rka wiadomo[ci o zdarzeniach i delegatach..........................................................214
ObsBuga prostych zdarzeD .........................................................................................214
ObsBuga zdarzeD dynamicznych za po[rednictwem delegat�w ................................215
U|ycie zdarzeD i operacji asynchronicznych ..................................................................216
Tworzenie i u|ycie wBasnych zdarzeD i delegat�w .........................................................219
Tworzenie wBasnych zdarzeD z wykorzystaniem delegat�w .NET Framework .......219
Deklarowanie i u|ycie wBasnych delegat�w .............................................................219
Klasy delegat�w........................................................................................................221
U|ycie zdarzeD do powiadamiania..................................................................................221
Podsumowanie ................................................................................................................226
Pytania i odpowiedzi .......................................................................................................226
Warsztaty.........................................................................................................................226
Quiz...........................................................................................................................227
wiczenie..................................................................................................................227
RozdziaB 16. Przechwytywanie bBd�w................................................................229
Strukturalna obsBuga wyjtk�w.......................................................................................230
U|ywanie poleceD Try i Catch..................................................................................230
Zagnie|d|ona obsBuga bB�d�w..................................................................................232
U|ycie bloku Finally.................................................................................................233
Generowanie wyjtk�w ............................................................................................235
Tworzenie i u|ycie wBasnych klas wyjtk�w..................................................................238
Podsumowanie ................................................................................................................239
Pytania i odpowiedzi .......................................................................................................239
Warsztaty.........................................................................................................................240
Quiz...........................................................................................................................240
wiczenia..................................................................................................................240
RozdziaB 17. Projektowanie i u|ywanie obiekt�w zdalnych ..................................241
Filozofia obiekt�w zdalnych ...........................................................................................241
Obiekty zdalne ..........................................................................................................242
Obiekty proxy ...........................................................................................................243
Aktywacja obiektu ....................................................................................................244
Cykl |ycia zdalnego obiektu.....................................................................................244
Dynamiczne publikowanie obiekt�w zdalnych ........................................................245
Wyb�r pomi�dzy kopi a referencj ...............................................................................245
U|ycie kanaB�w w procesie komunikacji........................................................................246
8 Programowanie obiektowe w Visual Basic .NET dla ka|dego
Budowa klienta i serwera poBczonych za po[rednictwem TCP.....................................247
Aplikacja serwera dla obiekt�w zdalnych ................................................................247
Budowanie klienta wykorzystujcego zdalny obiekt................................................250
Podsumowanie ................................................................................................................253
Pytania i odpowiedzi .......................................................................................................253
Warsztaty.........................................................................................................................254
Quiz...........................................................................................................................254
wiczenia..................................................................................................................254
RozdziaB 18. Projektowanie aplikacji zarzdzajcej projektem.............................255
Spotkanie z klientem .......................................................................................................255
Domeny.....................................................................................................................256
Dekompozycja modelu domen .................................................................................257
Projektowanie zgodne z wymaganiami...........................................................................258
Tworzenie projektu interakcji ...................................................................................258
Tworzenie klas programowych z klas konceptualnych ............................................259
Podsumowanie ................................................................................................................264
Pytania i odpowiedzi .......................................................................................................264
Warsztaty.........................................................................................................................264
Quiz...........................................................................................................................265
wiczenia..................................................................................................................265
RozdziaB 19. Tworzenie aplikacji zarzdzajcej projektem ...................................267
Tworzenie moduB�w klas ................................................................................................267
Tworzenie interfejsu........................................................................................................268
Tworzenie klas ................................................................................................................269
Klasa Employee ........................................................................................................270
Klasy potomne ..........................................................................................................274
PozostaBe klasy..........................................................................................................277
Podsumowanie ................................................................................................................283
Pytania i odpowiedzi .......................................................................................................283
Warsztaty.........................................................................................................................283
Quiz...........................................................................................................................284
wiczenia..................................................................................................................284
RozdziaB 20. Dodawanie cech funkcjonalnych do aplikacji ..................................285
Projektowanie klas wizualnych.......................................................................................286
Tworzenie klas wizualnych.............................................................................................287
Komponowanie formularza ......................................................................................287
Przegldanie kodu generowanego.............................................................................290
Tworzenie formularza .....................................................................................................291
Rozmieszczanie element�w formularza pracownika................................................292
Przegld kodu formularza pracownika .....................................................................294
Rozmieszczanie element�w formularza produktu ....................................................298
Przegldanie kodu formularza produktu...................................................................299
Rozmieszczanie element�w formularza projektu .....................................................301
Przegldanie kodu formularza projektu ....................................................................302
Rozmieszczanie element�w formularza elementu projektu .....................................305
Przegldanie kodu formularza elementu projektu ....................................................305
Podsumowanie ................................................................................................................306
Pytania i odpowiedzi .......................................................................................................307
Warsztaty.........................................................................................................................307
Quiz...........................................................................................................................307
wiczenia..................................................................................................................307
Spis tre[ci 9
RozdziaB 21. Rozszerzanie funkcjonalno[ci aplikacji............................................309
Dane utrwalone ...............................................................................................................309
Wprowadzenie do XML-a...............................................................................................310
Zasady poprawnego formatowania dokumentu XML ..............................................311
Dodatkowe narz�dzia................................................................................................312
Document Object Model i XPath....................................................................................313
DOM .........................................................................................................................313
Odpytywanie DOM...................................................................................................313
Model obiekt�w DOM..............................................................................................314
Kodowanie moduB�w klas...............................................................................................315
Metoda Save()...........................................................................................................315
Metoda Read() ..........................................................................................................320
Metoda Delete() ........................................................................................................322
Klasa Resource..........................................................................................................322
Przegldanie danych........................................................................................................323
Klasy Product, Project i ProjectItem...............................................................................324
Podsumowanie ................................................................................................................325
Pytania i odpowiedzi .......................................................................................................325
Warsztaty.........................................................................................................................325
Quiz...........................................................................................................................326
wiczenia..................................................................................................................326
Dodatek A Odpowiedzi na pytania quizu...........................................................327
RozdziaB 1., Programowanie zorientowane obiektowo budowa aplikacji
sterowanej zadaniami ..................................................................................................327
Quiz...........................................................................................................................327
wiczenia..................................................................................................................327
RozdziaB 2., Terminologia wykorzystywana w OOP ..................................................330
Quiz...........................................................................................................................330
wiczenia..................................................................................................................331
RozdziaB 3., Zawieranie danych i cech w obiekcie ......................................................331
Quiz...........................................................................................................................331
wiczenia..................................................................................................................331
RozdziaB 4., Tworzenie nowych obiekt�w na bazie obiekt�w ju| istniejcych ..........332
Quiz...........................................................................................................................332
wiczenia..................................................................................................................332
RozdziaB 5., Nadawanie obiektom cech polimorficznych ...........................................334
Quiz...........................................................................................................................334
wiczenia..................................................................................................................334
RozdziaB 6., Budowa obiekt�w zBo|onych poprzez Bczenie obiekt�w .......................336
Quiz...........................................................................................................................336
wiczenia..................................................................................................................336
RozdziaB 7., Poznajemy [rodowisko programistyczne Visual Basic .NET .................337
Quiz...........................................................................................................................337
wiczenia..................................................................................................................337
RozdziaB 8., Typy danych w Visual Basic .NET .........................................................338
Quiz...........................................................................................................................338
wiczenia..................................................................................................................338
RozdziaB 9., Organizowanie klas w grupy ...................................................................339
Quiz...........................................................................................................................339
wiczenia..................................................................................................................339
RozdziaB 10., Tworzenie interfejsu u|ytkownika ........................................................339
Quiz...........................................................................................................................339
wiczenia..................................................................................................................340
10 Programowanie obiektowe w Visual Basic .NET dla ka|dego
RozdziaB 11., Tworzenie i u|ywanie komponent�w ....................................................340
Quiz...........................................................................................................................340
wiczenia..................................................................................................................341
RozdziaB 12., Budowa aplikacji WWW .......................................................................342
Quiz...........................................................................................................................342
wiczenia..................................................................................................................342
RozdziaB 13., Instalowanie projekt�w .NET Visual Basic ..........................................343
Quiz...........................................................................................................................343
wiczenia..................................................................................................................343
RozdziaB 14., Praca z interfejsami obiekt�w ...............................................................344
Quiz...........................................................................................................................344
wiczenia..................................................................................................................344
RozdziaB 15., ObsBuga zdarzeD, komunikat�w i powiadomieD ...................................344
Quiz...........................................................................................................................344
wiczenia..................................................................................................................345
RozdziaB 16., Przechwytywanie bB�d�w ......................................................................346
Quiz...........................................................................................................................346
wiczenia..................................................................................................................346
RozdziaB 17., Projektowanie i u|ywanie obiekt�w zdalnych ......................................347
Quiz...........................................................................................................................347
wiczenia..................................................................................................................347
RozdziaB 18., Projektowanie aplikacji zarzdzajcej projektem .................................348
Quiz...........................................................................................................................348
wiczenia..................................................................................................................349
RozdziaB 19., Tworzenie aplikacji zarzdzajcej projektem .......................................350
Quiz...........................................................................................................................350
wiczenia..................................................................................................................350
RozdziaB 20., Dodawanie cech funkcjonalnych do aplikacji .......................................351
Quiz...........................................................................................................................351
wiczenia..................................................................................................................351
RozdziaB 21., Rozszerzanie funkcjonalno[ci aplikacji ................................................352
Quiz...........................................................................................................................352
wiczenia..................................................................................................................352
Dodatek B Pies... z klas................................................................................355
Tworzenie klasy bazowej................................................................................................356
Wykorzystanie klasy bazowej.........................................................................................357
Rozwijajc piesk logik� .............................................................................................358
Podsumowanie ................................................................................................................360
Skorowidz......................................................................................361
RozdziaB 14.
Praca
z interfejsami obiekt�w
W poprzednich wersjach Visual Basica jedynie interfejsy dawaBy mo|liwo[ zastoso-
wania polimorfizmu. Visual Basic .NET mo|e realizowa polimorfizm poprzez inter-
fejsy lub mechanizm dziedziczenia. U|ycie interfejs�w czy dziedziczenia jest kwesti
wyboru pomi�dzy realizacj podstawowych i specyficznych funkcji. Zwykle dziedzi-
czenie u|ywane jest w przypadku, gdy podstawowa funkcjonalno[ realizowana jest
w klasach bazowych, natomiast klasy potomne jedynie j rozszerzaj. Interfejsy za[
s optymalnym rozwizaniem w przypadku, gdy potrzebna jest podobna funkcjonal-
no[ w r�|nych implementacjach kilku klas majcych ze sob niewiele wsp�lnego.
W rozdziale tym przyjrzymy si� bli|ej roli interfejs�w w Visual Basic .NET i sposo-
bom ich najwBa[ciwszego wykorzystania w aplikacjach .NET. Poniewa| w poprzed-
nich rozdziaBach om�wione zostaBy podstawowe zagadnienia zwizane z budowaniem
interfejs�w, teraz nasz uwag� skupimy na sposobach ich najlepszego wykorzystania.
Om�wimy wi�c sposoby:
definiowania interfejs�w,
dziedziczenia pomi�dzy interfejsami,
implementacji interfejs�w wewntrz definicji klas,
rozpoznawania sytuacji, w kt�rej wykorzystanie interfejsu jest najlepszym
rozwizaniem,
u|ycia interfejs�w do poBczeD zwrotnych.
Interfejsy i OOP
Interfejsy, podobnie jak klasy, definiuj zbi�r wBa[ciwo[ci, metod i zdarzeD. R�|nica
pomi�dzy nimi polega na tym, |e interfejsy same w sobie nie definiuj implementacji,
natomiast to klasy, kt�re je wykorzystuj, musz zapewni ich implementacj�.
200 Programowanie obiektowe w Visual Basic .NET dla ka|dego
Podstawow zalet interfejs�w jest to, |e umo|liwiaj budow� systemu z opisa-
nych przez interfejsy programowych komponent�w, kt�rych wBa[ciwa imple-
mentacja mo|e by zmieniana bez zmiany istniejcego kodu programu korzysta-
jcego z tych interfejs�w. W rzeczywisto[ci zmianie ulec mog caBe klasy i tak
dBugo, jak implementuj one interfejsy, mog by nadal bez przeszk�d u|ywane
przez reszt� aplikacji.
Wielokrotne dziedziczenie
Podobnie jak ma to miejsce w przypadku klas, interfejsy mog dziedziczy po sobie
i tworzy kompletny zorientowany obiektowo projekt. W przypadku interfejs�w
mo|liwe jest dziedziczenie po wi�cej ni| jednym obiekcie nadrz�dnym, co nie jest
mo|liwe w odniesieniu do klas, a jest to czasem przydatne w projektowaniu zo-
rientowanym obiektowo.
Na przykBad combo box skBada si� z pola tekstowego (test box) i listy warto[ci (list
box). Podczas implementacji combo box za pomoc klas niezb�dne jest u|ycie
om�wionej w rozdziale 6. kompozycji klas, poniewa| niemo|liwe jest dziedzicze-
nie klasy typu combo box jednocze[nie po klasie p�l tekstowych i klasie list warto-
[ci. Spos�b u|ycia interfejsu combo box pokazano na listingu 14.1.
Listing 14.1. PrzykBadowy interfejs kontrolki Combo Box
Interfejs potomny dziedziczy po interfejsie bazowym wszystkie jego pola. Dlatego te|
zar�wno interfejs jak i posiadaj podprogram . Interfejs
posiada natomiast podprogramy , i . Pomimo
|e podprogram przeniesiony jest z obu interfejs�w bazowych, interfejs
ma tylko jedn jego implementacj�.
RozdziaB 14. f& Praca z interfejsami obiekt�w 201
Polimorfizm interfejs�w
Interfejsy Visual Basic .NET zapewniaj kolejny spos�b realizacji polimorfizmu. Po-
limorfizm jest w rzeczywisto[ci nieodBczn cech interfejs�w, poniewa| z zaBo|enia
nie posiadaj one implementacji. Dlatego te| ka|da klasa implementujca interfejs
posiada odmienn jego implementacj�, co stanowi istot� polimorfizmu.
PrzykBadem polimorfizmu jest definiowanie kilku klas, kt�re implementuj ten sam
interfejs. U|ywajc interfejs�w zamiast klas, zauwa|amy, w jaki spos�b interfejsy ob-
sBuguj polimorfizm. Listing 14.2 pokazuje u|ycie interfejs�w w serii obiekt�w b�d-
cych wieloktami.
Listing 14.2. Polimorfizm interfejs�w
202 Programowanie obiektowe w Visual Basic .NET dla ka|dego
Zauwa|my, w jaki spos�b podprogram pobiera jako parametr,
a nast�pnie u|ywa metody interfejsu. W dalszej kolejno[ci wywoBywana jest metoda
implementujca funkcjonalno[ interfejsu. Metoda ta jest r�|na dla ka|dego typu
obiektu. Mo|emy nazwa t� metod� dowolnie i implementowa w spos�b, jaki naj-
bardziej nam w okre[lonej sytuacji odpowiada, pod warunkiem zachowania zgodno-
[ci listy parametr�w. W ten spos�b klasa mo|e implementowa interfejs, zachowujc
jednocze[nie niezmienion nazw� metody wewntrz klasy. Mo|liwe jest r�wnie| za-
stpienie dowolnego obiektu implementujcego interfejs jako parametru pod-
programu .
Tworzenie interfejsu Contract
Interfejs reprezentuje umow� z klas. Klasa, u|ywajc sBowa kluczowego
, przystaje na umow� m�wic o tym, |e b�dzie implementowa interfejs. Po
wyra|eniu przez klas� ch�ci implementacji interfejsu jest ona zobowizana do im-
plementacji caBego interfejsu. Klasa nie mo|e zaimplementowa cz�[ci interfejsu,
wypeBniajc jednocze[nie zaakceptowany wcze[niej kontrakt. Dlatego te|, je[li klasa
implementuje interfejs, u|ytkownicy klasy pewni s tego, |e mog u|ywa wszyst-
kich metod zdefiniowanych w tym interfejsie, poniewa| z caB pewno[ci zostan one
zaimplementowane.
Nale|y pami�ta, |e klasa mo|e wypeBni umow�, dostarczajc w szczeg�lnym przy-
padku takiej implementacji, kt�ra nie wykonuje |adnej czynno[ci. Jedynym warunkiem
jest zgodno[ w stosunku do zapis�w zdefiniowanych w interfejsie dotyczcych para-
metr�w i (w przypadku funkcji) zwracanych warto[ci. Wszystko inne zale|ne jest od
klasy implementujcej interfejs. W rzeczywisto[ci zalet u|ycia interfejs�w jest to, |e
klasa decyduje o zastosowaniu okre[lonej implementacji w konkretnym przypadku.
PrzykBadowa klasa przedstawionej na listingu 14.3 implementuje trzy r�|ne interfejsy.
Listing 14.3. Implementacja wielu interfejs�w przez jedn klas oraz u|ycie obiekt�w klasy jako
implementacji ka|dego z interfejs�w
RozdziaB 14. f& Praca z interfejsami obiekt�w 203
Dla kompletno[ci definicji klasy niezb�dne jest zaimplementowanie wszyst-
kich metod zdefiniowanych w interfejsach , i . Klasa
definiowa mo|e r�wnie| wBasne cechy charakterystyczne, jednak|e te metody, wBa-
[ciwo[ci i zdarzenia nie b�d dost�pne, gdy klasa b�dzie u|ywana poprzez te interfejsy.
W ka|dym z trzech interfejs�w pokazanych w podprogramie mo|liwe
jest u|ycie klasy . Jest to szczeg�lnie u|yteczne podczas projektowania aplika-
cji posiadajcej kilka niezale|nych lub luzno powizanych klas, kt�re u|ywane b�d
zamiennie. Stosujc typ interfejsu jako parametr, u|ytkownik widzi jedynie metody,
wBa[ciwo[ci i zdarzenia zdefiniowane w interfejsie. Reszta implementacji wewntrz
klasy nie jest dla u|ytkownika interfejsu widoczna.
204 Programowanie obiektowe w Visual Basic .NET dla ka|dego
Programowanie interfejs�w
Poznali[my ju| kilka przykBad�w zastosowania interfejs�w w programowaniu zo-
rientowanym obiektowo. Programowanie z wykorzystaniem interfejs�w mo|e jednak
nieco r�|ni si� od programowania z u|yciem klas.
Pierwszym spostrze|eniem poczynionym podczas projektowania interfejs�w, kt�re
maj by implementowane p�zniej, jest to, |e ich metody nie maj okre[lonych za-
kres�w dost�pno[ci. Wszystkie metody s jawne i dost�pne do u|ytku jako publiczne.
Na przykBad wewntrz klasy zdefiniowa mo|emy metod� publiczn, chronion lub
prywatn. Interfejsy nie maj tej cechy. Ka|da metoda zdefiniowana w interfejsie do-
st�pna jest jako publiczna, czyli tak, jakby zostaBa zadeklarowana jako . Nawet
je[li klasa implementujca implementuje metody jako dla u|ytkownika ko-
rzystajcego z interfejsu, s one dost�pne tak, jakby byBy zadeklarowane jako .
Posiadanie wszystkich metod interfejsu zadeklarowanych jako publiczne na sens, je[li
zdefiniowanie interfejsu byBo gruntownie przemy[lane, gdy| interfejsy definiowane s
w celu opisania wsp�lnych mo|liwych do u|ycia cech czy funkcjonalno[ci. Czy wi�c
mo|e znalez si� w interfejsie co[, co zostaBo zadeklarowane jako prywatne? DziaBa-
nie takie nie ma |adnego logicznego wytBumaczenia z wyjtkiem tego, |e mogBoby to
wymusza na klasie implementacj� metody prywatnej, kt�ra mo|e by u|yta tylko
w obr�bie danej klasy.
Kolejnym zagadnieniem, kt�re na pierwszy rzut oka wydaje si� by problemem (cho
w rzeczywisto[ci okazuje si� to nieprawd), jest fakt, |e interfejs nie definiuje p�l da-
nych. Zadaniem interfejsu jest definiowanie jedynie publicznych interfejs�w metod,
zdarzeD i wBa[ciwo[ci. Poniewa|, jak pami�tamy, interfejsy nie maj implementacji,
nie ma sensu definiowanie p�l danych, gdy| dost�p do danych powinien by realizo-
wany poprzez ich metody i wBa[ciwo[ci.
Ostatnim problemem, kt�ry om�wimy, jest nieco frustrujca sytuacja, gdy dwa inter-
fejsy maj zaprojektowan t� sam metod�. Je[li dwa interfejsy s interfejsami bazo-
wymi dla nowego, trzeciego interfejsu, u|ytkownik zmuszony jest do okre[lenia, kt�-
r z metod chce wywoBa. Listing 14.4 pokazuje taki wBa[nie przypadek.
Listing 14.4. Interfejs z kolizj nazw u|ywajcych CType() do wskazania wBa[ciwego sposobu u|ycia metod
RozdziaB 14. f& Praca z interfejsami obiekt�w 205
W kodzie z listingu 14.4 funkcja konwertuje wyra|enie precyzujce pierwszy
argument (w tym przypadku ) do typu u|ywanego w drugim parametrze. Dzi�ki te-
mu podczas wykonywania kodu wybierany jest wBa[ciwy interfejs i u|ywana jest
wBa[ciwa metoda .
Nieco wcze[niej wspominali[my, |e je[li ta sama metoda zawarta jest wewntrz inter-
fejsu i w jego interfejsie bazowym, to jest ona implementowana tylko raz. Dlatego te|
nie wyst�puje wtedy problem pokazany na listingu 14.4.
Implementacja interfejs�w
Poniewa| interfejs nie posiada implementacji, musi by przed u|yciem zdefiniowany
tak, aby dostarczaB odpowiednich funkcji, metod, zdarzeD i wBa[ciwo[ci. Interfejs mo-
|e by implementowany zar�wno przez klasy, jak i definicje struktur zawierajcych
sBowo kluczowe .
Jak ju| wspominali[my, klasa mo|e implementowa jeden lub wiele interfejs�w.
Przedstawiony poni|ej kod pokazuje spos�b, w jaki struktura implementuje interfejs
podobnie, jak robi to klasa.
Jak ju| wspominali[my wcze[niej, interfejs mo|e deklarowa metody (podprogramy
i funkcje), zdarzenia i wBa[ciwo[ci. Pami�tajmy jednak, |e nie mo|e deklarowa p�l
danych.
Metody
W celu implementacji metod interfejs�w poprzez klasy lub struktury, metody te de-
klarowane s wewntrz klas lub struktur z wykorzystaniem sBowa kluczowego
. Jedynym wymaganiem implementacji metody interfejsu jest to, aby metoda
klasy lub struktury posiadaBa te same parametry i zwracaBa warto[ci zadeklarowane
w metodzie interfejsu.
206 Programowanie obiektowe w Visual Basic .NET dla ka|dego
Tak dBugo jak zgodne s listy parametr�w i warto[ci zwracanych danych, mo|liwe
jest r�wnie| implementowanie wielu interfejs�w przez pojedyncz metod� klasy lub
struktury.
Na przykBad, zamieszczony poni|ej kod pokazuje, jak w jednej funkcji zaimplemen-
towa dwie metody zdefiniowane w listingu 14.4:
Poprzez implementowanie wielu metod interfejs�w za pomoc tej samej metody kla-
sy lub struktury mo|liwe jest powizanie metod wielu interfejs�w z t sam funkcjo-
nalno[ci bez konieczno[ci pisania dodatkowego kodu.
WBa[ciwo[ci
Implementacja wBa[ciwo[ci interfejsu podobna jest do implementacji metod. Reali-
zowane jest to za pomoc sBowa kluczowego przypisujcego wBa[ciwo[ci
klas lub struktur do wBa[ciwo[ci interfejs�w. WBa[ciwo[ci klas implementujce wBa-
[ciwo[ci interfejsu musz charakteryzowa si� tym samym typem ( ). Li-
sting 14.5 ilustruje implementacj� wBa[ciwo[ci interfejsu.
Listing 14.5. Implementacja wBa[ciwo[ci interfejsu
Je[li wBa[ciwo[ zadeklarowana jest w interfejsie jako lub , to im-
plementujca go klasa lub struktura musi implementowa te wBa[ciwo[ci z takimi sa-
mymi atrybutami.
RozdziaB 14. f& Praca z interfejsami obiekt�w 207
Zdarzenia
Podobnie jak w przypadku metod i wBa[ciwo[ci, zdarzenia implementowane s po-
przez klasy lub struktury za pomoc sBowa kluczowego . Jak wspominali-
[my ju| w rozdziale 2., zdarzenia w definicjach klas nie s powizane z kodem. Skut-
kiem u|ycia sBowa kluczowego jest literalne poBczenie zdarzenia klasy
lub struktury ze zdarzeniem interfejsu. Listing 14.6 pokazuje, jak implementowa
i u|ywa zdarzenia za po[rednictwem interfejs�w.
Listing 14.6. Implementacja i u|ycie zdarzeD interfejsu
208 Programowanie obiektowe w Visual Basic .NET dla ka|dego
U|ycie interfejsu
jako wywoBania zwrotnego
U|ywane poprawnie interfejsy maj wiele zalet. Mamy mo|liwo[ tworzenia interfej-
s�w wolnych od problem�w wyst�pujcych podczas zmiany kodu bazowego. Prowa-
dzi to r�wnie| do wi�kszej elastyczno[ci implementacji.
Innym przykBadem u|ycia interfejs�w jest zdefiniowane wywoBania zwrotnego (call-
back). Na przykBad, je[li kilka typ�w implementuje ten sam interfejs, mo|e by on
wykorzystany jako metoda wywoBania zwrotnego w sytuacji, w kt�rej pojedyncze
wywoBanie zwrotne jest niewystarczajce. U|ycie interfejsu pozwala na wywoBanie
zwrotne zawierajce kilka metod, wBa[ciwo[ci lub zdarzeD. Listing 14.7 przedstawia
spos�b u|ycia interfejsu zdefiniowanego jako wywoBanie zwrotne. Ilekro interfejs
ten jest implementowany, obiekt implementujcy go wie, jaki interfejs powinien wy-
woBa zwrotnie. W odr�|nieniu od pojedynczej funkcji lub podprogramu wywoBanie
zwrotne jest kompletnym interfejsem.
Listing 14.7. Deklaracja wywoBania zwrotnego sterowania interfejsem u|ytkownika
Implementacja interfejsu poprzez r�|ne klasy dostarcza wsp�lnego inter-
fejsu u|ywanego podczas pracy z kontrolkami. Listing 14.8 pokazuje prost imple-
mentacj� kontrolki przycisku ( ) i przycisku opcji ( ).
Listing 14.8. Implementacja interfejsu IUIControl poprzez klasy PushButton i RadioButton
RozdziaB 14. f& Praca z interfejsami obiekt�w 209
210 Programowanie obiektowe w Visual Basic .NET dla ka|dego
Implementacja interfejsu zale|y od kontrolek i ka|da z kontrolek mo|e
mie swoj wBasn implementacj�. U|ywanie kontrolek jest wi�c teraz uBatwione, po-
niewa| u|ytkownicy, chcc wywoBa zwrotnie kontrolk�, kontaktuj si� jedynie z in-
terfejsem. Ilustruje to listing 14.9.
Listing 14.9. U|ycie interfejsu IUIControl do wywoBania zwrotnego do klasy w przypadku wystpienia
zdarzenia
Oczywi[cie mo|liwa jest r�wnie| wsp�Bpraca interfejs�w z asynchronicznymi wy-
woBaniami zwrotnymi sBu|cymi do komunikacji sieciowej, dost�powi do plik�w itp.
Podsumowanie
Poznali[my wBa[nie sposoby u|ycia interfejs�w w Visual Basic .NET, jako cz�[ci
programowania zorientowanego obiektowo. Zalet interfejs�w, w por�wnaniu z kla-
sami, jest mo|liwo[ dziedziczenia z kilku interfejs�w bazowych jednocze[nie. Inter-
fejsy s z natury polimorficzne, poniewa| ka|da implementujca je klasa lub struktura
tworzy wBasn, oryginaln ich implementacj�. Klasy i struktury mog implementowa
wi�cej ni| jeden interfejs, co umo|liwia ich wielokrotne u|ycie w aplikacji.
Pytania i odpowiedzi
Pytanie: Po co tworzy interfejsy? Czy nie mo|na tego wszystkiego zrobi za po-
moc klas, skoro one r�wnie| wykorzystuj metod dziedziczenia i polimorfizmu?
Odpowiedz: To prawda, interfejsy nie s dzi[ wykorzystywane tak cz�sto jak w po-
przednich wersjach Visual Basica, gdy dziedziczenie i polimorfizm nie byBy mo|li-
we na poziomie klas. Jednak|e maj one nadal przewag� nad klasami, poniewa|
RozdziaB 14. f& Praca z interfejsami obiekt�w 211
umo|liwiaj definiowanie og�lnych interfejs�w implementowanych przez niezale|-
ne obiekty, umo|liwiaj wielokrotne dziedziczenie i sprawiaj, |e kod jest niewra|-
liwy na ewentualne przyszBe modyfikacje.
Pytanie: Czy interfejsy w .NET ulegBy du|ym zmianom? Czy mo|emy nadal
u|ywa ich poza aplikacj lub eksportowa ?
Odpowiedz: Interfejsy w Visual Basic .NET s generalnie podobne do tych z po-
przednich wersji Visual Basica. .NET Framework ukrywa wiele szczeg�B�w imple-
mentacyjnych, ale w rzeczywisto[ci bazuje on nadal na identyfikatorach GUID, a da-
ne, przechodzc przez interfejs, nadal s przeksztaBcane.
Warsztaty
W ramach zaj� warsztatowych proponowa b�dziemy zagadki i wiczenia, kt�re
pomog uporzdkowa i przewiczy materiaB poznany w koDczcym si� wBa[nie
rozdziale ksi|ki. Odpowiedzi przedstawiono w dodatku A na koDcu ksi|ki.
Quiz
1. Jakie sBowo kluczowe deklaruje interfejs?
2. Jakie sBowo kluczowe Bczy metody, wBa[ciwo[ci i zdarzenia z interfejsem?
3. Czy klasa mo|e implementowa cz�[ interfejsu?
4. Ile interfejs�w mo|e implementowa klasa?
5. Jaki inny typ poza klas mo|e implementowa interfejs?
wiczenie
Stw�rz interfejs majcy metod� o nazwie , wy[wietlajc ko-
munikat o bB�dzie. Nast�pnie zadeklaruj klas� implementujc interfejs
i wy[wietlajc komunikat o bB�dach podany w parametrze metody .
Wyszukiwarka
Podobne podstrony:
Mastering Visual Basic NET Database ProgrammingVB NET Programming with Microsoft Visual Basic NET?livery GuideVisual Basic Net Szybki startVisual Basic NET Praktyczny kursVB NET Module 11 Upgrading to Visual Basic NETVisual Basic 2005 Zapiski programistyVisual Basic w programie Excel funkcje definiowane, składnia językaVisual Basic 2005 ProgramowanieVisual C 6 0 Programowanie obiektowewięcej podobnych podstron