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