Title: VB.NET
 1VB.NET
  2 Podstawy Visual Basic.NET
- Visual Basic .NET jest jednym z podstawowych 
 jezyków programowania stosowanych na platformie
 .NET
- Deklaracja i inicjacja zmiennej odbywa sie za 
 pomoca pojedynczej instrukcji.
-   Dim m As StringMama 
- Tworzenie nowych obiektów wymaga zdefiniowania 
 klasy.
- Klasa jest typem obiektu, definiujacym 
 wlasciwosci i metody egzemplarzy obiektów.
- Deklaracja zmiennej obiektu polaczenia ma postac 
-   Dim conn  New SqlConnection()
3 Podstawy Visual Basic.NET
- Do tworzenia i inicjalizacji obiektów stosowane 
 sa konstruktory parametryzowane (akceptujace
 argumenty).
-  Dim command  New SqlCommand(strSelect, conn) 
- Tablica to grupa zmiennych tego samego typu 
 zajmujaca ciagly obszar pamieci, do których mozna
 odwolywac sie pojedynczo za pomoca indeksów.
-  Dim tab(5) As String 
- Tablice moga miec dynamicznie zmieniany rozmiar 
 za pomoca instrukcji ReDim.
- Chcac zachowac wszystkie dane przechowywane w 
 tablicy nalezy uzyc slowa kluczowego Preserve.
4 Operatory w Visual Basic.NET
  5 Konwersja typów w VB.NET
- W VB.NET argumentem konwersji (rzutowania) typu 
 jest typ Object
6 Konwersja typów w VB.NET
- Konwersja niektórych typów powoduje utrate czesci 
 informacji, na przyklad konwertujac dana
 zmiennoprzecinkowa na typ calkowity tracona jest
 czesc dziesietna.
- Przyklad konwersji pobranej wartosci z bazy na 
 String i przypisanie do elementu tabeli.
-  dr(4)  CStr(reader.GetValue(4)) 
- W jezyku VB.NET dla wielu typów danych istnieja 
 metody umozliwiajace konwersje na inny typ. Nazwa
 takiej metody zawsze zaczyna sie od To, a konczy
 nazwa docelowego typu danych. Przyklad konwersji
 dzisiejszej daty systemowej na typ String
-   Dim data1 As String  DateTime.Today.Year.ToStri
 ng
7 Procedury i funkcje w VB.NET
- W VB.NET program moze zawierac procedury, funkcje 
 i zdarzenia (np. OnClick, Page_Load,
 OnSelectedIndexChanged).
- Procedura definiowana jest slowem kluczowym 
-  Sub Nazwa_procedury (lista_argumentów) 
-  ... 
-  End Sub. 
- Zmienna tymczasowa zdefiniowana w bloku procedury 
 ma zasieg tylko tej procedury.
- Z wyjatkiem zmiennej Static, zmienne w bloku 
 procedury nie przechowuja swojej wartosci
 pomiedzy kolejnymi wywolaniami procedury.
8 Procedury i funkcje w VB.NET
- Funkcja, w odróznieniu od procedury, zwraca 
 wartosc do programu glównego. Wykorzystuje sie do
 tego celu instrukcje Return umieszczana w
 wewnatrz funkcji.
- Deklaracji funkcji ma postac 
-   Function Nazwa_funkcji (argumenty) As 
 typ_wyniku
-  ... 
-  End Function 
- Wywolanie funkcji moze nastapic w dowolnym 
 miejscu programu, poprzez przypisanie nazwy
 funkcji do zmiennej.
9 Procedury i funkcje w VB.NET
- Procedury i funkcje zazwyczaj wymagaja 
 przekazania dodatkowych informacji w postaci
 argumentów.
- Argumenty przekazywane sa przez wartosc ByVal lub 
 przez referencje ByRef (opcja domyslna).
- W definicji wywolania procedury lub funkcji mozna 
 okreslic równiez parametry opcjonalne za pomoca
 slowa kluczowego Optional, które moga przyjmowac
 wartosci domyslne.
- Parametry opcjonalne musza wystepowac jako 
 ostatnie na lisci argumentów.
- Przy wywolywaniu procedury lub funkcji, która 
 posiada parametry opcjonalne mozna je pominac,
 stawiajac w to miejsce przecinek.
10 Procedury i funkcje w VB.NET
- Przyklad deklaracji procedury z parametrem 
 opcjonalnym.
-  Sub pro_reader(ByVal sel As String, ByVal obj As 
 Object, ByVal typ As Int16, Optional ByVal
 parametr As String  "")
- Przyklad wywolania tej procedury. Parametr 
 opcjonalny jest okreslony i jest ostatnim na
 liscie.
-  pro_reader("pro_program", program, 2, miejsce)
11 Zakres zmiennych w VB.NET
- Na zakres zmiennej maja wplyw trzy czynniki 
- miejsce deklarowania zmiennej (blok, procedura, 
 funkcja, modul, klasa, struktura, przestrzen
 nazw),
- modyfikator uzyty przy deklaracji (Dim, Private, 
 Friend, Public),
- zakres modulu, klasy lub struktury w którym 
 zostala zadeklarowana zmienna.
- Czas zycia zmiennej jest wyznaczony przez jej 
 zakres.
- Zmienne, których czas zycia jest wiekszy niz jej 
 zakres nazywane sa zmiennymi statycznymi (Static)
12 Instrukcje sterujace w VB.NET
-  If TestPorównujacy Then Jedna lub wiele 
 instrukcjiEnd If
-  If TestPorównujacy Then Instrukcja 
-  If TestPorównujacy Then Jedna lub wiele 
 instrukcjiElse Jedna lub wiele instrukcjiEnd
 If
-  Instrukcje zagniezdzoneIf TestPorównujacy 
 Then Jedna lub wiele instrukcjiElse If
 TestPorównujacy Then  Jedna lub wiele
 instrukcji Else Jedna lub wiele instrukcji
 EndifEnd If
Instrukcje warunkowe 
 13- W przypadku instrukcji zagniezdzonych lepiej 
 uzywac struktury
-  
- Instrukcja moze zawierac dowolna liczbe klauzul 
 ElseIf. Uzycie klauzuli Else jest w tym przypadku
 opcjonalne
- Warunki sprawdzane sa po kolei, az do napotkania 
 pierwszego prawdziwego, dlatego istotna jest
 kolejnosc wyrazen warunkowych.
 If warunek1 Then instrukcje, gdy warunek1 jest 
prawdziwy ElseIf warunek2 Then instrukcje, gdy 
warunek2 jest prawdziwy ElseIf warunek3 
Then instrukcje, gdy warunek3 jest 
prawdziwy ........ Else instrukcje, gdy 
wszystkie warunki sa falszywe End If 
 14 Instrukcja Select Case
 Select Case wyrazenie Case wartosc (lub 
wartosci oddzielone przecinkami) Jedna lub wiele 
instrukcji Case Is relacja Jedna lub wiele 
instrukcji Case wyrazenie1 To 
wyrazenie2 Jedna lub wiele instrukcji  Case 
Else  Jedna lub wiele instrukcji End Select
- Warunki Case sprawdzane sa po kolei po pierwszym 
 spelnieniu warunku Case i wykonaniu zwiazanych z
 nim instrukcji nastepuje wyjscie z konstrukcji.
15 Petle w VB.NET
- Petle sa zbiorem instrukcji, które nalezy wykonac 
 wielokrotnie.
