SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI
                                         Programowanie obiektowe
                                         w Visual Basic .NET
           KATALOG KSI¥¯EK               dla ka¿dego
                                         Autorzy: Richard Simon, Leslie Koorhan, Ken Cox
                      KATALOG ONLINE     T³umaczenie: Jadwiga Gnybek
                                         ISBN: 83-7197-783-2
       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
                    DODAJ DO KOSZYKA     Visual Basic to jêzyk programowania pozwalaj¹cy nawet pocz¹tkuj¹cym programistom
                                         pisaæ zaawansowane aplikacje wykorzystuj¹ce wszystkie mo¿liwo ci systemów
                                         operacyjnych z rodziny Windows. Jego kolejne wersje w coraz wiêkszym stopniu
         CENNIK I INFORMACJE             korzysta³y z technik programowania zorientowanego obiektowo (OOP). Najnowsza
                                         z nich, Visual Basic .NET jest uwieñczeniem tej ewolucji.
                   ZAMÓW INFORMACJE      Je li chcesz tworzyæ aplikacje w VB .NET, musisz nauczyæ siê programowaæ obiektowo.
                     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.
                                         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               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       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
               Wstęp ............................................................................................. 13
               Jak zorganizowana jest ta ksią ka? ...................................................................................14
               Konwencje u yte w ksią ce ..............................................................................................15
Rozdział 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 właś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
                   Wywołanie obiektu SmartMsg ...................................................................................28
                   Wyświetlanie obiektu SmartMsg................................................................................29
                   Obsługa zdarzeń OK i Anuluj.....................................................................................30
               Łączymy wszystko w całość .............................................................................................31
                   Sub main()...................................................................................................................31
                   Ustawianie parametrów startowych............................................................................31
               Podsumowanie ..................................................................................................................32
               Pytania i odpowiedzi .........................................................................................................32
               Warsztaty...........................................................................................................................33
                   Quiz.............................................................................................................................33
                   Ćwiczenie....................................................................................................................33
Rozdział 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
               Właściwości ......................................................................................................................43
4                                               Programowanie obiektowe w Visual Basic .NET dla każdego


              Metody i ich działanie .......................................................................................................44
              Zdarzenia i delegaty ..........................................................................................................45
              Konstruktory......................................................................................................................47
              Destruktory........................................................................................................................48
              Interfejsy............................................................................................................................49
              Podsumowanie ..................................................................................................................50
              Pytania i odpowiedzi .........................................................................................................50
              Warsztaty...........................................................................................................................51
                  Quiz.............................................................................................................................51
                  Ćwiczenie....................................................................................................................51
Rozdział 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
Rozdział 4. Tworzenie nowych obiektów na bazie obiektów już istniejących......... 67
              Mechanizm dziedziczenia .................................................................................................68
                  Klasa bazowa ..............................................................................................................68
                  Dziedziczenie klas ......................................................................................................69
                  Dodawanie danych......................................................................................................70
                  Dodawanie funkcji ......................................................................................................70
              Optymalizacja klas ............................................................................................................70
                  Nadpisywanie — zmiana funkcjonalności istniejących metod ..................................71
                  Wykorzystanie klas abstrakcyjnych............................................................................72
                  Wykorzystanie pól chronionych .................................................................................73
                  Wykorzystanie pól współdzielonych ..........................................................................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
Rozdział 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


Rozdział 6. Budowa obiektów złożonych poprzez łączenie 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
Rozdział 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
Rozdział 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 łańcuch 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
Rozdział 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
6                                               Programowanie obiektowe w Visual Basic .NET dla każdego


Rozdział 10. Tworzenie interfejsu użytkownika ................................................... 143
               Wybieramy właś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
Rozdział 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
Rozdział 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
Rozdział 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


Rozdział 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
                   Właściwości ..............................................................................................................206
                   Zdarzenia...................................................................................................................207
               U ycie interfejsu jako wywołania zwrotnego .................................................................208
               Podsumowanie ................................................................................................................210
               Pytania i odpowiedzi .......................................................................................................210
               Warsztaty.........................................................................................................................211
                   Quiz...........................................................................................................................211
                   Ćwiczenie..................................................................................................................211
Rozdział 15. Obsługa zdarzeń, komunikatów i powiadomień ................................ 213
               Powtórka wiadomości o zdarzeniach i delegatach..........................................................214
                   Obsługa prostych zdarzeń .........................................................................................214
                   Obsługa zdarzeń dynamicznych za pośrednictwem delegatów ................................215
               U ycie zdarzeń i operacji asynchronicznych ..................................................................216
               Tworzenie i u ycie własnych zdarzeń i delegatów .........................................................219
                   Tworzenie własnych zdarzeń z wykorzystaniem delegatów .NET Framework .......219
                   Deklarowanie i u ycie własnych delegatów .............................................................219
                   Klasy delegatów........................................................................................................221
               U ycie zdarzeń do powiadamiania..................................................................................221
               Podsumowanie ................................................................................................................226
               Pytania i odpowiedzi .......................................................................................................226
               Warsztaty.........................................................................................................................226
                   Quiz...........................................................................................................................227
                   Ćwiczenie..................................................................................................................227
Rozdział 16. Przechwytywanie błędów................................................................ 229
               Strukturalna obsługa wyjątków.......................................................................................230
                   U ywanie poleceń Try i Catch..................................................................................230
                   Zagnie d ona obsługa błędów..................................................................................232
                   U ycie bloku Finally.................................................................................................233
                   Generowanie wyjątków ............................................................................................235
               Tworzenie i u ycie własnych klas wyjątków..................................................................238
               Podsumowanie ................................................................................................................239
               Pytania i odpowiedzi .......................................................................................................239
               Warsztaty.........................................................................................................................240
                   Quiz...........................................................................................................................240
                   Ćwiczenia..................................................................................................................240
Rozdział 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 kanałów w procesie komunikacji........................................................................246
8                                              Programowanie obiektowe w Visual Basic .NET dla każdego


              Budowa klienta i serwera połączonych za pośrednictwem TCP.....................................247
                  Aplikacja serwera dla obiektów zdalnych ................................................................247
                  Budowanie klienta wykorzystującego zdalny obiekt................................................250
              Podsumowanie ................................................................................................................253
              Pytania i odpowiedzi .......................................................................................................253
              Warsztaty.........................................................................................................................254
                  Quiz...........................................................................................................................254
                  Ćwiczenia..................................................................................................................254
Rozdział 18. Projektowanie aplikacji zarządzającej 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
Rozdział 19. Tworzenie aplikacji zarządzającej projektem ................................... 267
              Tworzenie modułów klas ................................................................................................267
              Tworzenie interfejsu........................................................................................................268
              Tworzenie klas ................................................................................................................269
                  Klasa Employee ........................................................................................................270
                  Klasy potomne ..........................................................................................................274
                  Pozostałe klasy..........................................................................................................277
              Podsumowanie ................................................................................................................283
              Pytania i odpowiedzi .......................................................................................................283
              Warsztaty.........................................................................................................................283
                  Quiz...........................................................................................................................284
                  Ćwiczenia..................................................................................................................284
Rozdział 20. Dodawanie cech funkcjonalnych do aplikacji .................................. 285
              Projektowanie klas wizualnych.......................................................................................286
              Tworzenie klas wizualnych.............................................................................................287
                  Komponowanie formularza ......................................................................................287
                  Przeglądanie kodu generowanego.............................................................................290
              Tworzenie formularza .....................................................................................................291
                  Rozmieszczanie elementów formularza pracownika................................................292
                  Przegląd kodu formularza pracownika .....................................................................294
                  Rozmieszczanie elementów formularza produktu ....................................................298
                  Przeglądanie kodu formularza produktu...................................................................299
                  Rozmieszczanie elementów formularza projektu .....................................................301
                  Przeglądanie kodu formularza projektu ....................................................................302
                  Rozmieszczanie elementów formularza elementu projektu .....................................305
                  Przeglądanie kodu formularza elementu projektu ....................................................305
              Podsumowanie ................................................................................................................306
              Pytania i odpowiedzi .......................................................................................................307
              Warsztaty.........................................................................................................................307
                  Quiz...........................................................................................................................307
                  Ćwiczenia..................................................................................................................307
Spis treści                                                                                                                                      9


Rozdział 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 modułów klas...............................................................................................315
                  Metoda Save()...........................................................................................................315
                  Metoda Read() ..........................................................................................................320
                  Metoda Delete() ........................................................................................................322
                  Klasa Resource..........................................................................................................322
              Przeglądanie 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
              Rozdział 1., „Programowanie zorientowane obiektowo — budowa aplikacji
               sterowanej zadaniami”..................................................................................................327
                  Quiz...........................................................................................................................327
                  Ćwiczenia..................................................................................................................327
              Rozdział 2., „Terminologia wykorzystywana w OOP” ..................................................330
                  Quiz...........................................................................................................................330
                  Ćwiczenia..................................................................................................................331
              Rozdział 3., „Zawieranie danych i cech w obiekcie”......................................................331
                  Quiz...........................................................................................................................331
                  Ćwiczenia..................................................................................................................331
              Rozdział 4., „Tworzenie nowych obiektów na bazie obiektów ju istniejących” ..........332
                  Quiz...........................................................................................................................332
                  Ćwiczenia..................................................................................................................332
              Rozdział 5., „Nadawanie obiektom cech polimorficznych” ...........................................334
                  Quiz...........................................................................................................................334
                  Ćwiczenia..................................................................................................................334
              Rozdział 6., „Budowa obiektów zło onych poprzez łączenie obiektów”.......................336
                  Quiz...........................................................................................................................336
                  Ćwiczenia..................................................................................................................336
              Rozdział 7., „Poznajemy środowisko programistyczne Visual Basic .NET” .................337
                  Quiz...........................................................................................................................337
                  Ćwiczenia..................................................................................................................337
              Rozdział 8., „Typy danych w Visual Basic .NET” .........................................................338
                  Quiz...........................................................................................................................338
                  Ćwiczenia..................................................................................................................338
              Rozdział 9., „Organizowanie klas w grupy” ...................................................................339
                  Quiz...........................................................................................................................339
                  Ćwiczenia..................................................................................................................339
              Rozdział 10., „Tworzenie interfejsu u ytkownika” ........................................................339
                  Quiz...........................................................................................................................339
                  Ćwiczenia..................................................................................................................340
10                                               Programowanie obiektowe w Visual Basic .NET dla każdego


                Rozdział 11., „Tworzenie i u ywanie komponentów”....................................................340
                   Quiz...........................................................................................................................340
                   Ćwiczenia..................................................................................................................341
                Rozdział 12., „Budowa aplikacji WWW”.......................................................................342
                   Quiz...........................................................................................................................342
                   Ćwiczenia..................................................................................................................342
                Rozdział 13., „Instalowanie projektów .NET Visual Basic” ..........................................343
                   Quiz...........................................................................................................................343
                   Ćwiczenia..................................................................................................................343
                Rozdział 14., „Praca z interfejsami obiektów” ...............................................................344
                   Quiz...........................................................................................................................344
                   Ćwiczenia..................................................................................................................344
                Rozdział 15., „Obsługa zdarzeń, komunikatów i powiadomień” ...................................344
                   Quiz...........................................................................................................................344
                   Ćwiczenia..................................................................................................................345
                Rozdział 16., „Przechwytywanie błędów”......................................................................346
                   Quiz...........................................................................................................................346
                   Ćwiczenia..................................................................................................................346
                Rozdział 17., „Projektowanie i u ywanie obiektów zdalnych” ......................................347
                   Quiz...........................................................................................................................347
                   Ćwiczenia..................................................................................................................347
                Rozdział 18., „Projektowanie aplikacji zarządzającej projektem” .................................348
                   Quiz...........................................................................................................................348
                   Ćwiczenia..................................................................................................................349
                Rozdział 19., „Tworzenie aplikacji zarządzającej projektem” .......................................350
                   Quiz...........................................................................................................................350
                   Ćwiczenia..................................................................................................................350
                Rozdział 20., „Dodawanie cech funkcjonalnych do aplikacji”.......................................351
                   Quiz...........................................................................................................................351
                   Ćwiczenia..................................................................................................................351
                Rozdział 21., „Rozszerzanie funkcjonalności aplikacji” ................................................352
                   Quiz...........................................................................................................................352
                   Ćwiczenia..................................................................................................................352
