ナビゲーション リンクのスキップトップページ > C#プログラミング > ch2-2-1 参照とアセンブリ
▼ ch2-2-1 継承とインスタンス ▼

 「this.Text = "Hello World!";」が典型例で、Formクラスは含まれるプロパティやコンストラクタ、メソッド、イベントなど様々なパーツをあたかも、そのクラスにコードが書かれているかのように提供し、開発者はそのクラスライブラリを利用して独自コードを追加しWindowsフォームを出力させることが出来ます。

1: "Hello World!"をWindowsフォームで

using System;
using System.Windows.Forms;
using System.Drawing;

namespace CreateForm
{
    // System.Windows.Forms.FormクラスをMainFormクラスに継承
    class MainForm : Form
    {
        private MainForm()
        {
            this.Name = "Form1";
            this.CliantSize = new Size(300,150);
            this.Text = "Hello World!"
        }

        private static void Main()
        {
            Application.Run(new MainForm());
        }
    }
}


  これらを踏み込んで記すと、「派生クラス(CreateForm.MainForm)に基本クラス(System.Windwos.Forms.Form)を継承させて派生クラスであるMainFormの機能を拡張させている」となり、この様な機構があることによって、Formクラスの内容を開発者自身が実装することが不要となり、相当のコードと共に労働量を減少さることを意味します。

  基本クラスにバグがあれば元も子もない感覚はありますが、コードを削減することにより問題の特定は容易になります。その重要な役回りのためオブジェクト指向プログラミング(OOP)においての3本柱の1本と言われます。

2: 基本クラスと派生クラス

//Sampleを基本クラスとした、派生クラス。
public class HelloWorld : Sample
{
    public static void Main()
    {
        Console.WriteLine(this.SampleText);
    }
}

// HelloWorldクラスから見て基本クラスとなる。
public class Sample
{
    public string SampleText
    {
        get{ return "Hello World!"; }
    }
}


  Formは共通して利用されるべきなので、直接そのクラスを改変することは再利用性が失われるので避ける必要がありましたが、気を付けなければならないのは上記サンプルのように非常に単純なコードで実現することが可能ゆえ、開発者が多用する傾向が強くなることです。

  その性質から共通性の作りこみを行わなければロジックが散在する難解なクラスが作成される恐れがあり、共通性が希少の場合は他の方法も検討するべきでしょう。

3: インスタンスの作成

public class HelloWorld
{
    public static void Main()
    {
        // インスタンスを作成。
        Sample sam = new Sample();
        Console.WriteLine(sam.SampleText);
    }
}


  これらの回避策に継承を利用せずインスタンスを作成すると言った方法があります。単純な手段ですが、この方法の良いところは実行する箇所でインスタンスを作成するので、動作が明確に切り分けられる事です。

Continue
ナビゲーション リンクのスキップトップページ > C#プログラミング > ch2-2-1 参照とアセンブリ

2008年ですね。[1]
♥ 2008年01月01日 00:00:00

自由なスレ[3]
♥ 2007年09月22日 20:51:58

2007年ですね。[1]
♥ 2007年01月01日 00:00:00

こみゅぷらす発足[1]
♥ 2006年12月01日 12:01:23

TechED2006 日記[5]
♥ 2006年09月11日 18:44:51


RSS : FooPah!の更新情報
RSS : 掲示板全体の投稿情報
Copyright(C)2001-2008 FooPah!, All rights reserved.