- Rozróznia sie dwie podstawowe struktury petli 
- Do ... Loop 
- For ... Next 
- Petla Do ... Loop moze miec struktury
 Do If warunek Then Exit Do instrukcje Loop 
 16 Petla Do... Loop w VB.NET
 Do Until warunek petli instrukcje Loop Do 
Jedna lub wiele instrukcji Loop Until warunek 
petli 
- Wyjscie z petli nastepuje w chwili, gdy wpisany 
 warunek przyjmuje wartosc True.
17 Petla Do... Loop w VB.NET
 Do While warunek petli  Jedna lub wiele 
instrukcji Loop Do Jedna lub wiele 
instrukcji Loop While warunek petli 
- Petla Do While...Loop to petla, w której wpisane 
 instrukcje powtarzane sa dopóki dany warunek ma
 wartosc True.
- Mozna przerwac petle wczesniej przy pomocy 
 komendy Exit Do
18 Petla For... Next w VB.NET
 For ZmiennaLicznik  WarPoczatkowa To WarKoncowa 
  Step WarKroku Jedna lub wiele instrukcji 
Next Zmienna Licznik
- Umieszczanie nazwy zmiennej licznikowej po 
 instrukcji Next nie jest konieczne.
- Mozna przerwac petle wczesniej przy pomocy 
 komendy Exit For
19 Petla For Each... Next w VB.NET
 For Each element In grupa instrukcje Exit
 For instrukcje Next element
- Petla For Each ... Next pozwala wykonac fragment 
 kodu dla kazdego obiektu nalezacego do tablicy
 lub kolekcji obiektów.
- Kolekcja nazywamy uporzadkowany zbiór powiazanych 
 ze soba obiektów, do którego mozemy odwolywac sie
 jak do pojedynczego obiektu.
20 Kolekcje w VB.NET
- Kolekcja posiada atrybut Count, którego wartosc 
 odpowiada liczbie elementów kolekcji.
- Kolekcja posiada metody, pozwalajace dodac oraz 
 usunac obiekt z kolekcji
- metoda Add( ) - dodanie obiektu do kolekcji, 
- metoda Remove ( ) - usuwanie obiektu z kolekcji, 
- Mozemy tworzyc wlasne kolekcje (obiekty typu 
 Collection) oraz dodawac i usuwac obiekty do
 kolekcji predefiniowanych (np.. kolekcji Items).
21 Zdarzenia w VB.NET
- Zdarzenia sa to dzialania jakie moga wystapic w 
 danej aplikacji, po której trzeba podjac jakas
 akcje.
- Kazde zdarzenie powinno zawierac procedure 
 obslugi tego zdarzenia (event handler).
- Skladnia procedury zdarzeniowej jest identyczna 
 jak w przypadku normalnych procedur, ale róznica
 pojawia sie w liscie parametrów.
22 Zdarzenia w VB.NET
- Przyklad deklaracji procedury wyszukiwania 
 wycieczek odpowiadajacej na zdarzenie klikniecia
 przycisku.
- Sub znajdz_wycieczke(ByVal obj As Object, ByVal e 
 As EventArgs) Handles btznajdz.Click
- Handles okresla do jakiego obiektu i zdarzenia 
 odnosi sie ta procedura.
- Gdy klikniety zostanie przycisk btznajdz, 
 wywolywana jest procedura znajdz_wycieczke.
- Argument obj jest obiektem, który wywolal 
 zdarzenie, natomiast EventArgs zawiera dane
 wlasciwe dla zdarzenia, które zaszlo.
23 Obsluga bledów w VB.NET
- Do obslugi bledów stosowane sa instrukcje try i 
 catch
- Uzycie instrukcji try informuje, ze pewien blok 
 kodu nalezy wykonac próbnie. W takim przypadku,
 jesli jakikolwiek fragment kodu zapisany wewnatrz
 tej instrukcji spowoduje zgloszenie bledu, to nie
 doprowadzi on do przerwania wykonywania aplikacji
 i wyswietlenia komunikatu, lecz umozliwi
 rozwiazanie zaistnialego problemu.
- Instrukcja try oraz inne instrukcje uzywane wraz 
 z nia sa wspólnie nazywane strukturalna obsluga
 wyjatków.
24 Obsluga bledów w VB.NET
- Cala skladnia sklada sie z instrukcji try, po 
 której umieszczany jest chroniony blok kodu.
 Nastepnie umieszczane sa instrukcje catch i
 finally.
-  Try 
- instrukcje kodu... 
- Catch 
- obsluga wyjatku 
- End try 
- Zglaszanie wyjatków pozwala na przechwytywanie 
 bledów zanim doprowadza one do przerwania
 wykonywania aplikacji.
25 Visual Basic.NET
- Visual Basic.NET wprowadza zmiany w stosunku do 
 VB w nastepujacych dziedzinach
- nowych mozliwosci programowania obiektowego, 
- wiekszych mozliwosci tworzenia interfejsów www, 
- strukturalna obsluge jezyka i tworzenie watków, 
- dostosowanie do wspólnej specyfikacji CLS oraz 
 wspólnego systemu typów CTS,
- eliminacje przestarzalych elementów skladni 
 starszych wersji VB
26 Nowe mozliwosci programowania obiektowego VB.NET
- Nowych mozliwosci programowania obiektowego w 
 VB.NET obejmuja
- pelne dziedziczenie klas i polimorfizm 
- parametryzowane konstruktory - jest to mozliwosc 
 przekazywania informacji do klasy w chwili
 tworzenia jej instancji, w celu ustawienia jej
 wlasciwosci lub modyfikacji metod,
- przeslanianie elementów umozliwiajace 
 modyfikowanie wlasciwosci i metod klasy bazowej w
 podklasach,
-  przeladowywanie nazw funkcji, 
- wspóldzielenie wlasciwosci lub metod przez 
 wszystkie instancje danej klasy.
27 Przystosowanie projektów do VB.NET 
 28 Tworzenie projektu w srodowisku VB.NET
- Tworzenie projektu w VB.NET polega na zbudowaniu 
 diagramu klas projektu, np. z wykorzystaniem
 jezyka UML (Unified Modeling Language)
- Diagram klas pozwala opisac funkcjonalnosc 
 róznych klas i podzielic program na poszczególne
 zadania oraz zawiera opis uzytkowników programu
 (aktorów)
Dodaj towar
Usun towar
Uzytkownik
Baza danych
Pobierz dane z bazy  
 29 Tworzenie projektu w srodowisku VB.NET
- Diagram klas nalezy zamienic na projekt klas, a 
 wiec okreslic ich atrybuty, metody i zdarzenia
 przykladowo
- definiujemy klase Uzytkownik o atrybutach nazwa, 
 haslo i metodzie autoryzuj,
- definiujemy klase Towar o atrybutach numer, 
 nazwa, dostawca, cena i metodach dodaj, usun,
 pobierz, sprawdz
- Projekt klas opisuje jedynie ich funkcjonalnosc 
 (ich interfejs) a nie ich wewnetrzna budowe.
- Kolejnym etapem jest zdefiniowanie klas 
 najnizszego poziomu
30 Tworzenie projektu w srodowisku VB.NET
- Klasy dodaje sie albo w oknie Solution Explorera 
 albo w menu Projekt opcja Add Class..
- zostanie wyswietlone okno dialogowe Add New Item 
- w okienku Templates nalezy wybrac Class, w polu 
 Name wpisac jej nazwe i uruchomic opcje Open
