VB NET Maria DEMS Podstawy Visual Basic NET
VB. NET Maria DEMS
Podstawy Visual Basic. NET • Visual Basic . NET jest jednym z podstawowych języków programowania stosowanych na platformie . NET • Deklaracja i inicjacja zmiennej odbywa się za pomocą pojedynczej instrukcji. Dim m As String=”Mama” • Tworzenie nowych obiektów wymaga zdefiniowania klasy. • Klasa jest typem obiektu, definiującym właściwości i metody egzemplarzy obiektów. • Deklaracja zmiennej obiektu połączenia ma postać: Dim conn = New Sql. Connection() 2
Podstawy Visual Basic. NET • Do tworzenia i inicjalizacji obiektów stosowane są konstruktory parametryzowane (akceptujące argumenty). Dim command = New Sql. Command(str. Select, conn) • Tablica to grupa zmiennych tego samego typu zajmująca ciągły obszar pamięci, do których można odwoływać się pojedynczo za pomocą indeksów. Dim tab(5) As String • Tablice mogą mieć dynamicznie zmieniany rozmiar za pomocą instrukcji Re. Dim. • Chcąc zachować wszystkie dane przechowywane w tablicy należy użyć słowa kluczowego Preserve. 3
Operatory w Visual Basic. NET • Operatory VB. NET 4
Konwersja typów w VB. NET • W VB. NET argumentem konwersji (rzutowania) typu jest typ Object 5
Konwersja typów w VB. NET • Konwersja niektórych typów powoduje utratę części informacji, na przykład konwertując daną zmiennoprzecinkową na typ całkowity tracona jest część dziesiętna. • Przykład konwersji pobranej wartości z bazy na String i przypisanie do elementu tabeli. dr(4) = CStr(reader. Get. Value(4)) • W języku VB. NET dla wielu typów danych istnieją metody umożliwiające konwersję na inny typ. Nazwa takiej metody zawsze zaczyna się od To, a kończy nazwą docelowego typu danych. Przykład konwersji dzisiejszej daty systemowej na typ String: Dim data 1 As String = Date. Time. Today. Year. To. String 6
Procedury i funkcje w VB. NET • W VB. NET program może zawierać procedury, funkcje i zdarzenia (np. On. Click, Page_Load, On. Selected. Index. Changed). • Procedura definiowana jest słowem kluczowym Sub Nazwa_procedury (lista_argumentów) . . . End Sub. • Zmienna tymczasowa zdefiniowana w bloku procedury ma zasięg tylko tej procedury. • Z wyjątkiem zmiennej Static, zmienne w bloku procedury nie przechowują swojej wartości pomiędzy kolejnymi wywołaniami procedury. 7
Procedury i funkcje w VB. NET • Funkcja, w odróżnieniu od procedury, zwraca wartość do programu głównego. Wykorzystuje się do tego celu instrukcje Return umieszczaną w wewnątrz funkcji. • Deklaracji funkcji ma postać: Function Nazwa_funkcji (argumenty) As typ_wyniku. . . End Function • Wywołanie funkcji może nastąpić w dowolnym miejscu programu, poprzez przypisanie nazwy funkcji do zmiennej. 8
Procedury i funkcje w VB. NET • Procedury i funkcje zazwyczaj wymagają przekazania dodatkowych informacji w postaci argumentów. • Argumenty przekazywane są przez wartość By. Val lub przez referencję By. Ref (opcja domyślna). • W definicji wywołania procedury lub funkcji można określić również parametry opcjonalne za pomocą słowa kluczowego Optional, które mogą przyjmować wartości domyślne. • Parametry opcjonalne muszą występować jako ostatnie na liści argumentów. • Przy wywoływaniu procedury lub funkcji, która posiada parametry opcjonalne można je pominąć, 9 stawiając w to miejsce przecinek.
Procedury i funkcje w VB. NET • Przykład deklaracji opcjonalnym. procedury z parametrem Sub pro_reader(By. Val sel As String, By. Val obj As Object, By. Val typ As Int 16, Optional By. Val parametr As String = "") • Przykład wywołania tej procedury. Parametr opcjonalny jest określony i jest ostatnim na liście. pro_reader("pro_program", program, 2, miejsce) 10
Zakres zmiennych w VB. NET • Na zakres zmiennej mają wpływ trzy czynniki: – miejsce deklarowania zmiennej (blok, procedura, funkcja, moduł, klasa, struktura, przestrzeń nazw), – modyfikator użyty przy deklaracji (Dim, Private, Friend, Public), – zakres modułu, klasy lub struktury w którym została zadeklarowana zmienna. • Czas życia zmiennej jest wyznaczony przez jej zakres. • Zmienne, których czas życia jest większy niż jej zakres nazywane są zmiennymi statycznymi (Static) 11
Instrukcje sterujące w VB. NET Instrukcje warunkowe If Test. Porównujący Then Jedna lub wiele instrukcji End If If Test. Porównujący Then Instrukcja If Test. Porównujący Then Jedna lub wiele instrukcji Else Jedna lub wiele instrukcji End If Instrukcje zagnieżdżone If Test. Porównujący Then Jedna lub wiele instrukcji Else Jedna lub wiele instrukcji Endif End If 12
1. W przypadku instrukcji zagnieżdżonych lepiej używać struktury: If warunek 1 Then instrukcje, gdy warunek 1 jest prawdziwy Else. If warunek 2 Then instrukcje, gdy warunek 2 jest prawdziwy Else. If warunek 3 Then instrukcje, gdy warunek 3 jest prawdziwy. . . . Else instrukcje, gdy wszystkie warunki są fałszywe End If 1. Instrukcja może zawierać dowolną liczbę klauzul Else. If. Użycie klauzuli Else jest w tym przypadku opcjonalne 2. Warunki sprawdzane są po kolei, aż do napotkania pierwszego prawdziwego, dlatego istotna jest kolejność 13 wyrażeń warunkowych.
Instrukcja Select Case wyrażenie Case wartość (lub wartości oddzielone przecinkami) Jedna lub wiele instrukcji Case Is relacja Jedna lub wiele instrukcji Case wyrażenie 1 To wyrażenie 2 Jedna lub wiele instrukcji Case Else Jedna lub wiele instrukcji End Select · Warunki Case sprawdzane są po kolei; po pierwszym spełnieniu warunku Case i wykonaniu związanych z nim instrukcji następuje wyjście z konstrukcji. 14
Pętle w VB. NET ü Pętle są zbiorem instrukcji, które należy wykonać wielokrotnie. ü Rozróżnia się dwie podstawowe struktury pętli: Do. . . Loop For. . . Next ü Pętla Do. . . Loop może mieć struktury: Do If warunek Then Exit Do instrukcje Loop 15
Pętla Do. . . Loop w VB. NET Do Until warunek pętli instrukcje Loop Do Jedna lub wiele instrukcji Loop Until warunek pętli • Wyjście z pętli następuje w chwili, gdy wpisany warunek przyjmuje wartość True. 16
Pętla Do. . . Loop w VB. NET Do While warunek pętli Jedna lub wiele instrukcji Loop Do Jedna lub wiele instrukcji Loop While warunek pętli · Pętla Do While. . . Loop to pętla, w której wpisane instrukcje powtarzane są dopóki dany warunek ma wartość True. · Można przerwać pętlę wcześniej przy pomocy komendy Exit Do 17
Pętla For. . . Next w VB. NET For Zmienna. Licznik = War. Poczatkowa To War. Koncowa [ Step War. Kroku] Jedna lub wiele instrukcji Next Zmienna Licznik · Umieszczanie nazwy zmiennej licznikowej po instrukcji Next nie jest konieczne. · Można przerwać pętlę wcześniej przy pomocy komendy Exit For 18
Pętla For Each. . . Next w VB. NET For Each element In grupa [instrukcje] [Exit For] [instrukcje] Next [element] · Pętla For Each . . . Next pozwala wykonać fragment kodu dla każdego obiektu należącego do tablicy lub kolekcji obiektów. · Kolekcją nazywamy uporządkowany zbiór powiązanych ze sobą obiektów, do którego możemy odwoływać się jak do pojedynczego obiektu. 19
Kolekcje w VB. NET • Kolekcja posiada atrybut Count, którego wartość odpowiada liczbie elementów kolekcji. • Kolekcja posiada metody, pozwalające dodać oraz usunąć obiekt z kolekcji: – metoda Add( ) - dodanie obiektu do kolekcji, – metoda Remove ( ) - usuwanie obiektu z kolekcji, • Możemy tworzyć własne kolekcje (obiekty typu Collection) oraz dodawać i usuwać obiekty do kolekcji predefiniowanych (np. . kolekcji Items). 20
Zdarzenia w VB. NET • Zdarzenia są to działania jakie mogą wystąpić w danej aplikacji, po której trzeba podjąć jakąś akcję. • Każde zdarzenie powinno zawierać procedurę obsługi tego zdarzenia (event handler). • Składnia procedury zdarzeniowej jest identyczna jak w przypadku normalnych procedur, ale różnica pojawia się w liście parametrów. 21
Zdarzenia w VB. NET • Przykład deklaracji procedury wyszukiwania wycieczek odpowiadającej na zdarzenie kliknięcia przycisku. Sub znajdz_wycieczke(By. Val obj As Object, By. Val e As Event. Args) Handles btznajdz. Click • Handles określa do jakiego obiektu i zdarzenia odnosi się ta procedura. • Gdy kliknięty zostanie przycisk btznajdz, wywoływana jest procedura znajdz_wycieczke. • Argument obj jest obiektem, który wywołał zdarzenie, natomiast Event. Args zawiera dane właściwe dla zdarzenia, które zaszło. 22
Obsługa błedów w VB. NET • Do obsługi błędów stosowane są instrukcje try i catch • Użycie instrukcji try informuje, że pewien blok kodu należy wykonać próbnie. W takim przypadku, jeśli jakikolwiek fragment kodu zapisany wewnątrz tej instrukcji spowoduje zgłoszenie błędu, to nie doprowadzi on do przerwania wykonywania aplikacji i wyświetlenia komunikatu, lecz umożliwi rozwiązanie zaistniałego problemu. • Instrukcja try oraz inne instrukcje używane wraz z nią są wspólnie nazywane strukturalną obsługą wyjątków. 23
Obsługa błedów w VB. NET • Cała składnia składa się z instrukcji try, po której umieszczany jest chroniony blok kodu. Następnie umieszczane są instrukcje catch i finally. Try instrukcje kodu. . . Catch obsługa wyjątku End try • Zgłaszanie wyjątków pozwala na przechwytywanie błędów zanim doprowadzą one do przerwania wykonywania aplikacji. 24
Visual Basic. NET l Visual Basic. NET wprowadza zmiany w stosunku do VB w następujących dziedzinach: o nowych możliwości programowania obiektowego, o większych możliwości tworzenia interfejsów www, o strukturalną obsługę języka i tworzenie wątków, o dostosowanie do wspólnej specyfikacji CLS oraz wspólnego systemu typów CTS, o eliminację przestarzałych elementów składni starszych wersji VB 25
Nowe możliwości programowania obiektowego VB. NET l Nowych możliwości programowania obiektowego w VB. NET obejmują: o pełne dziedziczenie klas i polimorfizm o parametryzowane konstruktory - jest to możliwość przekazywania informacji do klasy w chwili tworzenia jej instancji, w celu ustawienia jej właściwości lub modyfikacji metod, o przesłanianie elementów umożliwiające modyfikowanie właściwości i metod klasy bazowej w podklasach, o przeładowywanie nazw funkcji, o współdzielenie właściwości lub metod przez wszystkie instancje danej klasy. 26
Przystosowanie projektów do VB. NET 27
Tworzenie projektu w środowisku VB. NET l Tworzenie projektu w VB. NET polega na zbudowaniu diagramu klas projektu, np. z wykorzystaniem języka UML (Unified Modeling Language) l Diagram klas pozwala opisać funkcjonalność różnych klas i podzielić program na poszczególne zadania oraz zawiera opis użytkowników programu (aktorów) Dodaj towar Użytkownik Usuń towar Pobierz dane z bazy Baza danych 28
Tworzenie projektu w środowisku VB. NET l Diagram klas należy zamienić na projekt klas, a więc określić ich atrybuty, metody i zdarzenia; przykładowo: l definiujemy klasę Użytkownik o atrybutach: nazwa, hasło i metodzie autoryzuj, l definiujemy klasę Towar o atrybutach: numer, nazwa, dostawca, cena i metodach dodaj, usuń, pobierz, sprawdź l Projekt klas opisuje jedynie ich funkcjonalność (ich interfejs) a nie ich wewnętrzną budowę. l Kolejnym etapem jest zdefiniowanie klas najniższego poziomu 29
Tworzenie projektu w środowisku VB. NET Klasy dodaje się albo w oknie Solution Explorera albo w menu Projekt opcją Add Class. . zostanie wyświetlone okno dialogowe Add New Item w okienku Templates należy wybrać Class, w polu Name wpisać jej nazwę i uruchomić opcje Open zostanie wyświetlone okno edytora kodu zawierające deklarację klasy: Public Class Nazwa_klasy. . . . End Class W ciele klasy należy zdefiniować jej atrybuty (zmienne), 30 metody i zdarzenia.
Tworzenie projektu w środowisku VB. NET Właściwości w Visual Basic. NET są tworzone w definicjach klas za pomocą słowa kluczowego Property właściwości „tylko do odczytu” (read-only) posiadają funkcjonalność Get, właściwości „tylko do zapisu” (write-only) posiadają funkcjonalność Set, np. : Public Class Komunikat. Msg Private str. Komunikat as String Public Property Msg. Text( ) As String Get Msg. Text = str. Komunikat 31 End Get
Tworzenie projektu w środowisku VB. NET Set(By. Value As String) str. Komunikat = Value End Set End Property End Class W celu odczytania wartości str. Komunikat z obiektu My. Komunikat klasy Komunikat. Msg wykorzystujemy właściwość Msg. Text( ) str. Value = My. Komunikat. Msg. Text( ) W celu przypisania do obiektu My. Komunikat określonej wartości wykorzystujemy również właściwość Msg. Text( ) 32 My. Komunikat. Msg. Text( ) = „Witaj”
Tworzenie projektu w środowisku VB. NET Polecenia Get i Set pozwalają odczytywać i ustawiać wartości pól prywatnych Zapisywanie stanu obiektu do pliku tekstowego i jego odczytywanie jest określane słowem kluczowym persistence. Obiekty z modyfikatorem persistence są obiektami trwałymi; ich stan jest aktualną wartością tego obiektu. Visual Basic. NET obsługuje funkcje dziedziczenia. Klasa pochodna wskazuje używaną przez siebie klasę bazową słowem Inherits Public Class Komunikat_1 Msg Inherits Komunikat. Msg 33 End Class
Tworzenie projektu w środowisku VB. NET Do zapisywania danych klasy do pliku służy metoda Write( ) Public Function Write ( ) As Boolean Dim Msg. File As Stream Write = True Msg. File = File. Open(„msg. bin”, File. Mode. Create) Msg. File. Close( ) //zamknięcie utworzonego pliku ( ) End Function Do automatycznego zapisywania stanu obiektu przed jego zniknięciem służy metoda Dispose ( ) Public Sub Dispose ( ) Write ( ) End Sub 34
Tworzenie projektu w środowisku VB. NET Do odczytywania stanu obiektu w chwili tworzenia nowej jego instancji służy metoda Read( ) Public Function Read ( ) As Boolean Dim Msg. File As Stream Read = True Msg. File = File. Open(„msg. bin”, File. Mode. Open) Msg. File. Close( ) //zamknięcie otwartego do odczytu pliku ( ) End Function Do tworzenia nowej instancji klasy Komunikat_1 Msg wykorzystywana jest metoda New ( ) Jeśli zdefiniujemy metodę New ( ) i z jej wnętrza wywołamy metodę Read ( ) to obiekt odczyta zapisany stan obiektu (o ile 35 zapis został wcześniej dokonany).
Dziedziczenie w VB. NET Definicja metody New ( ) ma postać: Public Sub New ( ) My. Base. New( ) . . Read ( ) End Sub l Wewnątrz podklasy odwołanie do klasy bazowej realizowane jest przy użyciu słowa kluczowego My. Base l Formularz Windows jest modułem klas dziedziczącym cechy formularza z klasy bazowej System. Windows. Forms platformy. NET lub z innego Forms formularza. 36
Budowa obiektu Msg. Reader Definicja klasy Msg. Reader ma postać: Class Msg. Reader Inherits System. Windows. Form Public Sub New( ) My. Base. New() //tworzenie obiektu formularza. New() Msg. Reader = Me End Sub End Class l Utworzony formularz Msg. Reader służy do przeglądania i edycji wiadomości przechowywanych w obiekcie klasy Komunikat_1 Msg 37
Tworzenie okna formularza l Utworzony formularz Msg. Reader jest formularzem pustym, więc należy dodać do niego kontrolki. l Wszystkie kontrolki znajdujące się wewnątrz obiektu okno formularz deklarowane są jako pola inicjalizowane metodą Initialize. Component ( ). l Po dodaniu kontrolki metodą New automatycznie ustawiane są właściwości niezbędne do określenia charakterystyki i pozycji kontrolki. l Kontrolki ukazujące się w oknie formularza należą do zbioru kontrolek dodanego metodą Add( ) oraz zdefiniowane w klasie bazowej. 38
Tworzenie okna formularza l Ponieważ klasa Msg. Reader dziedziczy z klasy bazowej System. Windows. Form, dostaje automatyczny dostęp do zbioru kontrolek (controls collection) l Do przeglądania i edycji tekstu wykorzystywana jest kontrolka wieloliniowego edytora (Text. Box control) l W celu powiązania formularza Msg. Reader z obiektem klasy Komunikat_1 Msg należy do metody New( ) klasy Msg. Reader dodać parametr zawierający referencję do obiektu klasy Komunikat_1 Msg; parametr ten jest zapisywany do pola klasy Msg. Reader i może być używany wewnątrz obiektu. 39
Public Class Formularz. VB Inherits System. Windows. Form. . . . . Private Sub Initialize. Component() Me. Text. Box = New System. Windows. Forms. Text. Box() Me. Text. Box. Accepts. Return = True Me. Text. Box. Multiline = True Me. Text. Box. Name = "Text. Box" . . Me. Text. Box. Text = "" Me. Controls. Add. Range(New System. Windows. Forms. Control() {Me. Text. Box}) Me. Text = "Zadanie" End Sub End Class 40
Wyświetlanie pola tekstowego Private Msg AS Komunikat_1 Msg Public Sub New(By. Ref Msg AS Komunikat_1 Msg) My. Base. New() //tworzenie obiektu formularza. New() Msg. Reader = Me Me. Msg = Msg //przypisanie zmiennej wewnątrz klasy Msg // Msg. Reader referencji do zmiennej Msg klasy Komunikat_1 Msg Initialize. Component( ) Text. Box. Text = Msg. Text( ) End Sub Do wyświetlenia zawartości pola tekstowego wykorzystujemy właściwość Text kontrolki Text. Box, zainicjalizowanej wartością Msg. Text obiektu klasy 41 Komunikat_1 Msg
Zdarzenia OK i Anuluj l Zdarzenia obsługują procedury zdarzeniowe zawarte w klasie Msg. Reader Protected Sub btn. OK_Click(By. Val sender As Object, _ By. Val e As System. Event. Args) Handles btn. OK. Click Msg. Text = Text. Box. Text() // () zapisanie wiadomości . . . . Close() // zamknięcie formularza i jego zasobów End Sub Protected Sub btn. Cancel_Click(By. Val sender As Object, _ By. Val e As System. Event. Args) Handles btn. Cancel. Click . . . . End Sub 42
Uruchamianie aplikacji w Visual Basic. NET Domyślnie aplikacje Visual Basic. NET uruchamiane są przez wywołanie instancji domyślnego formularza (np. Msg. Reader). Jest to stosowane wtedy, gdy aplikacja całkowicie opiera się na formularzu głównym oraz gdy metoda New( ) nie pobiera żadnych argumentów. W innych przypadkach punktem startowym jest metoda main( ), zawarta w module Main, w postaci: Sub main ( ) System. Windows. Forms. Application. Run (New Msg. Reader(New Komunikat_1 Msg ( ) ) ) (New End Sub 43
Dziedziczenie w VB. NET l Kod tworzenia formularza będzie miał postać: Imports System. Component. Model Imports System. Drawing ’ dziedziczona z klasy Import System. Win. Forms ‘ System. Win. Forms. Form Public Class Form 1 Inherits System. Win. Forms. Form l Tworzenie następnego formularza może bazować na kolejnej klasie pochodnej: Imports System. Component. Model Imports System. Drawing Import System. Win. Forms Public Class Form 2 Inherits Form 1 44
Dziedziczenie w VB. NET 1. Utworzony formularz będący instancją klasy Form 2 może posiadać dwa zestawy kontrolek: 1. utworzonych za pomocą modułu Visual Designer 2. oddziedziczonych z formularza Form 1. 2. Dziedziczony jest zarówno wygląd kontrolek jak i kod obsługujący kontrolki. 3. Dziedziczenie jest możliwe wszystkich klas utworzonych w jakimkolwiek języku platformy. NET. 4. W VB. NET nie występuje dziedziczenie wielokrotne, dostępne w C++ i niektórych innych językach obiektowych. 45
Parametryzowane konstruktory w VB. NET Podczas tworzenia instancji obiektu mogą być do niego przekazane parametry, które natychmiast modyfikują zachowanie się tego obiektu. 2. W poprzednich wersjach VB zamiast konstruktorów stosowane były zdarzenia zachodzące podczas tworzenia instancji, takie jak: 1. Class Initialize dla klas, 2. Form Load dla formularzy, do których nie mogły być przekazywane żadne parametry. 3. Przykładowy kod w VB miałby więc postać: 1. Dim obj. Nowi. Pracownicy As New Pracownicy obj. Nowi. Pracownicy. ID = (” 125 -55 -2345”) 46
Parametryzowane konstruktory w VB. NET l Przykładowy kod w VB. NET będzie miał postać: Dim obj. Nowi. Pracownicy As New Pracownicy (” 125 -55 -2345”) l Konstruktor w VB. NET nie jest zdarzeniem, ale procedurą, więc jest określany poprzez instrukcję Sub New, ma zakres Public i może mieć argumenty. New, l Fragment kodu konstruktora ma przykładową postać: Sub New (s. Pracownicy. ID AS String) kod konstruktora l W tym przypadku przy tworzeniu każdej instancji klasy wymagany jest argument. 47
Parametryzowane konstruktory w VB. NET 1. Konstruktory uruchamiane są automatycznie podczas tworzenia instancji. 2. Wykorzystanie konstruktora do tworzenie nagłówka formularza Form 2 1. Tworzymy nowy projekt formularza Windows w środowisku VB. NET - Form 1 i wstawiamy do niego przycisk uruchamiający formularz Form 2, 2. Wstawiamy drugi formularz (domyślnie Form 2) opcją Project_SYMBOL|Add Windows Form Dla tego formularza zostanie automatycznie utworzony konstruktor o nazwie Sub New w module Class 48
Parametryzowane konstruktory w VB. NET l Domyślny konstruktor ma postać: Public Sub New ( ) My. Base. New Form 2 = Me End Sub l Zmieniamy kod konstruktora następująco: Public Sub New (By. Val s. Titlebar. Caption As String ) My. Base. New Form 2 = Me me. Text = s. Titlebar. Caption End Sub 49
Parametryzowane konstruktory w VB. NET l Wracamy do Form 1 i dwukrotnie klikając otwieramy kod zdarzenia, które wywołuje Button 1_Click w edytorze kodu do którego wstawiamy kod: Dim frm. New. Form As New Form 2(”Formularz drugi”) frm. New. Form. Show( ) Zawiera on parametr wymagany przez instrukcję Sub New. l Utworzona przyciskiem w Form 1 instancja formularza Form 2 będzie miała nazwę podaną w parametrze. 50
Przesłanianie nazw w VB. NET l VB. Net obsługuje pełne przesłanianie metod i właściwości klas bazowych. l Logika przesłaniania może istnieć zupełnie niezależnie od klasy bazowej, a metoda bazowa może być wywołana z klasy przesłaniającej, ale jej działanie będzie tylko w zasięgu tej klasy. l Klasa bazowa może zastrzec, że dana właściwość lub metoda ma być przesłonięta (lub nie może być przesłonięta) w klasie potomnej 51
Przesłanianie nazw w VB. NET l Przesłanianie jest kontrolowane następujących słów kluczowych: za pomocą l Overridable - element klasy bazowej może być przesłonięty w klasach potomnych, l Overrides - element klasy bazowej jest przesłonięty przez element o tej samej nazwie w klasie potomnej, l Not. Overridable - element klasy bazowej nie może być przesłonięty w klasach potomnych (opcja domyślna), l Must. Inherit - atrybut deklaracji klasy bazowej określający, że instancja klasy potomnej nie może być tworzona bezpośrednio, ale musi zostać oddziedziczona, 52
Przesłanianie nazw w VB. NET l Must. Override - dostepne jedynie dla klas zadeklarowanych jako Must. Inherit. Oznacza, że wszystkie klasy dziedziczące dany element klasy bazowej muszą go przesłaniać. Element oznaczony jako Must. Override zapewnia jedynie interfejs. Nie są dopuszczalne nawet wiersze instrukcji End Sub oraz End Function. l Rozpatrujemy klasę bazową, w której: l istnieją właściwości publiczne, inicjalizowane przy pomocy konstruktora, l klasy potomne mogą implementować własne wersje elementów (Overridable). Overridable 53
Przesłanianie nazw w VB. NET Public Class Klient Public Name As String Public Active As Boolean Public Sub New (By. Val s. Name as String, By. Val b. Active As Boolean) Name = s. Name Active = b. Active End Sub ‘klasa potomna może zaimplementować własną wersję Public Overridable Sub Check. Status ( ) Debug. Write. Line (”Name: ” & Name) Debug. Write. Line (”Active: ” & Active) l Domyślny konstruktor ma postać: End Sub End Class 54
Przesłanianie nazw w VB. NET l Tworzymy klasę potomną, w której: l istnieją właściwości publiczne, l tworzymy konstruktor klasy podklasy, l wywołujemy konstruktor klasy bazowej, l inicjalizujemy zmienne podklasy, l przesłaniamy metody klasy bazowej, l wywołujemy wersje metod z klasy bazowej, l wypisujemy właściwości podklasy. 55
Przesłanianie nazw w VB. NET Public Class Klient. Docelowy Inherits Klient Public Date. To. Contact As Date ‘deklaracja dodatkowa Date Public Sub New (By. Val s. Name as String, By. Val b. Active As Boolean, By. Val dat. Date. To. Contact As Date ) ‘konstruktor podklasy ) My. Base. New(s. Name, b. Active) ‘konstruktor klasy bazowej ) Date. To. Contact = dat. Date. To. Contact ‘dodatkowa inicjalizacja End Sub ‘przesłonięcie metody klasy bazowej Public Overrides Sub Check. Status ( ) My. Base. Check. Status ( ) ‘wywołanie wersji metody klasy bazowej ( ) Debug. Write. Line (”Kontakt: ” & Date. To. Contact) l Domyślny konstruktor ma postać: End Sub End Class 56
Przesłanianie nazw w VB. NET l Tworzymy instancje klasy potomnej, co wymaga przesłania parametrów inicjalizujących jej właściwości i wywołujemy metodę Check. Status: Dim obj. New. Klient. Docelowy As New Klient. Docelowy (”Siemens”, True, #22/11/2003#) obj. New. Klient. Docelowy. Check. Status l Zostanie wyświetlone okno: Debug Name: Siemens //generowane metodą klasy bazowej Siemens Active: True //generowane metodą klasy bazowej Kontakt: 22/11/2003 //generowane metodą klasy potomnej 57 Kontakt: 22/11/2003
Przeładowywanie nazw funkcji w VB. NET l Przeładowywanie nazw funkcji polega na zdefiniowaniu kilku funkcji o tej samej nazwie ale różnych argumentach l W VB. NET realizowane to jest za pomocą słowa kluczowego Overloads, np. : Overloads Sub Display (By. Val number as Integer) // ciało funkcji End Sub Overloads Sub Display (By. Val a. String as String) // ciało funkcji End Sub 58
Elementy współdzielone w VB. NET 1. W VB. NET istnieje możliwość tworzenia właściwości i metod współdzielonych przez wszystkie aktywne instancje w klasie. 2. Jest to odpowiednik elementów statycznych języka C++ 3. Do tworzenia elementów współdzielonych wykorzystuje się słowo kluczowe Shared, np. : Shared Public Shared Common. Name As String 4. Zmiana właściwości w jednej instancji wywołuje zmianę tej właściwości we wszystkich instancjach danej 59 klasy.
Interfejsy WWW w VB. NET 1. Częścią platformy . NET są formularze Web, działające w VB. NET tak samo, jak w każdym innym języku platformy. 2. Usługi Web zapewniają mechanizm umożliwiający programom komunikowanie się w Internecie za pomocą protokołu SOAP, który nie zależy od wywoływanej technologii. 3. Komponent usługi Web zawiera metody: 1. widoczne w interfejsie usługi Web, oznaczone za pomocą słowa kluczowego Web. Method, 2. przeznaczone wyłącznie do użytku wewnętrznego. 60
Strukturalna obsługa języka w VB. NET l l Nowe możliwości składni języka VB. NET obejmują: l strukturalną obsługę wyjątków, l tworzenie wątków. Składnia obsługi błędów i wyjątków ma postać: Try // Kod programu Catch // fragment kodu zawierający komunikat o błędzie, wykonywany, // gdy w kodzie po instrukcji Try wystąpił błąd Finally // fragment kodu wykonywany niezależnie od tego czy po Try wystąpił błąd czy nie End Try 61
Strukturalna obsługa języka w VB. NET l Kod po instrukcji Try może zawierać instrukcję Throw, Try Throw która wymusza błąd (i wykonanie sekcji kodu po Catch) Catch l VB. NET obsługuje również instrukcje On Error oraz obiekt Err. l VB. NET obsługuje swobodne tworzenie wątków. l W celu rozpoczęcia nowego wątku typ obiektu deklarowany jest jako Thread, a podczas tworzenia Thread instancji przekazywany jest adres, który ma być wykonany w wątku. l Klasa Thread posiada różne metody wstrzymywania, Thread zawieszania, przywracania, usuwania i innych operacji dokonywanych na wątku. 62
Typy zmiennych stosowane w VB. NET l Ponieważ podstawą platformy. NET jest wspólny system plików CTS, w VB. NET wprowadzono następujące zmiany w stosunku do typów danych stosowanych w VB: l Typy całkowite: Integer Short (2 bajty) Long Integer (4 bajty) ------ Long (8 bajtów). l Przy przenoszeniu kodu aplikacji następuje automatyczna konwersja starych typów danych na nowe l Przy wklejaniu dodatkowego kodu należy samemu dokonać zmiany typów. l Typ Currency Decimal (12 bajtów) lub Long 63
Typy zmiennych stosowane w VB. NET 1. Wprowadzony jest typ Char (2 bajty), przechowujący wartości znaków Unicode 2. Typ Variant nie jest używany. Może być zastąpiony typem Object, gdyż na platformie. NET zarówno wartości całkowite jak i łańcuchy znaków traktowane są jako obiekty. 3. Do obsługi łańcuchów o stałej długości stosowana jest klasa Fixed. Length. String wykorzystywana w deklaracji: Dim s. Fixed. Length. String As New VB 6. Fixed. Length. String (18) 4. Typ Data nie jest przechowywany w typie Double, ale używa wewnętrznie 8 -bitowego typu wartości integer. 64
Zmiany wprowadzone w VB. NET l VB. NET nie obsługuje domyślnych wartości i metod. str. Name = txt. Name. Text ( w VB 6 str. Name = txt. Name) str. Name = rs. Record. Set. Fields (”Name”). Value l W VB 6 w instrukcji przypisania do obiektów stosowana była instrukcja Set, w VB. NET nie są używane właściwości domyślne, a więc instrukcja Set jest zbędna. txt. City = txt. New. City ( w VB 6 Set txt. City = txt. New. City l Przy własnościach tylko do odczytu/zapisu należy deklaracje właściwości poprzedzić słowem Read. Only (procedura Get. . End Get) lub Write. Only (procedura 65 Set. . End Set)
Zmiany wprowadzone w VB. NET l Kompilator VB. NET zawsze wymaga użycia nawiasów, nawet dla list argumentów typu Null, np. . : Msg. Box (”Witaj”) ( w VB 6 Msg. Box ”Witaj” ) Dim s. Date As String s. Date = Date( ) ( w VB 6 s. Date = Date ) l W VB. NET wszystkie parametry na liście argumentów maja domyślne ustawienie By. Val l VB. NET nie dopuszcza deklaracji różnych typów w jednym wierszu, np. . : Dim str. Imie, str. Nazwisko As String w VB 6 Dim str. Imie As String, str. Nazwisko As String, wiek As Integer 66
Zmiany wprowadzone w VB. NET l VB. NET dopuszcza w deklaracji inicjalizację zmiennych As String = ”Kowalski” l Dim str. Nazwisko W deklaracji tablicy w VB 6 liczba w nawiasie oznaczała indeks ostatniego elementu Dim str. Nazwisko (10) As String tablica 11 -elementowa (0 -10) l Podobnie, w deklaracji tablicy w VB. NET liczba w nawiasie oznacza indeks ostatniego elementu Dim str. Nazwisko (10) As String tablica 11 -elementowa (0 - 10) l W VB. NET nie stosuje się tablic zaczynających od indeksu 1 67
Zmiany wprowadzone w VB. NET l W VB. NET można również w deklaracji tablic dokonywać ich inicjalizacji (analogicznie jak zmienne) Dim str. Imie (2) As String = („”Ola”, ”Tomek”, ”Basia”) l Odwołania mają postać: str. Imie(0), str. Imie(1), str. Imie(2), l W VB 6 formularze ładowane były w chwili pojawienia się pierwszego odwołania do nich. W VB. NET formularze musza być formalnie deklarowane i ładowane jak inne obiekty, np. . : Dim frm. New. Form As New Form 2 ( ) frm. New. Form. Show ( ) 68
Zmiany wprowadzone w VB. NET l W VB. NET wiele słów kluczowych zostało zastąpione przez elementy klas współdzielonych platformy. NET, np. l circle, line - przestrzeń nazw System. Drawing. Graphics l sgn, sqr, atn - przestrzeń nazw System. Math, l lset, rset - przestrzeń nazw System. String, l rnd, round - przestrzeń nazw Microsoft. Visual. Basic. Compatibility. VB 6 l W VB 6 operatory and, or, xor, not są używane zarówno w , not działaniach bitowych jak i w operacjach boolowskich l W VB. NET operatory and, or, xor, not są zastrzeżone , not wyłącznie do operacji boolowskich; w arytmetyce bitowej 69 stosowane są operatory Bit. And, Bit. Or, Bit. Xor, Bit. No
Zmiany wprowadzone w VB. NET l W VB 6 typy definiowane są przy pomocy słów kluczowych Type. . End Type i sa publicznie dostępne. l W VB. NET zamiast typów definiuje się struktury słowami Structure. . End Structure. l Każdy element struktury musi być zadeklarowany słowami: Dim, Public, Protected, Friend, Protected Friend, Private, np. . : Structure klient public klient. ID As Integer Dim klient. Nazwisko As String Private klient. Status As Boolean End Structure 70
Zmiany wprowadzone w VB. NET l W VB 6 zmienna może być zadeklarowana w dowolnym miejscu procedury (również wewnątrz instrukcji warunkowej lub pętli) i niezależnie od lokalizacji deklaracji ma pełen zasięg procedury. l W VB. NET zmienne deklarowane w bloku kodu ograniczonym instrukcjami End, Loop lub Next są dostępne tylko w tym bloku, więc maja zasięg bloku, ale: l l zachowują swoją wartość po wyjściu z bloku, l nie można się do nich odwołać spoza bloku. VB. NET obsługuje parametry opcjonalne, ale nie obsługuje funkcji If Missing, więc parametry opcjonalne wymagają wartości domyślnych. 71
Zmiany wprowadzone w VB. NET l W VB. NET w złożonych instrukcjach warunkowych, jeśli pierwszy warunek jest spełniony, to następne nie są sprawdzane, więc nie powinny zawierać żadnych czynności (np. . inicjalizacji). l Obiekt Debug dostępny jest teraz w przestrzeni nazw System. Diagnostic. Debug, a jego metoda Print została zastąpiona przez cztery metody: Write, Write. If. Write. Line, Write. Line. If. l Zmienione są opcje formatowania łańcuchów znaków i analizy liczb oraz wprowadzona inkrementacja i dekrementacja zmiennych. l VB. NET nie obsługuje wielu słów kluczowych VB 6, m. in. . 72 takich jak Go. To, Let, Option Base n itp. .
Przystosowanie projektów do VB. NET l Przystosowanie projektów wykonywanych w VB 6 do VB. NET zawarte jest w bibliotece dostępnej pod adresem: http: //msdn. microsoft. com/library/techart/vb 6 tovbdotnet. htm l Fundamentalną technologią platformy. NET używaną przez usługi Web jest protokół SOAP. l Pakiet narzędziowy SOAP dostępny jest pod adresem: http: //msdn. microsoft. com/xml/general/toolkit_intro. asp 73
Kontrolki VB. NET 1. Po wygenerowaniu nowego projektu Windows Control Library kontrolki Active. X automatycznie Control Library dziedziczą własności po klasie System. Windows. Forms. User. Control. Klasa ta w postaci: Public Class User. Control 1 Inherits System. Windows. Forms. User. Control End Class dostarcza podstawowe właściwości i zdarzenia związane z kontrolkami. Jest ona klasą bazową do tworzenia własnych kontrolek 74
Kontrolki VB. NET l Można stworzyć kontrolki dziedziczące własności po innym komponencie, np. Check. Box Public Class User. Control 1 Inherits System. Windows. Forms. Check. Box End Class Po wykonaniu tej zmiany tracimy możliwość bezpośredniego edytowania kontrolki na ekranie 'Design'. l Można za pomocą operacji Drag and Drop wprowadzić na ten ekran inne kontrolki ale można je obsługiwać tylko ręcznie. 75
Zdarzenia VB. NET l Zdarzenia deklaruje się w następujący sposób: Public Class User. Control 1 Inherits System. Windows. Forms. Check. Box Public Event Moje. Zdarzenie. Kliknięcia() Protected Overrides Sub On. Click(By. Val e As System. Event. Args) Raise. Event Moje. Zdarzenie. Kliknięcia() End Sub End Class l Metoda Raise. Event służy do wywołania zdarzenia w momencie kliknięcia na kontrolkę. 76
Zdarzenia VB. NET l l l Metody typu Overrides których nazwa zaczyna się od liter On pozwalają nadpisać obsługę zdarzenia zdefiniowaną w klasie bazowej. W celu wywołania obsługi zdarzenia z klasy bazowej modyfikujemy metodę w następujący sposób: Protected Overrides Sub On. Click(By. Val e As System. Event. Args) Raise. Event Moje. Zdarzenie. Kliknięcia() My. Base. On. Click(e) End Sub Można najpierw wywołać metodę My. Base. On. Click(e) a (e) później napisać obsługę zdarzenia, ale zmienia to wynik działania procedury. 77
Zdarzenia VB. NET l l Zdarzenia w aplikacji można obsługiwać dwiema metodami: Pierwsza metoda polega na wykorzystaniu słowa kluczowego Handles przy deklaracji metody. Słowo to informuje kompilator, że metoda ta będzie wykorzystana do obsłużenia danego zdarzenia, np: Private Sub User. Control 11_Click(By. Val sender As Object, By. Val e As System. Event. Args) _ Handles User. Control 11. Click Msg. Box("Nastąpiło kliknięcie!", Msg. Box. Style. Information) End Sub 78
l Druga polega na wykorzystaniu metody Add. Handler i Remove. Handler, co pozwala na podłączenie danej metody do obsługi zdarzenia w sposób dynamiczny, np: Public Sub Podłacz. Obs. Zdarzenia() Add. Handler User. Control 11. Click, Address. Of Moja. Obsługakliknięcia End Sub Private Sub. Moja. Obsługakliknięcia(By. Val ob. Send As Object, By. Val e As System. Event. Args) Msg. Box("Nastąpiło kliknięcie!", Msg. Box. Style. Information) End Sub Public Sub Odlacz. Obs. Zdarzenia() Remove. Handler User. Control 11. Click, Address. Of Moja. Obsługakliknięcia End Sub 79
Deklaracje metod w VB. NET l l l Metoda którą podłączamy musi mieć właściwe parametry do obsłużenia danego zdarzenia. Pojawienie się dziedziczenia i polimorfizmu w Visual Basic. Net spowodowało pojawienie się większej różnorodności w deklarowaniu metod. W Visual Basic. Net mamy o wiele większe możliwości decydowania o dostępie do elementów danej klasy, zwłaszcza w przypadku, kiedy tworzymy hierarchiczną strukturę klas. 80
Deklaracje metod w VB. NET l Z wykorzystaniem listy atrybutów attrlist. Definicja funkcji . w VB. NET wygląda w tym przypadku następująco: [<attrlist>] [{ Overloads | Overrides | Overridable | Not. Overridable | Must. Override | Shadows | Shared }] [{Public | Protected | Friend | Protected Friend | Private }] Function nazwa {(arglist)] [ As typ ] [ Implements interfejs. zdefiniowananazwa ] [ instrukcje ] [Exit Function ] [instrukcje ] End Function 81
Deklaracje metod w VB. NET l Definicja procedury ma wtedy postać: [<attrlist>] [{ Overloads | Overrides | Overridable | Not. Overridable | Must. Override | Shadows | Shared }] [{Public | Protected | Friend | Protected Friend | Private }] Sub nazwa {(arglist)] [ Implements interfejs. zdefiniowananazwa ] [ instrukcje ] [Exit Sub ] [instrukcje ] End Sub l l attrlist – lista atrybutów dla danej metody. Jest to nowość w stosunku do poprzednich wersji kompilatora. Wszystkie atrybuty muszą być dziedziczone z klasy 82 System. Attribute.
Deklaracje metod w VB. NET l Zamiast stosować Declare Function można zastosować klasę atrybutu Dll. Import. Attribute, której konstruktor ma pewne parametry jak np. dll. Name ( w tym przypadku „Kernel 32”). Public Class CDll <Dll. Import("Kernel 32", Entry. Point: ="Get. Windows. Directory")> Public _ Shared Function Get. Windows. Directory(By. Val lp. Buffer As String. Builder, _ By. Val n. Size As Integer) As Long End Function <Dll. Import("Kernel 32", Entry. Point: ="Get. System. Directory")> Public _ Shared Function _ Get. System. Directory(By. Val lp. Buffer As String. Builder, By. Val n. Size As _ Integer) As Long End Function <Dll. Import("Kernel 32", Entry. Point: ="Get. Command. Line")> Public _ Shared Function Get. Command. Line() As Int. Ptr End Function 83 End Class
l Z wykorzystaniem przeciążenia nazwy funkcji lub procedury z klasy bazowej - Overloads Public Class CMoja. Klasa. Bazowa Public Function Moja. Funkcja. Bazowa(By. Val x As Long, By. Val y As_ Long) As Long Moja. Funkcja. Bazowa = x + y End Function End Class Public Class CMoja. Klasa. Dziedziczaca Inherits CMoja. Klasa. Bazowa Public Overloads Function Moja. Funkcja. Bazowa(By. Val x As Long, _ By. Val y As Long, By. Val z As Long) As Long Moja. Funkcja. Bazowa = x + y + z End Function Public Function Moja. Funkcja. Bazowa(By. Val x As Long, By. Val y As _ Long, By. Val z As Long, By. Val Mnoz As Long) As Long „Błąd” Moja. Funkcja. Bazowa = (x + y + z) * Mnoz End Function 84 End Class
l Nie można zastosować słowa Overloads do przeciążania Overloads metod, które różnią się od siebie tylko wartością zwracaną: Public Class CMoja. Klasa. Bazowa Public Function Moja. Funkcja. Bazowa(By. Val x As Long, By. Val y As _ Long) As Long Moja. Funkcja. Bazowa = x + y End Function End Class Public Class CMoja. Klasa. Dziedziczaca Inherits CMoja. Klasa. Bazowa Public Overloads Function Moja. Funkcja. Bazowa(By. Val x As Long, _ By. Val y As Long) As Double ’Błąd!!! Moja. Funkcja. Bazowa = x + y End Function Public Overloads Function Moja. Funkcja. Bazowa(By. Val x As Long, _ By. Val y As Long, By. Val z As Long, By. Val Mnoz As Long) As Long Moja. Funkcja. Bazowa = (x + y + z) * Mnoz End Function 85 End Class
l Z wykorzystaniem metody Overrides, Overrides która zastępuje identyczną metodę klasy bazowej (o tej samej liczbie i typie parametrów, oraz typie wartości zwracanej). Metoda w klasie bazowej musi być określona jako Overridable: Overridable Public Class CMoja. Klasa. Dziedziczaca Inherits CMoja. Klasa. Bazowa Public Overridable Overloads Function Moja. Funkcja. Bazowa(By. Val x As Long, By. Val y As Long, _ By. Val z As Long) As Long Moja. Funkcja. Bazowa = x + y + z End Function Public Overloads Function Moja. Funkcja. Bazowa(By. Val x As _ Long, By. Val y As Long, By. Val z As Long, By. Val Mnoz As _ Long) As Long Moja. Funkcja. Bazowa = (x + y + z) * Mnoz End Function 86 End Class
Deklaracje metod w VB. NET Public Class CMoja. Klasa. Dziedziczaca 2 Inherits CMoja. Klasa. Dziedziczaca Public Overloads Overrides Function Moja. Funkcja. Bazowa(By. Val x As Long, By. Val y As Long, _ By. Val z As Long) As Long Moja. Funkcja. Bazowa = (x + y) * z End Function End Class l Z wykorzystaniem metody Overridable, która wskazuje, że metoda z klasy bazowej może być nadpisana przez identyczną metodę w klasie dziedziczącej, lub l Z wykorzystaniem metody Not. Overridable, która oznacza, że Not. Overridable ta metoda nie może być zastąpiona przez żadną inną metodę. 87
l Funkcja typu Not. Overridable musi sama zastępować taką samą metodę w klasie bazowej dla swej klasy. Public Class CMoja. Klasa. Baza 2 Inherits CMoja. Klasa. Bazowa Public Not. Overridable Overrides Function Moja. Funkcja. Bazowa (By. Val x As Long, By. Val y As Long) As _ Long Moja. Funkcja. Bazowa = x + y End Function End Class Metoda w klasie bazowej musi być określona jako Overridable: Public Class CMoja. Klasa. Dziedziczaca 3 Inherits CMoja. Klasa. Baza 2 Public Overrides Function Moja. Funkcja. Bazowa _ Błąd!!! (By. Val x As Long, By. Val y As Long) As Long Moja. Funkcja. Bazowa = x + y End Function 88 End Class
l Z wykorzystaniem metody Must. Override, Must. Override która wskazuje, że ta metoda nie jest zdefiniowana w tej klasie i musi być zdefiniowana w klasie pochodnej; klasa, w której deklarujemy taką metodę musi być zadeklarowana jako Must. Inherit Public Must. Inherit Class CMoja. Klasa. Baza 2 Public Must. Override Function Moja. Funkcja. Bazowa _ (By. Val x As Long, By. Val y As Long) As Long End Class Public Class CMoja. Klasa. Dziedziczaca 3 Inherits CMoja. Klasa. Baza 2 Public Overrides Function Moja. Funkcja. Bazowa _ (By. Val x As Long, By. Val y As Long) As Long Moja. Funkcja. Bazowa = x + y End Function End Class 89
Deklaracje metod w VB. NET l Z wykorzystaniem metody Shadows, która wskazuje, że Shadows metoda ta zakrywa identycznie nazwany element programistyczny lub zbiór przeciążonych elementów w klasie bazowej: Public Class CMoja. Klasa. Bazowa 3 Public i As Long End Class Public Class CMoja. Klasa. Dziedziczaca 4 Inherits CMoja. Klasa. Bazowa 3 Public Shadows Function i(By. Val e As Long) As String Msg. Box(e, Msg. Box. Style. Information) i = "Jest OK!" End Function End Class 90
l Z wykorzystaniem metody Shared , która wskazuje, że ta Shared metoda nie musi być wywołana z instancji danego typu, lecz można ją wywołać bezpośrednio z typu nie tworząc instancji tego typu: Public Class CMoja. Klasa 1 Public Shared Function Moja. Funkcja. Bazowa _ (By. Val x As Long, By. Val y As Long, By. Val z As Long) As Long Moja. Funkcja. Bazowa = (x + y) * z End Function End Class Public Class CMoja. Klasa 2 Public Function Moja. Funkcja. Dziedzicaca(By. Val i As Long) As String i = CMoja. Klasa 1. Moja. Funkcja. Bazowa(2, 3, 4) End Function End Class 91
l l Z wykorzystaniem metody Public Z wykorzystaniem metody Protected – dostępnej tylko z poziomu własnej klasy lub dziedziczącej: Public Class CMoja. Klasa. Bazowa 3 Protected Function Moja. Funkcja. Bazowa(By. Val x As Long, _ By. Val y As Long) As Long Moja. Funkcja. Bazowa = x + y End Function End Class Public Class CMoja. Klasa. Dziedziczaca 4 Inherits CMoja. Klasa. Bazowa 3 Public Shadows Function Moja. Funkcja(By. Val e As Long) As _ String Dim Wynik As Long Wynik = Me. Moja. Funkcja. Bazowa(1, 2) End Function End Class 92
Deklaracje metod w VB. NET Nie można wykonać następującej operacji: Public Class CMoja. Klasa. Dziedziczaca 4 Inherits CMoja. Klasa. Bazowa 3 Public Function Moja. Funkcja(By. Val e As Long) As String Dim Instancja As New CMoja. Klasa. Bazowa 3() Dim Wynik As Long Wynik = Instancja. Moja. Funkcja. Bazowa(1, 2) ‘Błąd !!! End Function End Class Taka operacja jest możliwa dopiero po zadeklarowaniu metody jako Friend. 93
l Z wykorzystaniem metody Friend – do metody w ten sposób zadeklarowanej można mieć dostęp w całym programie gdzie zawarta jest jej deklaracja i gdziekolwiek indziej, ale w ramach danego podzespołu (assembly): Public Class CMoja. Klasa. Bazowa 3 Friend Function Moja. Funkcja. Bazowa(By. Val x As Long, _ By. Val y As Long) As Long Moja. Funkcja. Bazowa = x + y End Function End Class Public Class CMoja. Klasa. Dziedziczaca 4 Public Function Moja. Funkcja(By. Val e As Long) As String Dim Instancja As New CMoja. Klasa. Bazowa 3() Dim Wynik As Long Wynik = Instancja. Moja. Funkcja. Bazowa(1, 2) End Function End Class 94
l l Z wykorzystaniem metody Protected Friend – dostęp do Friend metody zadeklarowanej w ten sposób jest taki sam jak do metod zadeklarowanych jako Protected i Friend. Z wykorzystaniem metody Private – metoda zadeklarowana w ten sposób jest dostępna tylko w tym kontekście gdzie została zadeklarowana. Public Class CMoja. Klasa 3 Private Function Moja. Funkcja(By. Val x As Long, By. Val y As _ Long) As Long Moja. Funkcja = x + y End Function Private Function Moja. Funkcja 2() Dim Wynik As Long Wynik = Me. Moja. Funkcja(1, 2) End Function End Class 95
Deklaracje metod w VB. NET l Z wykorzystaniem metody Implements , która Implements implementuje metodę zdefiniowaną poprzez interfejs: Interface IMoj. Interfejs Function Moja. Funkcja(By. Val x As Long, By. Val y As Long) _ As Long End Interface Public Class CMoja. Klasa 4 Implements IMoj. Interfejs Public Function Moja. Funkcja (By. Val x As Long, By. Val y As _ Long) As Long Implements IMoj. Interfejs. Moja. Funkcja = x + y End Function End Class 96
Literatura • Dino Esposito : Tworzenie aplikacji za pomocą ASP. NET oraz ADO. NET (Microsoft Press, Wydawnictwo RM Warszawa 2002) • Julian Templeman, David Vitter : Visual Studio. NET: . NET Framework. Czarna Księga (Helion 2003) • Microsoft Press : Microsoft Visual C#. NET Encyklopedia (Helion 2003) • Rusty Harold : XML. Księga Eksperta (Helion 2001) • Scott Worley : ASP. NET. Vademecum Profesjonalisty (Helion, 2003) • Steaven Holzner : XML. Vademecum Profesjonalisty (Helion 2001) • http: //www. ASP. com • http: //www. ietf. org/RFC% 2069/ • http: //www. learn. ASP. com • http: //www. msdn. microsoft. com/vcsharp/ • http: //www. windows 2003. pl • http: //www. xml. com 97
- Slides: 97