hvilken forskel et år eller to kan medføre. For to og et halvt år siden troede jeg, at jeg ville skrive en bog med titlen Visual Basic 7 Unleashed for Sams. Afslutning af de endelige udkast til Sams Visual Basic. net Unleashed minder mig om, at meget har ændret sig i Visual Basic.
for at hjælpe dig med at gøre overgangen så grundigt og så fuldstændigt som muligt skriver jeg og andre forfattere og bidragydere meget om trådning, refleksion, forsamlinger, com interop og delegerede. Men ved at gennemgå programmeringsemner med en ven for nylig blev jeg mindet om, at der er udviklere på alle niveauer, ikke kun det avancerede niveau. For at være så grundig som muligt udforsker jeg avancerede emner såvel som ikke-avancerede emner. (Jeg glæder mig også over forespørgsler fra læsere og skriver nogle gange en artikel baseret på flere forespørgsler.)
denne artikel er til det punkt. I denne artikel vil vi undersøge grænseflader: hvordan man definerer dem og hvordan man implementerer dem.
ideen om en grænseflade er ikke ny for COM, men i Visual Basic 6 var hver klasse en COM-grænseflade. I Visual Basic .NET hver klasse er en klasse, og en grænseflade er en grænseflade, men ikke en COM-grænseflade. Klasser har eksisteret i årtier, og grænseflader er ikke det eneste anvendelsesområde for COM. En klasse beskriver de felter, egenskaber, begivenheder og metoder, en type vil have. En grænseflade er mere som en portal eller en vedhæftet fil. En grænseflade siger, at en type vil implementere disse specifikke metoder, men definerer ikke, hvad en type er. For eksempel kan et hus have et vindue, men det kan en bil også. En type, der implementerer en åben metode, kunne defineres som noget, der har et vindue, men typerne kunne definere biler, både, huse eller sjælen.
Visual Basic 6 understøtter ikke arv eller klasser i objektorienteret forstand af konstruktionen. VB6 understøtter COM-grænseflader. VB. net understøtter på den anden side klasser og grænseflader, så der måtte skelnes mellem de to idiomer.
definition af klasser og grænseflader i VB.net
klasse-og interface-idiomer bruger en meget lignende syntaks, når du definerer dem. Følgende eksempel definerer en tom klasse i VB. net, efterfulgt af en tom grænseflade.
Public Class AClassEnd ClassPublic Interface AnInterfaceEnd Interface
klasser kan indeholde felter, egenskaber, begivenheder og metoder. Disse elementer i en klasse, kaldet medlemmer, kan have modifikatorer, der indikerer, at de er offentlige, private, beskyttede eller venner. Alle medlemmer af en grænsefladedeklaration er offentlige og har derfor ikke brug for eller kan have adgangsmodifikatorer.
klasser indeholder kode; grænseflader gør det ikke. Klasser, der implementerer en grænseflade, indeholder dog kode. Husk, at der ikke er nogen forekomster af grænseflader i VB .NET. Hver forekomst er en type, der implementerer en grænseflade, men er i sig selv ikke en forekomst af grænsefladen. (Fra dette punkt vil vi forlade diskussionen af klasser til en anden gang og kun fokusere på grænseflader.)
implementering af grænseflader
forudsat at vi har en grænseflade med navnet AnInterface, kan vi kun tilføje metodedeklarationer til den grænseflade. Udvidelse af grænsefladen fra det foregående afsnit kan vi tilføje en metode ved Navn hvem. Resultatet vises næste.
Public Interface AnInterface Function WhoAmI() As StringEnd Interface
alle typer, der implementerer aninterface-grænsefladen, skal implementere alle deklarerede metoder i denne grænseflade. I dette eksempel behøver vi kun at implementere funktionen hvem. Antag, at AClass implementerer AnInterface; vi bliver nødt til at implementere hvem. Resultatet af implementere AnInterface i AClass ville give følgende kode.
Public Class AClass Implements AnInterface Public Function WhoAmI() As String Implements AnInterface.WhoAmI Return "AClass" End FunctionEnd Class
den første ting, vi skal gøre, er at indikere, at vi vil implementere grænsefladen ved navn. Implementerer AnInterface fortæller forbrugerne, at AClass vil implementere alle de metoder, der er beskrevet i AnInterface. (Visual Studio. net IDE minder os om, at vi også skal gøre det.)
forskellen mellem VB6 og VB .NET er, at vi er nødt til at tilføje Redskabsklausulen til funktionskroppen som vist i listen. Funktionen er erklæret som normal, men klausulen implementerer Eninterface.Vi afslutter kontrakten mellem klassen og grænsefladen.
Endelige tanker
strukturer kan implementere grænseflader i VB.NET også. Uanset om en klasse eller en struktur implementerer en grænseflade, har du brug for erklæringen redskaber som demonstreret, og du bliver nødt til at implementere hver metode, der er defineret i grænsefladen ved hjælp af Implements-klausulen i slutningen af procedurehovedet for at indikere, at en bestemt metode opfylder en bestemt interface-metode.
grænseflader kan være meget korte eller meget lange. Metoder beskrevet af en grænseflade kan være underrutiner eller funktioner, og de kan være så detaljerede eller så enkle, som du har brug for dem. En metode kan implementere mere end en grænseflademetode. Endelig skal du huske, at grænseflademetoder kan kaldes med en henvisning til objektet eller med en henvisning til grænsefladen.
om forfatteren
Paul Kimmel er freelance skribent for Developer.com og CodeGuru.com. se efter seje Visual Basic. Net-emner i hans kommende bog Visual Basic.Net Unleashed tilgængelig i januar 2002.
Paul grundlagt. i 1990. Kontakt Paul Kimmel på for hjælp bygning VB.NET applikationer eller migrering af VB6-applikationer til. NET.
# # #