background image

VB.NET

VB.NET

Maria DEMS

Maria DEMS

background image

 

 

2

 Podstawy  Visual 

Basic.NET

• Visual 

Basic 

.NET 

jest 

jednym 

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()

background image

 

 

3

 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

.

background image

 

 

4

 Operatory w  Visual 

Basic.NET

• Operatory VB.NET  

Funkcja 

Operator 

Podnoszenie do potęgi 

Negacja 

Mnożenie, dzielenie 

*, \ 

Dzielenie całkowite 

Modulo (6 mod 4 =2) 

Mod 

Dodawanie, odejmowanie 

+, - 

Operatory logiczne 

NOT, OR, AND, XOR 

Połączenie 

&, + (zmienne łańcuchowe) 

Równe, różne, mniejsze, większe 

=, <>, <,> 

Mniejsze lub równe, większe lub równe 

<=, >= 

Przypisanie 

=, ^=, *=, /=, \=, +=, _=, &= 

 

background image

 

 

5

 Konwersja typów w 

VB.NET

• 

VB.NET 

argumentem 

konwersji 

(rzutowania) typu jest  typ Object

Funkcja 

Opis 

CBool 

Konwersja na Boolean 

CByte 

Konwersja na Byte 

CChar 

Konwersja na Char 

CDec 

Konwersja na Decimal 

CDate 

Konwersja na DateTime 

CDbl 

Konwersja na Double 

CInt 

Konwersja na Integer 

CLng 

Konwersja na Long 

CSng 

Konwersja na Single 

CStr 

Konwersja na String 

Cshort 

Konwersja na Short 

CObj 

Konwersja na Object 

 

Funkcja 

Opis 

CBool 

Konwersja na Boolean 

CByte 

Konwersja na Byte 

CChar 

Konwersja na Char 

CDec 

Konwersja na Decimal 

CDate 

Konwersja na DateTime 

CDbl 

Konwersja na Double 

CInt 

Konwersja na Integer 

CLng 

Konwersja na Long 

CSng 

Konwersja na Single 

CStr 

Konwersja na String 

Cshort 

Konwersja na Short 

CObj 

Konwersja na Object 

 

background image

 

 

6

 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

background image

 

 

7

 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. 

background image

 

 

8

 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. 

background image

 

 

9

 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ąć, stawiając w to miejsce przecinek. 

background image

 

 

10

 Procedury i funkcje w 

VB.NET

• Przykład 

deklaracji 

procedury 

parametrem opcjonalnym.

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)

background image

 

 

11

 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)

background image

 

 

12

 

Instrukcj

sterując

e w 

VB.NET

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

Instrukcje 
warunkowe

background image

 

 

13

W przypadku instrukcji zagnieżdżonych lepiej 
używać struktury:

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ść wyrażeń 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 

są fałszywe
End If

background image

 

 

14

 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. 

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

 Instrukcja Select Case

background image

 

 

15

 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

background image

 

 

16

 Pętla Do... Loop w 

VB.NET

• Wyjście  z  pętli  następuje  w  chwili,  gdy 

wpisany warunek 

przyjmuje wartość

 

True

.

Do 

Until 

 warunek 

pętli
instrukcje
Loop

Do 

Jedna lub wiele 

instrukcji 

Loop 

Until

  

warunek pętli 

background image

 

 

17

 Pętla Do... Loop w 

VB.NET

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

Do 

While 

 warunek 

pętli 

 Jedna lub wiele 

instrukcji 

Loop

Do 

Jedna lub wiele 

instrukcji 

Loop 

While

 warunek 

pętli 

background image

 

 

18

 Pętla For... Next w 

VB.NET

Umieszczanie  nazwy  zmiennej  licznikowej 
po instrukcji Next nie jest konieczne.

Można  przerwać  pętlę  wcześniej  przy 
pomocy komendy 

Exit For

For

 ZmiennaLicznik = WarPoczatkowa 

To

 WarKoncowa 

[ Step WarKroku]

 Jedna lub wiele instrukcji 

Next 

Zmienna Licznik

background image

 

 

19

 Pętla For Each... Next w 

VB.NET

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.

For Each element In 
grupa

[instrukcje]

[Exit For]

[instrukcje]
Next [element]

background image

 

 

20

 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

).

background image

 

 

21

 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. 

background image

 

 

22

 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. 

background image

 

 

23

 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

background image

 

 

24

 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. 

background image

 

 

25

 

 

 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

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

background image

 

 

26

 

 

Nowe możliwości 

programowania obiektowego 

VB.NET

Nowych  możliwości  programowania  obiektowego 
w VB.NET obejmują:

pełne dziedziczenie klas i polimorfizm

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,

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 instancje danej klasy.

background image

 

 

27

 

 

Przystosowanie projektów 

do VB.NET

background image

 

 

28

 

 

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

Usuń towar

Pobierz dane

z bazy 

Użytkow
nik

Baza 
danych

background image

 

 

29

 

 

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

background image

 

 

30

 

 

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), metody i zdarzenia.

background image

 

 

31

 

 

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

Public Class KomunikatMsg
    

Private

 strKomunikat as String

  Public Property MsgText( ) As String

Get

MsgText = strKomunikat

End Get

background image

 

 

32

 

 

Tworzenie projektu w 

środowisku VB.NET

   

Set(ByVal Value As String)

strKomunikat = Value

End Set

  

End Property 

End 

Class

Class

W  celu  odczytania  wartości 

strKomunikat

  z 

obiektu 

MyKomunikat

 

klasy 

KomunikatMsg 

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( )

MyKomunikat.MsgText( ) = „Witaj”

background image

 

 

33

 

 

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

Inherits

Public Class Komunikat_1Msg

Public Class Komunikat_1Msg

Inherits 

Inherits 

KomunikatMsg

KomunikatMsg

End Class

End Class

background image

 

 

34

 

 

Tworzenie projektu w 

środowisku VB.NET

Do  zapisywania  danych  klasy  do  pliku  służy  metoda 

Write( )

Public Function Write ( ) As Boolean

Public Function Write ( ) As Boolean

Dim MsgFile As Stream

Dim MsgFile As Stream

      

      

Write = True

Write = True

      

      

MsgFile = File.Open(„msg.bin”, 

MsgFile = File.Open(„msg.bin”, 

FileMode.Create)

FileMode.Create)

      

      

MsgFile.Close( )  

MsgFile.Close( )  //zamknięcie utworzonego pliku

End Function

End Function

Do automatycznego zapisywania stanu obiektu przed 
jego zniknięciem służy metoda 

Dispose ( )

Public Sub Dispose ( )

Public Sub Dispose ( )

Write ( )

Write ( )

    

    

End Sub

End Sub

background image

 

 

35

 

 

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

Public Function Read ( ) As Boolean

Dim MsgFile As Stream

Dim MsgFile As Stream

      

      

Read = True

Read = True

      

      

MsgFile = File.Open(„msg.bin”, FileMode.Open)

MsgFile = File.Open(„msg.bin”, FileMode.Open)

      

      

MsgFile.Close( ) 

MsgFile.Close( ) //zamknięcie otwartego do odczytu 

pliku

End Function

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 zapis został wcześniej dokonany).

background image

 

 

36

 

 

Dziedziczenie w VB.NET

Definicja metody 

New ( ) 

ma postać:

Public Sub New ( ) 

Public Sub New ( ) 

MyBase

MyBase

.New( )

.New( )

      

      

...................

...................

Read ( )

Read ( )

   

   

End Sub

End Sub

Wewnątrz  podklasy  odwołanie  do  klasy 
bazowej  realizowane  jest  przy  użyciu  słowa 
kluczowego 

MyBase

MyBase

Formularz  Windows  jest  modułem  klas 
dziedziczącym  cechy  formularza  z  klasy 
bazowej 

System.Windows.Forms

System.Windows.Forms

 

 

platformy .NET lub z innego formularza.

background image

 

 

37

 

 

Budowa obiektu MsgReader

Definicja klasy 

MsgReader 

ma postać:

  

  

Class MsgReader

Class MsgReader

  

  

Inherits System.Windows.Forms.Form

Inherits System.Windows.Forms.Form

  

  

  

  

Public Sub New( )

Public Sub New( )

   

   

  

  

MyBase.New()  

MyBase.New()  //tworzenie obiektu 

formularza

   

   

  

  

MsgReader = Me

MsgReader = Me

     

     

End Sub

End Sub

End Class

End Class

 

Utworzony  formularz 

MsgReader

MsgReader 

służy  do 

przeglądania 

edycji 

wiadomości 

przechowywanych 

obiekcie 

klasy 

Komunikat_1Msg 

background image

 

 

38

 

 

Tworzenie okna formularza

Utworzony 

formularz 

MsgReader

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.  

background image

 

 

39

 

 

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 

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.

background image

 

 

40

Public Class FormularzVB

Public Class FormularzVB

  

  

Inherits System.Windows.Forms.Form

Inherits System.Windows.Forms.Form

........................................

........................................

Private Sub InitializeComponent()

Private Sub InitializeComponent()

        

        

Me.TextBox = New 

Me.TextBox = New 

System.Windows.Forms.TextBox()

System.Windows.Forms.TextBox()

Me.TextBox.AcceptsReturn = True

Me.TextBox.AcceptsReturn = True

        

        

Me.TextBox.Multiline = True

Me.TextBox.Multiline = True

        

        

Me.TextBox.Name = "TextBox"

Me.TextBox.Name = "TextBox"

        

        

...................

...................

        

        

Me.TextBox.Text = ""