- zostanie wyswietlone okno edytora kodu 
 zawierajace deklaracje klasy
-  Public Class Nazwa_klasy 
-  .................. 
-  End Class 
- W ciele klasy nalezy zdefiniowac jej atrybuty 
 (zmienne), metody i zdarzenia.
31 Tworzenie projektu w srodowisku VB.NET
- Wlasciwosci w Visual Basic.NET sa tworzone w 
 definicjach klas za pomoca slowa kluczowego
 Property
- wlasciwosci tylko do odczytu (read-only) 
 posiadaja funkcjonalnosc Get,
- wlasciwosci tylko do zapisu (write-only) 
 posiadaja funkcjonalnosc Set, np.
-  Public Class KomunikatMsg 
-  Private strKomunikat as String 
-  Public Property MsgText( ) As String 
-  Get 
-  MsgText  strKomunikat 
-  End Get
32 Tworzenie projektu w srodowisku VB.NET
-  Set(ByVal Value As String) 
-  strKomunikat  Value 
-  End Set 
-  End Property 
- End Class 
- W celu odczytania wartosci strKomunikat z obiektu 
 MyKomunikat klasy KomunikatMsg wykorzystujemy
 wlasciwosc MsgText( )
-  strValue  MyKomunikat.MsgText( ) 
- W celu przypisania do obiektu MyKomunikat 
 okreslonej wartosci wykorzystujemy równiez
 wlasciwosc MsgText( )
-  MyKomunikat.MsgText( )  Witaj
33 Tworzenie projektu w srodowisku VB.NET
- Polecenia Get i Set pozwalaja odczytywac i 
 ustawiac wartosci pól prywatnych
- Zapisywanie stanu obiektu do pliku tekstowego i 
 jego odczytywanie jest okreslane slowem kluczowym
 persistence.
- Obiekty z modyfikatorem persistence sa obiektami 
 trwalymi ich stan jest aktualna wartoscia tego
 obiektu.
- Visual Basic.NET obsluguje funkcje dziedziczenia. 
- Klasa pochodna wskazuje uzywana przez siebie 
 klase bazowa slowem Inherits
-  Public Class Komunikat_1Msg 
-  Inherits KomunikatMsg 
-  End Class
34 Tworzenie projektu w srodowisku VB.NET
- Do zapisywania danych klasy do pliku sluzy metoda 
 Write( )
-  Public Function Write ( ) As Boolean 
-  Dim MsgFile As Stream 
-  Write  True 
-  MsgFile  File.Open(msg.bin, 
 FileMode.Create)
-  MsgFile.Close( ) //zamkniecie utworzonego 
 pliku
-  End Function 
- Do automatycznego zapisywania stanu obiektu przed 
 jego zniknieciem sluzy metoda Dispose ( )
-  Public Sub Dispose ( ) 
-  Write ( ) 
-  End Sub
35 Tworzenie projektu w srodowisku VB.NET
- Do odczytywania stanu obiektu w chwili tworzenia 
 nowej jego instancji sluzy metoda Read( )
-  Public Function Read ( ) As Boolean 
-  Dim MsgFile As Stream 
-  Read  True 
-  MsgFile  File.Open(msg.bin, 
 FileMode.Open)
-  MsgFile.Close( ) //zamkniecie otwartego do 
 odczytu pliku
-  End Function 
- Do tworzenia nowej instancji klasy Komunikat_1Msg 
 wykorzystywana jest metoda New ( )
- Jesli zdefiniujemy metode New ( ) i z jej wnetrza 
 wywolamy metode Read ( ) to obiekt odczyta
 zapisany stan obiektu (o ile zapis zostal
 wczesniej dokonany).
36 Dziedziczenie w VB.NET
- Definicja metody New ( ) ma postac 
-  Public Sub New ( ) 
-  MyBase.New( ) 
-  ................... 
-  Read ( ) 
-  End Sub 
- Wewnatrz podklasy odwolanie do klasy bazowej 
 realizowane jest przy uzyciu slowa kluczowego
 MyBase
- Formularz Windows jest modulem klas dziedziczacym 
 cechy formularza z klasy bazowej
 System.Windows.Forms platformy .NET lub z innego
 formularza.
37 Budowa obiektu MsgReader
- Definicja klasy MsgReader ma postac 
-  Class MsgReader 
-  Inherits System.Windows.Forms.Form 
-  Public Sub New( ) 
-  MyBase.New() //tworzenie obiektu 
 formularza
-  MsgReader  Me 
-  End Sub 
-  End Class 
- Utworzony formularz MsgReader sluzy do 
 przegladania i edycji wiadomosci przechowywanych
 w obiekcie klasy Komunikat_1Msg
38 Tworzenie okna formularza
- Utworzony formularz MsgReader jest formularzem 
 pustym, wiec nalezy dodac do niego kontrolki.
- Wszystkie kontrolki znajdujace sie wewnatrz 
 obiektu okno formularz deklarowane sa jako pola
 inicjalizowane metoda InitializeComponent ( ).
- Po dodaniu kontrolki metoda New automatycznie 
 ustawiane sa wlasciwosci niezbedne do okreslenia
 charakterystyki i pozycji kontrolki.
- Kontrolki ukazujace sie w oknie formularza naleza 
 do zbioru kontrolek dodanego metoda Add( ) oraz
 zdefiniowane w klasie bazowej.
39 Tworzenie okna formularza
- Poniewaz klasa MsgReader dziedziczy z klasy 
 bazowej System.Windows.Forms.Form, dostaje
 automatyczny dostep do zbioru kontrolek (controls
 collection)
- Do przegladania i edycji tekstu wykorzystywana 
 jest kontrolka wieloliniowego edytora (TextBox
 control)
- W celu powiazania formularza MsgReader z obiektem 
 klasy Komunikat_1Msg nalezy do metody New( )
 klasy MsgReader dodac parametr zawierajacy
 referencje do obiektu klasy Komunikat_1Msg
 parametr ten jest zapisywany do pola klasy
 MsgReader i moze byc uzywany wewnatrz obiektu.
40- Public Class FormularzVB 
-  Inherits System.Windows.Forms.Form 
- ........................................ 
- Private Sub InitializeComponent() 
-  Me.TextBox  New System.Windows.Forms.Text
 Box()
-  Me.TextBox.AcceptsReturn  True 
-  Me.TextBox.Multiline  True 
-  Me.TextBox.Name  "TextBox" 
-  ................... 
-  Me.TextBox.Text  "" 
- Me.Controls.AddRange(New System.Windows.Forms.Cont
 rol() Me.TextBox)
-  Me.Text  "Zadanie" 
- End Sub 
- End Class
41 Wyswietlanie pola tekstowego
-  Private Msg AS Komunikat_1Msg 
-  Public Sub New(ByRef Msg AS Komunikat_1Msg) 
-  MyBase.New() //tworzenie obiektu 
 formularza
-  MsgReader  Me 
-  Me.Msg  Msg //przypisanie zmiennej wewnatrz 
 klasy
- // MsgReader referencji do zmiennej Msg klasy 
 Komunikat_1Msg InitializeComponent( )
-  TextBox.Text  Msg.MsgText( ) 
-  End Sub 
-  Do wyswietlenia zawartosci pola tekstowego 
 wykorzystujemy wlasciwosc Text kontrolki TextBox,
 zainicjalizowanej wartoscia MsgText obiektu klasy
 Komunikat_1Msg
