Tworzenie zintegrowanych aplikacji bazodanowych

Download Report

Transcript Tworzenie zintegrowanych aplikacji bazodanowych

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 SqlConnection()
2
Podstawy Visual Basic.NET
• Do tworzenia i inicjalizacji obiektów stosowane są
konstruktory
parametryzowane
(akceptujące
argumenty).
Dim command = New SqlCommand(strSelect, 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 ReDim.
• 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
Funkcja
Podnoszenie do potęgi
Negacja
Mnożenie, dzielenie
Dzielenie całkowite
Modulo (6 mod 4 =2)
Dodawanie, odejmowanie
Operatory logiczne
Połączenie
Równe, różne, mniejsze, większe
Mniejsze lub równe, większe lub równe
Przypisanie
Operator
^
~
*, \
/
Mod
+, NOT, OR, AND, XOR
&, + (zmienne łańcuchowe)
=, <>, <,>
<=, >=
=, ^=, *=, /=, \=, +=, _=, &=
4
Konwersja typów w VB.NET
• W VB.NET argumentem konwersji (rzutowania) typu
jest typ Object
Funkcja
CBool
CByte
CChar
CDec
CDate
CDbl
CInt
CLng
CSng
CStr
Cshort
CObj
Opis
Konwersja na Boolean
Konwersja na Byte
Konwersja na Char
Konwersja na Decimal
Konwersja na DateTime
Konwersja na Double
Konwersja na Integer
Konwersja na Long
Konwersja na Single
Konwersja na String
Konwersja na Short
Konwersja na 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.GetValue(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 data1 As String = DateTime.Today.Year.ToString 6
Procedury i funkcje w VB.NET
• W VB.NET program może zawierać procedury, funkcje
i
zdarzenia
(np.
OnClick,
Page_Load,
OnSelectedIndexChanged).
• 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ść ByVal lub
przez referencję ByRef (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(ByVal sel As String, ByVal obj As
Object, ByVal typ As Int16, Optional ByVal 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 TestPorównujący Then
Jedna lub wiele instrukcji
End If
If TestPorównujący Then Instrukcja
If TestPorównujący Then
Jedna lub wiele instrukcji
Else
Jedna lub wiele instrukcji
End If
Instrukcje zagnieżdżone
If TestPorównujący Then
Jedna lub wiele instrukcji
Else
If TestPorównujący Then
Jedna lub wiele instrukcji
Else
Jedna lub wiele instrukcji
Endif
End If
12
 W przypadku instrukcji zagnieżdżonych lepiej używać
struktury:
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 są fałszywe
End If
 Instrukcja może zawierać dowolną liczbę klauzul ElseIf.
Użycie klauzuli Else jest w tym przypadku opcjonalne
 Warunki sprawdzane są po kolei, aż do napotkania
pierwszego prawdziwego, dlatego istotna jest kolejność13
wyrażeń warunkowych.
Instrukcja Select Case
Select Case wyrażenie
Case wartość (lub wartości oddzielone przecinkami)
Jedna lub wiele instrukcji
Case Is relacja
Jedna lub wiele instrukcji
Case wyrażenie1 To wyrażenie2
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 ZmiennaLicznik = WarPoczatkowa To WarKoncowa
[ Step WarKroku]
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ć
obsługi tego zdarzenia (event handler).
procedurę
• 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(ByVal obj As Object, ByVal e As
EventArgs) 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 EventArgs 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

Visual Basic.NET wprowadza zmiany w stosunku do
VB w następujących dziedzinach:
 nowych
możliwości programowania obiektowego,
 większych
możliwości tworzenia interfejsów www,
 strukturalną
obsługę języka i tworzenie wątków,
 dostosowanie
do wspólnej specyfikacji CLS oraz
wspólnego systemu typów CTS,
 eliminację przestarzałych
elementów składni
starszych wersji VB
25
Nowe możliwości programowania
obiektowego VB.NET

Nowych możliwości
VB.NET obejmują:
 pełne
programowania
obiektowego
w
dziedziczenie klas i polimorfizm
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,
 parametryzowane
 przesłanianie
elementów umożliwiające modyfikowanie
właściwości i metod klasy bazowej w podklasach,

przeładowywanie nazw funkcji,
 współdzielenie
właściwości lub metod przez wszystkie
26
instancje danej klasy.
Przystosowanie projektów do VB.NET
27
Tworzenie projektu w środowisku VB.NET

Tworzenie projektu w VB.NET polega na zbudowaniu
diagramu klas projektu, np. z wykorzystaniem języka
UML (Unified Modeling Language)

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

Diagram klas należy zamienić na projekt klas, a więc
określić ich atrybuty, metody i zdarzenia; przykładowo:

definiujemy klasę Użytkownik o atrybutach: nazwa,
hasło i metodzie autoryzuj,

definiujemy klasę Towar o atrybutach: numer,
nazwa, dostawca, cena i metodach dodaj, usuń,
pobierz, sprawdź

Projekt klas opisuje jedynie ich funkcjonalność (ich
interfejs) a nie ich wewnętrzną budowę.

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 KomunikatMsg
Private strKomunikat as String
Public Property MsgText( ) As String
Get
MsgText = strKomunikat
31
End Get
Tworzenie projektu w środowisku VB.NET


Set(ByVal Value As String)
strKomunikat = Value
End Set
End Property
End Class
W celu odczytania wartości strKomunikat z obiektu
MyKomunikat klasy KomunikatMsg wykorzystujemy
właściwość MsgText( )
strValue = MyKomunikat.MsgText( )
W celu przypisania do obiektu MyKomunikat określonej
wartości wykorzystujemy również właściwość MsgText( )
32
MyKomunikat.MsgText( ) = „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_1Msg
Inherits KomunikatMsg
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 MsgFile As Stream
Write = True
MsgFile = File.Open(„msg.bin”, FileMode.Create)
MsgFile.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 MsgFile As Stream
Read = True
MsgFile = File.Open(„msg.bin”, FileMode.Open)
MsgFile.Close( ) //zamknięcie otwartego do odczytu pliku
End Function
Do tworzenia nowej instancji klasy Komunikat_1Msg
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 ( )
MyBase.New( )
...................
Read ( )
End Sub

Wewnątrz podklasy odwołanie do klasy bazowej
realizowane jest przy użyciu słowa kluczowego MyBase

Formularz Windows jest modułem klas dziedziczącym
cechy
formularza
z
klasy
bazowej
System.Windows.Forms platformy .NET lub z innego
formularza.
36
Budowa obiektu MsgReader

Definicja klasy MsgReader ma postać:
Class MsgReader
Inherits System.Windows.Forms.Form
Public Sub New( )
MyBase.New() //tworzenie obiektu formularza
MsgReader = Me
End Sub
End Class

Utworzony
formularz
MsgReader służy
do
przeglądania i edycji wiadomości przechowywanych w
obiekcie klasy Komunikat_1Msg
37
Tworzenie okna formularza

Utworzony formularz MsgReader jest formularzem
pustym, więc należy dodać do niego kontrolki.

Wszystkie kontrolki znajdujące się wewnątrz obiektu
okno formularz deklarowane są jako pola
inicjalizowane metodą InitializeComponent ( ).

Po dodaniu kontrolki metodą New automatycznie
ustawiane są właściwości niezbędne do określenia
charakterystyki i pozycji kontrolki.

Kontrolki ukazujące się w oknie formularza należą
do zbioru kontrolek dodanego metodą Add( ) oraz
zdefiniowane w klasie bazowej.
38
Tworzenie okna formularza

Ponieważ klasa MsgReader dziedziczy z klasy bazowej
System.Windows.Forms.Form, dostaje automatyczny
dostęp do zbioru kontrolek (controls collection)

Do przeglądania i edycji tekstu wykorzystywana jest
kontrolka wieloliniowego edytora (TextBox control)

W celu powiązania formularza MsgReader z obiektem
klasy Komunikat_1Msg należy do metody New( )
klasy MsgReader dodać parametr zawierający
referencję do obiektu klasy Komunikat_1Msg;
parametr ten jest zapisywany do pola klasy
MsgReader i może być używany wewnątrz obiektu.
39
Public Class FormularzVB
Inherits System.Windows.Forms.Form
........................................
Private Sub InitializeComponent()
Me.TextBox = New System.Windows.Forms.TextBox()
Me.TextBox.AcceptsReturn = True
Me.TextBox.Multiline = True
Me.TextBox.Name = "TextBox"
...................
Me.TextBox.Text = ""
Me.Controls.AddRange(New
System.Windows.Forms.Control() {Me.TextBox})
Me.Text = "Zadanie"
End Sub
End Class
40
Wyświetlanie 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 wewnątrz klasy
// MsgReader referencji do zmiennej Msg klasy Komunikat_1Msg
InitializeComponent( )
TextBox.Text = Msg.MsgText( )
End Sub
 Do
wyświetlenia
zawartości
pola
tekstowego
wykorzystujemy właściwość Text kontrolki TextBox,
zainicjalizowanej wartością MsgText obiektu klasy41
Komunikat_1Msg
Zdarzenia OK i Anuluj

Zdarzenia obsługują procedury zdarzeniowe zawarte w
klasie
MsgReader
 Zdarzenia
obsługują procedury zdarzeniowe zawarte
w klasie
Protected
SubMsgReader
btnOK_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles btnOK.Click
Msg.MsgText = TextBox.Text() // zapisanie wiadomości
..............................
Close() // zamknięcie 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
42
Uruchamianie aplikacji w Visual Basic.NET



Domyślnie aplikacje Visual Basic.NET uruchamiane są
przez wywołanie instancji domyślnego formularza (np.
MsgReader).
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 MsgReader(New Komunikat_1Msg ( ) ) )
End Sub
43
Dziedziczenie w VB.NET

Kod tworzenia formularza będzie miał postać:
Imports System.ComponentModel
Imports System.Drawing
’ dziedziczona z klasy
Import System.WinForms
‘ System.WinForms.Form
Public Class Form1
Inherits System.WinForms.Form

Tworzenie następnego formularza może bazować na
kolejnej klasie pochodnej:
Imports System.ComponentModel
Imports System.Drawing
Import System.WinForms
Public Class Form2
Inherits Form1
44
Dziedziczenie w VB.NET

Utworzony formularz będący instancją klasy Form2
może posiadać dwa zestawy kontrolek:
 utworzonych
za pomocą modułu Visual Designer
 oddziedziczonych
z formularza Form1.

Dziedziczony jest zarówno wygląd kontrolek jak i kod
obsługujący kontrolki.

Dziedziczenie
jest
możliwe
wszystkich
klas
utworzonych w jakimkolwiek języku platformy .NET.

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.
W poprzednich wersjach VB zamiast konstruktorów
stosowane były zdarzenia zachodzące podczas
tworzenia instancji, takie jak:
 Class Initialize dla klas,
 Form Load dla formularzy, do których nie mogły
być przekazywane żadne parametry.
Przykładowy kod w VB miałby więc postać:
Dim objNowiPracownicy As New Pracownicy
objNowiPracownicy.PracownicyID = (”125-55-2345”)
46
Parametryzowane konstruktory
w VB.NET

Przykładowy kod w VB.NET będzie miał postać:
Dim objNowiPracownicy As New Pracownicy (”125-55-2345”)

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.

Fragment kodu konstruktora ma przykładową postać:
Sub New (sPracownicyID AS String)
kod konstruktora

W tym przypadku przy tworzeniu każdej instancji klasy
wymagany jest argument.
47
Parametryzowane konstruktory
w VB.NET

Konstruktory uruchamiane są automatycznie podczas
tworzenia instancji.

Wykorzystanie konstruktora do tworzenie nagłówka
formularza Form2

Tworzymy nowy projekt formularza Windows w
środowisku VB. NET - Form1 i wstawiamy do niego
przycisk uruchamiający formularz Form2,

Wstawiamy drugi formularz (domyślnie Form2) opcją
Project_SYMBOL|Add Windows Form
Dla tego formularza zostanie automatycznie utworzony
konstruktor o nazwie Sub New w module Class
48
formularza.
Parametryzowane konstruktory
w VB.NET

Domyślny konstruktor ma postać:

Public Sub New ( )
MyBase.New
Form2 = Me
End Sub
Zmieniamy kod konstruktora następująco:
Public Sub New (ByVal sTitlebarCaption As String )
MyBase.New
Form2 = Me
me.Text = sTitlebarCaption
End Sub
49
Parametryzowane konstruktory
w VB.NET

Wracamy do Form1 i dwukrotnie klikając otwieramy
kod zdarzenia, które wywołuje Button1_Click w
edytorze kodu do którego wstawiamy kod:
Dim frmNewForm As New Form2(”Formularz drugi”)
frmNewForm.Show( )
Zawiera on parametr wymagany przez instrukcję Sub
New.

Utworzona przyciskiem w Form1 instancja formularza
Form2 będzie miała nazwę podaną w parametrze.
50
Przesłanianie nazw w VB.NET

VB.Net obsługuje pełne
właściwości klas bazowych.
przesłanianie

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.

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
metod
i
51
Przesłanianie nazw w VB.NET

Przesłanianie
jest
kontrolowane
następujących słów kluczowych:
za
pomocą

Overridable - element klasy bazowej może być
przesłonięty w klasach potomnych,

Overrides - element klasy bazowej jest przesłonięty
przez element o tej samej nazwie w klasie potomnej,

NotOverridable - element klasy bazowej nie może być
przesłonięty w klasach potomnych (opcja domyślna),

MustInherit - 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

MustOverride
- dostepne jedynie dla klas
zadeklarowanych jako MustInherit. Oznacza, że
wszystkie klasy dziedziczące dany element klasy
bazowej muszą go przesłaniać.
Element oznaczony jako MustOverride zapewnia
jedynie interfejs. Nie są dopuszczalne nawet wiersze
instrukcji End Sub oraz End Function.

Rozpatrujemy klasę bazową, w której:

istnieją właściwości publiczne, inicjalizowane przy
pomocy konstruktora,

klasy potomne mogą implementować własne wersje
elementów (Overridable).
53
Przesłanianie 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 może zaimplementować własną wersję
Public Overridable Sub CheckStatus ( )
Debug. WriteLine (”Name: ” & Name)
Debug. WriteLine (”Active: ” & Active)

Domyślny
konstruktor ma postać:
End
Sub
End Class
54
Przesłanianie nazw w VB.NET

Tworzymy klasę potomną, w której:

istnieją właściwości publiczne,

tworzymy konstruktor klasy podklasy,

wywołujemy konstruktor klasy bazowej,

inicjalizujemy zmienne podklasy,

przesłaniamy metody klasy bazowej,

wywołujemy wersje metod z klasy bazowej,

wypisujemy właściwości podklasy.
55
Przesłanianie 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
‘przesłonięcie metody klasy bazowej
Public Overrides Sub CheckStatus ( )
MyBase.CheckStatus ( ) ‘wywołanie wersji metody klasy bazowej
Debug. WriteLine (”Kontakt: ” & DateToContact)
 Domyślny konstruktor ma postać:
End Sub
End Class
56
Przesłanianie nazw w VB.NET

Tworzymy instancje klasy potomnej, co wymaga
przesłania parametrów inicjalizujących jej właściwości i
wywołujemy metodę CheckStatus:
Dim objNewKlientDocelowy As New KlientDocelowy
(”Siemens”, True, #22/11/2003#)
objNewKlientDocelowy. CheckStatus

Zostanie wyświetlone okno:
Debug
Name: Siemens
//generowane metodą klasy bazowej
Active: True
//generowane metodą klasy bazowej
Kontakt: 22/11/2003 //generowane metodą klasy potomnej
57
Przeładowywanie nazw funkcji w VB.NET

Przeładowywanie nazw funkcji polega na zdefiniowaniu
kilku funkcji o tej samej nazwie ale różnych argumentach

W VB.NET realizowane to jest za pomocą słowa
kluczowego Overloads, np.:
Overloads Sub Display (ByVal number as Integer)
// ciało funkcji
End Sub
Overloads Sub Display (ByVal aString as String)
// ciało funkcji
End Sub
58
Elementy współdzielone w VB.NET

W VB.NET istnieje możliwość tworzenia właściwości i
metod współdzielonych przez wszystkie aktywne
instancje w klasie.

Jest to odpowiednik elementów statycznych języka C++

Do tworzenia elementów współdzielonych wykorzystuje
się słowo kluczowe Shared, np.:
Public Shared CommonName As String

Zmiana właściwości w jednej instancji wywołuje zmianę
tej właściwości we wszystkich instancjach danej klasy.
59
Interfejsy WWW w VB.NET

Częścią platformy .NET są formularze Web, działające
w VB.NET tak samo, jak w każdym innym języku
platformy.

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.

Komponent usługi Web zawiera metody:

widoczne w interfejsie usługi Web, oznaczone za
pomocą słowa kluczowego WebMethod,

przeznaczone wyłącznie do użytku wewnętrznego.
60
Strukturalna obsługa języka w VB.NET


Nowe możliwości składni języka VB.NET obejmują:

strukturalną obsługę wyjątków,

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

Kod po instrukcji Try może zawierać instrukcję Throw,
która wymusza błąd (i wykonanie sekcji kodu po Catch)

VB.NET obsługuje również instrukcje On Error oraz
obiekt Err.

VB. NET obsługuje swobodne tworzenie wątków.

W celu rozpoczęcia nowego wątku typ obiektu
deklarowany jest jako Thread, a podczas tworzenia
instancji przekazywany jest adres, który ma być
wykonany w wątku.

Klasa Thread posiada różne metody wstrzymywania,
zawieszania, przywracania, usuwania i innych operacji
dokonywanych na wątku.
62
Typy zmiennych stosowane w VB.NET

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:

Typy całkowite: Integer  Short (2 bajty)
Long
 Integer (4 bajty)
------
 Long (8 bajtów).

Przy przenoszeniu kodu aplikacji następuje
automatyczna konwersja starych typów danych na nowe

Przy wklejaniu dodatkowego kodu należy samemu
dokonać zmiany typów.

Typ Currency  Decimal (12 bajtów) lub  Long
63
Typy zmiennych stosowane w VB.NET

Wprowadzony jest typ Char (2 bajty), przechowujący
wartości znaków Unicode

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.

Do obsługi łańcuchów o stałej długości stosowana jest
klasa FixedLengthString wykorzystywana w deklaracji:
Dim sFixedLengthString As New VB6.FixedLengthString (18)

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

VB.NET nie obsługuje domyślnych wartości i metod.
strName = txtName.Text
( w VB6 strName = txtName)
strName = rsRecordSet.Fields (”Name”).Value

W VB6 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.
txtCity = txtNewCity ( w VB6

Set txtCity = txtNewCity
Przy własnościach tylko do odczytu/zapisu należy
deklaracje właściwości poprzedzić słowem ReadOnly
(procedura Get..End Get) lub WriteOnly (procedura
Set..End Set)
65
Zmiany wprowadzone w VB.NET

Kompilator VB.NET zawsze wymaga użycia nawiasów,
nawet dla list argumentów typu Null, np..:
MsgBox (”Witaj”) ( w VB6 MsgBox ”Witaj” )
Dim sDate As String
sDate = Date( )
( w VB6 sDate = Date )

W VB. NET wszystkie parametry na liście argumentów
maja domyślne ustawienie ByVal

VB. NET nie dopuszcza deklaracji różnych typów w
jednym wierszu, np..:
Dim strImie, strNazwisko As String
w VB6
Dim strImie As String, strNazwisko As String, wiek As Integer
66
Zmiany wprowadzone w VB.NET

VB. NET dopuszcza w deklaracji inicjalizację
zmiennych
Dim strNazwisko As String = ”Kowalski”

W deklaracji tablicy w VB6 liczba w nawiasie oznaczała
indeks ostatniego elementu
Dim strNazwisko (10) As String

Podobnie, w deklaracji tablicy w VB.NET liczba w
nawiasie oznacza indeks ostatniego elementu
Dim strNazwisko (10) As String

tablica 11-elementowa (0 -10)
tablica 11-elementowa (0 - 10)
W VB.NET nie stosuje się tablic zaczynających od
indeksu 1
67
Zmiany wprowadzone w VB.NET

W VB.NET można również w deklaracji tablic
dokonywać ich inicjalizacji (analogicznie jak zmienne)
Dim strImie (2) As String = („”Ola”, ”Tomek”, ”Basia”)

Odwołania mają postać: strImie(0), strImie(1), strImie(2),

W VB6 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 frmNewForm As New Form2 ( )
frmNewForm.Show ( )
68
Zmiany wprowadzone w VB.NET

W VB.NET wiele słów kluczowych zostało zastąpione
przez elementy klas współdzielonych platformy .NET, np.

circle, line - przestrzeń nazw System.Drawing.Graphics

sgn, sqr, atn - przestrzeń nazw System.Math,

lset, rset - przestrzeń nazw System.String,

rnd, round - przestrzeń nazw Microsoft.VisualBasic.
Compatibility.VB6

W VB6 operatory and, or, xor, not są używane zarówno w
działaniach bitowych jak i w operacjach boolowskich

W VB.NET operatory and, or, xor, not są zastrzeżone
wyłącznie do operacji boolowskich; w arytmetyce bitowej
69
stosowane są operatory BitAnd, BitOr, BitXor, BitNo
Zmiany wprowadzone w VB.NET

W VB6 typy definiowane są przy pomocy słów kluczowych
Type .... End Type i sa publicznie dostępne.

W VB.NET zamiast typów definiuje się struktury słowami
Structure....End Structure.

Każdy element struktury musi być zadeklarowany
słowami: Dim, Public, Protected, Friend, Protected Friend,
Private, np..:
Structure klient
public klientID As Integer
Dim klientNazwisko As String
Private klientStatus As Boolean
End Structure
70
Zmiany wprowadzone w VB.NET

W VB6 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.

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:


zachowują swoją wartość po wyjściu z bloku,

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

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).

Obiekt Debug dostępny jest teraz w przestrzeni nazw
System.Diagnostic.Debug, a jego metoda Print została
zastąpiona przez cztery metody: Write, WriteIf.
WriteLine, WriteLineIf.

Zmienione są opcje formatowania łańcuchów znaków i
analizy liczb oraz wprowadzona inkrementacja i
dekrementacja zmiennych.

VB.NET nie obsługuje wielu słów kluczowych VB6,
m.in.. takich jak GoTo, Let, Option Base n itp..
72
Przystosowanie projektów do VB.NET

Przystosowanie projektów wykonywanych w VB6 do
VB.NET zawarte jest w bibliotece dostępnej pod adresem:
http://msdn.microsoft.com/library/techart/vb6tovbdotnet.htm

Fundamentalną technologią platformy .NET używaną przez
usługi Web jest protokół SOAP.

Pakiet narzędziowy SOAP dostępny jest pod adresem:
http://msdn.microsoft.com/xml/general/toolkit_intro.asp
73
Kontrolki VB.NET


Po wygenerowaniu nowego projektu Windows Control
Library kontrolki ActiveX automatycznie dziedziczą
własności po klasie
System.Windows.Forms.UserControl.
Klasa ta w postaci:
Public Class UserControl1
Inherits System.Windows.Forms.UserControl
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

Można stworzyć kontrolki dziedziczące własności po
innym komponencie, np. CheckBox
Public Class UserControl1
Inherits System.Windows.Forms.CheckBox
End Class
Po wykonaniu tej zmiany tracimy możliwość
bezpośredniego edytowania kontrolki na ekranie 'Design'.

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

Zdarzenia deklaruje się w następujący sposób:
Public Class UserControl1
Inherits System.Windows.Forms.CheckBox
Public Event MojeZdarzenieKliknięcia()
Protected Overrides
Sub OnClick(ByVal e As System.EventArgs)
RaiseEvent MojeZdarzenieKliknięcia()
End Sub
End Class

Metoda RaiseEvent służy do wywołania zdarzenia w
momencie kliknięcia na kontrolkę.
76
Zdarzenia VB.NET


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 OnClick(ByVal e As System.EventArgs)
RaiseEvent MojeZdarzenieKliknięcia()
MyBase.OnClick(e)
End Sub

Można najpierw wywołać metodę MyBase.OnClick(e) a
później napisać obsługę zdarzenia, ale zmienia to wynik
działania procedury.
77
Zdarzenia VB.NET


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 UserControl11_Click(ByVal sender As
Object, ByVal e As System.EventArgs) _
Handles UserControl11.Click
MsgBox("Nastąpiło kliknięcie!",
MsgBoxStyle.Information)
End Sub
78

Druga polega na wykorzystaniu metody AddHandler i
RemoveHandler, co pozwala na podłączenie danej metody
do obsługi zdarzenia w sposób dynamiczny, np:
Public Sub PodłaczObsZdarzenia()
AddHandler UserControl11.Click, AddressOf
MojaObsługakliknięcia
End Sub
Private SubMojaObsługakliknięcia(ByVal obSend As Object,
ByVal e As System.EventArgs)
MsgBox("Nastąpiło kliknięcie!", MsgBoxStyle.Information)
End Sub
Public Sub OdlaczObsZdarzenia()
RemoveHandler UserControl11.Click, AddressOf
MojaObsługakliknięcia
End Sub
79
Deklaracje metod w VB.NET



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

Z wykorzystaniem listy atrybutów attrlist. Definicja funkcji
w VB.NET wygląda w tym przypadku następująco:
[<attrlist>] [{ 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
81
Deklaracje metod w VB.NET

Definicja procedury ma wtedy postać:
[<attrlist>] [{ Overloads | Overrides | Overridable |
NotOverridable | MustOverride | Shadows | Shared }]
[{Public | Protected | Friend | Protected Friend | Private }]
Sub nazwa {(arglist)] [ Implements
interfejs.zdefiniowananazwa ]
[ instrukcje ]
[Exit Sub ]
[instrukcje ]
End Sub


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

Zamiast stosować Declare Function można zastosować klasę
atrybutu DllImportAttribute, której konstruktor ma pewne
parametry jak np. dllName ( w tym przypadku „Kernel32”).
Public Class CDll
<DllImport("Kernel32", EntryPoint:="GetWindowsDirectory")> Public _
Shared Function GetWindowsDirectory(ByVal lpBuffer As StringBuilder, _
ByVal nSize As Integer) As Long
End Function
<DllImport("Kernel32", EntryPoint:="GetSystemDirectory")> Public _
Shared Function _
GetSystemDirectory(ByVal lpBuffer As StringBuilder, ByVal nSize As _
Integer) As Long
End Function
<DllImport("Kernel32", EntryPoint:="GetCommandLine")> Public _
Shared Function GetCommandLine() As IntPtr
End Function
83
End Class

Z wykorzystaniem przeciążenia 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
„Błąd”
MojaFunkcjaBazowa = (x + y + z) * Mnoz
End Function
End Class
84

Nie można zastosować słowa Overloads do przeciążania
metod, które różnią się od siebie tylko wartością zwracaną:
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
’Błąd!!!
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
85

Z wykorzystaniem metody 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:
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
86
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, że
metoda z klasy bazowej może być nadpisana przez
identyczną metodę w klasie dziedziczącej, lub

Z wykorzystaniem metody NotOverridable, która oznacza, że
ta metoda nie może być zastąpiona przez żadną inną metodę.
87

Funkcja typu NotOverridable musi sama zastępować taką
samą metodę 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 być określona jako Overridable:
Public Class CMojaKlasaDziedziczaca3
Inherits CMojaKlasaBaza2
Public Overrides Function MojaFunkcjaBazowa _
Błąd!!!
(ByVal x As Long, ByVal y As Long) As Long
MojaFunkcjaBazowa = x + y
End Function
88
End Class

Z wykorzystaniem metody MustOverride, 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 MustInherit.
Public MustInherit Class CMojaKlasaBaza2
Public MustOverride Function MojaFunkcjaBazowa _
(ByVal x As Long, ByVal y As Long) As Long
End Class
Public Class CMojaKlasaDziedziczaca3
Inherits CMojaKlasaBaza2
Public Overrides Function MojaFunkcjaBazowa _
(ByVal x As Long, ByVal y As Long) As Long
MojaFunkcjaBazowa = x + y
End Function
End Class
89
Deklaracje metod w VB.NET

Z wykorzystaniem metody Shadows, która wskazuje, że
metoda ta zakrywa identycznie nazwany element
programistyczny lub zbiór przeciążonych elementów w
klasie bazowej:
Public Class CMojaKlasaBazowa3
Public i As Long
End Class
Public Class CMojaKlasaDziedziczaca4
Inherits CMojaKlasaBazowa3
Public Shadows Function i(ByVal e As Long) As String
MsgBox(e, MsgBoxStyle.Information)
i = "Jest OK!"
End Function
End Class
90

Z wykorzystaniem metody Shared , która wskazuje, że ta
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 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
91


Z wykorzystaniem metody Public
Z wykorzystaniem metody Protected – dostępnej tylko z
poziomu własnej klasy lub dziedziczącej:
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
92
Deklaracje metod w VB.NET
Nie można wykonać następującej 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)
‘Błąd !!!
End Function
End Class
Taka operacja jest możliwa dopiero po zadeklarowaniu
metody jako Friend.
93

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 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
94


Z wykorzystaniem metody Protected Friend – dostęp 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 dostępna tylko w tym
kontekście gdzie została 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
95
Deklaracje metod w VB.NET

Z wykorzystaniem metody Implements , która
implementuje metodę zdefiniowaną 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.MojaFunkcja
MojaFunkcja = 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 (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
97