implementacja interfejsów w VB. NET

jaka różnica może przynieść rok lub dwa. Dwa i pół roku temu myślałem, że napiszę książkę zatytułowaną Visual Basic 7 Unleashed for Sams. Ukończenie ostatnich szkiców Sams Visual Basic. NET Unleashed przypomina mi, że wiele się zmieniło w Visual Basic.

aby pomóc ci dokonać przejścia tak dokładnie i jak najpełniej, ja i inni autorzy i współpracownicy dużo piszemy o wątkach, refleksjach, zgromadzeniach, COM interop i delegatach. Ale, przeglądając ostatnio tematy programowania z przyjacielem, przypomniano mi, że istnieją Programiści na wszystkich poziomach, nie tylko na poziomie zaawansowanym. Aby być tak dokładnym, jak to możliwe, zgłębiam tematy zaawansowane, jak i nie zaawansowane. (Z zadowoleniem przyjmuję również zapytania od czytelników, a czasami piszę artykuł oparty na kilku zapytaniach.

ten artykuł jest do rzeczy. W tym artykule przyjrzymy się interfejsom: jak je definiować i jak je implementować.

idea interfejsu nie jest nowa w COM, ale w Visual Basic 6 każda klasa była interfejsem COM. W Visual Basic .NET każda klasa jest klasą, A Interfejs jest interfejsem, ale nie interfejsem COM. Klasy istnieją od dziesięcioleci, a Interfejsy nie są jedynym zakresem działania COM. Klasa opisuje pola, właściwości, zdarzenia i metody danego typu. Interfejs jest bardziej jak portal lub załącznik. Interfejs mówi, że typ zaimplementuje te specyficzne metody, ale nie definiuje, czym jest typ. Na przykład dom może mieć okno, ale tak samo samochód. Typ, który implementuje metodę open, może być zdefiniowany jako coś, co ma okno, ale typy mogą definiować samochody, łodzie, domy lub duszę.

Visual Basic 6 nie obsługuje dziedziczenia ani klas w sensie obiektowym konstrukcji. VB6 obsługuje interfejsy COM. VB. NET, z drugiej strony obsługuje klasy i interfejsy, więc trzeba było rozróżnić te dwa idiomy.

Definiowanie klas i interfejsów w VB.NET

idiomy klasy i interfejsu używają bardzo podobnej składni podczas ich definiowania. Poniższy przykład definiuje pustą klasę w VB. NET, a następnie pusty interfejs.

Public Class AClassEnd ClassPublic Interface AnInterfaceEnd Interface

klasy mogą zawierać pola, właściwości, zdarzenia i metody. Te elementy klasy, zwane members, mogą mieć modyfikatory wskazujące, że są publiczne, prywatne, chronione lub przyjacielskie. Wszystkie elementy deklaracji interfejsu są publiczne i w rezultacie nie potrzebują ani nie mogą mieć modyfikatorów dostępu.

klasy zawierają kod; interfejsy nie. Jednak klasy implementujące interfejs zawierają kod. Należy pamiętać, że w VB .NET nie ma instancji interfejsów. Każda instancja jest typem, który implementuje interfejs, ale sama w sobie nie jest instancją interfejsu. (Od tego momentu zostawimy dyskusję o klasach na inny czas i skupimy się tylko na interfejsach.)

Implementowanie interfejsów

zakładając, że mamy interfejs o nazwie AnInterface, możemy tylko dodać deklaracje metod do tego interfejsu. Rozszerzając interfejs z poprzedniej sekcji, możemy dodać metodę o nazwie WhoAmI. Wynik jest wyświetlany dalej.

Public Interface AnInterface Function WhoAmI() As StringEnd Interface

Wszystkie typy implementujące interfejs AnInterface muszą implementować każdą zadeklarowaną metodę w tym interfejsie. W tym przykładzie musimy tylko zaimplementować funkcję WhoAmI. Załóżmy, że AClass implementuje interfejs; musielibyśmy zaimplementować WhoAmI. Wynik implementacji interfejsu AnInterface w AClass dałby następujący kod.

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

pierwszą rzeczą, którą musimy zrobić, to wskazać, że chcemy zaimplementować interfejs po nazwie. Implementuje interfejs aninterface informuje konsumentów, że AClass zaimplementuje wszystkie metody opisane w interfejsie AnInterface. (Visual Studio. NET IDE przypomina nam, że my też musimy to zrobić.)

różnica między VB6 i VB .NET polega na tym, że musimy dodać klauzulę Implements do ciała funkcji, jak pokazano na liście. Funkcja jest zadeklarowana jako normalna, ale klauzula implementuje interfejs.WhoAmI kończy kontrakt pomiędzy klasą A interfejsem.

myśli końcowe

struktury mogą implementować interfejsy w VB.NET też. Niezależnie od tego, czy klasa lub struktura implementuje interfejs, będziesz potrzebował instrukcji Implements, jak pokazano, i będziesz musiał zaimplementować każdą metodę zdefiniowaną w interfejsie za pomocą klauzuli Implements na końcu nagłówka procedury, aby wskazać, że dana metoda spełnia określoną metodę interfejsu.

interfejsy mogą być bardzo krótkie lub bardzo długie. Metody opisane przez interfejs mogą być podprogramami lub funkcjami i mogą być tak rozbudowane lub tak proste, jak tego potrzebujesz. Jedna metoda może zaimplementować więcej niż jedną metodę interfejsów. Na koniec należy pamiętać, że metody interfejsu można wywoływać z odniesieniem do obiektu lub z odniesieniem do interfejsu.

o autorze

Paul Kimmel jest niezależnym pisarzem dla Developer.com oraz CodeGuru.com. poszukaj fajnych tematów Visual Basic. Net w swojej nadchodzącej książce Visual Basic. Net Unleashed dostępnej w styczniu 2002 roku.

Paul założył Software Conceptions, Inc. w 1990 roku. Skontaktuj się z Paulem Kimmelem, aby uzyskać pomoc w budowaniu VB.NET Aplikacje lub migracja aplikacji VB6 do .NET.

# # #

Write a Comment

Twój adres e-mail nie zostanie opublikowany.