Visual Basic NET

background image

VB.NET

VB.NET

Maria DEMS

Maria DEMS

background image

2

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

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

W

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

z

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

e

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

i

edycji

wiadomości

przechowywanych

w

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

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.

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

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.

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

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

i

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

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

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.

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

x

x

As

As

Long

Long

,

,

ByVal

ByVal

y

y

As _ Long

As _ Long

,

,

ByVal

ByVal

z

z

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

x

x

As

As

Long

Long

,

,

ByVal

ByVal

y

y

As _ Long

As _ Long

,

,

ByVal

ByVal

z

z

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

x

x

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

x

x

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

x

x

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

x

x

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

x

x

As Long

As Long

,

,

ByVal

ByVal

y

y

As

As

Long

Long

, _

, _

ByVal

ByVal

z

z

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

x

x

As Long

As Long

,

,

ByVal

ByVal

y

y

As

As

Long

Long

, _

, _

ByVal

ByVal

z

z

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

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

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

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

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

e

e

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

e

e

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

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 =

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

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 =

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

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

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

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

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

y

y

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

y

y

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

x

x

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

x

x

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


Wyszukiwarka

Podobne podstrony:
Mastering Visual Basic NET Database Programming
praktyczny kurs visual basic net XPYVI3QBP3MCXRIFJRISPLODUH6ANI5R5DTEUTQ
Visual Basic NET dla kazdego vbnetd
Visual Basic Net Szybki start 2
inne visual basic net w praktyce blyskawiczne tworzenie aplikacji jacek matulewski ebook
Programowanie obiektowe w Visual Basic NET dla kazdego povbnd
Visual Basic Net Szybki start vbnszs
Programowanie obiektowe w Visual Basic NET dla kazdego 2
Visual Basic NET w praktyce Blyskawiczne tworzenie aplikacji 2
Microsoft Visual Basic NET 2003 Księga eksperta
Visual Basic NET Encyklopedia vbneto
Visual Basic NET cwiczenia cvbnet
Visual Basic NET w praktyce Blyskawiczne tworzenie aplikacji
Visual Basic NET cwiczenia 2
manual visual basic net
Visual Basic NET Encyklopedia
Visual Basic NET dla kazdego 2
Programowanie obiektowe w Visual Basic NET dla kazdego 2

więcej podobnych podstron