Dodatek B Pies... z klasą................................................................................ 355
                Tworzenie klasy bazowej ................................................................................................356
                Wykorzystanie klasy bazowej.........................................................................................357
                Rozwijając „pieską logikę” .............................................................................................358
                Podsumowanie ................................................................................................................360
                Skorowidz...................................................................................... 361
Rozdział 14.
Praca
z interfejsami obiektów
   W poprzednich wersjach Visual Basica jedynie interfejsy dawały 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 rozwiązaniem w przypadku, gdy potrzebna jest podobna funkcjonal-
   ność w ró nych implementacjach kilku klas mających ze sobą niewiele wspólnego.

   W rozdziale tym przyjrzymy się bli ej roli interfejsów w Visual Basic .NET i sposo-
   bom ich najwłaściwszego wykorzystania w aplikacjach .NET. Poniewa w poprzed-
   nich rozdziałach omówione zostały podstawowe zagadnienia związane 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 wewnątrz definicji klas,
       rozpoznawania sytuacji, w której wykorzystanie interfejsu jest najlepszym
       rozwiązaniem,
       u ycia interfejsów do połączeń zwrotnych.



Interfejsy i OOP
   Interfejsy, podobnie jak klasy, definiują zbiór właściwości, metod i zdarzeń. 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 właściwa imple-
        mentacja mo e być zmieniana bez zmiany istniejącego kodu programu korzysta-
        jącego z tych interfejsów. W rzeczywistości zmianie ulec mogą całe klasy i tak
        długo, 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 przykład combo box składa 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. Przykładowy interfejs kontrolki Combo Box

           +PVGTHCEG +7+%QPVTQN
             5WD 2CKPV

           'PF +PVGTHCEG

           +PVGTHCEG +6GZV$QZ
             +PJGTKVU +7+%QPVTQN
             5WD 5GV6GZV
