implementarea interfețelor în Vb. net

ce diferență poate aduce un an sau doi. Acum doi ani și jumătate am crezut că voi scrie o carte intitulată Visual Basic 7 Unleashed pentru Sams. Finalizarea proiectelor finale ale Sams Visual Basic. NET Unleashed îmi amintește că multe s-au schimbat în Visual Basic.

pentru a vă ajuta să faceți tranziția cât mai bine și cât mai complet posibil, eu și alți autori și colaboratori scriem multe despre filetare, reflecție, adunări, COM interop și delegați. Dar, trecând în revistă subiectele de programare cu un prieten recent, mi s-a reamintit că există Dezvoltatori la toate nivelurile, nu doar la nivelul avansat. Pentru a fi cât mai amănunțit posibil, atunci explorez subiecte avansate, precum și subiecte non-avansate. (Salut și întrebările cititorilor și, uneori, scriu un articol bazat pe mai multe întrebări.)

acest articol este la obiect. În acest articol vom examina interfețele: cum să le definim și cum să le implementăm.

ideea unei interfețe nu este nouă pentru COM, dar în Visual Basic 6 fiecare clasă era o interfață COM. În Visual Basic .NET fiecare clasă este o clasă și o interfață este o interfață, dar nu o interfață COM. Clasele au existat de zeci de ani și interfețele nu sunt singurul domeniu de aplicare al COM. O clasă descrie câmpurile, proprietățile, evenimentele și metodele pe care le va avea un tip. O interfață este mai mult ca un portal sau un atașament. O interfață spune că un tip va implementa aceste metode specifice, dar nu definește ce este un tip. De exemplu, o casă poate avea o fereastră, dar și o mașină. Un tip care implementează o metodă deschisă ar putea fi definit ca ceva care are o fereastră, dar tipurile ar putea defini mașini, bărci, case sau suflet.

Visual Basic 6 nu acceptă moștenirea sau clasele în sensul orientat-obiect al construcției. VB6 acceptă interfețe COM. VB. net, pe de altă parte, acceptă clase și interfețe, deci trebuia făcută o distincție între cele două idiomuri.

definirea claselor și interfețelor în Vb.net

idiomurile de clasă și interfață utilizează o sintaxă foarte asemănătoare atunci când le definiți. Următorul exemplu definește o clasă goală în Vb. net, urmată de o interfață goală.

Public Class AClassEnd ClassPublic Interface AnInterfaceEnd Interface

clasele pot conține câmpuri, proprietăți, evenimente și metode. Aceste elemente ale unei clase, numite membri, pot avea modificatori care indică faptul că sunt publici, privați, protejați sau prieteni. Toți membrii unei declarații de interfață sunt publici și, prin urmare, nu au nevoie și nici nu pot avea modificatori de acces.

clasele conțin cod; interfețele nu. Cu toate acestea, clasele care implementează o interfață conțin cod. Rețineți că nu există instanțe de interfețe în VB .NET. Fiecare instanță este un tip care implementează o interfață, dar nu este ea însăși o instanță a interfeței. (Din acest punct vom lăsa discuția cursurilor pentru o altă dată și ne vom concentra doar pe interfețe.)

interfețe de implementare

presupunând că avem o interfață numită AnInterface, putem adăuga doar declarații de metodă la acea interfață. Extinzând interfața din secțiunea anterioară, putem adăuga o metodă numită WhoAmI. Rezultatul este afișat în continuare.

Public Interface AnInterface Function WhoAmI() As StringEnd Interface

toate tipurile care implementează interfața AnInterface trebuie să implementeze fiecare metodă declarată în acea interfață. În acest exemplu, trebuie doar să implementăm funcția WhoAmI. Să presupunem că AClass implementează o interfață; ar trebui să implementăm WhoAmI. Rezultatul implementării AnInterface în AClass ar produce următorul cod.

Public Class AClass Implements AnInterface Public Function WhoAmI() As String Implements AnInterface.WhoAmI Return "AClass" End FunctionEnd Class

primul lucru pe care trebuie să-l facem este să indicăm că dorim să implementăm interfața după nume. Implementează AnInterface spune consumatorilor că AClass va implementa toate metodele descrise în AnInterface. (Visual Studio. net IDE ne amintește că trebuie să facem acest lucru prea.)

diferența dintre VB6 și VB .NET este că trebuie să adăugăm Clauza Implements la corpul funcției așa cum se arată în listă. Funcția este declarată normală, dar clauza implementează Aninterfață.WhoAmI completează contractul dintre clasă și interfață.

Gânduri finale

structurile pot implementa interfețe în VB.NET de asemenea. Indiferent dacă o clasă sau o structură implementează o interfață, veți avea nevoie de instrucțiunea Implements așa cum s-a demonstrat și va trebui să implementați fiecare metodă definită în interfață folosind clauza Implements de la sfârșitul antetului procedurii pentru a indica faptul că o anumită metodă satisface o anumită metodă de interfață.

interfețele pot fi foarte scurte sau foarte lungi. Metodele descrise de o interfață pot fi subrutine sau funcții și pot fi la fel de elaborate sau la fel de simple pe cât aveți nevoie. O metodă poate implementa mai multe metode de interfețe. În cele din urmă, rețineți că metodele de interfață pot fi apelate cu o referință la obiect sau cu o referință la interfață.

despre autor

Paul Kimmel este un scriitor independent pentru Developer.com și CodeGuru.com. uita-te pentru rece Visual Basic.NET subiecte în cartea sa viitoare Visual Basic. NET Unleashed Disponibil în ianuarie 2002.

Paul a fondat Software Conceptions, Inc. în 1990. Contactați Paul Kimmel la pentru construirea de ajutor VB.NET aplicații sau migrarea aplicațiilor VB6 către. NET.

# # #

Write a Comment

Adresa ta de email nu va fi publicată.