フォームクラスを拡張するしたプログラムとする
クラスの拡張について学んできました。拡張できるクラスは、私たちが定義したクラスばっかりではありません。これまでにもう使ったウィンドウやウィンドウにのせる部品を扱うクラスをもとにして拡張を行うこともできます。
私たちはこれまでも、開発環境によって提供されているクラスからオブジェクトを作成してウィンドウプログラムを作成してきました。オブジェクトを作成するだけではなく、提供されているクラスを拡張して、さらに高機能なプログラム作成していくことができるのです。
これまでは、フォームをオブジェクトとして作成する方法でプログラムを作成してきました。しかし、一般的にウィンドウプログラムを作成する場合には、通常、Formを拡張したプログラムとして作成していくスタイルとなります。
そこで、これまでのプログラムを、Formを拡張したプログラムとしてみましょう。
using System.Windows.Forms;
using System.Drawing;
namespace lesson5
{
class Sample5 : Form //Formを拡張して...
{
static void Main(string[] args)
{
Application.Run(new Sample5());
}
public Sample5() //コンストラクタ内で設定を行います
{
this.Text = "C#へようこそ!";
this.Width = 400; this.Height = 200;
this.BackgroundImage = Image.FromFile("E:\\099_Technology\\C#\\csharp\\csharp_train\\lesson2\\google.JPG");
}
}
}
実行画面

このコードでは、私たちが作成するプログラムでsample5クラスを、Formを拡張した派生クラスとしています。コントロールのプロパティーの設定は、Main()メソッドではなく、コンストラクタ内で行うことにしました。
ここでは、フォームのプロパティにthisという指定をつけています。
これまではフォームの幅を設定するために、作成されたフォームを表すfm.に続けてWidthプロパティーを表していきました。
しかし今度のプログラムでは、「自分自身」がフォームとなります。自分自身を表す名前を使う必要があります。
thisは
クラス内で、「自分自身のオブジェクト」をあらわす
と言う指定になってます。ここではフォームで自分自身のオブジェクトを表しているわけです。
なお、クラス内で特に何も指定しないでメンバーを記述すると、自分自身のオブジェクトのメンバーを表すことになります。つまりこのコードではthisは省略してもかまいません。ただし、本書ではthisを指定していくものとしましょう。
this.Width = 400; this.Height = 200; ☑
Width = 400; Height = 200; ☑
クラス内で自分自身を明示的にあらわす場合に、thisを使う。
さて、既存のクラスをうまく活用すれば、多機能なプログラムを効率よく作成していくことができます。
C#の開発環境では、ウィンドウ部品をはじめとした数多くのクラスが提供されています。
クラスをまとめたものをクラスライブラリ(class library)といいます。
私たちはこれから、この提供されたクラスライブラリを利用してさまざまなプログラムを作成していきましょう。
クラスライブラリを調べる
さて、クラスライブラリーを利用してプログラムを作成するときには、クラスの機能について調べることが必要となります。
サンプル中でわからないクラスやメソッドが登場した場合には、インターネットでと「.NET Framework」のリファレンスを調べてみてください。
「.NET Framework」は、C#の標準的なクラスライブラリを含む枠組み(フレームワーク)の名称となっています。様々なクラスが登場しますが、1つずつ根気よく調べていくことが大切です。バリエーションに富んだプログラムを作成していくことができるようになります。
名前空間を知る
なお、クラスライブラリが提供するクラス名は、名前空間(name space)と呼ばれる概念で分類されています。
例えば、フォームを表すFormクラスはSystem.Windows.Formsと言う名前空間に分類されています。本来、クラス名は名前空間をつけて、次のように記述する必要があります。例えばFormクラスは、次のように指定する必要があるわけです。
System.Windows.Forms.Form
しかし、同じ名前空間のクラスを多く使いたい場合はには不便です。そこでこの名前空間を省略して名前を直接指定したいときには、コードの先頭などでusingディレクティブを記述しておくことができます。
すると、コード中でFormクラスは「Form」という名前で使用できるようになります。私たちはこれまでのコードの先頭でもこのような表記を使っています。
C#のクラスライブラリに含まれる代表的な名前空間には次のようなものがあります。クラスの分類に注意しておきましょう。
| 名前空間 | 説明 |
|---|---|
| System | 基本機能を提供する |
| System.Windows.Forms | コントロールを提供する |
| System.Drawing | 基本のグラフィック機能を提供する |
| System.Drawing.Imaging | 高度なグラフィック機能を提供する |
| System.Data | データ管理機能提供する |
| System.Xml | XML関連機能を提供する |
| System.Net | ネットワーク関連機能を提供する |
| System.Linq | LINQ関連機能を提供する |
| System.Xml.Linq | XML to LINQを提供する |

コメント