Me.TextBox.Text = ""

Me.Controls.AddRange(New 

Me.Controls.AddRange(New 

System.Windows.Forms.Control() {Me.TextBox})

System.Windows.Forms.Control() {Me.TextBox})

Me.Text = "Zadanie"

Me.Text = "Zadanie"

End Sub

End Sub

End Class

End Class

background image

 

 

41

 

 

Wyświetlanie pola 

tekstowego

     

     

Private Msg AS Komunikat_1Msg

Private Msg AS Komunikat_1Msg

Public Sub New(ByRef Msg AS Komunikat_1Msg)

Public Sub New(ByRef Msg AS Komunikat_1Msg)

   

   

  

  

MyBase.New()  

MyBase.New()  //tworzenie obiektu formularza

   

   

  

  

MsgReader = Me

MsgReader = Me

  

  

Me.Msg = Msg 

Me.Msg = Msg //przypisanie zmiennej wewnątrz 

klasy

// MsgReader referencji do zmiennej Msg

 

 klasy 

Komunikat_1Msg 

 

 

InitializeComponent( )

InitializeComponent( )

TextBox.Text = Msg.MsgText( ) 

TextBox.Text = Msg.MsgText( ) 

End Sub

End Sub

  Do  wyświetlenia  zawartości  pola  tekstowego   
wykorzystujemy  właściwość 

Text

  kontrolki 

TextBox

,  zainicjalizowanej  wartością 

MsgText

 

obiektu klasy 

Komunikat_1Msg

background image

 

 

42

 

 

Zdarzenia OK i Anuluj

Zdarzenia 

obsługują 

procedury 

zdarzeniowe zawarte w klasie MsgReader

Zdarzenia obsługują procedury zdarzeniowe zawarte w 
klasie MsgReader

Protected Sub 

Protected Sub 

btnOK_Click

btnOK_Click

(ByVal sender As Object, _   

(ByVal sender As Object, _   

ByVal e As System.EventArgs) Handles btnOK.Click

ByVal e As System.EventArgs) Handles btnOK.Click

Msg.MsgText = TextBox.Text() 

Msg.MsgText = TextBox.Text() // zapisanie wiadomości

    

    

..............................

..............................

    

    

Close()

Close()

 

 // zamknięcie formularza i jego zasobów

  

  

End Sub

End Sub

Protected Sub btnCancel_Click(ByVal sender As 

Protected Sub btnCancel_Click(ByVal sender As 

Object, _

Object, _

    

    

ByVal e As System.EventArgs) Handles 

ByVal e As System.EventArgs) Handles 

btnCancel.Click

btnCancel.Click

    

    

.............................

.............................

  

  

End Sub

End Sub

background image

 

 

43

 

 

Uruchamianie aplikacji w 

Visual Basic.NET

Domyślnie 

aplikacje 

Visual 

Basic.NET 

uruchamiane  są  przez  wywołanie  instancji 
domyślnego formularza (np. 

MsgReader)

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 ( ) 

Sub main ( ) 

System.Windows.Forms.Application.Run 

System.Windows.Forms.Application.Run 

(New MsgReader(New 

(New MsgReader(New Komunikat_1Msg

 ( ) ) )

 ( ) ) )

    

    

End Sub

End Sub

background image

 

 

44

 

 

Dziedziczenie w VB.NET

Kod tworzenia formularza będzie miał 
postać:

Tworzenie następnego formularza może 
bazować na kolejnej klasie pochodnej:

Imports System.ComponentModel

Imports System.ComponentModel

Imports System.Drawing

Imports System.Drawing

 ’ dziedziczona 

z klasy 

Import System.WinForms

Import System.WinForms

 

 ‘ 

System.WinForms.Form

Public Class Form1

Public Class Form1

Inherits System.WinForms.Form

Inherits System.WinForms.Form

Imports System.ComponentModel

Imports System.ComponentModel

Imports System.Drawing

Imports System.Drawing

 ’ dziedziczona 

z klasy 

Import System.WinForms

Import System.WinForms

 

 

‘ 

System.WinForms.Form

Public Class Form1

Public Class Form1

Inherits System.WinForms.Form

Inherits System.WinForms.Form

Imports System.ComponentModel

Imports System.ComponentModel

Imports System.Drawing

Imports System.Drawing

Import System.WinForms

Import System.WinForms

Public Class Form2

Public Class Form2

Inherits Form1

Inherits Form1

Imports System.ComponentModel

Imports System.ComponentModel

Imports System.Drawing

Imports System.Drawing

Import System.WinForms

Import System.WinForms

Public Class Form2

Public Class Form2

Inherits Form1

Inherits Form1

background image

 

 

45

 

 

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 

jakimkolwiek 

języku 

platformy .NET.

W  VB.  NET  nie  występuje  dziedziczenie 
wielokrotne,  dostępne  w  C++  i  niektórych 
innych językach obiektowych.

background image

 

 

46

 

 

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 

Dim objNowiPracownicy As New 

Pracownicy

Pracownicy

objNowiPracownicy.PracownicyID = 

objNowiPracownicy.PracownicyID = 

(”125-55-2345”)

(”125-55-2345”)

Dim objNowiPracownicy As New 

Dim objNowiPracownicy As New 

Pracownicy

Pracownicy

objNowiPracownicy.PracownicyID = 

objNowiPracownicy.PracownicyID = 

(”125-55-2345”)

(”125-55-2345”)

background image

 

 

47

 

 

Parametryzowane 

konstruktory 

 w VB.NET

Przykładowy kod w VB.NET będzie miał postać:

Konstruktor  w  VB.NET  nie  jest  zdarzeniem,  ale 
procedurą,  więc  jest  określany  poprzez  instrukcję 

Sub  New,

Sub  New,

  ma  zakres 

Public

  i  może  mieć 

argumenty.

Fragment  kodu  konstruktora  ma  przykładową 
postać:

W  tym  przypadku  przy  tworzeniu  każdej  instancji 
klasy wymagany jest argument.

Dim objNowiPracownicy As New Pracownicy 

Dim objNowiPracownicy As New Pracownicy 

(”125-55-2345”)

(”125-55-2345”)

Dim objNowiPracownicy As New Pracownicy 

Dim objNowiPracownicy As New Pracownicy 

(”125-55-2345”)

(”125-55-2345”)

Sub New (sPracownicyID AS String)

Sub New (sPracownicyID AS String)
kod konstruktora

Sub New (sPracownicyID AS String)

Sub New (sPracownicyID AS String)
kod konstruktora

background image

 

 

48

 

 

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 

formularza.

background image

 

 

49

 

 

Parametryzowane 

konstruktory 

 w VB.NET

Domyślny konstruktor ma postać:

Zmieniamy kod konstruktora następująco:

Public Sub New ( )

Public Sub New ( )

MyBase.New

MyBase.New

Form2 = Me

Form2 = Me

End Sub

End Sub

Public Sub New ( )

Public Sub New ( )

MyBase.New

MyBase.New

Form2 = Me

Form2 = Me

End Sub

End Sub

Public Sub New (ByVal sTitlebarCaption 

Public Sub New (ByVal sTitlebarCaption 

As String )

As String )

MyBase.New

MyBase.New

Form2 = Me

Form2 = Me

me.Text = sTitlebarCaption 

me.Text = sTitlebarCaption 

End Sub

End Sub

Public Sub New (ByVal sTitlebarCaption 

Public Sub New (ByVal sTitlebarCaption 

As String )

As String )

MyBase.New

MyBase.New

Form2 = Me

Form2 = Me

me.Text = sTitlebarCaption 

me.Text = sTitlebarCaption 

End Sub

End Sub

background image

 

 

50

 

 

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:

Zawiera on parametr wymagany przez instrukcję 

Sub New.

Utworzona przyciskiem w 

Form1

 instancja 

formularza 

Form2

 będzie miała nazwę podaną w 

parametrze.

Dim frmNewForm As New 

Dim frmNewForm As New 

Form2(”Formularz drugi”)

Form2(”Formularz drugi”)

frmNewForm.Show( )

frmNewForm.Show( )

Dim frmNewForm As New 

Dim frmNewForm As New 

Form2(”Formularz drugi”)

Form2(”Formularz drugi”)

frmNewForm.Show( )

frmNewForm.Show( )

background image

 

 

51

 

 

Przesłanianie nazw w 

VB.NET

VB.Net  obsługuje  pełne  przesłanianie 
metod i właściwości klas bazowych.

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

background image

 

 

52

 

 

Przesłanianie nazw w 

VB.NET

Przesłanianie  jest  kontrolowane  za  pomocą 
następujących słów kluczowych:

Overridable   

Overridable   

-  element  klasy  bazowej 

może

  być 

przesłonięty w klasach potomnych,

Overrides   

Overrides   

-  element  klasy  bazowej 

jest

 

przesłonięty przez element o tej samej nazwie w 
klasie potomnej,

NotOverridable   

NotOverridable   

-  element  klasy  bazowej 

nie 

może

  być  przesłonięty  w  klasach  potomnych 

(opcja domyślna),

MustInherit  

MustInherit  

- atrybut deklaracji klasy bazowej 

określający,  że  instancja  klasy  potomnej 

nie 

może  być  tworzona  bezpośrednio

,  ale 

musi 

zostać oddziedziczona,

background image

 

 

53

 

 

Przesłanianie nazw w 

VB.NET

MustOverride   

MustOverride   

-  dostepne  jedynie  dla  klas 

zadeklarowanych jako 

MustInherit.  

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

Overridable

).

background image

 

 

54

 

 

