プログラマーやプログラミング愛好家にとって、VB のクラスの技術は、大規模なソフトウェア、モジュール (Moudle)、コントロール (Activeocx)、リンク ライブラリ (Activedll)、クラス (Classmoudle) の開発プロセスにおいて学習の難しい点です。体系的かつ効率的なソフトウェア工学を構成するものであり、クラス技術は制御やリンクライブラリ技術の基礎となるものであるため、クラスの理論とプログラミング手法を習得することは非常に有意義です。
(1)クラスの基本定義と適用概要。
クラスは、メソッド、プロパティ、データ メンバーを含む高レベルのコード モジュールです。これはモジュールのスコープ内にあるだけでなく、グラフィカル インターフェイスのない Activeocx もプログラマはコントロールのように使用できます。クラスは継承できないことに注意してください。
クラスを使用すると、1 つまたは複数の特定のオブジェクトに対する複雑な操作を効率的に実行できます。オブジェクトのアクションはクラスのメソッドであり、オブジェクトの属性はクラスの属性プロセスです。比較的言えば、プログラミングの対象がものの集合である場合、次の 2 つの場合、コード処理にクラスを使用するのが非常に適しています。
(1) 同様のプロパティを持つオブジェクトを多数作成します。
(2) コードのカプセル化を改善します。
クラスの作成は非常に簡単で、コードを記述するときに、[プロジェクト] メニューの [クラス モジュールの追加] 項目を選択して空のクラスを追加します。
クラス ファイルは通常、.cls 拡張子を付けて保存されます。
(2)クラスメソッドの実装。
クラスのメソッドは、ダイナミック リンク ライブラリのインターフェイス関数に似ており、他のフォーム コードから指定された型パラメータを受け取り、それらをクラスに渡すことができます。一般に、クラス メソッドは戻り値があるかどうかを指定できます。通常、これはクラス内の公開プロシージャです。次のコード例を考えてみましょう。これにより、パスワード ボックスが文字以外の入力を拒否します。
(1) cls のようなコード。
OptionExplicit の変数チェック
PRivateWithEventsmytxtAsTextBox
'このクラスのメソッドはテキスト パスワード ボックスを受け入れて制御します
DimisNUMAsBoolean
'クラスのモジュールレベルの変数
PublicSubAttach(itTEXTAsTextBox)
'外部変数を mytxt に受け入れます
Setmytxt=itTEXT
EndSub
PrivateSubmytxt_KeyUp(KeyCodeAsInteger,ShiftAsInteger)
isNUM=(キーコード>=65)And(キーコード<=90)
'パスワードボックスに入力されたキーボードが英字かどうかをテストします
IfisNUM=FalseThen
ビープ
mytxt.Text=
' 入力が英字でない場合は、ベルが鳴り、パスワードボックスの内容がクリアされます。
MsgBox 不正な文字入力!
EndIf
Debug.Printmytxt.Text
'出力パスワードボックスの内容をデバッグします
EndSub
'クラスコードの終わり
(2)クラス参照。
記述されたクラスは 2 つの形式で参照できます。 1 つ目の方法は、Private (public または dim)、myCLS (指定されたクラス名)、AsNewcls (記述されたクラス名) です。まず、フォーム コードでモジュール レベルの宣言 - DimmyCLSAscls - を作成し、次に特定のコード プロセスで特定の定義 - Setmycls=Newcls - を作成します。これら 2 つの方法には、コードの効率性と簡素化に違いがあるかもしれませんが、筆者のプログラミング実践では特別な感覚はありません。ただし、私は最初の方法の方が書きやすいので好みます。さらに、コードの最後で SetmyCLS=Nothing を使用してクラスのリソース占有をキャンセルするのは、非常に良いプログラミング習慣です。
フォーム form1 (フォームにはパスワード ボックス コントロール text1、passworldchar=* があります) に次のコードを追加します。
オプション明示的
プライベートmyCLSANewcls
'clsを引用
PrivateSubForm_Load()
myCLS.AttachText1
'スタートアップクラス
EndSub
'コードの最後でリソースを解放することを忘れないでください
PrivateSubForm_Unload(CancelAsInteger)
SetmyCLS=なし
終わり
EndSub
この記事のコードは、コードの作成プロセスとクラス メソッドの呼び出しメソッドを示しています (ただし、これはクラスのイベントに非常に似ています)。パスワード ボックスに文字以外の文字が入力された場合、システムは次のようにします。リングとパスワードボックスは元のデータから削除されます - パスワードはある程度保護されます。
クラス メソッドはパラメーターを必要とせず、パブリック関数やプロシージャと同様に、クラスで最も広く使用されています。次の記事では、包括的なプログラミングのためにクラスのプロパティ、イベント、メソッドを使用する方法について説明します。
実際、クラスがソフトウェア エンジニアリングで広く使用できる主な理由は、クラスがプログラミングに必要な多くの属性を非常に便利にカプセル化できるためです。これにより、プログラマーは、コントロール (ocx) およびリンク ライブラリ (dll) の設計とデバッグの複雑さをある程度克服できるだけでなく、プログラム コードの単純さと効率も向上します。この記事では、メソッドを含む完全なクラス プログラミングについて説明します。 、属性と基本的なイベント。
(1) クラス属性の特性と定義。
標準コントロールのプロパティと同様に、クラス プロパティを使用すると、ユーザーは指定されたデータ範囲内の値を割り当てることができ、これらの値はクラス内のコードのさまざまな部分で共有されます。プロパティの取得と転送には、PropertyLet ステートメントと PropertyGet ステートメントによるプログラミングが必要です。もちろん、最初にクラス内のグローバル レベルまたはモジュール レベルで対応する変数を定義する必要があります。
(2) イベントの属性と基本定義。
フォームのイベントと同様に、クラスにも 2 つの基本イベント、Class_Initialize (クラスのロード時にトリガーされる) と Class_Terminate (クラスのアンロード時にトリガーされる) があり、どちらもプライベートです。実際、クラスのメソッドとプロパティを完了することを忘れない限り、これら 2 つのイベントは完全に無視できます。
クラスは独自のイベントを定義することもできます。これはメソッドのプログラミング形式に似ていますが、パラメーターの宣言に WithEvents キーワードが必要であること、イベントには名前付きパラメーターやオプションのパラメーターを持つことができず、戻り値がない点が異なります。
実際、適切に構造化されたメソッドとプロパティは、複雑な構造のクラスのイベントを完全に置き換えることができます。
(3) クラスメソッド、イベント、プロパティのプログラミング例。
このプログラムの目的は、クラスを通じてフォーム内のテキスト ボックスの内容の大文字、小文字、およびその逆の並べ替えをすべて制御することです。
コードの記述と呼び出しを容易にするために、クラス内の列挙型プログラミング メソッドを参照しました。
次のコードはクラス Class1 にあります。
オプション明示的
PrivateWithEventsmyTXTAsTextBox
'メソッドパラメータインターフェース
PublicEnumsTYLE
Lcaseit' 小文字属性
Lbigit の大文字化属性
Nlogoit の逆ソート属性
EndEnum
'カスタム列挙。属性の自動割り当てを実装するために使用されます。
PrivatemvarBiaozhiAsSTYLE
'列挙定数の接続を実装します
PublicFunctiondONE()AsString'
'DONE メソッドは、
'フォームのテキストボックスで対応する文字変換操作を実行します
'そして変換された文字列を返します
IfmvarBiaozhi=NlogoitThen
dONE=StrReverse(myTXT)
'逆ソート
ElseIfmvarBiaozhi=LcaseitThen
dONE=LCase(myTXT)
'小文字変換を強制する
それ以外
dONE=UCase(myTXT)
'強制的に大文字変換
EndIf
エンドファンクション
'DONEメソッド終了
PublicPropertyLetBiaozhi(ByValvDataAssTYLE)
'属性に割り当てられた値を取得します
mvarBiaozhi=vData
終了プロパティ
PublicPropertyGetBiaozhi()AssTYLE
'属性値をクラスに転送
SetBiaozhi=mvarBiaozhi
終了プロパティ
PublicSubAttach(itTEXTAsTextBox)
'接続クラスのメソッド
SetmyTXT=itTEXT
EndSub
PrivateSubClass_Initialize()
'このイベントはクラスがロードされるときにアクティブ化されます
MsgBox こんにちは!このプログラムでは、クラス メソッド、プロパティ、イベントを使用したプログラミングのテクニックを紹介します。
EndSub
PrivateSubClass_Terminate()
'このイベントはクラスがアンロードされるときにアクティブになります
MsgBox こんにちは! Class_Terminate でオブジェクトが取り消された後は、忘れずにコードを入力してください。
EndSub
'クラスのコードはすべて終わりました
(4) フォームコードのリファレンスプログラミング。
テキスト コントロール TEXT1、ドロップダウン リスト コントロール COMBO1、コマンド ボタン COMMAND1 (CAPTION=変換開始) を FORM1 に追加し、3 つのコントロールを適切な位置に調整します。
DimmyTAsNewClass1
'クラス参照
PrivateSubForm_Load()
コンボ1.クリア
Combo1.AddItem 文字列の大文字変換
Combo1.AddItem 文字列の小文字変換
Combo1.AddItem 文字列の逆ソート
Combo1.ListIndex=0
'属性オプションをリストボックスに追加します
EndSub
PrivateSubCommand1_Click()
'コマンドボタンを押したときにクラスをアクティブにする
myT.AttachText1
'メソッドパラメータ接続
SelectCaseCombo1.ListIndex
事例0
myT.Biaozhi=Lbigit
事例1
myT.Biaozhi=Lcaseit
事例2
myT.Biaozhi=Nlogoit
終了選択
'リスト ボックスの選択に従って、クラスの Biaozhi 属性に値を割り当てます
'プログラミング環境では、上記の属性値が自動的に追加されることに注意してください
Text1.Text=myT.dONE
'ソート後の文字列を返す
EndSub
PrivateSubForm_Unload(CancelAsInteger)
SetmyT=なし
終わり
「プログラミングの良い習慣」
EndSub
どうですか、私たちのコードは非常に簡潔に見えます。コントロールを使用しているように感じます。コントロールは自由に呼び出すことができるだけでなく、VB の自動プロンプト機能も便利に使用できます。
(5) クラスプログラミング手法の概要。
厳密に言うと、クラスは VB プログラミングでは非常に役立つテクノロジですが、学習して習得するのが難しいものでもあります。ただし、小規模なソフトウェア開発では、ソフトウェアを改善するためにクラスが広く効果的に使用されます。効率性とコードの明瞭性を確保するには、これ以上のクラス モジュール、コントロール、接続ライブラリの使用を避け、標準モジュールに置き換える必要があります。
この記事のコード例は比較的単純ですが、モジュール プログラミング テクノロジのあらゆる側面をカバーしているので、初心者はそこから学び、プログラマーは一緒に議論できることを願っています。高層ビルがどれほど複雑であっても、それらはすべて普通のレンガでできていると信じるべきです。同様に、ソフトウェア プロジェクトがどれほど複雑であっても、それらはプログラミング愛好家やプログラマーとの唯一の違いです。アナリストは、同じプログラムステートメントで構築されたプログラムは異なると考えています。 ->