42 Zdarzenia OK i Anuluj
- Zdarzenia obsluguja procedury zdarzeniowe zawarte 
 w klasie MsgReader
- Protected Sub btnOK_Click(ByVal sender As Object, 
 _ ByVal e As System.EventArgs) Handles
 btnOK.Click
- Msg.MsgText  TextBox.Text() // zapisanie 
 wiadomosci
-  .............................. 
-  Close() // zamkniecie formularza i jego 
 zasobów
-  End Sub 
- Protected Sub btnCancel_Click(ByVal sender As 
 Object, _
-  ByVal e As System.EventArgs) Handles 
 btnCancel.Click
-  ............................. 
-  End Sub
- Zdarzenia obsluguja procedury zdarzeniowe zawarte 
 w klasie MsgReader
43 Uruchamianie aplikacji w Visual Basic.NET
- Domyslnie aplikacje Visual Basic.NET uruchamiane 
 sa przez wywolanie instancji domyslnego
 formularza (np. MsgReader).
- Jest to stosowane wtedy, gdy aplikacja calkowicie 
 opiera sie na formularzu glównym oraz gdy metoda
 New( ) nie pobiera zadnych argumentów.
- W innych przypadkach punktem startowym jest 
 metoda main( ), zawarta w module Main, w postaci
-  Sub main ( ) 
-  System.Windows.Forms.Application.Run 
-  (New MsgReader(New Komunikat_1Msg ( ) ) ) 
-  End Sub
44 Dziedziczenie w VB.NET
- Kod tworzenia formularza bedzie mial postac 
- Tworzenie nastepnego formularza moze bazowac na 
 kolejnej klasie pochodnej
Imports System.ComponentModel Imports 
System.Drawing  dziedziczona z klasy Import 
System.WinForms  System.WinForms.Form Public 
Class Form1 Inherits System.WinForms.Form
Imports System.ComponentModel Imports 
System.Drawing Import System.WinForms Public 
Class Form2 Inherits Form1 
 45 Dziedziczenie w VB.NET
- Utworzony formularz bedacy instancja klasy Form2 
 moze posiadac dwa zestawy kontrolek
- utworzonych za pomoca modulu Visual Designer 
- oddziedziczonych z formularza Form1. 
- Dziedziczony jest zarówno wyglad kontrolek jak i 
 kod obslugujacy kontrolki.
- Dziedziczenie jest mozliwe wszystkich klas 
 utworzonych w jakimkolwiek jezyku platformy .NET.
- W VB. NET nie wystepuje dziedziczenie 
 wielokrotne, dostepne w C i niektórych innych
 jezykach obiektowych.
46 Parametryzowane konstruktory  w VB.NET
- Podczas tworzenia instancji obiektu moga byc do 
 niego przekazane parametry, które natychmiast
 modyfikuja zachowanie sie tego obiektu.
- W poprzednich wersjach VB zamiast konstruktorów 
 stosowane byly zdarzenia zachodzace podczas
 tworzenia instancji, takie jak
- Class Initialize dla klas, 
- Form Load dla formularzy, do których nie mogly 
 byc przekazywane zadne parametry.
- Przykladowy kod w VB mialby wiec postac
Dim objNowiPracownicy As New Pracownicy objNowiPra
cownicy.PracownicyID  (125-55-2345) 
 47 Parametryzowane konstruktory  w VB.NET
- Przykladowy kod w VB.NET bedzie mial postac 
- Konstruktor w VB.NET nie jest zdarzeniem, ale 
 procedura, wiec jest okreslany poprzez instrukcje
 Sub New, ma zakres Public i moze miec argumenty.
- Fragment kodu konstruktora ma przykladowa postac 
- W tym przypadku przy tworzeniu kazdej instancji 
 klasy wymagany jest argument.
Dim objNowiPracownicy As New Pracownicy 
(125-55-2345)
Sub New (sPracownicyID AS String) kod konstruktora 
 48 Parametryzowane konstruktory  w VB.NET
- Konstruktory uruchamiane sa automatycznie podczas 
 tworzenia instancji.
- Wykorzystanie konstruktora do tworzenie naglówka 
 formularza Form2
- Tworzymy nowy projekt formularza Windows w 
 srodowisku VB. NET - Form1 i wstawiamy do niego
 przycisk uruchamiajacy formularz Form2,
- Wstawiamy drugi formularz (domyslnie Form2) opcja 
-  Project_SYMBOLAdd Windows Form 
-  Dla tego formularza zostanie automatycznie 
 utworzony konstruktor o nazwie Sub New w module
 Class formularza.
49 Parametryzowane konstruktory  w VB.NET
- Domyslny konstruktor ma postac 
- Zmieniamy kod konstruktora nastepujaco
Public Sub New ( ) MyBase.New Form2  Me End Sub
Public Sub New (ByVal sTitlebarCaption As String 
) MyBase.New Form2  Me me.Text  
sTitlebarCaption End Sub  
 50 Parametryzowane konstruktory  w VB.NET
- Wracamy do Form1 i dwukrotnie klikajac otwieramy 
 kod zdarzenia, które wywoluje Button1_Click w
 edytorze kodu do którego wstawiamy kod
-  Zawiera on parametr wymagany przez instrukcje 
 Sub New.
- Utworzona przyciskiem w Form1 instancja 
 formularza Form2 bedzie miala nazwe podana w
 parametrze.
Dim frmNewForm As New Form2(Formularz 
drugi) frmNewForm.Show( )  
 51 Przeslanianie nazw w VB.NET
- VB.Net obsluguje pelne przeslanianie metod i 
 wlasciwosci klas bazowych.
- Logika przeslaniania moze istniec zupelnie 
 niezaleznie od klasy bazowej, a metoda bazowa
 moze byc wywolana z klasy przeslaniajacej, ale
 jej dzialanie bedzie tylko w zasiegu tej klasy.
- Klasa bazowa moze zastrzec, ze dana wlasciwosc 
 lub metoda ma byc przeslonieta (lub nie moze byc
 przeslonieta) w klasie potomnej
52 Przeslanianie nazw w VB.NET
- Przeslanianie jest kontrolowane za pomoca 
 nastepujacych slów kluczowych
- Overridable - element klasy bazowej moze byc 
 przesloniety w klasach potomnych,
- Overrides - element klasy bazowej jest 
 przesloniety przez element o tej samej nazwie w
 klasie potomnej,
- NotOverridable - element klasy bazowej nie moze 
 byc przesloniety w klasach potomnych (opcja
 domyslna),
- MustInherit - atrybut deklaracji klasy bazowej 
 okreslajacy, ze instancja klasy potomnej nie moze
 byc tworzona bezposrednio, ale musi zostac
 oddziedziczona,
53 Przeslanianie nazw w VB.NET
- MustOverride - dostepne jedynie dla klas 
 zadeklarowanych jako MustInherit. Oznacza, ze
 wszystkie klasy dziedziczace dany element klasy
 bazowej musza go przeslaniac.
-  Element oznaczony jako MustOverride zapewnia 
 jedynie interfejs. Nie sa dopuszczalne nawet
 wiersze instrukcji End Sub oraz End Function.
- Rozpatrujemy klase bazowa, w której 
- istnieja wlasciwosci publiczne, inicjalizowane 
 przy pomocy konstruktora,
- klasy potomne moga implementowac wlasne wersje 
 elementów (Overridable).