Przesłanianie nazw w 

VB.NET

Domyślny konstruktor ma postać:

Public Class 

Public Class 

Klient

Klient

Public Name As String

Public Name As String

Public Active As Boolean

Public Active As Boolean

Public Sub New (ByVal sName as String, 

Public Sub New (ByVal sName as String, 

ByVal bActive As Boolean)

ByVal bActive As Boolean)

Name = sName

Name = sName

Active = bActive

Active = bActive

End Sub

End Sub
‘klasa potomna może zaimplementować 
własną wersję

Public Overridable Sub CheckStatus ( )

Public Overridable Sub CheckStatus ( )

Debug. WriteLine (”Name: ” & Name)

Debug. WriteLine (”Name: ” & Name)

Debug. WriteLine (”Active: ” & Active)

Debug. WriteLine (”Active: ” & Active)

End Sub

End Sub

End Class

End Class

Public Class 

Public Class 

Klient

Klient

Public Name As String

Public Name As String

Public Active As Boolean

Public Active As Boolean

Public Sub New (ByVal sName as String, 

Public Sub New (ByVal sName as String, 

ByVal bActive As Boolean)

ByVal bActive As Boolean)

Name = sName

Name = sName

Active = bActive

Active = bActive

End Sub

End Sub

‘klasa potomna może zaimplementować 
własną wersję

Public Overridable Sub CheckStatus ( )

Public Overridable Sub CheckStatus ( )

Debug. WriteLine (”Name: ” & Name)

Debug. WriteLine (”Name: ” & Name)

Debug. WriteLine (”Active: ” & Active)

Debug. WriteLine (”Active: ” & Active)

End Sub

End Sub

End Class

End Class

background image

 

 

55

 

 

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.

background image

 

 

56

 

 

Przesłanianie nazw w 

VB.NET

Domyślny konstruktor ma postać:

Public Class 

Public Class 

KlientDocelowy

KlientDocelowy

Inherits 

Inherits 

Klient

Klient

Public DateToContact As Date 

Public DateToContact As Date ‘deklaracja 

dodatkowa

Public 

Public 

Sub

Sub

 New (ByVal sName as String, ByVal 

 New (ByVal sName as String, ByVal 

bActive As Boolean, ByVal datDateToContact As 

bActive As Boolean, ByVal datDateToContact As 

Date ) 

Date ) ‘konstruktor podklasy 

MyBase.New(sName, bActive)  

MyBase.New(sName, bActive)  ‘konstruktor klasy 
bazowej

DateToContact  = datDateToContact

DateToContact  = datDateToContact

   

   ‘dodatkowa 

inicjalizacja

 

 

End Sub

End Sub
‘przesłonięcie metody klasy bazowej

Public 

Public 

Overrides

Overrides

 Sub CheckStatus ( )

 Sub CheckStatus ( )

MyBase.CheckStatus ( ) 

MyBase.CheckStatus ( ) ‘wywołanie wersji metody 
klasy bazowej

 

 

Debug. WriteLine (”Kontakt: ” & 

Debug. WriteLine (”Kontakt: ” & 

DateToContact)

DateToContact)

End Sub

End Sub

End Class

End Class

Public Class 

Public Class 

KlientDocelowy

KlientDocelowy

Inherits 

Inherits 

Klient

Klient

Public DateToContact As Date 

Public DateToContact As Date 

‘deklaracja 

dodatkowa

Public 

Public 

Sub

Sub

 New (ByVal sName as String, ByVal 

 New (ByVal sName as String, ByVal 

bActive As Boolean, ByVal datDateToContact As 

bActive As Boolean, ByVal datDateToContact As 

Date ) 

Date ) 

‘konstruktor podklasy 

MyBase.New(sName, bActive)  

MyBase.New(sName, bActive)  

‘konstruktor klasy 

bazowej

DateToContact  = datDateToContact

DateToContact  = datDateToContact

   

   

‘dodatkowa 

inicjalizacja

 

 

End Sub

End Sub

‘przesłonięcie metody klasy bazowej

Public 

Public 

Overrides

Overrides

 Sub CheckStatus ( )

 Sub CheckStatus ( )

MyBase.CheckStatus ( ) 

MyBase.CheckStatus ( ) 

‘wywołanie wersji metody 

klasy bazowej

 

 

Debug. WriteLine (”Kontakt: ” & 

Debug. WriteLine (”Kontakt: ” & 

DateToContact)

DateToContact)

End Sub

End Sub

End Class

End Class

background image

 

 

57

 

 

Przesłanianie nazw w 

VB.NET

Tworzymy  instancje  klasy  potomnej,  co 
wymaga 

przesłania 

parametrów 

inicjalizujących 

jej 

właściwości 

wywołujemy metodę 

CheckStatus

:

Zostanie wyświetlone okno:

Dim objNewKlientDocelowy As New 

Dim objNewKlientDocelowy As New 

KlientDocelowy 

KlientDocelowy 

 

 

