Computerwissenschaften

Module, Strukturen und Klassen

Es gibt nur drei Möglichkeiten, eine VB.NET- Anwendung zu organisieren .

  • Module
  • Strukturen
  • Klassen

Bei den meisten technischen Artikeln wird jedoch davon ausgegangen, dass Sie bereits alles über sie wissen. Wenn Sie einer der vielen sind, die noch ein paar Fragen haben, können Sie einfach die verwirrenden Stellen hinter sich lassen und versuchen, es trotzdem herauszufinden. Wenn Sie viel Zeit haben, können Sie die Microsoft- Dokumentation durchsuchen :

  • „Ein Modul ist eine tragbare ausführbare Datei wie type.dll oder application.exe, die aus einer oder mehreren Klassen und Schnittstellen besteht.“
  • „Eine Class-Anweisung definiert einen neuen Datentyp.“
  • „Die Structure-Anweisung definiert einen zusammengesetzten Wertetyp, den Sie anpassen können.“

Also gut. Irgendwelche Fragen?

Um Microsoft gegenüber ein bisschen fairer zu sein, verfügen sie über Seiten und Seiten (und mehr Seiten) mit Informationen zu all diesen Themen, die Sie durchblättern können. Und sie müssen so genau wie möglich sein, weil sie den Standard setzen. Mit anderen Worten, die Dokumentation von Microsoft liest sich manchmal wie ein Gesetzbuch, weil es sich um ein Gesetzbuch handelt.

Aber wenn Sie nur .NET lernen, kann es sehr verwirrend sein! Du musst irgendwo anfangen. Das Verständnis der drei grundlegenden Möglichkeiten, wie Sie Code in VB.NET schreiben können, ist ein guter Anfang.

Sie können VB.NET- Code mit einem dieser drei Formulare schreiben . Mit anderen Worten, Sie können eine Konsolenanwendung in VB.NET Express erstellen und Folgendes schreiben:

Modul Modul1
Sub Main ()
MsgBox („Dies ist ein Modul!“)
End Sub
End Modul
Klasse Class1
Sub Main ()
MsgBox („Dies ist eine Klasse“)
End Sub
End Klassenstruktur
Struct1
Dim myString As String
Sub Main ()
MsgBox („Dies ist eine Struktur“)
End Sub
End Structure

Das macht als Programm natürlich keinen Sinn. Der Punkt ist, dass Sie keinen Syntaxfehler erhalten, so dass es sich um „legalen“ VB.NET-Code handelt .

Diese drei Formen sind die einzige Möglichkeit, die Bienenwurzel von .NET zu codieren: das Objekt. Das einzige Element, das die Symmetrie der drei Formen unterbricht, ist die Anweisung: Dim myString As String . Dies hat damit zu tun, dass eine Struktur ein „zusammengesetzter Datentyp“ ist, wie Microsoft in seiner Definition angibt.

Eine andere Sache zu beachten ist, dass alle drei Blöcke ein Sub Main () enthalten . Eines der grundlegendsten Prinzipien von OOP wird üblicherweise als Kapselung bezeichnet . Dies ist der „Black Box“ -Effekt. Mit anderen Worten, Sie sollten in der Lage sein, jedes Objekt unabhängig zu behandeln. Dazu gehört auch die Verwendung von Unterprogrammen mit identischen Namen, wenn Sie möchten.

 

Klassen

Klassen sind der ‚richtige‘ Ausgangspunkt, da, wie Microsoft feststellt, „eine Klasse ein grundlegender Baustein der objektorientierten Programmierung (OOP) ist“. Tatsächlich behandeln einige Autoren Module und Strukturen als spezielle Arten von Klassen. Eine Klasse ist objektorientierter als ein Modul, da es möglich ist, eine Klasse zu instanziieren (eine Kopie davon zu erstellen ), jedoch kein Modul.

Mit anderen Worten, Sie können codieren …

