plik


��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 Programming
VB NET Programming with Microsoft Visual Basic NET?livery Guide
Visual Basic Net Szybki start
Visual Basic NET Praktyczny kurs
VB NET Module 11 Upgrading to Visual Basic NET
Visual Basic 2005 Zapiski programisty
Visual Basic w programie Excel funkcje definiowane, składnia języka
Visual Basic 2005 Programowanie
Visual C 6 0 Programowanie obiektowe

więcej podobnych podstron