Für Programmierer und Programmierbegeisterte ist die Technologie der Klassen in VB ein schwieriger Punkt im Entwicklungsprozess von umfangreicher Software, Modulen (Moudle), Steuerelementen (Activeocx), Linkbibliotheken (Activedll) und Klassen (Classmoudle). stellt ein systematisches und effizientes Software-Engineering dar, und die Klassentechnologie ist die Grundlage der Steuerungs- und Linkbibliothekstechnologie. Daher ist es sehr sinnvoll, die Theorie und Programmiermethoden von Klassen zu beherrschen.
(1) Grundlegende Definition und Anwendungsübersicht von Klassen ;
Eine Klasse ist ein High-Level-Codemodul, das Methoden, Eigenschaften und Datenelemente enthält. Es liegt nicht nur im Gültigkeitsbereich des Moduls, sondern auch als Activeocx. Programmierer können es wie ein Steuerelement verwenden Sehen Sie es. Es ist erwähnenswert, dass Klassen nicht vererbt werden können.
Klassen ermöglichen es uns, komplexe Operationen an einem oder mehreren spezifischen Objekten effizient durchzuführen. Die Aktionen des Objekts sind die Methoden der Klasse und die Attribute des Objekts sind die Attributprozesse der Klasse. Relativ gesehen ist es für uns sehr angemessen, Standardmodule zu verwenden, wenn das Objekt der Programmierung eine Gruppe von Dingen ist. In den folgenden beiden Fällen sollten Klassen für die Codeverarbeitung verwendet werden:
(1) Erstellen Sie eine große Anzahl von Objekten mit ähnlichen Eigenschaften.
(2) Verbessern Sie die Kapselung des Codes.
Das Erstellen einer Klasse ist sehr einfach. Wählen Sie beim Schreiben von Code den Eintrag „Klassenmodul hinzufügen“ im Menü „Projekt“, um eine leere Klasse hinzuzufügen.
Klassendateien werden im Allgemeinen mit der Erweiterung .cls gespeichert.
(2) Implementierung von Klassenmethoden ;
Die Methode einer Klasse ähnelt der Schnittstellenfunktion einer Dynamic Link Library. Sie kann bestimmte Typparameter aus anderen Formularcodes akzeptieren und an die Klasse übergeben. Im Allgemeinen können Klassenmethoden angeben, ob ein Rückgabewert vorhanden ist. Es handelt sich in der Regel um ein öffentliches Verfahren in der Klasse. Betrachten Sie das folgende Codebeispiel, das dazu führt, dass ein Passwortfeld die Eingabe von Buchstaben, die keine Buchstaben sind, ablehnt:
(1) cls-ähnlicher Code;
Überprüfung der Variable „OptionExplicit“.
PRivateWithEventsmytxtAsTextBox
'Die Methoden in dieser Klasse akzeptieren und steuern ein Textpasswortfeld
DimisNUMAsBoolean
'Variablen der Klasse auf Modulebene
PublicSubAttach(itTEXTAsTextBox)
'Akzeptiere externe Variablen in mytxt
Setmytxt=itTEXT
EndSub
PrivateSubmytxt_KeyUp(KeyCodeAsInteger,ShiftAsInteger)
isNUM=(KeyCode>=65)And(KeyCode<=90)
'Testen Sie, ob die Tastatureingabe im Passwortfeld aus englischen Buchstaben besteht
IfisNUM=FalseThen
Piepton
mytxt.Text=
„Wenn es sich bei der Eingabe nicht um einen englischen Buchstaben handelt, ertönt die Glocke und der Inhalt des Passwortfelds wird gelöscht.“
MsgBox ungültige Zeicheneingabe!
EndIf
Debug.Printmytxt.Text
'Inhalt des Ausgabe-Passwortfelds debuggen
EndSub
'Ende des Klassencodes
(2) Klassenreferenz ;
Die geschriebenen Klassen können in zwei Formaten referenziert werden: Privat (öffentlich oder dim) myCLS (angegebener Klassenname) AsNewcls (der geschriebene Klassenname); Erstellen Sie zunächst eine Deklaration auf Modulebene (DimmyCLSAscls) im Formularcode und anschließend eine spezifische Definition (Setmycls=Newcls) im spezifischen Codeprozess. Es mag Unterschiede in der Effizienz und Einfachheit des Codes zwischen diesen beiden Methoden geben, aber in der Programmierpraxis des Autors gibt es kein besonderes Gefühl. Ich bevorzuge jedoch die erste Methode, weil sie bequemer zu schreiben ist. Darüber hinaus ist es eine sehr gute Programmiergewohnheit, am Ende des Codes SetmyCLS=Nothing zu verwenden, um die Ressourcenbelegung der Klasse abzubrechen.
Fügen Sie im Formular form1 (das Formular verfügt über ein Passwortfeld-Steuerelement text1, passworldchar=*) den folgenden Code hinzu:
OptionExplicit
PrivatemyCLSAsNewcls
'Zitat cls
PrivateSubForm_Load()
myCLS.AttachText1
„Startup-Klasse
EndSub
„Denken Sie daran, Ressourcen am Ende des Codes freizugeben.“
PrivateSubForm_Unload(CancelAsInteger)
SetmyCLS=Nichts
Ende
EndSub
Der Code in diesem Artikel zeigt den Code-Schreibvorgang und die Aufrufmethode der Klassenmethode (obwohl er dem Ereignis der Klasse sehr ähnlich ist). Der Effekt besteht darin, dass das System dies tut, wenn ein Nicht-Buchstabe in das Kennwortfeld eingegeben wird Der Klingelton und das Passwortfeld werden von den ursprünglichen Daten gelöscht, wodurch das Passwort bis zu einem gewissen Grad geschützt wird.
Eine Klassenmethode erfordert keine Parameter, was einer öffentlichen Funktion oder Prozedur ähnelt. Sie wird auch am häufigsten in Klassen verwendet. Im nächsten Artikel werde ich diskutieren, wie man die Eigenschaften, Ereignisse und Methoden von Klassen für eine umfassende Programmierung nutzt.
Wir haben die Theorie von Klassen, die Erstellung von Klassen und die Programmierpraxis von Klassenmethoden besprochen. Tatsächlich besteht der Hauptgrund, warum Klassen in der Softwareentwicklung weit verbreitet sind, darin, dass sie viele für die Programmierung benötigte Attribute sehr bequem kapseln können Ermöglicht es Programmierern nicht nur, die Komplexität beim Entwurf und Debuggen von Steuerelementen (OCX) und Linkbibliotheken (DLL) bis zu einem gewissen Grad zu überwinden, sondern verbessert auch die Einfachheit und Effizienz von Programmcodes. In diesem Artikel wird die vollständige Klassenprogrammierung einschließlich Methoden erläutert , Attribute und grundlegende Ereignisse.
(1) Merkmale und Definitionen von Klassenattributen;
Ähnlich wie die Eigenschaften von Standardsteuerelementen ermöglichen Klasseneigenschaften dem Benutzer, Werte innerhalb eines bestimmten Datenbereichs zuzuweisen, und diese Werte werden von verschiedenen Teilen des Codes innerhalb der Klasse gemeinsam genutzt. Die Erfassung und Übertragung von Eigenschaften erfordert die Programmierung über die Anweisungen PropertyLet und PropertyGet. Natürlich müssen wir zunächst die entsprechenden Variablen auf globaler oder Modulebene in der Klasse definieren.
(2) Attribute und grundlegende Definitionen von Ereignissen;
Ähnlich wie die Ereignisse des Formulars verfügen auch Klassen über zwei grundlegende Ereignisse: Class_Initialize (wird ausgelöst, wenn die Klasse geladen wird) und Class_Terminate (wird ausgelöst, wenn die Klasse entladen wird), die beide privat sind. Tatsächlich können wir diese beiden Ereignisse vollständig ignorieren – solange Sie daran denken, die Methoden und Eigenschaften der Klasse zu vervollständigen.
Klassen können auch ihre eigenen Ereignisse definieren, die dem Programmierformat von Methoden ähneln, mit der Ausnahme, dass das Schlüsselwort WithEvents für die Parameterdeklaration erforderlich ist und das Ereignis keine benannten Parameter oder optionalen Parameter haben kann und keinen Rückgabewert hat.
Tatsächlich können gut strukturierte Methoden und Eigenschaften die Ereignisse komplex strukturierter Klassen vollständig ersetzen.
(3) Programmierbeispiele für Klassenmethoden, Ereignisse und Eigenschaften;
Der Zweck dieses Programms besteht darin, die gesamte Groß- und Kleinschreibung sowie die umgekehrte Sortierung des Inhalts des Textfelds im Formular über Klassen zu steuern.
Um das Schreiben und Aufrufen von Code zu erleichtern, habe ich in der Klasse auf die Aufzählungsprogrammiermethode verwiesen.
Der folgende Code befindet sich in der Klasse Class1:
OptionExplicit
PrivateWithEventsmyTXTAsTextBox
'Methodenparameterschnittstelle
PublicEnumsTYLE
Lcaseit'-Kleinbuchstabenattribut
Großschreibungsattribut von Lbigit
Nlogoit' Reverse-Sortier-Attribut
EndEnum
'Benutzerdefinierte Aufzählung, die zur Implementierung der automatischen Zuweisung von Attributen verwendet wird
PrivatemvarBiaozhiAssTYLE
'Implementieren Sie die Verbindung von Aufzählungskonstanten
PublicFunctiondONE()AsString'
Die Methode „DONE“ wird zum Festlegen verwendet
'Führen Sie entsprechende Zeichenkonvertierungsvorgänge im Formulartextfeld durch
'Und geben Sie die konvertierte Zeichenfolge zurück
IfmvarBiaozhi=NlogoitThen
dONE=StrReverse(myTXT)
„Umgekehrte Sortierung
ElseIfmvarBiaozhi=LcaseitThen
dONE=LCase(myTXT)
'Umwandlung in Kleinbuchstaben erzwingen
Anders
dONE=UCase(myTXT)
'Konvertierung in Großbuchstaben erzwingen
EndIf
EndFunction
'DONE-Methode endet
PublicPropertyLetBiaozhi(ByValvDataAssTYLE)
'Den zugewiesenen Wert des Attributs abrufen
mvarBiaozhi=vData
EndProperty
PublicPropertyGetBiaozhi()AssTYLE
'Attributwerte an die Klasse übertragen
SetBiaozhi=mvarBiaozhi
EndProperty
PublicSubAttach(itTEXTAsTextBox)
'Methode der Verbindungsklasse
SetmyTXT=itTEXT
EndSub
PrivateSubClass_Initialize()
'Dieses Ereignis wird aktiviert, wenn die Klasse geladen wird
MsgBox Hallo! Dieses Programm zeigt Ihnen die Techniken des Programmierens mit Klassenmethoden, Eigenschaften und Ereignissen!
EndSub
PrivateSubClass_Terminate()
'Dieses Ereignis wird aktiviert, wenn die Klasse entladen wird
MsgBox Hallo! Denken Sie daran, den Code einzugeben, nachdem das Objekt in Class_Terminate widerrufen wurde!
EndSub
„Der Code der Klasse ist überall.“
(4) Referenzprogrammierung des Formularcodes;
Fügen Sie das Textsteuerelement TEXT1, das Dropdown-Listensteuerelement COMBO1 und die Befehlsschaltfläche COMMAND1 (CAPTION=Konvertierung starten) hinzu, um FORM1 zu bilden, und passen Sie die drei Steuerelemente an die entsprechenden Positionen an.
DimmyTAsNewClass1
'Klassenreferenz
PrivateSubForm_Load()
Combo1.Clear
Combo1.AddItem-String-Großbuchstabenkonvertierung
Combo1.AddItem-String-Kleinbuchstabenkonvertierung
Combo1.AddItem-String-Umkehrsortierung
Combo1.ListIndex=0
'Attributoptionen zum Listenfeld hinzufügen
EndSub
PrivateSubCommand1_Click()
'Aktivieren Sie die Klasse, wenn die Befehlsschaltfläche gedrückt wird
myT.AttachText1
'Methodenparameterverbindung
SelectCaseCombo1.ListIndex
Fall0
myT.Biaozhi=Lbigit
Fall1
myT.Biaozhi=Lcaseit
Fall2
myT.Biaozhi=Nlogoit
EndSelect
'Entsprechend der Auswahl im Listenfeld weisen Sie dem Biaozhi-Attribut der Klasse einen Wert zu
'Beachten Sie, dass in der Programmierumgebung die oben genannten Attributwerte automatisch hinzugefügt werden
Text1.Text=myT.dONE
'Gib die Zeichenfolge nach dem Sortieren zurück
EndSub
PrivateSubForm_Unload(CancelAsInteger)
SetmyT=Nichts
Ende
„Gute Programmiergewohnheiten.“
EndSub
Wie wäre es, unser Code sieht so prägnant aus, dass es sich anfühlt, als würde man ein Steuerelement verwenden, das nicht nur nach Belieben aufgerufen werden kann, sondern auch bequem die automatische Eingabeaufforderungsfunktion von VB nutzt.
(5) Zusammenfassung der Klassenprogrammiertechniken;
Streng genommen sind Klassen eine sehr nützliche Technologie in der VB-Programmierung, und sie sind auch in großen Softwareprojekten weit verbreitet und effektiv, um Software zu verbessern Aus Gründen der Effizienz und Klarheit des Codes sollten Sie die Verwendung weiterer Klassenmodule, Steuerelemente und Verbindungsbibliotheken vermeiden und diese durch Standardmodule ersetzen.
Das Codebeispiel in diesem Artikel ist relativ einfach, deckt jedoch alle Aspekte der Modulprogrammierungstechnologie ab. Ich hoffe, dass Anfänger daraus lernen und Programmierer gemeinsam darüber diskutieren können. Wir sollten glauben, dass die Hochhäuser, egal wie komplex sie sind, alle aus gewöhnlichen Ziegeln bestehen. Unabhängig davon, wie komplex die Softwareprojekte sind, bestehen sie aus grundlegenden Programmanweisungen Der Analyst geht davon aus, dass die mit denselben Programmanweisungen erstellten Programme unterschiedlich sind. ->