クラスの構成要素
クラスには下記のようなメンバと呼ばれる構成要素で作成することになります。
- フィールド
- プロパティ
- メソッド
フィールドとは?
クラス内で使用する変数のことです。
通常は、アクセス修飾子として、Privateを使用して直接アクセスをさせないようにします。
例文
1 |
Private _name As String |
プロパティとは?
クラスの中に定義する物で、値の保存や取り出しを行うことができます。Javaでいうところのカプセル化に近い概念になります。
変数と同じと思われるかもしれませんが、実際は、プロパティ自身に値が保存されるのではなく、プロパティを介してフィールドにデータを保存したり取り出しを行ったりすることができるのです。
プロパティの構文
1 2 3 4 5 6 7 8 9 10 11 |
Public Property プロパティ名() As String 'ゲッターメソッド Get Return データが保存されているフィールド End Get 'セッターメソッド Set(ByVal name As String) フィールドにデータを保存する処理 End Set End Property |
自動実装プロパティ
GetやSetを使用して、フィールドの値を保存したり、取り出したりするのは大変ですね。なので、Visual Basic2010からは、「自動実装プロパティ」という文法が実装されました。
1 |
Public Property プロパティ名 As データ型 |
これを使えば、Getや、Setをいちいち宣言しなくてもそのように動作してくれるので実装が楽になりました。
メソッドとは?
クラスの動作や振る舞いを示します。
コンストラクタについて
引数なしのコンストラクタ及び、引数付きのコンストラクタをオーバーロードしてそれぞれ定義することができます。
引数無しのコンストラクタ
1 2 3 |
Public Sub New() _name = "太郎" End Sub |
引数付きのコンストラクタ
1 2 3 4 |
'コンストラクタ1 Public Sub New(name As String) _name = name End Sub |
Meキーワードとは?
クラス内で、Meと使った場合はそのクラスをインスタンス化した場合の自身(実際は、継承先まで含めた末端のクラス)を示します。
Javaでいうところのthisと同じです。
Formクラスであれば、Form自信を示します。
MyClass、MyBaseとの違いは?
MyClass
クラス自身を示します。
MyBase
継承元のクラスを示します。
クラスの継承について
Visual Basicにも継承があり下記のように分かれます。
- 基本クラス
- 派生クラス
基本クラス
ベースとなるクラスです。
派生クラス
「基本クラス」を継承して再定義したクラスのことです。
隠蔽
Visual Basicの継承では普通に継承しただけでは、継承元の基本クラスのメンバにアクセスできてしまいます。
基本クラスのメンバにアクセスさせないようにするためには下記二つのどちらかの方法をとります。
- Shadowsキーワード
- Overridesキーワード
Shadow
これをつけてメソッドを上書した場合は、継承元の同じ名前のメソッドにアクセスすることができなくなります。
Overrides
メンバの上書を許可します。
Sharedとは?
プロシージャや、ファンクション、フィールド等につけることができ、アプリ全体で共通で利用できるようにするための宣言です。アプリケーションの起動から終了まで寿命を持たせることができます。
また、フィールドが属しているクラスをnewでインスタンスすることなく使うことができます。
1 2 3 4 5 6 7 8 |
Public Class Person Public Shared name As String End Class Sub Main() 'いきなり呼べる。 Person.a = "三郎" End Sub |
構造体とは?
Visual Basicにおいてクラスと同様にデータをひとまとめにして保持しておくことができる構造体という機能があります。
クラスとの違いは?
構造体は、クラスと違ってデータ型が「値型」になります。クラスは「参照型」になります。
構造体とクラスの使い分け
構造体を使った方がよい場合
構造体は、値型なので、スタックメモリに直接値を書き込むので代入処理が高速です。ただ、反対にコピー処理がデータの数が増えれば増えるほど低速になってしまうので、データが多い場合は構造体の利用は避けましょう。ただ、データ量が少ない集まりの場合はクラスよりも良い働きをするでしょう。
クラスを使った方がよい場合
クラスは、参照型なので、ヒープメモリにデータを書き込むので、コピー処理が高速に動作します。値の代入は構造体に比べて低速ですが、データの数が多い場合はデータが代入されているアドレスのコピーだけで済むので非常に高速に動作します。
コレクションの種類
Visual Basicにもデータを効率よく扱うためのコレクションクラスがあります。
コレクション | 説明 |
---|---|
List | 同じデータ型の値を複数管理できる。 |
SortedList | 複数データを並び替えて管理できる。 |
Stack | 先入後だしで管理 |
Queue | 先入れ先出しで管理 |
Dictionary | データをキーと値で管理 |
LINQ
LINQとは「Language Integrated Query」(統合言語クエリ)の略で、たくさんのデータ集合から任意のデータを取り出すフレームワークのことです。
LINQのメリット
LINQを導入する以前は、データベースならSQL、XMLならXPath等、それぞれ扱いたいデータごとに問い合わせをするための個別の言語を学ばなければなりませんでした。しかし、それらを統合する目的で作られたのがLINQだったのです。
データソース
LINQでは、データの集まりのことをデータソースと呼んでいます。
例えば、データベースや、XMLドキュメント等がこのデータソースに該当します。
LINQプロバイダ
データソースごとに準備をされていて、LINQで記述された問い合わせを各プロバイダに渡して操作をすることができます。
プロバイダ名 | 問い合わせ先 |
---|---|
LINQ to SQL | データベース |
LINQ to XML | XML |
LINQ to Objects | 配列、コレクション等 |
この記事へのコメントはありません。