54 Przeslanianie nazw w VB.NET
Public Class Klient Public Name As 
String Public Active As Boolean Public Sub New 
(ByVal sName as String, ByVal bActive As 
Boolean) Name  sName Active  bActive End 
Sub klasa potomna moze zaimplementowac wlasna 
wersje Public Overridable Sub CheckStatus ( 
) Debug. WriteLine (Name   Name) Debug. 
WriteLine (Active   Active) End Sub End Class
- Domyslny konstruktor ma postac
55 Przeslanianie nazw w VB.NET
- Tworzymy klase potomna, w której 
- istnieja wlasciwosci publiczne, 
- tworzymy konstruktor klasy podklasy, 
- wywolujemy konstruktor klasy bazowej, 
- inicjalizujemy zmienne podklasy, 
- przeslaniamy metody klasy bazowej, 
- wywolujemy wersje metod z klasy bazowej, 
- wypisujemy wlasciwosci podklasy.
56 Przeslanianie nazw w VB.NET
Public Class KlientDocelowy Inherits 
Klient Public DateToContact As Date deklaracja 
dodatkowa Public Sub New (ByVal sName as String, 
ByVal bActive As Boolean, ByVal datDateToContact 
As Date ) konstruktor podklasy 
 MyBase.New(sName, bActive) konstruktor klasy 
bazowej DateToContact  datDateToContact 
dodatkowa inicjalizacja End Sub przesloniecie 
metody klasy bazowej Public Overrides Sub 
CheckStatus ( ) MyBase.CheckStatus ( ) wywolanie 
wersji metody klasy bazowej Debug. WriteLine 
(Kontakt   DateToContact) End Sub End Class
- Domyslny konstruktor ma postac
57 Przeslanianie nazw w VB.NET
- Tworzymy instancje klasy potomnej, co wymaga 
 przeslania parametrów inicjalizujacych jej
 wlasciwosci i wywolujemy metode CheckStatus
-  
- Zostanie wyswietlone okno
Dim objNewKlientDocelowy As New KlientDocelowy 
(Siemens, True, 22/11/2003) objNewKlientDocelo
wy. CheckStatus
Debug Name Siemens //generowane metoda 
klasy bazowej Active True 
//generowane metoda klasy bazowej Kontakt 
22/11/2003 //generowane metoda klasy potomnej 
 58 Przeladowywanie nazw funkcji w VB.NET
- Przeladowywanie nazw funkcji polega na 
 zdefiniowaniu kilku funkcji o tej samej nazwie
 ale róznych argumentach
- W VB.NET realizowane to jest za pomoca slowa 
 kluczowego Overloads, np.
Overloads Sub Display (ByVal number as 
Integer) // cialo funkcji End Sub Overloads Sub 
Display (ByVal aString as String) // cialo 
funkcji End Sub 
 59 Elementy wspóldzielone w VB.NET
- W VB.NET istnieje mozliwosc tworzenia wlasciwosci 
 i metod wspóldzielonych przez wszystkie aktywne
 instancje w klasie.
- Jest to odpowiednik elementów statycznych jezyka 
 C
- Do tworzenia elementów wspóldzielonych 
 wykorzystuje sie slowo kluczowe Shared, np.
- Zmiana wlasciwosci w jednej instancji wywoluje 
 zmiane tej wlasciwosci we wszystkich instancjach
 danej klasy.
Public Shared CommonName As String 
 60 Interfejsy WWW w VB.NET
- Czescia platformy .NET sa formularze Web, 
 dzialajace w VB.NET tak samo, jak w kazdym innym
 jezyku platformy.
- Uslugi Web zapewniaja mechanizm umozliwiajacy 
 programom komunikowanie sie w Internecie za
 pomoca protokolu SOAP, który nie zalezy od
 wywolywanej technologii.
- Komponent uslugi Web zawiera metody 
- widoczne w interfejsie uslugi Web, oznaczone za 
 pomoca slowa kluczowego WebMethod,
- przeznaczone wylacznie do uzytku wewnetrznego.
61 Strukturalna obsluga jezyka w VB.NET
- Nowe mozliwosci skladni jezyka VB.NET obejmuja 
- strukturalna obsluge wyjatków, 
- tworzenie watków. 
- Skladnia obslugi bledów i wyjatków ma postac
Try // Kod programu Catch // fragment kodu 
zawierajacy komunikat o bledzie, wykonywany, // 
gdy w kodzie po instrukcji Try wystapil 
blad Finally // fragment kodu wykonywany 
niezaleznie od tego czy po Try wystapil blad czy 
nie End Try 
 62 Strukturalna obsluga jezyka w VB.NET
- Kod po instrukcji Try moze zawierac instrukcje 
 Throw, która wymusza blad (i wykonanie sekcji
 kodu po Catch)
- VB.NET obsluguje równiez instrukcje On Error oraz 
 obiekt Err.
- VB. NET obsluguje swobodne tworzenie watków. 
- W celu rozpoczecia nowego watku typ obiektu 
 deklarowany jest jako Thread, a podczas tworzenia
 instancji przekazywany jest adres, który ma byc
 wykonany w watku.
- Klasa Thread posiada rózne metody wstrzymywania, 
 zawieszania, przywracania, usuwania i innych
 operacji dokonywanych na watku.
63 Typy zmiennych stosowane w VB.NET
- Poniewaz podstawa platformy .NET jest wspólny 
 system plików CTS, w VB.NET wprowadzono
 nastepujace zmiany w stosunku do typów danych
 stosowanych w VB
- Typy calkowite Integer ? Short (2 bajty) 
-  Long ? Integer (4 bajty) 
-  ------ ? Long (8 bajtów). 
- Przy przenoszeniu kodu aplikacji nastepuje 
 automatyczna konwersja starych typów danych na
 nowe
- Przy wklejaniu dodatkowego kodu nalezy samemu 
 dokonac zmiany typów.
- Typ Currency ? Decimal (12 bajtów) lub ? Long
64 Typy zmiennych stosowane w VB.NET
- Wprowadzony jest typ Char (2 bajty), 
 przechowujacy wartosci znaków Unicode
- Typ Variant nie jest uzywany. Moze byc zastapiony 
 typem Object, gdyz na platformie .NET zarówno
 wartosci calkowite jak i lancuchy znaków
 traktowane sa jako obiekty.
- Do obslugi lancuchów o stalej dlugosci stosowana 
 jest klasa FixedLengthString wykorzystywana w
 deklaracji
- Typ Data nie jest przechowywany w typie Double, 
 ale uzywa wewnetrznie 8-bitowego typu wartosci
 integer.
Dim sFixedLengthString As New VB6.FixedLengthStrin
g (18) 
 65 Zmiany wprowadzone w VB.NET
- VB.NET nie obsluguje domyslnych wartosci i metod. 
- W VB6 w instrukcji przypisania do obiektów 
 stosowana byla instrukcja Set, w VB. NET nie sa
 uzywane wlasciwosci domyslne, a wiec instrukcja
 Set jest zbedna.
- Przy wlasnosciach tylko do odczytu/zapisu nalezy 
 deklaracje wlasciwosci poprzedzic slowem ReadOnly
 (procedura Get..End Get) lub WriteOnly (procedura
 Set..End Set)