$[8CN XCNWG #U 5VTKPI
           'PF +PVGTHCEG

           +PVGTHCEG +.KUV$QZ
             +PJGTKVU +7+%QPVTQN

             5WD 5GV+VGOU
$[8CN KVGOU
 #U 5VTKPI
           'PF +PVGTHCEG

           +PVGTHCEG +%QODQ$QZ
             +PJGTKVU +6GZV$QZ +.KUV$QZ
           'PF +PVGTHCEG


        Interfejs potomny dziedziczy po interfejsie bazowym wszystkie jego pola. Dlatego te
        zarówno interfejs +VGZV$QZ jak i +.KUV$QZ posiadają podprogram 2CKPV
. Interfejs
        +%QODQ$QZ posiada natomiast podprogramy 5GV6GZV
, 5GV+VGOU
i 2CKPV
. Pomimo
         e podprogram 2CKPV
 przeniesiony jest z obu interfejsów bazowych, interfejs +%QO
        DQ$QZ ma tylko jedną jego implementację.
Rozdział 14. ♦ 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 nieodłączną cechą interfejsów, poniewa z zało enia
        nie posiadają one implementacji. Dlatego te ka da klasa implementująca interfejs
        posiada odmienną jego implementację, co stanowi istotę polimorfizmu.

        Przykładem polimorfizmu jest definiowanie kilku klas, które implementują ten sam
        interfejs. U ywając interfejsów zamiast klas, zauwa amy, w jaki sposób interfejsy ob-
        sługują polimorfizm. Listing 14.2 pokazuje u ycie interfejsów w serii obiektów będą-
        cych wielokątami.

Listing 14.2. Polimorfizm interfejsów
           2WDNKE +PVGTHCEG 5JCRG
             (WPEVKQP +U2V+P5JCRG
$[8CN 2V #U 5[UVGOTCYKPI2QKPV #U $QQNGCP
           'PF +PVGTHCEG

           2WDNKE %NCUU 4GEVCPING
             +ORNGOGPVU 5JCRG

             2TKXCVG TGEV #U TCYKPI4GEVCPING

             2WDNKE (WPEVKQP 2V+P4GEV
$[8CN 2V #U 5[UVGOTCYKPI2QKPV #U $QQNGCP A
                 +ORNGOGPVU 5JCRG+U2V+P5JCRG
               2V+P4GEV  2V'SWCNU
TGEV
             'PF (WPEVKQP
           'PF %NCUU

           2WDNKE %NCUU %KTENG
             +ORNGOGPVU 5JCRG

             2TKXCVG TIP #U TCYKPI4GIKQP

             2WDNKE (WPEVKQP 2V+P%KTENG
$[8CN 2V #U 5[UVGOTCYKPI2QKPV #U $QQNGCP A
                +ORNGOGPVU 5JCRG+U2V+P5JCRG
               2V+P%KTENG  2V'SWCNU
TIP
             'PF (WPEVKQP
           'PF %NCUU

           5WD %JGEM2QKPV
$[8CN 5JCRG1DLGEV #U 5JCRG $[8CN 2V #U 5[UVGOTCYKPI2QKPV
             +H 
5JCRG1DLGEV+U2V+P5JCRG
2V 6JGP
               $GGR

             'PF +H
           'PF 5WD

           5WD 6GUV

             KO 2V #U 5[UVGOTCYKPI2QKPV
             KO 4GEV1DLGEV #U 4GEVCPING
             KO %KTENG1DLGEV #U %KTENG

             %JGEM2QKPV
4GEV1DLGEV 2V
             %JGEM2QKPV
%KTENG1DLGEV 2V
           'PF 5WD
202                                    Programowanie obiektowe w Visual Basic .NET dla każdego


         Zauwa my, w jaki sposób podprogram %JGEM2QKPV
 pobiera 5JCRG jako parametr,
         a następnie u ywa metody interfejsu. W dalszej kolejności wywoływana jest metoda
         implementująca 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, zachowując
         jednocześnie niezmienioną nazwę metody wewnątrz klasy. Mo liwe jest równie za-
         stąpienie dowolnego obiektu implementującego interfejs 5JCRG jako parametru pod-
         programu %JGEM2QKPV
.



Tworzenie interfejsu Contract
         Interfejs reprezentuje „umowę” z klasą. Klasa, u ywając słowa kluczowego +ORNG
         OGPVU, „przystaje na umowę” mówiącą o tym, e będzie implementować interfejs. Po
         wyra eniu przez klasę chęci implementacji interfejsu jest ona zobowiązana do im-
         plementacji całego interfejsu. Klasa nie mo e zaimplementować części interfejsu,
         wypełniając 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 całą pewnością zostaną one
         zaimplementowane.

         Nale y pamiętać, e klasa mo e wypełnić umowę, dostarczając 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 dotyczących para-
         metrów i (w przypadku funkcji) zwracanych wartości. Wszystko inne zale ne jest od
         klasy implementującej interfejs. W rzeczywistości zaletą u ycia interfejsów jest to, e
         klasa decyduje o zastosowaniu określonej implementacji w konkretnym przypadku.
         Przykładowa 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
            2WDNKE +PVGTHCEG +'ORNQ[GG
              (WPEVKQP )GV5CNCT[
 #U GEKOCN
            'PF +PVGTHCEG

            2WDNKE +PVGTHCEG +2CTGPV
              (WPEVKQP *CU%JKNFTGP
 #U $QQNGCP
            'PF +PVGTHCEG

            2WDNKE +PVGTHCEG +(TKGPF
              (WPEVKQP 0WODGT1H(TKGPFU
 #U +PVGIGT
            'PF +PVGTHCEG

            2WDNKE %NCUU   2GTUQP
              +ORNGOGPVU   +'ORNQ[GG
              +ORNGOGPVU   +2CTGPV
              +ORNGOGPVU   +(TKGPF
Rozdział 14. ♦ Praca z interfejsami obiektów                                              203


            2TKXCVG OAF5CNCT[ #U GEKOCN
            2TKXCVG OAD%JKNFTGP #U $QQNGCP
            2TKXCVG OAP(TKGPFU #U +PVGIGT

            2WDNKE (WPEVKQP 5CNCT[
 #U GEKOCN +ORNGOGPVU +'ORNQ[GG)GV5CNCT[
              5CNCT[  OAF5CNCT[
            'PF (WPEVKQP

            2WDNKE (WPEVKQP *CU%JKNFTGP
 #U $QQNGCP +ORNGOGPVU +2CTGPV*CU%JKNFTGP
              *CU%JKNFTGP  OAD%JKNFTGP
            'PF (WPEVKQP

            2WDNKE (WPEVKQP *QY/CP[(TKGPFU
 A
            #U +PVGIGT +ORNGOGPVU +(TKGPF0WODGT1H(TKGPFU
              *QY/CP[(TKGPFU  OAP(TKGPFU
            'PF (WPEVKQP
          'PF %NCUU

          /QFWNG 2GTUQP7UGT
            5WD %JGEM5CNCT[
$[8CN 'ORNQ[GG #U +'ORNQ[GG
                9 V[O OKGLUEW PCNG [ WOKG EKè MQF RTQITCOW
                6[NMQ )GV5CNCT[
 OQ G D[è W [YCPC FNC VGIQ QDKGMVW
            'PF 5WD

            5WD %JGEM(COKN[
$[8CN 2CTGPV #U +2CTGPV
                9 V[O OKGLUEW PCNG [ WOKG EKè MQF RTQITCOW
                6[NMQ *CU%JKNFTGP
 OQ G D[è W [YCPC FNC VGIQ QDKGMVW
            'PF 5WD

            5WD %JGEM(TKGPFU
$[8CN /[(TKGPF #U +(TKGPF
                9 V[O OKGLUEW PCNG [ WOKG EKè MQF RTQITCOW
                6[NMQ 0WODGT1H(TKGPFU
 OQ G D[è W [YCPC FNC VGIQ QDKGMVW
            'PF 5WD

            5WD 6GUV2GTUQP

              KO 2GTUQP #U 2GTUQP  0GY 2GTUQP


              %JGEM5CNCT[
2GTUQP
              %JGEM(COKN[
2GTUQP
              %JGEM(TKGPFU
2GTUQP
            'PF 5WD
          'PF /QFWNG


        Dla kompletności definicji klasy 2GTUQP niezbędne jest zaimplementowanie wszyst-
        kich metod zdefiniowanych w interfejsach +'ORNQ[GG, +2CTGPV i +(TKGPF. Klasa 2GTUQP
        definiować mo e równie własne cechy charakterystyczne, jednak e te metody, wła-
        ś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 6GUV2GTUQP
 mo liwe
        jest u ycie klasy 2GTUQP. Jest to szczególnie u yteczne podczas projektowania aplika-
        cji posiadającej kilka niezale nych lub luźno powiązanych klas, które u ywane będą
        zamiennie. Stosując typ interfejsu jako parametr, u ytkownik widzi jedynie metody,
        właściwości i zdarzenia zdefiniowane w interfejsie. Reszta implementacji wewnątrz
        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 przykładó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óźniej, 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 przykład wewnątrz 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 została zadeklarowana jako 2WDNKE. Nawet
         jeśli klasa implementująca implementuje metody jako 2TKXCVG dla u ytkownika ko-
         rzystającego z interfejsu, są one dostępne tak, jakby były zadeklarowane jako 2WDNKE.

         Posiadanie wszystkich metod interfejsu zadeklarowanych jako publiczne na sens, jeśli
         zdefiniowanie interfejsu było 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 znaleźć się w interfejsie coś, co zostało zadeklarowane jako prywatne? Działa-
         nie takie nie ma adnego logicznego wytłumaczenia z wyjątkiem tego, e mogłoby 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,
         zdarzeń i właś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 właściwości.

         Ostatnim problemem, który omówimy, jest nieco frustrująca 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 wywołać. Listing 14.4 pokazuje taki właśnie przypadek.

Listing 14.4. Interfejs z kolizją nazw u ywających CType() do wskazania właściwego sposobu u ycia metod
            2WDNKE +PVGTHCEG +#TTC[
              (WPEVKQP %QWPV
 #U +PVGIGT
            'PF +PVGTHCEG

            2WDNKE +PVGTHCEG +%QWPVGT
              (WPEVKQP %QWPV
 #U +PVGIGT
            'PF +PVGTHCEG

            2WDNKE +PVGTHCEG +%QWPV#TTC[
              +PJGTKVU +#TTC[
              +PJGTKVU +%QWPVGT
            'PF +PVGTHCEG
Rozdział 14. ♦ Praca z interfejsami obiektów                                             205


          /QFWNG %QWPV#TTC[6GUV
            5WD 6GUV
$[8CN Z #U +%QWPV#TTC[
              KO P%QWPV  %6[RG
Z +%QWPVGT%QWPV

              KO P#TTC[%QWPV  %6[RG
Z +#TTC[%QWPV

               2QQUVC [ MQF RTQITCOW
            'PF 5WD
          'PF /QFWNG


        W kodzie z listingu 14.4 funkcja %6[RG
 konwertuje wyra enie precyzujące pierwszy
        argument (w tym przypadku Z) do typu u ywanego w drugim parametrze. Dzięki te-
        mu podczas wykonywania kodu wybierany jest właściwy interfejs i u ywana jest
        właściwa metoda %QWPV.

        Nieco wcześniej wspominaliśmy, e jeśli ta sama metoda zawarta jest wewnątrz 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 dostarczał odpowiednich funkcji, metod, zdarzeń i właściwości. Interfejs mo-
         e być implementowany zarówno przez klasy, jak i definicje struktur zawierających
        słowo kluczowe +ORNGOGPVU.

        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.
          5VTWEVWTG /[5VTWEVWTG
            +ORNGOGPVU +/[+PVGTHCEG

            2WDNKE (WPEVKQP +PVGTHCEG(WPEVKQP
 A
                     #U +PVGIGT +ORNGOGPVU +/[+PVGTHCEG/[(WPEVKQP
            'PF (WPEVKQP
          'PF 5VTWEVWTG

        Jak ju wspominaliśmy wcześniej, interfejs mo e deklarować metody (podprogramy
        i funkcje), zdarzenia i właś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ą wewnątrz klas lub struktur z wykorzystaniem słowa kluczowego +ORNG
        OGPVU. Jedynym wymaganiem implementacji metody interfejsu jest to, aby metoda
        klasy lub struktury posiadała te same parametry i zwracała wartości zadeklarowane
        w metodzie interfejsu.
206                                 Programowanie obiektowe w Visual Basic .NET dla każdego


        Tak długo 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 przykład, zamieszczony poni ej kod pokazuje, jak w jednej funkcji zaimplemen-
        tować dwie metody %QWPV
 zdefiniowane w listingu 14.4:
           2WDNKE (WPEVKQP %QWPV
 #U +PVGIGT +ORNGOGPVU +#TTC[%QWPV
 +%QWPVGT%QWPV

             %QWPV
  OAP%QWPV
           'PF (WPEVKQP

        Poprzez implementowanie wielu metod interfejsów za pomocą tej samej metody kla-
        sy lub struktury mo liwe jest powiązanie metod wielu interfejsów z tą samą funkcjo-
        nalnością bez konieczności pisania dodatkowego kodu.


Właściwości
        Implementacja właściwości interfejsu podobna jest do implementacji metod. Reali-
        zowane jest to za pomocą słowa kluczowego +ORNGOGPVU przypisującego właściwości
        klas lub struktur do właściwości interfejsów. Właściwości klas implementujące wła-
        ściwości interfejsu muszą charakteryzować się tym samym typem (CRKUQFE[V). Li-
        sting 14.5 ilustruje implementację właściwości interfejsu.

Listing 14.5. Implementacja właściwości interfejsu
           2WDNKE +PVGTHCEG +%QORCP[
             2TQRGTV[ 0COG
 #U 5VTKPI
           'PF +PVGTHCEG

           2WDNKE %NCUU $WUKPGUU
             +ORNGOGPVU +%QORCP[

              KO OAU%QORCP[0COG #U 5VTKPI

              2WDNKE 2TQRGTV[ %QORCP[0COG
 #U 5VTKPI +ORNGOGPVU +%QORCP[0COG
                )GV
                  %QORCP[0COG  OAU%QORCP[0COG
                'PF )GV
                5GV
$[8CN 8CNWG #U 5VTKPI
                  OAU%QORCP[0COG  8CNWG
                'PF 5GV
              'PF 2TQRGTV[

           'PF %NCUU


        Jeśli właściwość zadeklarowana jest w interfejsie jako 4GCF1PN[ lub 9TKVG1PN[, to im-
        plementująca go klasa lub struktura musi implementować te właściwości z takimi sa-
        mymi atrybutami.
Rozdział 14. ♦ Praca z interfejsami obiektów                                            207


Zdarzenia
         Podobnie jak w przypadku metod i właściwości, zdarzenia implementowane są po-
         przez klasy lub struktury za pomocą słowa kluczowego +ORNGOGPVU. Jak wspominali-
         śmy ju w rozdziale 2., zdarzenia w definicjach klas nie są powiązane z kodem. Skut-
         kiem u ycia słowa kluczowego +ORNGOGPVU jest literalne połączenie 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 zdarzeń interfejsu
              2WDNKE +PVGTHCEG +%QORCP[
                2TQRGTV[ 0COG
 #U 5VTKPI
                'XGPV 0COG%JCPIGF

              'PF +PVGTHCEG

              2WDNKE %NCUU $WUKPGUU
                +ORNGOGPVU +%QORCP[

                KO OAU%QORCP[0COG #U 5VTKPI

                2WDNKE 2TQRGTV[ %QORCP[0COG
 #U 5VTKPI +ORNGOGPVU +%QORCP[0COG
                  )GV
                    %QORCP[0COG  OAU%QORCP[0COG
                  'PF )GV
                  5GV
$[8CN 8CNWG #U 5VTKPI
                    OAU%QORCP[0COG  8CNWG

                     5[IPC Q FCTGPKW  PCYC QUVC C OKGPKQPC
                    4CKUG'XGPV 0COG%JCPIGF

                  'PF 5GV
                'PF 2TQRGTV[

                2WDNKE 'XGPV 0COG%JCPIGF
 +ORNGOGPVU +%QORCP[0COG%JCPIGF

              'PF %NCUU

              /QFWNG %QORCP[6GUV
                5WD 1P0COG%JCPIGF

                  $GGR

                'PF 5WD

                5WD 6GUV
$[8CN %QORCP[ #U +%QORCP[
                   QFCPKG WEJY[VW KPVGTHGLUW FCTGPKC 0COG%JCPIGF
                  #FF*CPFNGT %QORCP[0COG%JCPIGF #FFTGUU1H 1P0COG%JCPIGF

                   6GP HTCIOGPV MQFW RQYQFWLG Y[IGPGTQYCPKG FCTGPKC
                  %QORCP[0COG  /[ %QORCP[
                'PF 5WD
              'PF /QFWNG
208                                  Programowanie obiektowe w Visual Basic .NET dla każdego



Użycie interfejsu
jako wywołania zwrotnego
        U ywane poprawnie interfejsy mają wiele zalet. Mamy mo liwość tworzenia interfej-
        sów wolnych od problemów występujących podczas zmiany kodu bazowego. Prowa-
        dzi to równie do większej elastyczności implementacji.

        Innym przykładem u ycia interfejsów jest zdefiniowane wywołania zwrotnego (call-
        back). Na przykład, jeśli kilka typów implementuje ten sam interfejs, mo e być on
        wykorzystany jako metoda wywołania zwrotnego w sytuacji, w której pojedyncze
        wywołanie zwrotne jest niewystarczające. U ycie interfejsu pozwala na wywołanie
        zwrotne zawierające kilka metod, właściwości lub zdarzeń. Listing 14.7 przedstawia
        sposób u ycia interfejsu zdefiniowanego jako wywołanie zwrotne. Ilekroć interfejs
        ten jest implementowany, obiekt implementujący go wie, jaki interfejs powinien wy-
        wołać zwrotnie. W odró nieniu od pojedynczej funkcji lub podprogramu wywołanie
        zwrotne jest kompletnym interfejsem.

Listing 14.7. Deklaracja wywołania zwrotnego sterowania interfejsem u ytkownika
              2WDNKE +PVGTHCEG +7+%QPVTQN
                5WD 2CKPV

                5WD %QPVTQN2TGUUGF

                (WPEVKQP +U2V+P%QPVTQN
$[8CN 2V #U TCYKPI2QKPV #U $QQNGCP
                2TQRGTV[ %QPVTQN4GEV
 #U TCYKPI4GEVCPING
                'XGPV %QPVTQN*KV

              'PF +PVGTHCEG


        Implementacja interfejsu +7+%QPVTQN poprzez ró ne klasy dostarcza wspólnego inter-
        fejsu u ywanego podczas pracy z kontrolkami. Listing 14.8 pokazuje prostą imple-
        mentację kontrolki przycisku (2WUJ$WVVQP) i przycisku opcji (4CFKQ$WVVQP).

Listing 14.8. Implementacja interfejsu IUIControl poprzez klasy PushButton i RadioButton
           2WDNKE %NCUU 2WUJ$WVVQP
             +ORNGOGPVU +7+%QPVTQN

              KO OATE4GEV #U TCYKPI4GEVCPING

               +ORNGOGPVCELC KPVGTHGLUW
               
              2WDNKE 5WD 2CKPV
 +ORNGOGPVU +7+%QPVTQN2CKPV
                  4[UQYCPKG MQPVTQNMK
              'PF 5WD

              2WDNKE (WPEVKQP +U2V+P%QPVTQN
$[8CN 2V #U TCYKPI2QKPV A
              #U $QQNGCP +ORNGOGPVU +7+%QPVTQN+U2V+P%QPVTQN
                +U2V+P%QPVTQN  2V'SWCNU
%QPVTQN4GEV

              'PF (WPEVKQP

              2WDNKE 2TQRGTV[ %QPVTQN4GEV
 #U TCYKPI4GEVCPING A
              +ORNGOGPVU +7+%QPVTQN%QPVTQN4GEV
Rozdział 14. ♦ Praca z interfejsami obiektów                                   209


              )GV
                %QPVTQN4GEV  OATE4GEV
              'PF )GV
              5GV
$[8CN 8CNWG #U TCYKPI4GEVCPING
                OATE4GEV  8CNWG
              'PF 5GV
            'PF 2TQRGTV[

            2WDNKE 5WD %QPVTQN2TGUUGF
 +ORNGOGPVU +7+%QPVTQN%QPVTQN2TGUUGF
              4CKUG'XGPV %QPVTQN*KV

            'PF 5WD

            2WDNKE 'XGPV %QPVTQN*KV
 +ORNGOGPVU +7+%QPVTQN%QPVTQN*KV

             2QQUVC C Eú è MQFW MNCU[
             

          'PF %NCUU

          2WDNKE %NCUU 4CFKQ$WVVQP
            +ORNGOGPVU +7+%QPVTQN

            KO OATE4GEV #U TCYKPI4GEVCPING

             +ORNGOGPVCELC KPVGTHGLUW
             
            2WDNKE 5WD 2CKPV
 +ORNGOGPVU +7+%QPVTQN2CKPV
                4[UQYCPKG MQPVTQNMK
            'PF 5WD

            2WDNKE (WPEVKQP +U2V+P%QPVTQN
$[8CN 2V #U TCYKPI2QKPV A
            #U $QQNGCP +ORNGOGPVU +7+%QPVTQN+U2V+P%QPVTQN
              +U2V+P%QPVTQN  2V'SWCNU
%QPVTQN4GEV

            'PF (WPEVKQP

            2WDNKE 2TQRGTV[ %QPVTQN4GEV
 #U TCYKPI4GEVCPING A
            +ORNGOGPVU +7+%QPVTQN%QPVTQN4GEV
              )GV
                %QPVTQN4GEV  OATE4GEV
              'PF )GV
              5GV
$[8CN 8CNWG #U TCYKPI4GEVCPING
                OATE4GEV  8CNWG
              'PF 5GV
       'PF 2TQRGTV[

            2WDNKE 5WD %QPVTQN2TGUUGF
 +ORNGOGPVU +7+%QPVTQN%QPVTQN2TGUUGF
              4CKUG'XGPV %QPVTQN*KV

            'PF 5WD

            2WDNKE 'XGPV %QPVTQN*KV
 +ORNGOGPVU +7+%QPVTQN%QPVTQN*KV

             2QQUVC C Eú è MQFW MNCU[
             

          'PF %NCUU
210                                 Programowanie obiektowe w Visual Basic .NET dla każdego


        Implementacja interfejsu +7+%QPVTQN zale y od kontrolek i ka da z kontrolek mo e
        mieć swoją własną implementację. U ywanie kontrolek jest więc teraz ułatwione, po-
        niewa u ytkownicy, chcąc wywołać zwrotnie kontrolkę, kontaktują się jedynie z in-
        terfejsem. Ilustruje to listing 14.9.

Listing 14.9. U ycie interfejsu IUIControl do wywołania zwrotnego do klasy w przypadku wystąpienia
zdarzenia
           2WDNKE %NCUU /[(QTO
             +PJGTKVU 5[UVGO9KPFQYU(QTOU(QTO

             KO 7+%QPVTQNU
 #U 1DLGEV

             2WDNKE 5WD 1P/QWUG%NKEM
$[8CN UGPFGT #U 1DLGEV A
             $[8CN G #U 'XGPV#TIU *CPFNGU /[$CUG%NKEM
               KO K #U +PVGIGT

               (QT K   6Q 
                 +H %6[RG
7+%QPVTQNU
K +7+%QPVTQN+U2V+P%QPVTQN
/QWUG2QUKVKQP
 6JGP
                   %6[RG
7+%QPVTQNU
K +7+%QPVTQN%QPVTQN2TGUUGF

                   %6[RG
7+%QPVTQNU
K +7+%QPVTQN2CKPV

                 'PF +H
               0GZV
             'PF 5WD
           'PF %NCUU


        Oczywiście mo liwa jest równie współpraca interfejsów z asynchronicznymi wy-
        wołaniami zwrotnymi słu ącymi do komunikacji sieciowej, dostępowi do plików itp.



Podsumowanie
        Poznaliśmy właś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 implementująca je klasa lub struktura
        tworzy własną, 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?

        Odpowiedź: To prawda, interfejsy nie są dziś wykorzystywane tak często jak w po-
        przednich wersjach Visual Basica, gdy dziedziczenie i polimorfizm nie były mo li-
        we na poziomie klas. Jednak e mają one nadal przewagę nad klasami, poniewa
Rozdział 14. ♦ 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 przyszłe modyfikacje.

        Pytanie: Czy interfejsy w .NET uległy du ym zmianom? Czy mo emy nadal
        u ywać ich poza aplikacją lub eksportować ?

        Odpowiedź: Interfejsy w Visual Basic .NET są generalnie podobne do tych z po-
        przednich wersji Visual Basica. .NET Framework ukrywa wiele szczegółów imple-
        mentacyjnych, ale w rzeczywistości bazuje on nadal na identyfikatorach GUID, a da-
        ne, przechodząc przez interfejs, nadal są przekształcane.



Warsztaty
        W ramach zajęć warsztatowych proponować będziemy zagadki i ćwiczenia, które
        pomogą uporządkować i przećwiczyć materiał poznany w kończącym się właśnie
        rozdziale ksią ki. Odpowiedzi przedstawiono w dodatku A na końcu ksią ki.


Quiz
          1. Jakie słowo kluczowe deklaruje interfejs?
          2. Jakie słowo kluczowe łączy metody, właś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 'TTQT mający metodę o nazwie KURNC['TTQT
, wyświetlającą ko-
        munikat o błędzie. Następnie zadeklaruj klasę /[%NCUU implementującą interfejs 'TTQT
        i wyświetlającą komunikat o błędach podany w parametrze metody KURNC['TTQT
.

Contenu connexe

Tendances

Visual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyVisual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programisty
Wydawnictwo Helion
 
Visio 2002 dla każdego
Visio 2002 dla każdegoVisio 2002 dla każdego
Visio 2002 dla każdego
Wydawnictwo Helion
 
Visual Basic .NET. Wzorce projektowe
Visual Basic .NET. Wzorce projektoweVisual Basic .NET. Wzorce projektowe
Visual Basic .NET. Wzorce projektowe
Wydawnictwo Helion
 
Visual Basic 2005. Programowanie
Visual Basic 2005. ProgramowanieVisual Basic 2005. Programowanie
Visual Basic 2005. Programowanie
Wydawnictwo Helion
 
AutoCAD 2002 i 2004. Tworzenie makr w VBA
AutoCAD 2002 i 2004. Tworzenie makr w VBAAutoCAD 2002 i 2004. Tworzenie makr w VBA
AutoCAD 2002 i 2004. Tworzenie makr w VBA
Wydawnictwo Helion
 
Flash 8. Klatka po klatce
Flash 8. Klatka po klatceFlash 8. Klatka po klatce
Flash 8. Klatka po klatce
Wydawnictwo Helion
 
ArchiCAD 10
ArchiCAD 10ArchiCAD 10
ArchiCAD 10
Wydawnictwo Helion
 
ASP.NET 2.0. Projektowanie aplikacji internetowych
ASP.NET 2.0. Projektowanie aplikacji internetowychASP.NET 2.0. Projektowanie aplikacji internetowych
ASP.NET 2.0. Projektowanie aplikacji internetowych
Wydawnictwo Helion
 
Macromedia Flash 8 ActionScript. Oficjalny podręcznik
Macromedia Flash 8 ActionScript. Oficjalny podręcznikMacromedia Flash 8 ActionScript. Oficjalny podręcznik
Macromedia Flash 8 ActionScript. Oficjalny podręcznik
Wydawnictwo Helion
 
Projektowanie obiektowe. Role, odpowiedzialność i współpraca
Projektowanie obiektowe. Role, odpowiedzialność i współpracaProjektowanie obiektowe. Role, odpowiedzialność i współpraca
Projektowanie obiektowe. Role, odpowiedzialność i współpraca
Wydawnictwo Helion
 
Programowanie. Od podstaw
Programowanie. Od podstawProgramowanie. Od podstaw
Programowanie. Od podstaw
Wydawnictwo Helion
 
100 sposobów na Visual Studio
100 sposobów na Visual Studio100 sposobów na Visual Studio
100 sposobów na Visual Studio
Wydawnictwo Helion
 

Tendances (14)

Visual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programistyVisual Basic 2005. Zapiski programisty
Visual Basic 2005. Zapiski programisty
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programisty
 
Visio 2002 dla każdego
Visio 2002 dla każdegoVisio 2002 dla każdego
Visio 2002 dla każdego
 
Visual Basic .NET. Wzorce projektowe
Visual Basic .NET. Wzorce projektoweVisual Basic .NET. Wzorce projektowe
Visual Basic .NET. Wzorce projektowe
 
Visual Basic 2005. Programowanie
Visual Basic 2005. ProgramowanieVisual Basic 2005. Programowanie
Visual Basic 2005. Programowanie
 
AutoCAD 2002 i 2004. Tworzenie makr w VBA
AutoCAD 2002 i 2004. Tworzenie makr w VBAAutoCAD 2002 i 2004. Tworzenie makr w VBA
AutoCAD 2002 i 2004. Tworzenie makr w VBA
 
Flash 8. Klatka po klatce
Flash 8. Klatka po klatceFlash 8. Klatka po klatce
Flash 8. Klatka po klatce
 
ArchiCAD 10
ArchiCAD 10ArchiCAD 10
ArchiCAD 10
 
ASP.NET 2.0. Projektowanie aplikacji internetowych
ASP.NET 2.0. Projektowanie aplikacji internetowychASP.NET 2.0. Projektowanie aplikacji internetowych
ASP.NET 2.0. Projektowanie aplikacji internetowych
 
Macromedia Flash 8 ActionScript. Oficjalny podręcznik
Macromedia Flash 8 ActionScript. Oficjalny podręcznikMacromedia Flash 8 ActionScript. Oficjalny podręcznik
Macromedia Flash 8 ActionScript. Oficjalny podręcznik
 
Projektowanie obiektowe. Role, odpowiedzialność i współpraca
Projektowanie obiektowe. Role, odpowiedzialność i współpracaProjektowanie obiektowe. Role, odpowiedzialność i współpraca
Projektowanie obiektowe. Role, odpowiedzialność i współpraca
 
Programowanie. Od podstaw
Programowanie. Od podstawProgramowanie. Od podstaw
Programowanie. Od podstaw
 
CorelDRAW 11. Vademecum profesjonalisty. Tom 1
CorelDRAW 11. Vademecum profesjonalisty. Tom 1CorelDRAW 11. Vademecum profesjonalisty. Tom 1
CorelDRAW 11. Vademecum profesjonalisty. Tom 1
 
100 sposobów na Visual Studio
100 sposobów na Visual Studio100 sposobów na Visual Studio
100 sposobów na Visual Studio
 

En vedette

Tworzenie cyfrowego wideo
Tworzenie cyfrowego wideoTworzenie cyfrowego wideo
Tworzenie cyfrowego wideo
Wydawnictwo Helion
 
Asembler dla procesorów Intel. Vademecum profesjonalisty
Asembler dla procesorów Intel. Vademecum profesjonalistyAsembler dla procesorów Intel. Vademecum profesjonalisty
Asembler dla procesorów Intel. Vademecum profesjonalisty
Wydawnictwo Helion
 
Apache 2.0 dla zaawansowanych
Apache 2.0 dla zaawansowanychApache 2.0 dla zaawansowanych
Apache 2.0 dla zaawansowanych
Wydawnictwo Helion
 
Prowadzenie list dystrybucyjnych
Prowadzenie list dystrybucyjnychProwadzenie list dystrybucyjnych
Prowadzenie list dystrybucyjnych
Wydawnictwo Helion
 
Access 2002. Tworzenie baz danych
Access 2002. Tworzenie baz danychAccess 2002. Tworzenie baz danych
Access 2002. Tworzenie baz danych
Wydawnictwo Helion
 
MS Windows 2000 od środka
MS Windows 2000 od środkaMS Windows 2000 od środka
MS Windows 2000 od środka
Wydawnictwo Helion
 

En vedette (9)

Tworzenie cyfrowego wideo
Tworzenie cyfrowego wideoTworzenie cyfrowego wideo
Tworzenie cyfrowego wideo
 
Asembler dla procesorów Intel. Vademecum profesjonalisty
Asembler dla procesorów Intel. Vademecum profesjonalistyAsembler dla procesorów Intel. Vademecum profesjonalisty
Asembler dla procesorów Intel. Vademecum profesjonalisty
 
Po prostu Flash MX
Po prostu Flash MXPo prostu Flash MX
Po prostu Flash MX
 
Apache 2.0 dla zaawansowanych
Apache 2.0 dla zaawansowanychApache 2.0 dla zaawansowanych
Apache 2.0 dla zaawansowanych
 
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyPHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
 
Prowadzenie list dystrybucyjnych
Prowadzenie list dystrybucyjnychProwadzenie list dystrybucyjnych
Prowadzenie list dystrybucyjnych
 
Access 2002. Tworzenie baz danych
Access 2002. Tworzenie baz danychAccess 2002. Tworzenie baz danych
Access 2002. Tworzenie baz danych
 
MS Windows 2000 od środka
MS Windows 2000 od środkaMS Windows 2000 od środka
MS Windows 2000 od środka
 
Po prostu własny serwer internetowy
Po prostu własny serwer internetowyPo prostu własny serwer internetowy
Po prostu własny serwer internetowy
 

Similaire à Programowanie obiektowe w Visual Basic .NET dla każdego

Microsoft Visual Basic .NET 2003. Księga eksperta
Microsoft Visual Basic .NET 2003. Księga ekspertaMicrosoft Visual Basic .NET 2003. Księga eksperta
Microsoft Visual Basic .NET 2003. Księga eksperta
Wydawnictwo Helion
 
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla WindowsVisual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
Wydawnictwo Helion
 
Visual C# 2008. Projektowanie aplikacji. Pierwsze starcie
Visual C# 2008. Projektowanie aplikacji. Pierwsze starcieVisual C# 2008. Projektowanie aplikacji. Pierwsze starcie
Visual C# 2008. Projektowanie aplikacji. Pierwsze starcie
Wydawnictwo Helion
 
Wstęp do programowania w języku C#
Wstęp do programowania w języku C#Wstęp do programowania w języku C#
Wstęp do programowania w języku C#
Wydawnictwo Helion
 
C# i ASP.NET. Szybki start
C# i ASP.NET. Szybki startC# i ASP.NET. Szybki start
C# i ASP.NET. Szybki start
Wydawnictwo Helion
 
ABC Delphi 2006
ABC Delphi 2006ABC Delphi 2006
ABC Delphi 2006
Wydawnictwo Helion
 
Excel. Programowanie dla profesjonalistów
Excel. Programowanie dla profesjonalistówExcel. Programowanie dla profesjonalistów
Excel. Programowanie dla profesjonalistów
Wydawnictwo Helion
 
Spring. Zapiski programisty
Spring. Zapiski programistySpring. Zapiski programisty
Spring. Zapiski programisty
Wydawnictwo Helion
 
Visual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstawVisual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstaw
Wydawnictwo Helion
 
PHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowaniePHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowanie
Wydawnictwo Helion
 
C++Builder i Turbo C++. Podstawy
C++Builder i Turbo C++. PodstawyC++Builder i Turbo C++. Podstawy
C++Builder i Turbo C++. Podstawy
Wydawnictwo Helion
 
MS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowanaMS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowana
Wydawnictwo Helion
 
C#. Programowanie
C#. ProgramowanieC#. Programowanie
C#. Programowanie
Wydawnictwo Helion
 
Praktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie IIPraktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie II
Wydawnictwo Helion
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga eksperta
Wydawnictwo Helion
 
MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA
MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBAMS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA
MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA
Wydawnictwo Helion
 
JavaScript i DHTML. Receptury
JavaScript i DHTML. RecepturyJavaScript i DHTML. Receptury
JavaScript i DHTML. Receptury
Wydawnictwo Helion
 
ActionScript. Receptury
ActionScript. RecepturyActionScript. Receptury
ActionScript. Receptury
Wydawnictwo Helion
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistów
Wydawnictwo Helion
 

Similaire à Programowanie obiektowe w Visual Basic .NET dla każdego (20)

Visual Basic .NET. Ćwiczenia
Visual Basic .NET. ĆwiczeniaVisual Basic .NET. Ćwiczenia
Visual Basic .NET. Ćwiczenia
 
Microsoft Visual Basic .NET 2003. Księga eksperta
Microsoft Visual Basic .NET 2003. Księga ekspertaMicrosoft Visual Basic .NET 2003. Księga eksperta
Microsoft Visual Basic .NET 2003. Księga eksperta
 
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla WindowsVisual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
Visual C++ 2005 Express Edition. Tworzenie aplikacji dla Windows
 
Visual C# 2008. Projektowanie aplikacji. Pierwsze starcie
Visual C# 2008. Projektowanie aplikacji. Pierwsze starcieVisual C# 2008. Projektowanie aplikacji. Pierwsze starcie
Visual C# 2008. Projektowanie aplikacji. Pierwsze starcie
 
Wstęp do programowania w języku C#
Wstęp do programowania w języku C#Wstęp do programowania w języku C#
Wstęp do programowania w języku C#
 
C# i ASP.NET. Szybki start
C# i ASP.NET. Szybki startC# i ASP.NET. Szybki start
C# i ASP.NET. Szybki start
 
ABC Delphi 2006
ABC Delphi 2006ABC Delphi 2006
ABC Delphi 2006
 
Excel. Programowanie dla profesjonalistów
Excel. Programowanie dla profesjonalistówExcel. Programowanie dla profesjonalistów
Excel. Programowanie dla profesjonalistów
 
Spring. Zapiski programisty
Spring. Zapiski programistySpring. Zapiski programisty
Spring. Zapiski programisty
 
Visual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstawVisual C# 2005 Express Edition. Od podstaw
Visual C# 2005 Express Edition. Od podstaw
 
PHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowaniePHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowanie
 
C++Builder i Turbo C++. Podstawy
C++Builder i Turbo C++. PodstawyC++Builder i Turbo C++. Podstawy
C++Builder i Turbo C++. Podstawy
 
MS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowanaMS Project 2003. Zarządzanie projektami. Edycja limitowana
MS Project 2003. Zarządzanie projektami. Edycja limitowana
 
C#. Programowanie
C#. ProgramowanieC#. Programowanie
C#. Programowanie
 
Praktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie IIPraktyczny kurs Java. Wydanie II
Praktyczny kurs Java. Wydanie II
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga eksperta
 
MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA
MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBAMS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA
MS Office 2000 i 2002/XP. Tworzenie własnych aplikacji w VBA
 
JavaScript i DHTML. Receptury
JavaScript i DHTML. RecepturyJavaScript i DHTML. Receptury
JavaScript i DHTML. Receptury
 
ActionScript. Receptury
ActionScript. RecepturyActionScript. Receptury
ActionScript. Receptury
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistów
 

Plus de Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
Wydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
Wydawnictwo Helion
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
Wydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Wydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
Wydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Wydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Wydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
Wydawnictwo Helion
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
Wydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
Wydawnictwo Helion
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
Wydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
Wydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
Wydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
Wydawnictwo Helion
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
Wydawnictwo Helion
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
Wydawnictwo Helion
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
Wydawnictwo Helion
 

Plus de Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 

Programowanie obiektowe w Visual Basic .NET dla każdego

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI Programowanie obiektowe w Visual Basic .NET KATALOG KSI¥¯EK dla ka¿dego Autorzy: Richard Simon, Leslie Koorhan, Ken Cox KATALOG ONLINE T³umaczenie: Jadwiga Gnybek ISBN: 83-7197-783-2 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 DODAJ DO KOSZYKA Visual Basic to jêzyk programowania pozwalaj¹cy nawet pocz¹tkuj¹cym programistom pisaæ zaawansowane aplikacje wykorzystuj¹ce wszystkie mo¿liwo ci systemów operacyjnych z rodziny Windows. Jego kolejne wersje w coraz wiêkszym stopniu CENNIK I INFORMACJE korzysta³y z technik programowania zorientowanego obiektowo (OOP). Najnowsza z nich, Visual Basic .NET jest uwieñczeniem tej ewolucji. ZAMÓW INFORMACJE Je li chcesz tworzyæ aplikacje w VB .NET, musisz nauczyæ siê programowaæ obiektowo. 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. 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 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 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
  • 2. Spis treści O Autorze ....................................................................................... 11 Wstęp ............................................................................................. 13 Jak zorganizowana jest ta ksią ka? ...................................................................................14 Konwencje u yte w ksią ce ..............................................................................................15 Rozdział 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 właś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 Wywołanie obiektu SmartMsg ...................................................................................28 Wyświetlanie obiektu SmartMsg................................................................................29 Obsługa zdarzeń OK i Anuluj.....................................................................................30 Łączymy wszystko w całość .............................................................................................31 Sub main()...................................................................................................................31 Ustawianie parametrów startowych............................................................................31 Podsumowanie ..................................................................................................................32 Pytania i odpowiedzi .........................................................................................................32 Warsztaty...........................................................................................................................33 Quiz.............................................................................................................................33 Ćwiczenie....................................................................................................................33 Rozdział 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 Właściwości ......................................................................................................................43
  • 3. 4 Programowanie obiektowe w Visual Basic .NET dla każdego Metody i ich działanie .......................................................................................................44 Zdarzenia i delegaty ..........................................................................................................45 Konstruktory......................................................................................................................47 Destruktory........................................................................................................................48 Interfejsy............................................................................................................................49 Podsumowanie ..................................................................................................................50 Pytania i odpowiedzi .........................................................................................................50 Warsztaty...........................................................................................................................51 Quiz.............................................................................................................................51 Ćwiczenie....................................................................................................................51 Rozdział 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 Rozdział 4. Tworzenie nowych obiektów na bazie obiektów już istniejących......... 67 Mechanizm dziedziczenia .................................................................................................68 Klasa bazowa ..............................................................................................................68 Dziedziczenie klas ......................................................................................................69 Dodawanie danych......................................................................................................70 Dodawanie funkcji ......................................................................................................70 Optymalizacja klas ............................................................................................................70 Nadpisywanie — zmiana funkcjonalności istniejących metod ..................................71 Wykorzystanie klas abstrakcyjnych............................................................................72 Wykorzystanie pól chronionych .................................................................................73 Wykorzystanie pól współdzielonych ..........................................................................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 Rozdział 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
  • 4. Spis treści 5 Rozdział 6. Budowa obiektów złożonych poprzez łączenie 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 Rozdział 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 Rozdział 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 łańcuch 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 Rozdział 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
  • 5. 6 Programowanie obiektowe w Visual Basic .NET dla każdego Rozdział 10. Tworzenie interfejsu użytkownika ................................................... 143 Wybieramy właś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 Rozdział 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 Rozdział 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 Rozdział 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
  • 6. Spis treści 7 Rozdział 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 Właściwości ..............................................................................................................206 Zdarzenia...................................................................................................................207 U ycie interfejsu jako wywołania zwrotnego .................................................................208 Podsumowanie ................................................................................................................210 Pytania i odpowiedzi .......................................................................................................210 Warsztaty.........................................................................................................................211 Quiz...........................................................................................................................211 Ćwiczenie..................................................................................................................211 Rozdział 15. Obsługa zdarzeń, komunikatów i powiadomień ................................ 213 Powtórka wiadomości o zdarzeniach i delegatach..........................................................214 Obsługa prostych zdarzeń .........................................................................................214 Obsługa zdarzeń dynamicznych za pośrednictwem delegatów ................................215 U ycie zdarzeń i operacji asynchronicznych ..................................................................216 Tworzenie i u ycie własnych zdarzeń i delegatów .........................................................219 Tworzenie własnych zdarzeń z wykorzystaniem delegatów .NET Framework .......219 Deklarowanie i u ycie własnych delegatów .............................................................219 Klasy delegatów........................................................................................................221 U ycie zdarzeń do powiadamiania..................................................................................221 Podsumowanie ................................................................................................................226 Pytania i odpowiedzi .......................................................................................................226 Warsztaty.........................................................................................................................226 Quiz...........................................................................................................................227 Ćwiczenie..................................................................................................................227 Rozdział 16. Przechwytywanie błędów................................................................ 229 Strukturalna obsługa wyjątków.......................................................................................230 U ywanie poleceń Try i Catch..................................................................................230 Zagnie d ona obsługa błędów..................................................................................232 U ycie bloku Finally.................................................................................................233 Generowanie wyjątków ............................................................................................235 Tworzenie i u ycie własnych klas wyjątków..................................................................238 Podsumowanie ................................................................................................................239 Pytania i odpowiedzi .......................................................................................................239 Warsztaty.........................................................................................................................240 Quiz...........................................................................................................................240 Ćwiczenia..................................................................................................................240 Rozdział 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 kanałów w procesie komunikacji........................................................................246
  • 7. 8 Programowanie obiektowe w Visual Basic .NET dla każdego Budowa klienta i serwera połączonych za pośrednictwem TCP.....................................247 Aplikacja serwera dla obiektów zdalnych ................................................................247 Budowanie klienta wykorzystującego zdalny obiekt................................................250 Podsumowanie ................................................................................................................253 Pytania i odpowiedzi .......................................................................................................253 Warsztaty.........................................................................................................................254 Quiz...........................................................................................................................254 Ćwiczenia..................................................................................................................254 Rozdział 18. Projektowanie aplikacji zarządzającej 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 Rozdział 19. Tworzenie aplikacji zarządzającej projektem ................................... 267 Tworzenie modułów klas ................................................................................................267 Tworzenie interfejsu........................................................................................................268 Tworzenie klas ................................................................................................................269 Klasa Employee ........................................................................................................270 Klasy potomne ..........................................................................................................274 Pozostałe klasy..........................................................................................................277 Podsumowanie ................................................................................................................283 Pytania i odpowiedzi .......................................................................................................283 Warsztaty.........................................................................................................................283 Quiz...........................................................................................................................284 Ćwiczenia..................................................................................................................284 Rozdział 20. Dodawanie cech funkcjonalnych do aplikacji .................................. 285 Projektowanie klas wizualnych.......................................................................................286 Tworzenie klas wizualnych.............................................................................................287 Komponowanie formularza ......................................................................................287 Przeglądanie kodu generowanego.............................................................................290 Tworzenie formularza .....................................................................................................291 Rozmieszczanie elementów formularza pracownika................................................292 Przegląd kodu formularza pracownika .....................................................................294 Rozmieszczanie elementów formularza produktu ....................................................298 Przeglądanie kodu formularza produktu...................................................................299 Rozmieszczanie elementów formularza projektu .....................................................301 Przeglądanie kodu formularza projektu ....................................................................302 Rozmieszczanie elementów formularza elementu projektu .....................................305 Przeglądanie kodu formularza elementu projektu ....................................................305 Podsumowanie ................................................................................................................306 Pytania i odpowiedzi .......................................................................................................307 Warsztaty.........................................................................................................................307 Quiz...........................................................................................................................307 Ćwiczenia..................................................................................................................307
  • 8. Spis treści 9 Rozdział 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 modułów klas...............................................................................................315 Metoda Save()...........................................................................................................315 Metoda Read() ..........................................................................................................320 Metoda Delete() ........................................................................................................322 Klasa Resource..........................................................................................................322 Przeglądanie 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 Rozdział 1., „Programowanie zorientowane obiektowo — budowa aplikacji sterowanej zadaniami”..................................................................................................327 Quiz...........................................................................................................................327 Ćwiczenia..................................................................................................................327 Rozdział 2., „Terminologia wykorzystywana w OOP” ..................................................330 Quiz...........................................................................................................................330 Ćwiczenia..................................................................................................................331 Rozdział 3., „Zawieranie danych i cech w obiekcie”......................................................331 Quiz...........................................................................................................................331 Ćwiczenia..................................................................................................................331 Rozdział 4., „Tworzenie nowych obiektów na bazie obiektów ju istniejących” ..........332 Quiz...........................................................................................................................332 Ćwiczenia..................................................................................................................332 Rozdział 5., „Nadawanie obiektom cech polimorficznych” ...........................................334 Quiz...........................................................................................................................334 Ćwiczenia..................................................................................................................334 Rozdział 6., „Budowa obiektów zło onych poprzez łączenie obiektów”.......................336 Quiz...........................................................................................................................336 Ćwiczenia..................................................................................................................336 Rozdział 7., „Poznajemy środowisko programistyczne Visual Basic .NET” .................337 Quiz...........................................................................................................................337 Ćwiczenia..................................................................................................................337 Rozdział 8., „Typy danych w Visual Basic .NET” .........................................................338 Quiz...........................................................................................................................338 Ćwiczenia..................................................................................................................338 Rozdział 9., „Organizowanie klas w grupy” ...................................................................339 Quiz...........................................................................................................................339 Ćwiczenia..................................................................................................................339 Rozdział 10., „Tworzenie interfejsu u ytkownika” ........................................................339 Quiz...........................................................................................................................339 Ćwiczenia..................................................................................................................340
  • 9. 10 Programowanie obiektowe w Visual Basic .NET dla każdego Rozdział 11., „Tworzenie i u ywanie komponentów”....................................................340 Quiz...........................................................................................................................340 Ćwiczenia..................................................................................................................341 Rozdział 12., „Budowa aplikacji WWW”.......................................................................342 Quiz...........................................................................................................................342 Ćwiczenia..................................................................................................................342 Rozdział 13., „Instalowanie projektów .NET Visual Basic” ..........................................343 Quiz...........................................................................................................................343 Ćwiczenia..................................................................................................................343 Rozdział 14., „Praca z interfejsami obiektów” ...............................................................344 Quiz...........................................................................................................................344 Ćwiczenia..................................................................................................................344 Rozdział 15., „Obsługa zdarzeń, komunikatów i powiadomień” ...................................344 Quiz...........................................................................................................................344 Ćwiczenia..................................................................................................................345 Rozdział 16., „Przechwytywanie błędów”......................................................................346 Quiz...........................................................................................................................346 Ćwiczenia..................................................................................................................346 Rozdział 17., „Projektowanie i u ywanie obiektów zdalnych” ......................................347 Quiz...........................................................................................................................347 Ćwiczenia..................................................................................................................347 Rozdział 18., „Projektowanie aplikacji zarządzającej projektem” .................................348 Quiz...........................................................................................................................348 Ćwiczenia..................................................................................................................349 Rozdział 19., „Tworzenie aplikacji zarządzającej projektem” .......................................350 Quiz...........................................................................................................................350 Ćwiczenia..................................................................................................................350 Rozdział 20., „Dodawanie cech funkcjonalnych do aplikacji”.......................................351 Quiz...........................................................................................................................351 Ćwiczenia..................................................................................................................351 Rozdział 21., „Rozszerzanie funkcjonalności aplikacji” ................................................352 Quiz...........................................................................................................................352 Ćwiczenia..................................................................................................................352 Dodatek B Pies... z klasą................................................................................ 355 Tworzenie klasy bazowej ................................................................................................356 Wykorzystanie klasy bazowej.........................................................................................357 Rozwijając „pieską logikę” .............................................................................................358 Podsumowanie ................................................................................................................360 Skorowidz...................................................................................... 361
  • 10. Rozdział 14. Praca z interfejsami obiektów W poprzednich wersjach Visual Basica jedynie interfejsy dawały 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 rozwiązaniem w przypadku, gdy potrzebna jest podobna funkcjonal- ność w ró nych implementacjach kilku klas mających ze sobą niewiele wspólnego. W rozdziale tym przyjrzymy się bli ej roli interfejsów w Visual Basic .NET i sposo- bom ich najwłaściwszego wykorzystania w aplikacjach .NET. Poniewa w poprzed- nich rozdziałach omówione zostały podstawowe zagadnienia związane 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 wewnątrz definicji klas, rozpoznawania sytuacji, w której wykorzystanie interfejsu jest najlepszym rozwiązaniem, u ycia interfejsów do połączeń zwrotnych. Interfejsy i OOP Interfejsy, podobnie jak klasy, definiują zbiór właściwości, metod i zdarzeń. 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ę.
  • 11. 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 właściwa imple- mentacja mo e być zmieniana bez zmiany istniejącego kodu programu korzysta- jącego z tych interfejsów. W rzeczywistości zmianie ulec mogą całe klasy i tak długo, 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 przykład combo box składa 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. Przykładowy interfejs kontrolki Combo Box +PVGTHCEG +7+%QPVTQN 5WD 2CKPV 'PF +PVGTHCEG +PVGTHCEG +6GZV$QZ +PJGTKVU +7+%QPVTQN 5WD 5GV6GZV $[8CN XCNWG #U 5VTKPI 'PF +PVGTHCEG +PVGTHCEG +.KUV$QZ +PJGTKVU +7+%QPVTQN 5WD 5GV+VGOU $[8CN KVGOU #U 5VTKPI 'PF +PVGTHCEG +PVGTHCEG +%QODQ$QZ +PJGTKVU +6GZV$QZ +.KUV$QZ 'PF +PVGTHCEG Interfejs potomny dziedziczy po interfejsie bazowym wszystkie jego pola. Dlatego te zarówno interfejs +VGZV$QZ jak i +.KUV$QZ posiadają podprogram 2CKPV . Interfejs +%QODQ$QZ posiada natomiast podprogramy 5GV6GZV , 5GV+VGOU i 2CKPV . Pomimo e podprogram 2CKPV przeniesiony jest z obu interfejsów bazowych, interfejs +%QO DQ$QZ ma tylko jedną jego implementację.
  • 12. Rozdział 14. ♦ 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 nieodłączną cechą interfejsów, poniewa z zało enia nie posiadają one implementacji. Dlatego te ka da klasa implementująca interfejs posiada odmienną jego implementację, co stanowi istotę polimorfizmu. Przykładem polimorfizmu jest definiowanie kilku klas, które implementują ten sam interfejs. U ywając interfejsów zamiast klas, zauwa amy, w jaki sposób interfejsy ob- sługują polimorfizm. Listing 14.2 pokazuje u ycie interfejsów w serii obiektów będą- cych wielokątami. Listing 14.2. Polimorfizm interfejsów 2WDNKE +PVGTHCEG 5JCRG (WPEVKQP +U2V+P5JCRG $[8CN 2V #U 5[UVGOTCYKPI2QKPV #U $QQNGCP 'PF +PVGTHCEG 2WDNKE %NCUU 4GEVCPING +ORNGOGPVU 5JCRG 2TKXCVG TGEV #U TCYKPI4GEVCPING 2WDNKE (WPEVKQP 2V+P4GEV $[8CN 2V #U 5[UVGOTCYKPI2QKPV #U $QQNGCP A +ORNGOGPVU 5JCRG+U2V+P5JCRG 2V+P4GEV 2V'SWCNU TGEV 'PF (WPEVKQP 'PF %NCUU 2WDNKE %NCUU %KTENG +ORNGOGPVU 5JCRG 2TKXCVG TIP #U TCYKPI4GIKQP 2WDNKE (WPEVKQP 2V+P%KTENG $[8CN 2V #U 5[UVGOTCYKPI2QKPV #U $QQNGCP A +ORNGOGPVU 5JCRG+U2V+P5JCRG 2V+P%KTENG 2V'SWCNU TIP 'PF (WPEVKQP 'PF %NCUU 5WD %JGEM2QKPV $[8CN 5JCRG1DLGEV #U 5JCRG $[8CN 2V #U 5[UVGOTCYKPI2QKPV +H 5JCRG1DLGEV+U2V+P5JCRG 2V 6JGP $GGR 'PF +H 'PF 5WD 5WD 6GUV KO 2V #U 5[UVGOTCYKPI2QKPV KO 4GEV1DLGEV #U 4GEVCPING KO %KTENG1DLGEV #U %KTENG %JGEM2QKPV 4GEV1DLGEV 2V %JGEM2QKPV %KTENG1DLGEV 2V 'PF 5WD
  • 13. 202 Programowanie obiektowe w Visual Basic .NET dla każdego Zauwa my, w jaki sposób podprogram %JGEM2QKPV pobiera 5JCRG jako parametr, a następnie u ywa metody interfejsu. W dalszej kolejności wywoływana jest metoda implementująca 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, zachowując jednocześnie niezmienioną nazwę metody wewnątrz klasy. Mo liwe jest równie za- stąpienie dowolnego obiektu implementującego interfejs 5JCRG jako parametru pod- programu %JGEM2QKPV . Tworzenie interfejsu Contract Interfejs reprezentuje „umowę” z klasą. Klasa, u ywając słowa kluczowego +ORNG OGPVU, „przystaje na umowę” mówiącą o tym, e będzie implementować interfejs. Po wyra eniu przez klasę chęci implementacji interfejsu jest ona zobowiązana do im- plementacji całego interfejsu. Klasa nie mo e zaimplementować części interfejsu, wypełniając 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 całą pewnością zostaną one zaimplementowane. Nale y pamiętać, e klasa mo e wypełnić umowę, dostarczając 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 dotyczących para- metrów i (w przypadku funkcji) zwracanych wartości. Wszystko inne zale ne jest od klasy implementującej interfejs. W rzeczywistości zaletą u ycia interfejsów jest to, e klasa decyduje o zastosowaniu określonej implementacji w konkretnym przypadku. Przykładowa 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 2WDNKE +PVGTHCEG +'ORNQ[GG (WPEVKQP )GV5CNCT[ #U GEKOCN 'PF +PVGTHCEG 2WDNKE +PVGTHCEG +2CTGPV (WPEVKQP *CU%JKNFTGP #U $QQNGCP 'PF +PVGTHCEG 2WDNKE +PVGTHCEG +(TKGPF (WPEVKQP 0WODGT1H(TKGPFU #U +PVGIGT 'PF +PVGTHCEG 2WDNKE %NCUU 2GTUQP +ORNGOGPVU +'ORNQ[GG +ORNGOGPVU +2CTGPV +ORNGOGPVU +(TKGPF
  • 14. Rozdział 14. ♦ Praca z interfejsami obiektów 203 2TKXCVG OAF5CNCT[ #U GEKOCN 2TKXCVG OAD%JKNFTGP #U $QQNGCP 2TKXCVG OAP(TKGPFU #U +PVGIGT 2WDNKE (WPEVKQP 5CNCT[ #U GEKOCN +ORNGOGPVU +'ORNQ[GG)GV5CNCT[ 5CNCT[ OAF5CNCT[ 'PF (WPEVKQP 2WDNKE (WPEVKQP *CU%JKNFTGP #U $QQNGCP +ORNGOGPVU +2CTGPV*CU%JKNFTGP *CU%JKNFTGP OAD%JKNFTGP 'PF (WPEVKQP 2WDNKE (WPEVKQP *QY/CP[(TKGPFU A #U +PVGIGT +ORNGOGPVU +(TKGPF0WODGT1H(TKGPFU *QY/CP[(TKGPFU OAP(TKGPFU 'PF (WPEVKQP 'PF %NCUU /QFWNG 2GTUQP7UGT 5WD %JGEM5CNCT[ $[8CN 'ORNQ[GG #U +'ORNQ[GG 9 V[O OKGLUEW PCNG [ WOKG EKè MQF RTQITCOW 6[NMQ )GV5CNCT[ OQ G D[è W [YCPC FNC VGIQ QDKGMVW 'PF 5WD 5WD %JGEM(COKN[ $[8CN 2CTGPV #U +2CTGPV 9 V[O OKGLUEW PCNG [ WOKG EKè MQF RTQITCOW 6[NMQ *CU%JKNFTGP OQ G D[è W [YCPC FNC VGIQ QDKGMVW 'PF 5WD 5WD %JGEM(TKGPFU $[8CN /[(TKGPF #U +(TKGPF 9 V[O OKGLUEW PCNG [ WOKG EKè MQF RTQITCOW 6[NMQ 0WODGT1H(TKGPFU OQ G D[è W [YCPC FNC VGIQ QDKGMVW 'PF 5WD 5WD 6GUV2GTUQP KO 2GTUQP #U 2GTUQP 0GY 2GTUQP %JGEM5CNCT[ 2GTUQP %JGEM(COKN[ 2GTUQP %JGEM(TKGPFU 2GTUQP 'PF 5WD 'PF /QFWNG Dla kompletności definicji klasy 2GTUQP niezbędne jest zaimplementowanie wszyst- kich metod zdefiniowanych w interfejsach +'ORNQ[GG, +2CTGPV i +(TKGPF. Klasa 2GTUQP definiować mo e równie własne cechy charakterystyczne, jednak e te metody, wła- ś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 6GUV2GTUQP mo liwe jest u ycie klasy 2GTUQP. Jest to szczególnie u yteczne podczas projektowania aplika- cji posiadającej kilka niezale nych lub luźno powiązanych klas, które u ywane będą zamiennie. Stosując typ interfejsu jako parametr, u ytkownik widzi jedynie metody, właściwości i zdarzenia zdefiniowane w interfejsie. Reszta implementacji wewnątrz klasy nie jest dla u ytkownika interfejsu widoczna.
  • 15. 204 Programowanie obiektowe w Visual Basic .NET dla każdego Programowanie interfejsów Poznaliśmy ju kilka przykładó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óźniej, 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 przykład wewnątrz 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 została zadeklarowana jako 2WDNKE. Nawet jeśli klasa implementująca implementuje metody jako 2TKXCVG dla u ytkownika ko- rzystającego z interfejsu, są one dostępne tak, jakby były zadeklarowane jako 2WDNKE. Posiadanie wszystkich metod interfejsu zadeklarowanych jako publiczne na sens, jeśli zdefiniowanie interfejsu było 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 znaleźć się w interfejsie coś, co zostało zadeklarowane jako prywatne? Działa- nie takie nie ma adnego logicznego wytłumaczenia z wyjątkiem tego, e mogłoby 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, zdarzeń i właś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 właściwości. Ostatnim problemem, który omówimy, jest nieco frustrująca 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 wywołać. Listing 14.4 pokazuje taki właśnie przypadek. Listing 14.4. Interfejs z kolizją nazw u ywających CType() do wskazania właściwego sposobu u ycia metod 2WDNKE +PVGTHCEG +#TTC[ (WPEVKQP %QWPV #U +PVGIGT 'PF +PVGTHCEG 2WDNKE +PVGTHCEG +%QWPVGT (WPEVKQP %QWPV #U +PVGIGT 'PF +PVGTHCEG 2WDNKE +PVGTHCEG +%QWPV#TTC[ +PJGTKVU +#TTC[ +PJGTKVU +%QWPVGT 'PF +PVGTHCEG
  • 16. Rozdział 14. ♦ Praca z interfejsami obiektów 205 /QFWNG %QWPV#TTC[6GUV 5WD 6GUV $[8CN Z #U +%QWPV#TTC[ KO P%QWPV %6[RG Z +%QWPVGT%QWPV KO P#TTC[%QWPV %6[RG Z +#TTC[%QWPV 2QQUVC [ MQF RTQITCOW 'PF 5WD 'PF /QFWNG W kodzie z listingu 14.4 funkcja %6[RG konwertuje wyra enie precyzujące pierwszy argument (w tym przypadku Z) do typu u ywanego w drugim parametrze. Dzięki te- mu podczas wykonywania kodu wybierany jest właściwy interfejs i u ywana jest właściwa metoda %QWPV. Nieco wcześniej wspominaliśmy, e jeśli ta sama metoda zawarta jest wewnątrz 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 dostarczał odpowiednich funkcji, metod, zdarzeń i właściwości. Interfejs mo- e być implementowany zarówno przez klasy, jak i definicje struktur zawierających słowo kluczowe +ORNGOGPVU. 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. 5VTWEVWTG /[5VTWEVWTG +ORNGOGPVU +/[+PVGTHCEG 2WDNKE (WPEVKQP +PVGTHCEG(WPEVKQP A #U +PVGIGT +ORNGOGPVU +/[+PVGTHCEG/[(WPEVKQP 'PF (WPEVKQP 'PF 5VTWEVWTG Jak ju wspominaliśmy wcześniej, interfejs mo e deklarować metody (podprogramy i funkcje), zdarzenia i właś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ą wewnątrz klas lub struktur z wykorzystaniem słowa kluczowego +ORNG OGPVU. Jedynym wymaganiem implementacji metody interfejsu jest to, aby metoda klasy lub struktury posiadała te same parametry i zwracała wartości zadeklarowane w metodzie interfejsu.
  • 17. 206 Programowanie obiektowe w Visual Basic .NET dla każdego Tak długo 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 przykład, zamieszczony poni ej kod pokazuje, jak w jednej funkcji zaimplemen- tować dwie metody %QWPV zdefiniowane w listingu 14.4: 2WDNKE (WPEVKQP %QWPV #U +PVGIGT +ORNGOGPVU +#TTC[%QWPV +%QWPVGT%QWPV %QWPV OAP%QWPV 'PF (WPEVKQP Poprzez implementowanie wielu metod interfejsów za pomocą tej samej metody kla- sy lub struktury mo liwe jest powiązanie metod wielu interfejsów z tą samą funkcjo- nalnością bez konieczności pisania dodatkowego kodu. Właściwości Implementacja właściwości interfejsu podobna jest do implementacji metod. Reali- zowane jest to za pomocą słowa kluczowego +ORNGOGPVU przypisującego właściwości klas lub struktur do właściwości interfejsów. Właściwości klas implementujące wła- ściwości interfejsu muszą charakteryzować się tym samym typem (CRKUQFE[V). Li- sting 14.5 ilustruje implementację właściwości interfejsu. Listing 14.5. Implementacja właściwości interfejsu 2WDNKE +PVGTHCEG +%QORCP[ 2TQRGTV[ 0COG #U 5VTKPI 'PF +PVGTHCEG 2WDNKE %NCUU $WUKPGUU +ORNGOGPVU +%QORCP[ KO OAU%QORCP[0COG #U 5VTKPI 2WDNKE 2TQRGTV[ %QORCP[0COG #U 5VTKPI +ORNGOGPVU +%QORCP[0COG )GV %QORCP[0COG OAU%QORCP[0COG 'PF )GV 5GV $[8CN 8CNWG #U 5VTKPI OAU%QORCP[0COG 8CNWG 'PF 5GV 'PF 2TQRGTV[ 'PF %NCUU Jeśli właściwość zadeklarowana jest w interfejsie jako 4GCF1PN[ lub 9TKVG1PN[, to im- plementująca go klasa lub struktura musi implementować te właściwości z takimi sa- mymi atrybutami.
  • 18. Rozdział 14. ♦ Praca z interfejsami obiektów 207 Zdarzenia Podobnie jak w przypadku metod i właściwości, zdarzenia implementowane są po- przez klasy lub struktury za pomocą słowa kluczowego +ORNGOGPVU. Jak wspominali- śmy ju w rozdziale 2., zdarzenia w definicjach klas nie są powiązane z kodem. Skut- kiem u ycia słowa kluczowego +ORNGOGPVU jest literalne połączenie 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 zdarzeń interfejsu 2WDNKE +PVGTHCEG +%QORCP[ 2TQRGTV[ 0COG #U 5VTKPI 'XGPV 0COG%JCPIGF 'PF +PVGTHCEG 2WDNKE %NCUU $WUKPGUU +ORNGOGPVU +%QORCP[ KO OAU%QORCP[0COG #U 5VTKPI 2WDNKE 2TQRGTV[ %QORCP[0COG #U 5VTKPI +ORNGOGPVU +%QORCP[0COG )GV %QORCP[0COG OAU%QORCP[0COG 'PF )GV 5GV $[8CN 8CNWG #U 5VTKPI OAU%QORCP[0COG 8CNWG 5[IPC Q FCTGPKW PCYC QUVC C OKGPKQPC 4CKUG'XGPV 0COG%JCPIGF 'PF 5GV 'PF 2TQRGTV[ 2WDNKE 'XGPV 0COG%JCPIGF +ORNGOGPVU +%QORCP[0COG%JCPIGF 'PF %NCUU /QFWNG %QORCP[6GUV 5WD 1P0COG%JCPIGF $GGR 'PF 5WD 5WD 6GUV $[8CN %QORCP[ #U +%QORCP[ QFCPKG WEJY[VW KPVGTHGLUW FCTGPKC 0COG%JCPIGF #FF*CPFNGT %QORCP[0COG%JCPIGF #FFTGUU1H 1P0COG%JCPIGF 6GP HTCIOGPV MQFW RQYQFWLG Y[IGPGTQYCPKG FCTGPKC %QORCP[0COG /[ %QORCP[ 'PF 5WD 'PF /QFWNG
  • 19. 208 Programowanie obiektowe w Visual Basic .NET dla każdego Użycie interfejsu jako wywołania zwrotnego U ywane poprawnie interfejsy mają wiele zalet. Mamy mo liwość tworzenia interfej- sów wolnych od problemów występujących podczas zmiany kodu bazowego. Prowa- dzi to równie do większej elastyczności implementacji. Innym przykładem u ycia interfejsów jest zdefiniowane wywołania zwrotnego (call- back). Na przykład, jeśli kilka typów implementuje ten sam interfejs, mo e być on wykorzystany jako metoda wywołania zwrotnego w sytuacji, w której pojedyncze wywołanie zwrotne jest niewystarczające. U ycie interfejsu pozwala na wywołanie zwrotne zawierające kilka metod, właściwości lub zdarzeń. Listing 14.7 przedstawia sposób u ycia interfejsu zdefiniowanego jako wywołanie zwrotne. Ilekroć interfejs ten jest implementowany, obiekt implementujący go wie, jaki interfejs powinien wy- wołać zwrotnie. W odró nieniu od pojedynczej funkcji lub podprogramu wywołanie zwrotne jest kompletnym interfejsem. Listing 14.7. Deklaracja wywołania zwrotnego sterowania interfejsem u ytkownika 2WDNKE +PVGTHCEG +7+%QPVTQN 5WD 2CKPV 5WD %QPVTQN2TGUUGF (WPEVKQP +U2V+P%QPVTQN $[8CN 2V #U TCYKPI2QKPV #U $QQNGCP 2TQRGTV[ %QPVTQN4GEV #U TCYKPI4GEVCPING 'XGPV %QPVTQN*KV 'PF +PVGTHCEG Implementacja interfejsu +7+%QPVTQN poprzez ró ne klasy dostarcza wspólnego inter- fejsu u ywanego podczas pracy z kontrolkami. Listing 14.8 pokazuje prostą imple- mentację kontrolki przycisku (2WUJ$WVVQP) i przycisku opcji (4CFKQ$WVVQP). Listing 14.8. Implementacja interfejsu IUIControl poprzez klasy PushButton i RadioButton 2WDNKE %NCUU 2WUJ$WVVQP +ORNGOGPVU +7+%QPVTQN KO OATE4GEV #U TCYKPI4GEVCPING +ORNGOGPVCELC KPVGTHGLUW 2WDNKE 5WD 2CKPV +ORNGOGPVU +7+%QPVTQN2CKPV 4[UQYCPKG MQPVTQNMK 'PF 5WD 2WDNKE (WPEVKQP +U2V+P%QPVTQN $[8CN 2V #U TCYKPI2QKPV A #U $QQNGCP +ORNGOGPVU +7+%QPVTQN+U2V+P%QPVTQN +U2V+P%QPVTQN 2V'SWCNU %QPVTQN4GEV 'PF (WPEVKQP 2WDNKE 2TQRGTV[ %QPVTQN4GEV #U TCYKPI4GEVCPING A +ORNGOGPVU +7+%QPVTQN%QPVTQN4GEV
  • 20. Rozdział 14. ♦ Praca z interfejsami obiektów 209 )GV %QPVTQN4GEV OATE4GEV 'PF )GV 5GV $[8CN 8CNWG #U TCYKPI4GEVCPING OATE4GEV 8CNWG 'PF 5GV 'PF 2TQRGTV[ 2WDNKE 5WD %QPVTQN2TGUUGF +ORNGOGPVU +7+%QPVTQN%QPVTQN2TGUUGF 4CKUG'XGPV %QPVTQN*KV 'PF 5WD 2WDNKE 'XGPV %QPVTQN*KV +ORNGOGPVU +7+%QPVTQN%QPVTQN*KV 2QQUVC C Eú è MQFW MNCU[ 'PF %NCUU 2WDNKE %NCUU 4CFKQ$WVVQP +ORNGOGPVU +7+%QPVTQN KO OATE4GEV #U TCYKPI4GEVCPING +ORNGOGPVCELC KPVGTHGLUW 2WDNKE 5WD 2CKPV +ORNGOGPVU +7+%QPVTQN2CKPV 4[UQYCPKG MQPVTQNMK 'PF 5WD 2WDNKE (WPEVKQP +U2V+P%QPVTQN $[8CN 2V #U TCYKPI2QKPV A #U $QQNGCP +ORNGOGPVU +7+%QPVTQN+U2V+P%QPVTQN +U2V+P%QPVTQN 2V'SWCNU %QPVTQN4GEV 'PF (WPEVKQP 2WDNKE 2TQRGTV[ %QPVTQN4GEV #U TCYKPI4GEVCPING A +ORNGOGPVU +7+%QPVTQN%QPVTQN4GEV )GV %QPVTQN4GEV OATE4GEV 'PF )GV 5GV $[8CN 8CNWG #U TCYKPI4GEVCPING OATE4GEV 8CNWG 'PF 5GV 'PF 2TQRGTV[ 2WDNKE 5WD %QPVTQN2TGUUGF +ORNGOGPVU +7+%QPVTQN%QPVTQN2TGUUGF 4CKUG'XGPV %QPVTQN*KV 'PF 5WD 2WDNKE 'XGPV %QPVTQN*KV +ORNGOGPVU +7+%QPVTQN%QPVTQN*KV 2QQUVC C Eú è MQFW MNCU[ 'PF %NCUU
  • 21. 210 Programowanie obiektowe w Visual Basic .NET dla każdego Implementacja interfejsu +7+%QPVTQN zale y od kontrolek i ka da z kontrolek mo e mieć swoją własną implementację. U ywanie kontrolek jest więc teraz ułatwione, po- niewa u ytkownicy, chcąc wywołać zwrotnie kontrolkę, kontaktują się jedynie z in- terfejsem. Ilustruje to listing 14.9. Listing 14.9. U ycie interfejsu IUIControl do wywołania zwrotnego do klasy w przypadku wystąpienia zdarzenia 2WDNKE %NCUU /[(QTO +PJGTKVU 5[UVGO9KPFQYU(QTOU(QTO KO 7+%QPVTQNU #U 1DLGEV 2WDNKE 5WD 1P/QWUG%NKEM $[8CN UGPFGT #U 1DLGEV A $[8CN G #U 'XGPV#TIU *CPFNGU /[$CUG%NKEM KO K #U +PVGIGT (QT K 6Q +H %6[RG 7+%QPVTQNU K +7+%QPVTQN+U2V+P%QPVTQN /QWUG2QUKVKQP 6JGP %6[RG 7+%QPVTQNU K +7+%QPVTQN%QPVTQN2TGUUGF %6[RG 7+%QPVTQNU K +7+%QPVTQN2CKPV 'PF +H 0GZV 'PF 5WD 'PF %NCUU Oczywiście mo liwa jest równie współpraca interfejsów z asynchronicznymi wy- wołaniami zwrotnymi słu ącymi do komunikacji sieciowej, dostępowi do plików itp. Podsumowanie Poznaliśmy właś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 implementująca je klasa lub struktura tworzy własną, 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? Odpowiedź: To prawda, interfejsy nie są dziś wykorzystywane tak często jak w po- przednich wersjach Visual Basica, gdy dziedziczenie i polimorfizm nie były mo li- we na poziomie klas. Jednak e mają one nadal przewagę nad klasami, poniewa
  • 22. Rozdział 14. ♦ 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 przyszłe modyfikacje. Pytanie: Czy interfejsy w .NET uległy du ym zmianom? Czy mo emy nadal u ywać ich poza aplikacją lub eksportować ? Odpowiedź: Interfejsy w Visual Basic .NET są generalnie podobne do tych z po- przednich wersji Visual Basica. .NET Framework ukrywa wiele szczegółów imple- mentacyjnych, ale w rzeczywistości bazuje on nadal na identyfikatorach GUID, a da- ne, przechodząc przez interfejs, nadal są przekształcane. Warsztaty W ramach zajęć warsztatowych proponować będziemy zagadki i ćwiczenia, które pomogą uporządkować i przećwiczyć materiał poznany w kończącym się właśnie rozdziale ksią ki. Odpowiedzi przedstawiono w dodatku A na końcu ksią ki. Quiz 1. Jakie słowo kluczowe deklaruje interfejs? 2. Jakie słowo kluczowe łączy metody, właś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 'TTQT mający metodę o nazwie KURNC['TTQT , wyświetlającą ko- munikat o błędzie. Następnie zadeklaruj klasę /[%NCUU implementującą interfejs 'TTQT i wyświetlającą komunikat o błędach podany w parametrze metody KURNC['TTQT .