VB6開発者向け:C#で始める.NETプログラミング

第6回 オブジェクト指向プログラミング(1)

この記事を読むのに必要な時間:およそ 8 分

継承

このRowクラスでは,オブジェクト指向の三大要素のひとつである「継承」が使われています。

class Row : NotifyPropertyChanged

これによって,RowクラスはNotifyPropertyChangedの機能を継承していることになります。

なお,NotifyPropertyChangedクラスは次回作成する予定です。

プロパティの実装

このクラスにはCode(番号⁠⁠,Name(名前⁠⁠,TelephoneNumber(電話番号)の値を格納するためのプロパティが実装されています。 例えば,以下はCodeプロパティを最もシンプルに実装したコードです。

private int _Code;
public int Code {
    get { return this._Code; }
    set { this._Code = value; }
}

VB6では,フィールド変数は先頭にまとめて記述しなければなりませんでしたが,C#では,上記のように関連の深い部分の近くに意図的に記述できます。

Codeプロパティは,このフィールド変数に対して実際の値を格納しています。

OnPropertyChanged()

以下は,CodeプロパティのSetブロックのコードです。

set {
    if (this._Code == value) return;
    this._Code = value;
    base.OnPropertyChanged("Code");
}

値が変更された時に,フィールド変数に値を代入してbase.OnPropertyChangedメソッドにプロパティ名を与えて実行しています。 このbaseインスタンスはRowクラスで生成していませんし,外部から与えられている訳でもありません。 つまり,いきなり登場しています。

この理由はbaseという名前からも容易に想像できる通り,Rowクラスの基本クラスであるNotifyPropertyChangedオブジェクトのインスタンスです。 Rowクラスのコンストラクタが実行されたことによって生成されています。

このように,継承元のオブジェクトにアクセスしたい場合は,baseインスタンスを指定します。 ただしRowクラスはNotifyPropertyChangeクラスを継承していて,自身のインスタンスからもアクセスできるため,this.OnPropertyChanged()と記述しても同じです。

さて,このOnPropertyChangedメソッドですが,これを実行することでPropertyChangedイベントを発行しています。

つまり,Rowオブジェクトのに格納されているCode,Name,TelephoneNumberの各プロパティの値が変わったことを,必要に応じて通知する方法を提供しています。

次回の予定

今回は,オブジェクト指向プログラミングについて簡単にご説明させていただいた後に,実際に2つのクラスを作ってみました。

このように,取り扱うデータや各処理をオブジェクトという単位で分けて考えることがオブジェクト指向プログラミングでは大変重要です。

その他のクラスについては,次回ご説明させていただこうと思います。

著者プロフィール

伊藤達也(いとうたつや)

(株)井沢電器設備にて、業務管理システムの開発に従事しています。 この記事の趣旨通り、筆者自身が2005年後半にメインの開発言語をVB6からC#に移行し、2007年には Microsoft MVPアワードをC#で受賞しました。