strName  txtName.Text ( w VB6 strName  
txtName) strName  rsRecordSet.Fields 
(Name).Value
txtCity  txtNewCity ( w VB6 Set txtCity  
txtNewCity 
 66 Zmiany wprowadzone w VB.NET
- Kompilator VB.NET zawsze wymaga uzycia nawiasów, 
 nawet dla list argumentów typu Null, np..
- W VB. NET wszystkie parametry na liscie 
 argumentów maja domyslne ustawienie ByVal
- VB. NET nie dopuszcza deklaracji róznych typów w 
 jednym wierszu, np..
MsgBox (Witaj) ( w VB6 MsgBox Witaj ) Dim 
sDate As String sDate  Date( ) ( w VB6 sDate 
 Date )
Dim strImie, strNazwisko As String w VB6 Dim 
strImie As String, strNazwisko As String, wiek As 
Integer 
 67 Zmiany wprowadzone w VB.NET
- VB. NET dopuszcza w deklaracji inicjalizacje 
 zmiennych
- W deklaracji tablicy w VB6 liczba w nawiasie 
 oznaczala indeks ostatniego elementu
- Podobnie, w deklaracji tablicy w VB.NET liczba w 
 nawiasie oznacza indeks ostatniego elementu
- W VB.NET nie stosuje sie tablic zaczynajacych od 
 indeksu 1
Dim strNazwisko As String  Kowalski
Dim strNazwisko (10) As String tablica 
11-elementowa (0 -10)
Dim strNazwisko (10) As String tablica 
11-elementowa (0 - 10) 
 68 Zmiany wprowadzone w VB.NET
- W VB.NET mozna równiez w deklaracji tablic 
 dokonywac ich inicjalizacji (analogicznie jak
 zmienne)
- Odwolania maja postac strImie(0), strImie(1), 
 strImie(2),
- W VB6 formularze ladowane byly w chwili 
 pojawienia sie pierwszego odwolania do nich. W
 VB.NET formularze musza byc formalnie deklarowane
 i ladowane jak inne obiekty, np..
Dim strImie (2) As String  (Ola, Tomek, 
Basia)
Dim frmNewForm As New Form2 ( ) frmNewForm.Show ( 
)  
 69 Zmiany wprowadzone w VB.NET
- W VB.NET wiele slów kluczowych zostalo zastapione 
 przez elementy klas wspóldzielonych platformy
 .NET, np.
- circle, line - przestrzen nazw System.Drawing.Grap
 hics
- sgn, sqr, atn - przestrzen nazw System.Math, 
- lset, rset - przestrzen nazw System.String, 
- rnd, round - przestrzen nazw Microsoft.VisualBasic
 .
-  Compatibility.VB6 
- W VB6 operatory and, or, xor, not sa uzywane 
 zarówno w dzialaniach bitowych jak i w operacjach
 boolowskich
- W VB.NET operatory and, or, xor, not sa 
 zastrzezone wylacznie do operacji boolowskich w
 arytmetyce bitowej stosowane sa operatory BitAnd,
 BitOr, BitXor, BitNo
70 Zmiany wprowadzone w VB.NET
- W VB6 typy definiowane sa przy pomocy slów 
 kluczowych Type .... End Type i sa publicznie
 dostepne.
- W VB.NET zamiast typów definiuje sie struktury 
 slowami Structure....End Structure.
- Kazdy element struktury musi byc zadeklarowany 
 slowami Dim, Public, Protected, Friend,
 Protected Friend, Private, np..
Structure klient public klientID As Integer Dim 
klientNazwisko As String Private klientStatus As 
Boolean End Structure  
 71 Zmiany wprowadzone w VB.NET
- W VB6 zmienna moze byc zadeklarowana w dowolnym 
 miejscu procedury (równiez wewnatrz instrukcji
 warunkowej lub petli) i niezaleznie od
 lokalizacji deklaracji ma pelen zasieg procedury.
- W VB.NET zmienne deklarowane w bloku kodu 
 ograniczonym instrukcjami End, Loop lub Next sa
 dostepne tylko w tym bloku, wiec maja zasieg
 bloku, ale
- zachowuja swoja wartosc po wyjsciu z bloku, 
-  nie mozna sie do nich odwolac spoza bloku. 
- VB.NET obsluguje parametry opcjonalne, ale nie 
 obsluguje funkcji If Missing, wiec parametry
 opcjonalne wymagaja wartosci domyslnych.
72 Zmiany wprowadzone w VB.NET
- W VB.NET w zlozonych instrukcjach warunkowych, 
 jesli pierwszy warunek jest spelniony, to
 nastepne nie sa sprawdzane, wiec nie powinny
 zawierac zadnych czynnosci (np.. inicjalizacji).
- Obiekt Debug dostepny jest teraz w przestrzeni 
 nazw System.Diagnostic.Debug, a jego metoda Print
 zostala zastapiona przez cztery metody Write,
 WriteIf. WriteLine, WriteLineIf.
- Zmienione sa opcje formatowania lancuchów znaków 
 i analizy liczb oraz wprowadzona inkrementacja i
 dekrementacja zmiennych.
- VB.NET nie obsluguje wielu slów kluczowych VB6, 
 m.in.. takich jak GoTo, Let, Option Base n itp..
73 Przystosowanie projektów do VB.NET
- Przystosowanie projektów wykonywanych w VB6 do 
 VB.NET zawarte jest w bibliotece dostepnej pod
 adresem
- Fundamentalna technologia platformy .NET uzywana 
 przez uslugi Web jest protokól SOAP.
- Pakiet narzedziowy SOAP dostepny jest pod 
 adresem
http//msdn.microsoft.com/library/techart/vb6tovbd
otnet.htm
http//msdn.microsoft.com/xml/general/toolkit_intr
o.asp 
 74 Kontrolki VB.NET
- Po wygenerowaniu nowego projektu Windows Control 
 Library kontrolki ActiveX automatycznie
 dziedzicza wlasnosci po klasie
- System.Windows.Forms.UserControl. 
- Klasa ta w postaci 
-  
-  dostarcza podstawowe wlasciwosci i zdarzenia 
 zwiazane z kontrolkami. Jest ona klasa bazowa do
 tworzenia wlasnych kontrolek
Public Class UserControl1 Inherits 
System.Windows.Forms.UserControl End Class 
 75 Kontrolki VB.NET
- Mozna stworzyc kontrolki dziedziczace wlasnosci 
 po innym komponencie, np. CheckBox
- Po wykonaniu tej zmiany tracimy mozliwosc 
 bezposredniego edytowania kontrolki na ekranie
 'Design'.
- Mozna za pomoca operacji Drag and Drop wprowadzic 
 na ten ekran inne kontrolki ale mozna je
 obslugiwac tylko recznie.
Public Class UserControl1 Inherits 
System.Windows.Forms.CheckBox End Class  
 76 Zdarzenia VB.NET
- Zdarzenia deklaruje sie w nastepujacy sposób 
- Metoda RaiseEvent sluzy do wywolania zdarzenia w 
 momencie klikniecia na kontrolke.
Public Class UserControl1 Inherits 
System.Windows.Forms.CheckBox Public Event 
MojeZdarzenieKlikniecia() Protected Overrides 
 Sub OnClick(ByVal e As System.EventArgs) 
 RaiseEvent MojeZdarzenieKlikniecia() End Sub 
 End Class  
 77 Zdarzenia VB.NET
- Metody typu Overrides których nazwa zaczyna sie 
 od liter On pozwalaja nadpisac obsluge zdarzenia
 zdefiniowana w klasie bazowej.
- W celu wywolania obslugi zdarzenia z klasy 
 bazowej modyfikujemy metode w nastepujacy sposób
 
- Mozna najpierw wywolac metode MyBase.OnClick(e) a 
 pózniej napisac obsluge zdarzenia, ale zmienia to
 wynik dzialania procedury.
Protected Overrides Sub OnClick(ByVal e As 
System.EventArgs) RaiseEvent MojeZdarzenieKliknie
cia() MyBase.OnClick(e) End Sub  
 78 Zdarzenia VB.NET
- Zdarzenia w aplikacji mozna obslugiwac dwiema 
 metodami
- Pierwsza metoda polega na wykorzystaniu slowa 
 kluczowego Handles przy deklaracji metody. Slowo
 to informuje kompilator, ze metoda ta bedzie
 wykorzystana do obsluzenia danego zdarzenia, np
 
Private Sub UserControl11_Click(ByVal sender As 
Object, ByVal e As System.EventArgs) _ Handles 
UserControl11.Click MsgBox("Nastapilo 
klikniecie!", MsgBoxStyle.Information) End Sub  
 79- Druga polega na wykorzystaniu metody AddHandler i 
 RemoveHandler, co pozwala na podlaczenie danej
 metody do obslugi zdarzenia w sposób dynamiczny,
 np
Public Sub PodlaczObsZdarzenia() AddHandler 
UserControl11.Click, AddressOf MojaObslugaklikniec
ia End Sub Private SubMojaObslugaklikniecia(ByVa
l obSend As Object, ByVal e As System.EventArgs) 
 MsgBox("Nastapilo klikniecie!", 
MsgBoxStyle.Information) End Sub Public Sub 
OdlaczObsZdarzenia() RemoveHandler 
UserControl11.Click, AddressOf MojaObslugaklikniec
ia End Sub 
 80 Deklaracje metod w VB.NET
- Metoda która podlaczamy musi miec wlasciwe 
 parametry do obsluzenia danego zdarzenia.
- Pojawienie sie dziedziczenia i polimorfizmu w 
 Visual Basic.Net spowodowalo pojawienie sie
 wiekszej róznorodnosci w deklarowaniu metod.
- W Visual Basic.Net mamy o wiele wieksze 
 mozliwosci decydowania o dostepie do elementów
 danej klasy, zwlaszcza w przypadku, kiedy
 tworzymy hierarchiczna strukture klas.
81 Deklaracje metod w VB.NET
- Z wykorzystaniem listy atrybutów attrlist. 
 Definicja funkcji w VB.NET wyglada w tym
 przypadku nastepujaco
ltattrlistgt  Overloads  Overrides  
Overridable  NotOverridable  MustOverride  
Shadows  Shared  Public  Protected  Friend 
 Protected Friend  Private  Function nazwa 
(arglist)  As typ   Implements 
interfejs.zdefiniowananazwa   instrukcje 
 Exit Function  instrukcje  End Function 
 82 Deklaracje metod w VB.NET
- Definicja procedury ma wtedy postac 
- attrlist  lista atrybutów dla danej metody. Jest 
 to nowosc w stosunku do poprzednich wersji
 kompilatora.
- Wszystkie atrybuty musza byc dziedziczone z klasy 
 System.Attribute.
ltattrlistgt  Overloads  Overrides  
Overridable  NotOverridable  MustOverride  
Shadows  Shared  Public  Protected  Friend 
 Protected Friend  Private  Sub nazwa 
(arglist)  Implements interfejs.zdefiniowanan
azwa   instrukcje  Exit Sub  instrukcje 
 End Sub 
 83 Deklaracje metod w VB.NET
- Zamiast stosowac Declare Function mozna 
 zastosowac klase atrybutu DllImportAttribute,
 której konstruktor ma pewne parametry jak np.
 dllName ( w tym przypadku Kernel32).
Public Class CDll ltDllImport("Kernel32", 
EntryPoint"GetWindowsDirectory")gt Public _ 
Shared Function GetWindowsDirectory(ByVal 
lpBuffer As StringBuilder, _ ByVal nSize As 
Integer) As Long End Function ltDllImport("Kernel3
2", EntryPoint"GetSystemDirectory")gt Public _ 
Shared Function _ GetSystemDirectory(ByVal 
lpBuffer As StringBuilder, ByVal nSize As _ 
Integer) As Long End Function ltDllImport("Kernel3
2", EntryPoint"GetCommandLine")gt Public _ 
Shared Function GetCommandLine() As IntPtr End 
Function End Class 
 84- Z wykorzystaniem przeciazenia nazwy funkcji lub 
 procedury z klasy bazowej - Overloads.
Public Class CMojaKlasaBazowa Public Function 
MojaFunkcjaBazowa(ByVal x As Long, ByVal y As_ 
Long) As Long MojaFunkcjaBazowa  x  y End 
Function End Class Public Class 
CMojaKlasaDziedziczaca Inherits 
CMojaKlasaBazowa Public Overloads Function 
MojaFunkcjaBazowa(ByVal x As Long, _ ByVal y As 
Long, ByVal z As Long) As Long MojaFunkcjaBazowa 
 x  y  z End Function Public Function 
MojaFunkcjaBazowa(ByVal x As Long, ByVal y As _ 
Long, ByVal z As Long, ByVal Mnoz As Long) As 
Long Blad MojaFunkcjaBazowa  (x  y  z)  
Mnoz End Function End Class 
 85- Nie mozna zastosowac slowa Overloads do 
 przeciazania metod, które róznia sie od siebie
 tylko wartoscia zwracana
Public Class CMojaKlasaBazowa Public Function 
MojaFunkcjaBazowa(ByVal x As Long, ByVal y As _ 
Long) As Long MojaFunkcjaBazowa  x  y End 
Function End Class Public Class 
CMojaKlasaDziedziczaca Inherits 
CMojaKlasaBazowa Public Overloads Function 
MojaFunkcjaBazowa(ByVal x As Long, _ ByVal y As 
Long) As Double Blad!!! MojaFunkcjaBazowa  
x  y End Function Public Overloads Function 
MojaFunkcjaBazowa(ByVal x As Long, _ ByVal y As 
Long, ByVal z As Long, ByVal Mnoz As Long) As 
Long MojaFunkcjaBazowa  (x  y  z)  
Mnoz End Function End Class 
 86- Z wykorzystaniem metody Overrides, która 
 zastepuje identyczna metode klasy bazowej (o tej
 samej liczbie i typie parametrów, oraz typie
 wartosci zwracanej). Metoda w klasie bazowej musi
 byc okreslona jako Overridable
Public Class CMojaKlasaDziedziczaca Inherits 
CMojaKlasaBazowa Public Overridable Overloads 
Function MojaFunkcjaBazowa(ByVal x As Long, ByVal 
y As Long, _ ByVal z As Long) As 
Long MojaFunkcjaBazowa  x  y  z End 
Function Public Overloads Function 
MojaFunkcjaBazowa(ByVal x As _ Long, ByVal y As 
Long, ByVal z As Long, ByVal Mnoz As _ Long) As 
Long MojaFunkcjaBazowa  (x  y  z)  
Mnoz End Function End Class 
 87 Deklaracje metod w VB.NET
Public Class CMojaKlasaDziedziczaca2 Inherits 
CMojaKlasaDziedziczaca Public Overloads Overrides 
Function MojaFunkcjaBazowa(ByVal x As Long, ByVal 
y As Long, _ ByVal z As Long) As 
Long MojaFunkcjaBazowa  (x  y)  z End 
Function End Class
- Z wykorzystaniem metody Overridable, która 
 wskazuje, ze metoda z klasy bazowej moze byc
 nadpisana przez identyczna metode w klasie
 dziedziczacej, lub
- Z wykorzystaniem metody NotOverridable, która 
 oznacza, ze ta metoda nie moze byc zastapiona
 przez zadna inna metode.
88- Funkcja typu NotOverridable musi sama zastepowac 
 taka sama metode w klasie bazowej dla swej klasy.
Public Class CMojaKlasaBaza2 Inherits 
CMojaKlasaBazowa Public NotOverridable Overrides 
Function MojaFunkcjaBazowa (ByVal x As Long, 
ByVal y As Long) As _ Long MojaFunkcjaBazowa  x 
 y End Function End Class Metoda w klasie 
bazowej musi byc okreslona jako 
Overridable Public Class CMojaKlasaDziedziczaca3 
 Inherits CMojaKlasaBaza2 Public Overrides 
Function MojaFunkcjaBazowa _ Blad!!! (ByVal x As 
Long, ByVal y As Long) As Long MojaFunkcjaBazowa 
 x  y End Function End Class 
 89- Z wykorzystaniem metody MustOverride, która 
 wskazuje, ze ta metoda nie jest zdefiniowana w
 tej klasie i musi byc zdefiniowana w klasie
 pochodnej klasa, w której deklarujemy taka
 metode musi byc zadeklarowana jako MustInherit.
Public MustInherit Class CMojaKlasaBaza2 Public 
MustOverride Function MojaFunkcjaBazowa _ (ByVal 
x As Long, ByVal y As Long) As Long End 
Class Public Class CMojaKlasaDziedziczaca3 Inheri
ts CMojaKlasaBaza2 Public Overrides Function 
MojaFunkcjaBazowa _ (ByVal x As Long, ByVal y As 
Long) As Long MojaFunkcjaBazowa  x  y End 
Function End Class 
 90 Deklaracje metod w VB.NET
- Z wykorzystaniem metody Shadows, która wskazuje, 
 ze metoda ta zakrywa identycznie nazwany element
 programistyczny lub zbiór przeciazonych elementów
 w klasie bazowej
Public Class CMojaKlasaBazowa3 Public i As 
Long End Class Public Class CMojaKlasaDziedziczaca
4 Inherits CMojaKlasaBazowa3 Public Shadows 
Function i(ByVal e As Long) As String MsgBox(e, 
MsgBoxStyle.Information) i  "Jest OK!" End 
Function End Class 
 91- Z wykorzystaniem metody Shared , która wskazuje, 
 ze ta metoda nie musi byc wywolana z instancji
 danego typu, lecz mozna ja wywolac bezposrednio z
 typu nie tworzac instancji tego typu
Public Class CMojaKlasa1 Public Shared Function 
MojaFunkcjaBazowa _ (ByVal x As Long, ByVal y As 
Long, ByVal z As Long) As Long MojaFunkcjaBazowa 
 (x  y)  z End Function End Class Public 
Class CMojaKlasa2 Public Function 
MojaFunkcjaDziedzicaca(ByVal i As Long) As 
String i  CMojaKlasa1.MojaFunkcjaBazowa(2, 3, 
4) End Function End Class 
 92- Z wykorzystaniem metody Public 
- Z wykorzystaniem metody Protected  dostepnej 
 tylko z poziomu wlasnej klasy lub dziedziczacej
Public Class CMojaKlasaBazowa3 Protected Function 
MojaFunkcjaBazowa(ByVal x As Long, _ ByVal y As 
Long) As Long MojaFunkcjaBazowa  x  y End 
Function End Class Public Class 
CMojaKlasaDziedziczaca4 Inherits 
CMojaKlasaBazowa3 Public Shadows Function 
MojaFunkcja(ByVal e As Long) As _ String Dim 
Wynik As Long Wynik  Me.MojaFunkcjaBazowa(1, 
2) End Function End Class  
 93 Deklaracje metod w VB.NET
- Nie mozna wykonac nastepujacej operacji
Public Class CMojaKlasaDziedziczaca4 Inherits 
CMojaKlasaBazowa3 Public Function 
MojaFunkcja(ByVal e As Long) As String Dim 
Instancja As New CMojaKlasaBazowa3() Dim Wynik 
As Long Wynik  Instancja.MojaFunkcjaBazowa(1, 2) 
 Blad !!! End Function End Class
 Taka operacja jest mozliwa dopiero po 
zadeklarowaniu metody jako Friend. 
 94- Z wykorzystaniem metody Friend  do metody w ten 
 sposób zadeklarowanej mozna miec dostep w calym
 programie gdzie zawarta jest jej deklaracja i
 gdziekolwiek indziej, ale w ramach danego
 podzespolu (assembly)
Public Class CMojaKlasaBazowa3 Friend Function 
MojaFunkcjaBazowa(ByVal x As Long, _ ByVal y As 
Long) As Long MojaFunkcjaBazowa  x  y End 
Function End Class Public Class 
CMojaKlasaDziedziczaca4 Public Function 
MojaFunkcja(ByVal e As Long) As String Dim 
Instancja As New CMojaKlasaBazowa3() Dim Wynik 
As Long Wynik  Instancja.MojaFunkcjaBazowa(1, 
2) End Function End Class 
 95- Z wykorzystaniem metody Protected Friend  dostep 
 do 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 dostepna tylko w
 tym kontekscie gdzie zostala zadeklarowana.
Public Class CMojaKlasa3 Private Function 
MojaFunkcja(ByVal x As Long, ByVal y As _ Long) 
As Long MojaFunkcja  x  y End 
Function Private Function MojaFunkcja2() Dim 
Wynik As Long Wynik  Me.MojaFunkcja(1, 2) End 
Function End Class 
 96 Deklaracje metod w VB.NET
- Z wykorzystaniem metody Implements , która 
 implementuje metode zdefiniowana poprzez
 interfejs
Interface IMojInterfejs Function 
MojaFunkcja(ByVal x As Long, ByVal y As Long) _ 
As Long End Interface Public Class 
CMojaKlasa4 Implements IMojInterfejs Public 
Function MojaFunkcja (ByVal x As Long, ByVal y As 
_ Long) As Long Implements IMojInterfejs.MojaFunkc
ja MojaFunkcja  x  y End Function End Class 
 97Literatura
- Dino Esposito  Tworzenie aplikacji za pomoca 
 ASP.NET oraz ADO.NET (Microsoft Press,
 Wydawnictwo RM Warszawa 2002)
- Julian Templeman, David Vitter  Visual Studio 
 .NET .NET Framework. Czarna Ksiega (Helion 2003)
- Microsoft Press  Microsoft Visual C.NET 
 Encyklopedia (Helion 2003)
- Rusty Harold  XML. Ksiega Eksperta (Helion 
 2001)
- Scott Worley  ASP.NET. Vademecum Profesjonalisty 
 (Helion, 2003)
- Steaven Holzner  XML. Vademecum Profesjonalisty 
 (Helion2001)
- http//www.ASP.com 
- http//www.ietf.org/RFC 2069/ 
- http//www.learnASP.com 
- http//www.msdn.microsoft.com/vcsharp/ 
- http//www.windows2003.pl 
- http//www.xml.com