(”Siemens”, True, #22/11/2003#)

(”Siemens”, True, #22/11/2003#)

objNewKlientDocelowy. CheckStatus

objNewKlientDocelowy. CheckStatus

Dim objNewKlientDocelowy As New 

Dim objNewKlientDocelowy As New 

KlientDocelowy 

KlientDocelowy 

 

 

(”Siemens”, True, #22/11/2003#)

(”Siemens”, True, #22/11/2003#)

objNewKlientDocelowy. CheckStatus

objNewKlientDocelowy. CheckStatus

Debug

Debug

Name: Siemens        

Name: Siemens        //generowane metodą 

klasy bazowej

Active:  True

Active:  True

         

         //generowane metodą 

klasy bazowej

Kontakt: 22/11/2003 

Kontakt: 22/11/2003 //generowane metodą 

klasy potomnej

Debug

Debug

Name: Siemens        

Name: Siemens        //generowane metodą 

klasy bazowej

Active:  True

Active:  True

         

         //generowane metodą 

klasy bazowej

Kontakt: 22/11/2003 

Kontakt: 22/11/2003 //generowane metodą 

klasy potomnej

background image

 

 

58

 

 

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

Overloads

, np.: 

Overloads Sub Display (ByVal number as 

Overloads Sub Display (ByVal number as 

Integer)

Integer)
// ciało funkcji

End Sub

End Sub

Overloads Sub Display (ByVal aString as 

Overloads Sub Display (ByVal aString as 

String)

String)
// ciało funkcji

End Sub

End Sub

Overloads Sub Display (ByVal number as 

Overloads Sub Display (ByVal number as 

Integer)

Integer)
// ciało funkcji

End Sub

End Sub

Overloads Sub Display (ByVal aString as 

Overloads Sub Display (ByVal aString as 

String)

String)
// ciało funkcji

End Sub

End Sub

background image

 

 

59

 

 

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

Shared

, np.:

Zmiana  właściwości  w  jednej  instancji 
wywołuje 

zmianę 

tej 

właściwości 

we 

wszystkich instancjach danej klasy.

Public Shared CommonName As 

Public Shared CommonName As 

String

String

Public Shared CommonName As 

Public Shared CommonName As 

String

String

background image

 

 

60

 

 

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.

background image

 

 

61

 

 

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

Try
// Kod programu 

Catch

Catch
// fragment kodu zawierający komunikat o błędzie, 
wykonywany, 
// gdy w kodzie po instrukcji Try wystąpił błąd

Finally

Finally
// fragment kodu wykonywany niezależnie od tego 
czy po Try wystąpił błąd czy nie

End Try

End Try

Try

Try
// Kod programu 

Catch

Catch
// fragment kodu zawierający komunikat o błędzie, 
wykonywany, 
// gdy w kodzie po instrukcji Try wystąpił błąd

Finally

Finally
// fragment kodu wykonywany niezależnie od tego 
czy po Try wystąpił błąd czy nie

End Try

End Try

background image

 

 

62

 

 

Strukturalna obsługa 

języka w VB.NET

Kod po instrukcji 

Try

Try

 może zawierać instrukcję 

Throw

Throw

, która wymusza błąd (i wykonanie sekcji 

kodu po 

Catch

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

Thread

, a podczas 

tworzenia instancji przekazywany jest adres, 
który ma być wykonany w wątku.

Klasa 

Thread

Thread

 posiada różne metody 

wstrzymywania, zawieszania, przywracania, 
usuwania

  i innych operacji dokonywanych na 

wątku.

background image

 

 

63

 

 

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

background image

 

 

64

 

 

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:

Typ 

Data

 nie jest przechowywany w typie 

Double

ale używa wewnętrznie 8-bitowego typu wartości 

integer.

Dim sFixedLengthString As New 

Dim sFixedLengthString As New 

VB6.FixedLengthString (18)

VB6.FixedLengthString (18)

Dim sFixedLengthString As New 

Dim sFixedLengthString As New 

VB6.FixedLengthString (18)

VB6.FixedLengthString (18)

background image

 

 

65

 

 

Zmiany wprowadzone w 

VB.NET

VB.NET nie obsługuje domyślnych wartości i 
metod.

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.

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

)

strName = txtName.Text

strName = txtName.Text

( w VB6   

( w VB6   

strName = txtName)

strName = txtName)

strName = rsRecordSet.

strName = rsRecordSet.

Fields 

Fields 

(”Name”).

(”Name”).

Value

Value

strName = txtName.Text

strName = txtName.Text

( w VB6   

( w VB6   

strName = txtName)

strName = txtName)

strName = rsRecordSet.

strName = rsRecordSet.

Fields 

Fields 

(”Name”).

(”Name”).

Value

Value

txtCity = txtNewCity

txtCity = txtNewCity

   

   

( w VB6    Set txtCity 

( w VB6    Set txtCity 

= txtNewCity

= txtNewCity

txtCity = txtNewCity

txtCity = txtNewCity

   

   

( w VB6    Set txtCity 

( w VB6    Set txtCity 

= txtNewCity

= txtNewCity

background image

 

 

66

 

 

Zmiany wprowadzone w 

VB.NET

Kompilator VB.NET zawsze wymaga użycia 
nawiasów, nawet dla list argumentów typu 

Null

, np..:

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..:

MsgBox (”Witaj”)

MsgBox (”Witaj”)

( w VB6   MsgBox 

( w VB6   MsgBox 

”Witaj”

”Witaj”

 

 

)

)

Dim sDate As String

Dim sDate As String

sDate = Date( ) 

sDate = Date( ) 

( w VB6   sDate = Date

( w VB6   sDate = Date

 )

 )

MsgBox (”Witaj”)

MsgBox (”Witaj”)

( w VB6   MsgBox 

( w VB6   MsgBox 

”Witaj”

”Witaj”

 

 

)

)

Dim sDate As String

Dim sDate As String

sDate = Date( ) 

sDate = Date( ) 

( w VB6   sDate = Date

( w VB6   sDate = Date

 )

 )

Dim strImie, strNazwisko As String

Dim strImie, strNazwisko As String

w VB6    

w VB6    

Dim strImie As String, strNazwisko As String, 

Dim strImie As String, strNazwisko As String, 

wiek As Integer

wiek As Integer

Dim strImie, strNazwisko As String

Dim strImie, strNazwisko As String

w VB6    

w VB6    

Dim strImie As String, strNazwisko As String, 

Dim strImie As String, strNazwisko As String, 

wiek As Integer

wiek As Integer

background image

 

 

67

 

 

Zmiany wprowadzone w 

VB.NET

VB. NET dopuszcza w deklaracji 

inicjalizację 

zmiennych

W deklaracji tablicy w VB6 liczba w nawiasie 
oznaczała indeks ostatniego elementu

Podobnie, w deklaracji tablicy w VB.NET liczba 
w nawiasie oznacza indeks ostatniego 
elementu

W VB.NET 

nie stosuje się tablic

 zaczynających 

od indeksu 

1

1

Dim strNazwisko As String = ”Kowalski”

Dim strNazwisko As String = ”Kowalski”

Dim strNazwisko As String = ”Kowalski”

Dim strNazwisko As String = ”Kowalski”

Dim strNazwisko (10) As String

Dim strNazwisko (10) As String tablica 11-
elementowa (0 -10)

Dim strNazwisko (10) As String

Dim strNazwisko (10) As String

tablica 11-

elementowa (0 -10)

Dim strNazwisko (10) As String

Dim strNazwisko (10) As String tablica 11-
elementowa (0 - 10)

Dim strNazwisko (10) As String

Dim strNazwisko (10) As String

tablica 11-

elementowa (0 - 10)

background image

 

 

68

 

 

Zmiany wprowadzone w 

VB.NET

W VB.NET można również w deklaracji tablic 
dokonywać ich inicjalizacji (analogicznie jak 
zmienne)

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 ( )

Dim frmNewForm As New Form2 ( )

frmNewForm.Show ( ) 

frmNewForm.Show ( ) 

Dim frmNewForm As New Form2 ( )

Dim frmNewForm As New Form2 ( )

frmNewForm.Show ( ) 

frmNewForm.Show ( ) 

Dim strImie (2) As String = („”Ola”, 

Dim strImie (2) As String = („”Ola”, 

”Tomek”,  ”Basia”)

”Tomek”,  ”Basia”)

Dim strImie (2) As String = („”Ola”, 

Dim strImie (2) As String = („”Ola”, 

”Tomek”,  ”Basia”)

”Tomek”,  ”Basia”)

background image

 

 

69

 

 

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

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

and, or, xor, not

 są zastrzeżone 

wyłącznie do operacji boolowskich; w arytmetyce 
bitowej stosowane są operatory 

BitAnd, BitOr, BitXor, 

BitAnd, BitOr, BitXor, 

BitNo

BitNo

background image

 

 

70

 

 

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

Structure klient

public klientID As Integer

public klientID As Integer

Dim klientNazwisko As String

Dim klientNazwisko As String

Private klientStatus As Boolean

Private klientStatus As Boolean

End Structure 

End Structure 

Structure klient

Structure klient

public klientID As Integer

public klientID As Integer

Dim klientNazwisko As String

Dim klientNazwisko As String

Private klientStatus As Boolean

Private klientStatus As Boolean

End Structure 

End Structure 

background image

 

 

71

 

 

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.

background image

 

 

72

 

 

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..

background image

 

 

73

 

 

Przystosowanie projektów 

do VB.NET

Przystosowanie projektów wykonywanych w 
VB6 do VB.NET zawarte jest w bibliotece 
dostępnej pod adresem:

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/library/techart/vb6t

http://msdn.microsoft.com/library/techart/vb6t

ovbdotnet.htm

ovbdotnet.htm

http://msdn.microsoft.com/library/techart/vb6t

http://msdn.microsoft.com/library/techart/vb6t

ovbdotnet.htm

ovbdotnet.htm

http://msdn.microsoft.com/xml/general/toolkit

http://msdn.microsoft.com/xml/general/toolkit

_intro.asp

_intro.asp

http://msdn.microsoft.com/xml/general/toolkit

http://msdn.microsoft.com/xml/general/toolkit

_intro.asp

_intro.asp

background image

 

 

74

 

 

Kontrolki  VB.NET

Po wygenerowaniu nowego projektu 

Windows Control Library

Windows Control Library

 kontrolki ActiveX 

automatycznie dziedziczą własności po klasie 

System.Windows.Forms.UserControl.

System.Windows.Forms.UserControl.

 

Klasa ta w postaci:

dostarcza podstawowe właściwości i 
zdarzenia związane z kontrolkami. Jest ona 
klasą bazową do tworzenia własnych 
kontrolek 

Public Class

Public Class

 UserControl1 

 UserControl1 

Inherits

Inherits

 

 

System.Windows.Forms.UserControl 

System.Windows.Forms.UserControl 

End Class

End Class

Public Class

Public Class

 UserControl1 

 UserControl1 

Inherits

Inherits

 

 

System.Windows.Forms.UserControl 

System.Windows.Forms.UserControl 

End Class

End Class

background image

 

 

75

 

 

Kontrolki  VB.NET

Można stworzyć kontrolki dziedziczące 
własności po innym komponencie, np. 

CheckBox

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. 

Public Class

Public Class

 UserControl1 

 UserControl1 

Inherits

Inherits

 

 

System.Windows.Forms.CheckBox 

System.Windows.Forms.CheckBox 

End Class

End Class

 

 

Public Class

Public Class

 UserControl1 

 UserControl1 

Inherits

Inherits

 

 

System.Windows.Forms.CheckBox 

System.Windows.Forms.CheckBox 

End Class

End Class

 

 

background image

 

 

76

 

 

Zdarzenia  VB.NET

Zdarzenia deklaruje się w następujący sposób: 

Metoda 

RaiseEvent

 służy do wywołania 

zdarzenia w momencie kliknięcia na 
kontrolkę. 

Public Class

Public Class

 UserControl1 

 UserControl1 

Inherits

Inherits

 

 

System.Windows.Forms.CheckBox 

System.Windows.Forms.CheckBox 

Public 

Public 

Event

Event

 MojeZdarzenieKliknięcia() 

 MojeZdarzenieKliknięcia() 

Protected

Protected

 

 

Overrides

Overrides

 

 

Sub

Sub

 OnClick(

 OnClick(

ByVal

ByVal

 e 

 e 

As

As

 

 

System.EventArgs) 

System.EventArgs) 

RaiseEvent

RaiseEvent

 

 

MojeZdarzenieKliknięcia() 

MojeZdarzenieKliknięcia() 

End

End

 

 

Sub 

Sub 

End Class

End Class

 

 

Public Class

Public Class

 UserControl1 

 UserControl1 

Inherits

Inherits

 

 

System.Windows.Forms.CheckBox 

System.Windows.Forms.CheckBox 

Public 

Public 

Event

Event

 MojeZdarzenieKliknięcia() 

 MojeZdarzenieKliknięcia() 

Protected

Protected

 

 

Overrides

Overrides

 

 

Sub

Sub

 OnClick(

 OnClick(

ByVal

ByVal

 e 

 e 

As

As

 

 

System.EventArgs) 

System.EventArgs) 

RaiseEvent

RaiseEvent

 

 

MojeZdarzenieKliknięcia() 

MojeZdarzenieKliknięcia() 

End

End

 

 

Sub 

Sub 

End Class

End Class

 

 

background image

 

 

77

 

 

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:

 

Można najpierw wywołać metodę 

MyBase.OnClick(e)

MyBase.OnClick(e)

 a później napisać obsługę 

zdarzenia, ale zmienia to wynik działania 
procedury. 

Protected Overrides

Protected Overrides

 

 

Sub

Sub

 OnClick(

 OnClick(

ByVal

ByVal

 e 

 e 

As

As

 

 

System.EventArgs) 

System.EventArgs) 

RaiseEvent

RaiseEvent

 MojeZdarzenieKliknięcia() 

 MojeZdarzenieKliknięcia() 

MyBase

MyBase

.OnClick(e) 

.OnClick(e) 

End

End

 

 

Sub 

Sub 

Protected Overrides

Protected Overrides

 

 

Sub

Sub

 OnClick(

 OnClick(

ByVal

ByVal

 e 

 e 

As

As

 

 

System.EventArgs) 

System.EventArgs) 

RaiseEvent

RaiseEvent

 MojeZdarzenieKliknięcia() 

 MojeZdarzenieKliknięcia() 

MyBase

MyBase

.OnClick(e) 

.OnClick(e) 

End

End

 

 

Sub 

Sub 

background image

 

 

78

 

 

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

Private Sub

 UserControl11_Click(

 UserControl11_Click(

ByVal

ByVal

 

 

sender 

sender 

As

As

 

 

Object

Object

ByVal

ByVal

 e 

 e 

As

As

 

 

System.EventArgs) _ 

System.EventArgs) _ 

Handles 

Handles 

UserControl11.Click 

UserControl11.Click 

MsgBox("Nastąpiło kliknięcie!", 

MsgBox("Nastąpiło kliknięcie!", 

MsgBoxStyle.Information) 

MsgBoxStyle.Information) 

End

End

 

 

Sub

Sub

 

 

Private Sub

Private Sub

 UserControl11_Click(

 UserControl11_Click(

ByVal

ByVal

 

 

sender 

sender 

As

As

 

 

Object

Object

ByVal

ByVal

 e 

 e 

As

As

 

 

System.EventArgs) _ 

System.EventArgs) _ 

Handles 

Handles 

UserControl11.Click 

UserControl11.Click 

MsgBox("Nastąpiło kliknięcie!", 

MsgBox("Nastąpiło kliknięcie!", 

MsgBoxStyle.Information) 

MsgBoxStyle.Information) 

End

End

 

 

Sub

Sub

 

 

background image

 

 

79

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

Public Sub

 PodłaczObsZdarzenia() 

 PodłaczObsZdarzenia() 

AddHandler

AddHandler

 UserControl11.Click, 

 UserControl11.Click, 

AddressOf

AddressOf

 

 

MojaObsługakliknięcia 

MojaObsługakliknięcia 

End

End

 

 

Sub

Sub

 

 

Private

Private

 

 

Sub

Sub

MojaObsługakliknięcia(

MojaObsługakliknięcia(

ByVal

ByVal

 

 

obSend 

obSend 

As

As

 

 

Object

Object

ByVal

ByVal

 e 

 e 

As

As

 System.EventArgs) 

 System.EventArgs) 

MsgBox("Nastąpiło kliknięcie!", 

MsgBox("Nastąpiło kliknięcie!", 

MsgBoxStyle.Information) 

MsgBoxStyle.Information) 

End

End

 

 

Sub

Sub

 

 

Public Sub

Public Sub

 OdlaczObsZdarzenia() 

 OdlaczObsZdarzenia() 

RemoveHandler

RemoveHandler

 UserControl11.Click, 

 UserControl11.Click, 

AddressOf

AddressOf

 MojaObsługakliknięcia 

 MojaObsługakliknięcia 

End

End

 

 

Sub

Sub

Public Sub

Public Sub

 PodłaczObsZdarzenia() 

 PodłaczObsZdarzenia() 

AddHandler

AddHandler

 UserControl11.Click, 

 UserControl11.Click, 

AddressOf

AddressOf

 

 

MojaObsługakliknięcia 

MojaObsługakliknięcia 

End

End

 

 

Sub

Sub

 

 

Private

Private

 

 

Sub

Sub

MojaObsługakliknięcia(

MojaObsługakliknięcia(

ByVal

ByVal

 

 

obSend 

obSend 

As

As

 

 

Object

Object

ByVal

ByVal

 e 

 e 

As

As

 System.EventArgs) 

 System.EventArgs) 

MsgBox("Nastąpiło kliknięcie!", 

MsgBox("Nastąpiło kliknięcie!", 

MsgBoxStyle.Information) 

MsgBoxStyle.Information) 

End

End

 

 

Sub

Sub

 

 

Public Sub

Public Sub

 OdlaczObsZdarzenia() 

 OdlaczObsZdarzenia() 

RemoveHandler

RemoveHandler

 UserControl11.Click, 

 UserControl11.Click, 

AddressOf

AddressOf

 MojaObsługakliknięcia 

 MojaObsługakliknięcia 

End

End

 

 

Sub

Sub

background image

 

 

80

Metoda  którą  podłączamy  musi  mieć 
właściwe 

parametry 

do 

obsłużenia 

danego zdarzenia.

 

Pojawienie 

się 

dziedziczenia 

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 

dostępie  do  elementów  danej  klasy, 
zwłaszcza  w  przypadku,  kiedy  tworzymy 
hierarchiczną strukturę klas.

 

 

Deklaracje metod w  

VB.NET

background image

 

 

81

 

 

Deklaracje metod w  

VB.NET

Z wykorzystaniem listy atrybutów 

attrlist. 

attrlist. 

 

Definicja funkcji w VB.NET wygląda w tym 
przypadku następująco:

[<

[<

attrlist

attrlist

>] 

>] 

[{ Overloads | Overrides | 

[{ Overloads | Overrides | 

Overridable |

Overridable |

NotOverridable | MustOverride | Shadows | 

NotOverridable | MustOverride | Shadows | 

Shared }]

Shared }]

[{Public | Protected | Friend | Protected 

[{Public | Protected | Friend | Protected 

Friend | Private }]

Friend | Private }]

Function 

Function 

nazwa {(arglist)] [ 

nazwa {(arglist)] [ 

As 

As 

typ ] 

typ ] 

Implements 

Implements 

interfejs.zdefiniowananazwa ]

interfejs.zdefiniowananazwa ]

[ instrukcje ]

[ instrukcje ]

[

[

Exit Function

Exit Function

 ]

 ]

[instrukcje ]

[instrukcje ]

End Function

End Function

[<

[<

attrlist

attrlist

>] 

>] 

[{ Overloads | Overrides | 

[{ Overloads | Overrides | 

Overridable |

Overridable |

NotOverridable | MustOverride | Shadows | 

NotOverridable | MustOverride | Shadows | 

Shared }]

Shared }]

[{Public | Protected | Friend | Protected 

[{Public | Protected | Friend | Protected 

Friend | Private }]

Friend | Private }]

Function 

Function 

nazwa {(arglist)] [ 

nazwa {(arglist)] [ 

As 

As 

typ ] 

typ ] 

Implements 

Implements 

interfejs.zdefiniowananazwa ]

interfejs.zdefiniowananazwa ]

[ instrukcje ]

[ instrukcje ]

[

[

Exit Function

Exit Function

 ]

 ]

[instrukcje ]

[instrukcje ]

End Function

End Function

background image

 

 

82

 

 

Deklaracje metod w  

VB.NET

Definicja procedury ma wtedy postać:

attrlist

 – lista atrybutów dla danej metody. Jest to 

nowość w stosunku do poprzednich wersji 
kompilatora. 

Wszystkie atrybuty muszą być dziedziczone z 
klasy 

System.Attribute

.

[<

[<

attrlist

attrlist

>] 

>] 

[{ Overloads | Overrides | 

[{ Overloads | Overrides | 

Overridable |

Overridable |

NotOverridable | MustOverride | Shadows | 

NotOverridable | MustOverride | Shadows | 

Shared }]

Shared }]

[{Public | Protected | Friend | Protected 

[{Public | Protected | Friend | Protected 

Friend | Private }]

Friend | Private }]

Sub

Sub

 nazwa {(arglist)] [ 

 nazwa {(arglist)] [ 

Implements 

Implements 

interfejs.zdefiniowananazwa ]

interfejs.zdefiniowananazwa ]

[ instrukcje ]

[ instrukcje ]

[

[

Exit Sub

Exit Sub

 ]

 ]

[instrukcje ]

[instrukcje ]

End Sub

End Sub

[<

[<

attrlist

attrlist

>] 

>] 

[{ Overloads | Overrides | 

[{ Overloads | Overrides | 

Overridable |

Overridable |

NotOverridable | MustOverride | Shadows | 

NotOverridable | MustOverride | Shadows | 

Shared }]

Shared }]

[{Public | Protected | Friend | Protected 

[{Public | Protected | Friend | Protected 

Friend | Private }]

Friend | Private }]

Sub

Sub

 nazwa {(arglist)] [ 

 nazwa {(arglist)] [ 

Implements 

Implements 

interfejs.zdefiniowananazwa ]

interfejs.zdefiniowananazwa ]

[ instrukcje ]

[ instrukcje ]

[

[

Exit Sub

Exit Sub

 ]

 ]

[instrukcje ]

[instrukcje ]

End Sub

End Sub

background image

 

 

83

 

 

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

Public Class

 

 

CDll

CDll

<

<

DllImport

DllImport

("Kernel32", 

("Kernel32", 

EntryPoint:="GetWindowsDirectory")> 

EntryPoint:="GetWindowsDirectory")> 

Public _ Shared 

Public _ Shared 

Function

Function

 GetWindowsDirectory(

 GetWindowsDirectory(

ByVal

ByVal

 lpBuffer 

 lpBuffer 

As

As

 

 

StringBuilder, _ 

StringBuilder, _ 

ByVa

ByVa

l nSize 

l nSize 

As

As

 

 

Integer) As Long

Integer) As Long

End Function

End Function

<

<

DllImport

DllImport

("Kernel32", 

("Kernel32", 

EntryPoint:="GetSystemDirectory")> 

EntryPoint:="GetSystemDirectory")> 

Public _ Shared 

Public _ Shared 

Function _

Function _

GetSystemDirectory(

GetSystemDirectory(

ByVal

ByVal

 lpBuffer 

 lpBuffer 

As

As

 StringBuilder, 

 StringBuilder, 

ByVal

ByVal

 nSize 

 nSize 

As _ Integer) As Long

As _ Integer) As Long

End Function

End Function

<

<

DllImport

DllImport

("Kernel32", 

("Kernel32", 

EntryPoint:="GetCommandLine")> 

EntryPoint:="GetCommandLine")> 

Public _ Shared 

Public _ Shared 

Function

Function

 GetCommandLine() 

 GetCommandLine() 

As

As

 IntPtr

 IntPtr

End Function

End Function

End Class

End Class

Public Class

Public Class

 

 

CDll

CDll

<

<

DllImport

DllImport

("Kernel32", 

("Kernel32", 

EntryPoint:="GetWindowsDirectory")> 

EntryPoint:="GetWindowsDirectory")> 

Public _ Shared 

Public _ Shared 

Function

Function

 GetWindowsDirectory(

 GetWindowsDirectory(

ByVal

ByVal

 lpBuffer 

 lpBuffer 

As

As

 

 

StringBuilder, _ 

StringBuilder, _ 

ByVa

ByVa

l nSize 

l nSize 

As

As

 

 

Integer) As Long

Integer) As Long

End Function

End Function

<

<

DllImport

DllImport

("Kernel32", 

("Kernel32", 

EntryPoint:="GetSystemDirectory")> 

EntryPoint:="GetSystemDirectory")> 

Public _ Shared 

Public _ Shared 

Function _

Function _

GetSystemDirectory(

GetSystemDirectory(

ByVal

ByVal

 lpBuffer 

 lpBuffer 

As

As

 StringBuilder, 

 StringBuilder, 

ByVal

ByVal

 nSize 

 nSize 

As _ Integer) As Long

As _ Integer) As Long

End Function

End Function

<

<

DllImport

DllImport

("Kernel32", 

("Kernel32", 

EntryPoint:="GetCommandLine")> 

EntryPoint:="GetCommandLine")> 

Public _ Shared 

Public _ Shared 

Function

Function

 GetCommandLine() 

 GetCommandLine() 

As

As

 IntPtr

 IntPtr

End Function

End Function

End Class

End Class

background image

 

 

84

Z wykorzystaniem przeciążenia nazwy funkcji 
lub procedury z klasy bazowej

  - 

Overloads

Overloads

Public Class

Public Class

 CMojaKlasaBazowa

 CMojaKlasaBazowa

Public Function

Public Function

 MojaFunkcjaBazowa(

 MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As 

As 

Long

Long

ByVal

ByVal

 y 

 y 

As_ Long) As Long

As_ Long) As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

Public Class

Public Class

 

 

CMojaKlasaDziedziczaca

CMojaKlasaDziedziczaca

Inherits 

Inherits 

CMojaKlasaBazowa

CMojaKlasaBazowa

Public 

Public 

Overloads

Overloads

 

 

Function

Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As Long, _ ByVal

As Long, _ ByVal

 y 

 y 

As 

As 

Long, ByVal

Long, ByVal

 z 

 z 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y + z

MojaFunkcjaBazowa = x + y + z

End Function

End Function

Public Function 

Public Function 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal 

ByVal 

As 

As 

Long

Long

ByVal 

ByVal 

As _ Long

As _ Long

ByVal 

ByVal 

As Long

As Long

ByVal

ByVal

 Mnoz 

 Mnoz 

As Long

As Long

As Long

As Long

  

  

 

 „Błąd”

MojaFunkcjaBazowa = (x + y + z) * Mnoz

MojaFunkcjaBazowa = (x + y + z) * Mnoz

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaBazowa

 CMojaKlasaBazowa

Public Function

Public Function

 MojaFunkcjaBazowa(

 MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As 

As 

Long

Long

ByVal

ByVal

 y 

 y 

As_ Long) As Long

As_ Long) As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

Public Class

Public Class

 

 

CMojaKlasaDziedziczaca

CMojaKlasaDziedziczaca

Inherits 

Inherits 

CMojaKlasaBazowa

CMojaKlasaBazowa

Public 

Public 

Overloads

Overloads

 

 

Function

Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As Long, _ ByVal

As Long, _ ByVal

 y 

 y 

As 

As 

Long, ByVal

Long, ByVal

 z 

 z 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y + z

MojaFunkcjaBazowa = x + y + z

End Function

End Function

Public Function 

Public Function 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal 

ByVal 

As 

As 

Long

Long

ByVal 

ByVal 

As _ Long

As _ Long

ByVal 

ByVal 

As Long

As Long

ByVal

ByVal

 Mnoz 

 Mnoz 

As Long

As Long

As Long

As Long

  

  

 

 

„Błąd”

MojaFunkcjaBazowa = (x + y + z) * Mnoz

MojaFunkcjaBazowa = (x + y + z) * Mnoz

End Function

End Function

End Class

End Class

background image

 

 

85

Nie można zastosować słowa 

Overloads

Overloads

 do przeciążania 

metod, które różnią się od siebie tylko wartością zwracaną:

Public Class

Public Class

 CMojaKlasaBazowa

 CMojaKlasaBazowa

Public Function

Public Function

 MojaFunkcjaBazowa(

 MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As 

As 

Long, ByVal

Long, ByVal

 y 

 y 

As _ Long

As _ Long

As Long

As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca

 CMojaKlasaDziedziczaca

Inherits 

Inherits 

CMojaKlasaBazowa

CMojaKlasaBazowa

Public Overloads

Public Overloads

 

 

Function

Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal 

ByVal 

As Long,

As Long,

 _ 

 _ 

ByVal

ByVal

 y 

 y 

As 

As 

Long

Long

As Double

As Double

 

 

’Błąd!!!

MojaFunkcjaBazowa = x + y 

MojaFunkcjaBazowa = x + y 

End Function

End Function

Public Overloads Function

Public Overloads Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal 

ByVal 

As Long, _ ByVal

As Long, _ ByVal

 y 

 y 

As 

As 

Long

Long

,

,

 ByVa

 ByVa

l z 

l z 

As Long

As Long

ByVal

ByVal

 Mnoz 

 Mnoz 

As Long

As Long

As Long

As Long

 

 

MojaFunkcjaBazowa = (x + y + z) * Mnoz

MojaFunkcjaBazowa = (x + y + z) * Mnoz

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaBazowa

 CMojaKlasaBazowa

Public Function

Public Function

 MojaFunkcjaBazowa(

 MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As 

As 

Long, ByVal

Long, ByVal

 y 

 y 

As _ Long

As _ Long

As Long

As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca

 CMojaKlasaDziedziczaca

Inherits 

Inherits 

CMojaKlasaBazowa

CMojaKlasaBazowa

Public Overloads

Public Overloads

 

 

Function

Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal 

ByVal 

As Long,

As Long,

 _ 

 _ 

ByVal

ByVal

 y 

 y 

As 

As 

Long

Long

As Double

As Double

 

 

’Błąd!!!

MojaFunkcjaBazowa = x + y 

MojaFunkcjaBazowa = x + y 

End Function

End Function

Public Overloads Function

Public Overloads Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal 

ByVal 

As Long, _ ByVal

As Long, _ ByVal

 y 

 y 

As 

As 

Long

Long

,

,

 ByVa

 ByVa

l z 

l z 

As Long

As Long

ByVal

ByVal

 Mnoz 

 Mnoz 

As Long

As Long

As Long

As Long

 

 

MojaFunkcjaBazowa = (x + y + z) * Mnoz

MojaFunkcjaBazowa = (x + y + z) * Mnoz

End Function

End Function

End Class

End Class

background image

 

 

86

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

Public Class

 CMojaKlasaDziedziczaca

 CMojaKlasaDziedziczaca

Inherits 

Inherits 

CMojaKlasaBazowa

CMojaKlasaBazowa

Public 

Public 

Overridable

Overridable

 Overloads Function

 Overloads Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As Long, ByVal

As Long, ByVal

 y 

 y 

As 

As 

Long, _ ByVal

Long, _ ByVal

 z 

 z 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y + z

MojaFunkcjaBazowa = x + y + z

End Function

End Function

Public Overloads Function

Public Overloads Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As  _ Long, ByVal

As  _ Long, ByVal

 y 

 y 

As Long, ByVal

As Long, ByVal

 z 

 z 

As Long, ByVal

As Long, ByVal

 Mnoz 

 Mnoz 

As _ Long

As _ Long

As Long

As Long

MojaFunkcjaBazowa = (x + y + z) * Mnoz

MojaFunkcjaBazowa = (x + y + z) * Mnoz

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca

 CMojaKlasaDziedziczaca

Inherits 

Inherits 

CMojaKlasaBazowa

CMojaKlasaBazowa

Public 

Public 

Overridable

Overridable

 Overloads Function

 Overloads Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As Long, ByVal

As Long, ByVal

 y 

 y 

As 

As 

Long, _ ByVal

Long, _ ByVal

 z 

 z 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y + z

MojaFunkcjaBazowa = x + y + z

End Function

End Function

Public Overloads Function

Public Overloads Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As  _ Long, ByVal

As  _ Long, ByVal

 y 

 y 

As Long, ByVal

As Long, ByVal

 z 

 z 

As Long, ByVal

As Long, ByVal

 Mnoz 

 Mnoz 

As _ Long

As _ Long

As Long

As Long

MojaFunkcjaBazowa = (x + y + z) * Mnoz

MojaFunkcjaBazowa = (x + y + z) * Mnoz

End Function

End Function

End Class

End Class

background image

 

 

87

Z wykorzystaniem metody

 

Overridable,

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

NotOverridable

,  która 

oznacza,  że  ta  metoda  nie  może  być  zastąpiona  przez 

żadną inną metodę.

Public Class

Public Class

 CMojaKlasaDziedziczaca2

 CMojaKlasaDziedziczaca2

Inherits 

Inherits 

CMojaKlasaDziedziczaca

CMojaKlasaDziedziczaca

Public Overloads 

Public Overloads 

Overrides

Overrides

 Function

 Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal 

ByVal 

As Long

As Long

ByVal

ByVal

 y 

 y 

As 

As 

Long

Long

, _

, _

ByVal 

ByVal 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = (x + y) * z

MojaFunkcjaBazowa = (x + y) * z

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca2

 CMojaKlasaDziedziczaca2

Inherits 

Inherits 

CMojaKlasaDziedziczaca

CMojaKlasaDziedziczaca

Public Overloads 

Public Overloads 

Overrides

Overrides

 Function

 Function

 

 

MojaFunkcjaBazowa(

MojaFunkcjaBazowa(

ByVal 

ByVal 

As Long

As Long

ByVal

ByVal

 y 

 y 

As 

As 

Long

Long

, _

, _

ByVal 

ByVal 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = (x + y) * z

MojaFunkcjaBazowa = (x + y) * z

End Function

End Function

End Class

End Class

 

 

Deklaracje metod w  

VB.NET

background image

 

 

88

Funkcja typu 

NotOverridable

 musi sama zastępować 

taką samą metodę w klasie bazowej dla swej klasy.

Public Class

Public Class

 CMojaKlasaBaza2

 CMojaKlasaBaza2

Inherits 

Inherits 

CMojaKlasaBazowa

CMojaKlasaBazowa

Public 

Public 

NotOverridable

NotOverridable

 Overrides Function

 Overrides Function

 

 

MojaFunkcjaBazowa (

MojaFunkcjaBazowa (

ByVal

ByVal

 x 

 x 

As Long, ByVal

As Long, ByVal

 y 

 y 

As Long

As Long

As

As

 _ 

 _ 

Long

Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class 

End Class 

Metoda w klasie bazowej musi być określona jako 

Overridable:

Public Class

Public Class

 CMojaKlasaDziedziczaca3

 CMojaKlasaDziedziczaca3

Inherits 

Inherits 

CMojaKlasaBaza2

CMojaKlasaBaza2

Public 

Public 

Overrides

Overrides

 Function

 Function

 MojaFunkcjaBazowa _ 

 MojaFunkcjaBazowa _ 

Błąd!!!

(

(

ByVal 

ByVal 

As Long

As Long

ByVal

ByVal

 y 

 y 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaBaza2

 CMojaKlasaBaza2

Inherits 

Inherits 

CMojaKlasaBazowa

CMojaKlasaBazowa

Public 

Public 

NotOverridable

NotOverridable

 Overrides Function

 Overrides Function

 

 

MojaFunkcjaBazowa (

MojaFunkcjaBazowa (

ByVal

ByVal

 x 

 x 

As Long, ByVal

As Long, ByVal

 y 

 y 

As Long

As Long

As

As

 _ 

 _ 

Long

Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class 

End Class 

Metoda w klasie bazowej musi być określona jako 

Overridable:

Public Class

Public Class

 CMojaKlasaDziedziczaca3

 CMojaKlasaDziedziczaca3

Inherits 

Inherits 

CMojaKlasaBaza2

CMojaKlasaBaza2

Public 

Public 

Overrides

Overrides

 Function

 Function

 MojaFunkcjaBazowa _ 

 MojaFunkcjaBazowa _ 

Błąd!!!

(

(

ByVal 

ByVal 

As Long

As Long

ByVal

ByVal

 y 

 y 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

background image

 

 

89

Z  wykorzystaniem  metody

 

MustOverride

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

MustInherit

.

Public 

Public 

MustInherit

MustInherit

 Class

 Class

 CMojaKlasaBaza2

 CMojaKlasaBaza2

Public 

Public 

MustOverride 

MustOverride 

Function

Function

 

 

MojaFunkcjaBazowa _

MojaFunkcjaBazowa _

(

(

ByVal

ByVal

 x 

 x 

As Long, ByVal

As Long, ByVal

 y 

 y 

As Long

As Long

As Long

As Long

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca3

 CMojaKlasaDziedziczaca3

Inherits

Inherits

 CMojaKlasaBaza2

 CMojaKlasaBaza2

Public Overrides Function

Public Overrides Function

 MojaFunkcjaBazowa _

 MojaFunkcjaBazowa _

(

(

ByVal

ByVal

 x 

 x 

As Long

As Long

ByVal

ByVal

 y 

 y 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

Public 

Public 

MustInherit

MustInherit

 Class

 Class

 CMojaKlasaBaza2

 CMojaKlasaBaza2

Public 

Public 

MustOverride 

MustOverride 

Function

Function

 

 

MojaFunkcjaBazowa _

MojaFunkcjaBazowa _

(

(

ByVal

ByVal

 x 

 x 

As Long, ByVal

As Long, ByVal

 y 

 y 

As Long

As Long

As Long

As Long

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca3

 CMojaKlasaDziedziczaca3

Inherits

Inherits

 CMojaKlasaBaza2

 CMojaKlasaBaza2

Public Overrides Function

Public Overrides Function

 MojaFunkcjaBazowa _

 MojaFunkcjaBazowa _

(

(

ByVal

ByVal

 x 

 x 

As Long

As Long

ByVal

ByVal

 y 

 y 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

background image

 

 

90

Z  wykorzystaniem  metody

 

Shadows

Shadows

,  która 

wskazuje,  że  metoda  ta  zakrywa  identycznie 
nazwany  element  programistyczny  lub  zbiór 
przeciążonych elementów w klasie bazowej:

Public Class

Public Class

 CMojaKlasaBazowa3

 CMojaKlasaBazowa3

Public

Public

 i 

 i 

As Long

As Long

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca4

 CMojaKlasaDziedziczaca4

Inherits 

Inherits 

CMojaKlasaBazowa3

CMojaKlasaBazowa3

Public 

Public 

Shadows 

Shadows 

Function

Function

 i(

 i(

ByVal

ByVal

 e 

 e 

As Long

As Long

As 

As 

String

String

MsgBox(e, MsgBoxStyle.Information)

MsgBox(e, MsgBoxStyle.Information)

i = "Jest OK!"

i = "Jest OK!"

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaBazowa3

 CMojaKlasaBazowa3

Public

Public

 i 

 i 

As Long

As Long

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca4

 CMojaKlasaDziedziczaca4

Inherits 

Inherits 

CMojaKlasaBazowa3

CMojaKlasaBazowa3

Public 

Public 

Shadows 

Shadows 

Function

Function

 i(

 i(

ByVal

ByVal

 e 

 e 

As Long

As Long

As 

As 

String

String

MsgBox(e, MsgBoxStyle.Information)

MsgBox(e, MsgBoxStyle.Information)

i = "Jest OK!"

i = "Jest OK!"

End Function

End Function

End Class

End Class

 

 

Deklaracje metod w  

VB.NET

background image

 

 

91

Z wykorzystaniem metody 

Shared

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

Public Class

 CMojaKlasa1

 CMojaKlasa1

Public

Public

 

 

Shared 

Shared 

Function 

Function 

MojaFunkcjaBazowa _

MojaFunkcjaBazowa _

(

(

ByVal

ByVal

 x 

 x 

As Long, ByVal

As Long, ByVal

 y As Long, ByVal z 

 y As Long, ByVal z 

As 

As 

Long

Long

As Long

As Long

MojaFunkcjaBazowa = (x + y) * z

MojaFunkcjaBazowa = (x + y) * z

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasa2

 CMojaKlasa2

Public Function

Public Function

 MojaFunkcjaDziedzicaca(

 MojaFunkcjaDziedzicaca(

ByVal

ByVal

 i 

 i 

As Long

As Long

As String

As String

i = CMojaKlasa1.MojaFunkcjaBazowa(2, 3, 

i = CMojaKlasa1.MojaFunkcjaBazowa(2, 3, 

4)

4)

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasa1

 CMojaKlasa1

Public

Public

 

 

Shared 

Shared 

Function 

Function 

MojaFunkcjaBazowa _

MojaFunkcjaBazowa _

(

(

ByVal

ByVal

 x 

 x 

As Long, ByVal

As Long, ByVal

 y As Long, ByVal z 

 y As Long, ByVal z 

As 

As 

Long

Long

As Long

As Long

MojaFunkcjaBazowa = (x + y) * z

MojaFunkcjaBazowa = (x + y) * z

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasa2

 CMojaKlasa2

Public Function

Public Function

 MojaFunkcjaDziedzicaca(

 MojaFunkcjaDziedzicaca(

ByVal

ByVal

 i 

 i 

As Long

As Long

As String

As String

i = CMojaKlasa1.MojaFunkcjaBazowa(2, 3, 

i = CMojaKlasa1.MojaFunkcjaBazowa(2, 3, 

4)

4)

End Function

End Function

End Class

End Class

background image

 

 

92

Z wykorzystaniem metody

 

Public 

Public 

Z wykorzystaniem metody

 Protected 

 Protected 

– dostępnej 

tylko z poziomu własnej klasy lub dziedziczącej:

Public Class

Public Class

 CMojaKlasaBazowa3

 CMojaKlasaBazowa3

Protected

Protected

 Function

 Function

 MojaFunkcjaBazowa(

 MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As Long

As Long

, _ 

, _ 

ByVal

ByVal

 y 

 y 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca4

 CMojaKlasaDziedziczaca4

Inherits 

Inherits 

CMojaKlasaBazowa3

CMojaKlasaBazowa3

Public Shadows Function

Public Shadows Function

 MojaFunkcja(

 MojaFunkcja(

ByVal 

ByVal 

As Long

As Long

As _ String

As _ String

Dim 

Dim 

Wynik 

Wynik 

As Long

As Long

Wynik = Me.MojaFunkcjaBazowa(1, 2)

Wynik = Me.MojaFunkcjaBazowa(1, 2)

End Function

End Function

End Class 

End Class 

Public Class

Public Class

 CMojaKlasaBazowa3

 CMojaKlasaBazowa3

Protected

Protected

 Function

 Function

 MojaFunkcjaBazowa(

 MojaFunkcjaBazowa(

ByVal

ByVal

 x 

 x 

As Long

As Long

, _ 

, _ 

ByVal

ByVal

 y 

 y 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca4

 CMojaKlasaDziedziczaca4

Inherits 

Inherits 

CMojaKlasaBazowa3

CMojaKlasaBazowa3

Public Shadows Function

Public Shadows Function

 MojaFunkcja(

 MojaFunkcja(

ByVal 

ByVal 

As Long

As Long

As _ String

As _ String

Dim 

Dim 

Wynik 

Wynik 

As Long

As Long

Wynik = Me.MojaFunkcjaBazowa(1, 2)

Wynik = Me.MojaFunkcjaBazowa(1, 2)

End Function

End Function

End Class 

End Class 

background image

 

 

93

Nie można wykonać następującej operacji:

Public Class

Public Class

 CMojaKlasaDziedziczaca4

 CMojaKlasaDziedziczaca4

Inherits

Inherits

 CMojaKlasaBazowa3

 CMojaKlasaBazowa3

Public Function

Public Function

 MojaFunkcja(

 MojaFunkcja(

ByVal 

ByVal 

As Long

As Long

As String

As String

Dim

Dim

 

 

Instancja

Instancja

 

 

As New

As New

 

 

CMojaKlasaBazowa3()

CMojaKlasaBazowa3()

Dim 

Dim 

Wynik 

Wynik 

As Long

As Long

Wynik = 

Wynik = 

Instancja

Instancja

.MojaFunkcjaBazowa(1, 2) 

.MojaFunkcjaBazowa(1, 2) 

‘Błąd !!!

‘Błąd !!!

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca4

 CMojaKlasaDziedziczaca4

Inherits

Inherits

 CMojaKlasaBazowa3

 CMojaKlasaBazowa3

Public Function

Public Function

 MojaFunkcja(

 MojaFunkcja(

ByVal 

ByVal 

As Long

As Long

As String

As String

Dim

Dim

 

 

Instancja

Instancja

 

 

As New

As New

 

 

CMojaKlasaBazowa3()

CMojaKlasaBazowa3()

Dim 

Dim 

Wynik 

Wynik 

As Long

As Long

Wynik = 

Wynik = 

Instancja

Instancja

.MojaFunkcjaBazowa(1, 2) 

.MojaFunkcjaBazowa(1, 2) 

‘Błąd !!!

‘Błąd !!!

End Function

End Function

End Class

End Class

Taka operacja jest możliwa dopiero po 
zadeklarowaniu metody jako 

Friend.

Friend.

 

 

Deklaracje metod w  

VB.NET

background image

 

 

94

Z wykorzystaniem metody

 Friend 

 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

Public Class

 CMojaKlasaBazowa3

 CMojaKlasaBazowa3

Friend 

Friend 

Function

Function

 MojaFunkcjaBazowa(

 MojaFunkcjaBazowa(

ByVal 

ByVal 

As 

As 

Long,

Long,

 _ 

 _ 

ByVal 

ByVal 

 y 

 y 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca4

 CMojaKlasaDziedziczaca4

Public Function

Public Function

 MojaFunkcja(

 MojaFunkcja(

ByVal

ByVal

 e 

 e 

As Long

As Long

As String

As String

Dim

Dim

 Instancja 

 Instancja 

As New

As New

 

 

CMojaKlasaBazowa3()

CMojaKlasaBazowa3()

Dim 

Dim 

Wynik 

Wynik 

As Long

As Long

Wynik = Instancja.MojaFunkcjaBazowa(1, 

Wynik = Instancja.MojaFunkcjaBazowa(1, 

2)

2)

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaBazowa3

 CMojaKlasaBazowa3

Friend 

Friend 

Function

Function

 MojaFunkcjaBazowa(

 MojaFunkcjaBazowa(

ByVal 

ByVal 

As 

As 

Long,

Long,

 _ 

 _ 

ByVal 

ByVal 

 y 

 y 

As Long

As Long

As Long

As Long

MojaFunkcjaBazowa = x + y

MojaFunkcjaBazowa = x + y

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasaDziedziczaca4

 CMojaKlasaDziedziczaca4

Public Function

Public Function

 MojaFunkcja(

 MojaFunkcja(

ByVal

ByVal

 e 

 e 

As Long

As Long

As String

As String

Dim

Dim

 Instancja 

 Instancja 

As New

As New

 

 

CMojaKlasaBazowa3()

CMojaKlasaBazowa3()

Dim 

Dim 

Wynik 

Wynik 

As Long

As Long

Wynik = Instancja.MojaFunkcjaBazowa(1, 

Wynik = Instancja.MojaFunkcjaBazowa(1, 

2)

2)

End Function

End Function

End Class

End Class

background image

 

 

95

Z wykorzystaniem metody

 Protected Friend

 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

  Private

  –  metoda 

zadeklarowana  w  ten  sposób  jest  dostępna  tylko  w 
tym kontekście gdzie została zadeklarowana.

Public Class

Public Class

 CMojaKlasa3

 CMojaKlasa3

Private

Private

 

 

Function

Function

 MojaFunkcja(

 MojaFunkcja(

ByVal

ByVal

 x 

 x 

As Long

As Long

ByVal 

ByVal 

As _ Long

As _ Long

As Long

As Long

MojaFunkcja = x + y

MojaFunkcja = x + y

End Function

End Function

Private 

Private 

Function

Function

 MojaFunkcja2()

 MojaFunkcja2()

Dim 

Dim 

Wynik 

Wynik 

As Long

As Long

Wynik = Me.MojaFunkcja(1, 2)

Wynik = Me.MojaFunkcja(1, 2)

End Function

End Function

End Class

End Class

Public Class

Public Class

 CMojaKlasa3

 CMojaKlasa3

Private

Private

 

 

Function

Function

 MojaFunkcja(

 MojaFunkcja(

ByVal

ByVal

 x 

 x 

As Long

As Long

ByVal 

ByVal 

As _ Long

As _ Long

As Long

As Long

MojaFunkcja = x + y

MojaFunkcja = x + y

End Function

End Function

Private 

Private 

Function

Function

 MojaFunkcja2()

 MojaFunkcja2()

Dim 

Dim 

Wynik 

Wynik 

As Long

As Long

Wynik = Me.MojaFunkcja(1, 2)

Wynik = Me.MojaFunkcja(1, 2)

End Function

End Function

End Class

End Class

background image

 

 

96

Z wykorzystaniem metody

 Implements

 Implements

 , która 

implementuje metodę zdefiniowaną poprzez interfejs:

Interface 

Interface 

IMojInterfejs

IMojInterfejs

Function 

Function 

MojaFunkcja(

MojaFunkcja(

ByVal

ByVal

 x 

 x 

As Long, ByVal

As Long, ByVal

 y 

 y 

As Long

As Long

) _ 

) _ 

As Long

As Long

End Interface

End Interface

Public Class

Public Class

 CMojaKlasa4

 CMojaKlasa4

Implements 

Implements 

IMojInterfejs

IMojInterfejs

Public Function

Public Function

 MojaFunkcja (

 MojaFunkcja (

ByVal 

ByVal 

As Long, 

As Long, 

ByVal

ByVal

 y 

 y 

As _ Long

As _ Long

As Long

As Long

 

 

Implements 

Implements 

IMojInterfejs.MojaFunkcja

IMojInterfejs.MojaFunkcja

MojaFunkcja = x + y

MojaFunkcja = x + y

End Function

End Function

End Class

End Class

Interface 

Interface 

IMojInterfejs

IMojInterfejs

Function 

Function 

MojaFunkcja(

MojaFunkcja(

ByVal

ByVal

 x 

 x 

As Long, ByVal

As Long, ByVal

 y 

 y 

As Long

As Long

) _ 

) _ 

As Long

As Long

End Interface

End Interface

Public Class

Public Class

 CMojaKlasa4

 CMojaKlasa4

Implements 

Implements 

IMojInterfejs

IMojInterfejs

Public Function

Public Function

 MojaFunkcja (

 MojaFunkcja (

ByVal 

ByVal 

As Long, 

As Long, 

ByVal

ByVal

 y 

 y 

As _ Long

As _ Long

As Long

As Long

 

 

Implements 

Implements 

IMojInterfejs.MojaFunkcja

IMojInterfejs.MojaFunkcja

MojaFunkcja = x + y

MojaFunkcja = x + y

End Function

End Function

End Class

End Class

 

 

Deklaracje metod w  

VB.NET

background image

 

 

97

• 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

Literatura


Document Outline