Öffentliche Klasse Form1
Private Sub Form1_Load (_
ByVal Absender als System.Object, _
ByVal e als System.EventArgs) _
Behandelt MyBase.Load
Dim myNewClass As Class1=Neue Klasse1
myNewClass.ClassSub ()
End Sub
End Class

(Die Klasseninstanziierung wird hervorgehoben.)

Es spielt keine Rolle, ob die eigentliche Klasse selbst, in diesem Fall …

Öffentliche Klasse Class1
Sub ClassSub ()
MsgBox („Dies ist eine Klasse“)
End Sub
End Class

… befindet sich in einer Datei für sich oder ist Teil derselben Datei mit dem Form1- Code. Das Programm läuft genauso. (Beachten Sie, dass Form1 auch eine Klasse ist.)

Sie können auch Klassencode schreiben, der sich ähnlich wie ein Modul verhält, ohne ihn zu instanziieren. Dies wird als gemeinsame Klasse bezeichnet. Der Artikel „Statisch“ (dh „Freigegeben“) im Vergleich zu dynamischen Typen in VB.NET erläutert dies ausführlicher.

Eine andere Tatsache über Klassen sollte ebenfalls berücksichtigt werden. Mitglieder (Eigenschaften und Methoden) der Klasse existieren nur, solange die Instanz der Klasse existiert. Der Name dafür ist Scoping . Das heißt, der Umfang einer Instanz einer Klasse ist begrenzt. Der obige Code kann geändert werden, um diesen Punkt folgendermaßen zu veranschaulichen:

Öffentliche Klasse Form1
Private Sub Form1_Load (_
ByVal-Absender als System.Object, _
ByVal e als System.EventArgs) _
Behandelt MyBase.Load
Dim myNewClass As Class1=New
Class1 myNewClass.ClassSub ()
myNewClass=Nothing
myNewClass.ClassSub ()
End Sub
Klasse beenden

Wenn die zweite myNewClass.ClassSub () -Anweisung ausgeführt wird, wird ein NullReferenceException- Fehler ausgelöst, da das ClassSub- Mitglied nicht vorhanden ist.

 

Module

In VB 6 war es üblich, Programme zu sehen, in denen sich der größte Teil des Codes in einem Modul befand (eine .BAS- Datei anstelle von beispielsweise einer Formulardatei wie Form1.frm ). In VB.NET waren sowohl Module als auch Klassen befinden sich in .VB- Dateien. Der Hauptgrund, warum Module in VB.NET enthalten sind, besteht darin, Programmierern die Möglichkeit zu geben, ihre Systeme zu organisieren, indem sie Code an verschiedenen Stellen einfügen, um den Umfang und den Zugriff auf ihren Code zu optimieren . (Das heißt, wie lange Mitglieder des Moduls vorhanden sind und welcher andere Code auf die Mitglieder verweisen und sie verwenden kann.) Manchmal möchten Sie Code möglicherweise in separate Module einfügen, um die Arbeit zu vereinfachen.

Alle VB.NET-Module werden gemeinsam genutzt, da sie nicht instanziiert werden können (siehe oben) und als “ Freund“ oder “ Öffentlich“ gekennzeichnet werden können, sodass entweder innerhalb derselben Assembly oder immer dann, wenn auf sie verwiesen wird, auf sie zugegriffen werden kann.

 

Strukturen

Strukturen sind die am wenigsten verstandenen der drei Formen von Objekten. Wenn wir von „Tieren“ anstelle von „Objekten“ sprechen würden, wäre die Struktur ein Erdferkel .

Der große Unterschied zwischen einer Struktur und einer Klasse besteht darin, dass eine Struktur ein Werttyp und eine Klasse ein Referenztyp ist .

Was bedeutet das? Ich bin so froh, dass du gefragt hast.

Ein Werttyp ist ein Objekt, das direkt im Speicher gespeichert wird. Eine Ganzzahl ist ein gutes Beispiel für einen Werttyp. Wenn Sie in Ihrem Programm eine Ganzzahl wie folgt deklariert haben …

Dim myInt als Integer=10

… und Sie den in myInt gespeicherten Speicherort überprüft haben , würden Sie den Wert 10 finden. Sie sehen dies auch als „auf dem Stapel zugewiesen“ beschrieben.

Der Stapel und der Heap sind einfach verschiedene Möglichkeiten, die Verwendung des Computerspeichers zu verwalten.

Ein Referenztyp ist ein Objekt, bei dem der Speicherort des Objekts gespeichert ist. Das Finden eines Werts für einen Referenztyp ist also immer eine zweistufige Suche. Ein String ist ein gutes Beispiel für einen Referenztyp. Wenn Sie einen String wie diesen deklariert haben …

Dim myString as String=“Dies ist myString“

… und wenn Sie den in myString gespeicherten Speicherort überprüft haben , würden Sie einen anderen Speicherort finden ( Zeiger genannt – diese Vorgehensweise ist das Herzstück von Sprachen im C-Stil). Sie müssten zu diesem Speicherort gehen, um den Wert „This is myString“ zu finden. Dies wird oft als „auf dem Heap zugewiesen“ bezeichnet. Der Stapel und der Haufen

Einige Autoren sagen, dass Werttypen nicht einmal Objekte sind und nur Referenztypen Objekte sein können. Es ist sicher richtig, dass die ausgefeilten Objektmerkmale wie Vererbung und Kapselung nur mit Referenztypen möglich sind. Aber wir haben diesen ganzen Artikel damit begonnen, dass es drei Formen für Objekte gab, also muss ich akzeptieren, dass Strukturen eine Art Objekt sind, auch wenn es sich nicht um Standardobjekte handelt.

Die Programmierursprünge von Strukturen gehen auf dateiorientierte Sprachen wie Cobol zurück. In diesen Sprachen wurden Daten normalerweise als sequentielle Flatfiles verarbeitet. Die „Felder“ in einem Datensatz aus der Datei wurden durch einen Abschnitt „Datendefinition“ beschrieben (manchmal als „Datensatzlayout“ oder „Copybook“ bezeichnet). Wenn also ein Datensatz aus der Datei Folgendes enthält:

1234567890ABCDEF9876

Der einzige Weg, wie Sie wissen würden, dass „1234567890“ eine Telefonnummer war, „ABCDEF“ eine ID und 9876 98,76 USD, war die Datendefinition. Mithilfe von Strukturen können Sie dies in VB.NET erreichen.

Struktur Struktur1
Dim myPhone As String
Dim myID As String
Dim myAmount As String
End Structure

Da ein String ein Referenztyp ist, muss die Länge mit dem VBFixedString- Attribut für Datensätze mit fester Länge gleich bleiben . Eine ausführliche Erläuterung dieses Attributs und der Attribute im Allgemeinen finden Sie im Artikel Attribute in VB .NET .

Obwohl Strukturen keine Standardobjekte sind, verfügen sie in VB.NET über zahlreiche Funktionen. Sie können Methoden, Eigenschaften und sogar Ereignisse und Ereignishandler in Strukturen codieren, aber Sie können auch vereinfachten Code verwenden. Da es sich um Werttypen handelt, kann die Verarbeitung schneller sein. Zum Beispiel könnten Sie die obige Struktur folgendermaßen umcodieren:

Struktur Struktur1
Dim myPhone As String
Dim myID As String
Dim myAmount As String
Sub mySub ()
MsgBox („Dies ist der Wert von myPhone:“ & myPhone)
End Sub
End Struktur

Und benutze es so:

Dim myStruct As Structure1
myStruct.myPhone=“7894560123″
myStruct.mySub ()

Es lohnt sich, ein bisschen mit Strukturen herumzuspielen und zu lernen, was sie können. Sie sind eine der merkwürdigen Ecken von VB.NET, die bei Bedarf ein Wundermittel sein kann.

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.