2009年11月29日日曜日

統合開発環境 IDE(Integrated Development Environment)

Microsoft Visual C# 2008 Express Edition

今日書いたソースコード。

オーバーライドと隠蔽を使用してみる。

using System;

class VisualStudio // 基本クラス
{
    public virtual void ideInfo()
    {
        Console.WriteLine("VisualStudio");
    }
}
class Language : VisualStudio // 派生クラス
{
    public override void ideInfo() /*基本クラスのメソッドを
                                    オーバーライド*/
    {
        Console.WriteLine("Language");
    }
}
class VisualWebDeveloper : VisualStudio // 派生クラス
{
    new public void ideInfo() // 基本クラスのメソッドを隠蔽
    {
        Console.WriteLine("VisualWebDeveloper");
    }
}
class MainClass
{
    static void Main()
    {
        Language l = new Language();
        l.ideInfo(); // 出力値:Language

        VisualWebDeveloper vwd = new VisualWebDeveloper();
        vwd.ideInfo(); // 出力値:VisualWebDeveloper

        VisualStudio v = new VisualStudio();
        v.ideInfo(); // 出力値:VisualStudio
    }
}

カプセル化について。private,protected,public アクセス修飾子を使用してみる。

using System;

class VisualStudio
{
    int language = 0; // 既定はprivate
    protected string name = "VisualStudio";

    public void ideInfo(int language)
    {
        this.language = language; /* languageフィールドに値を
                                     設定すpublicメソッド */
    }

    public virtual void displayName() /* フィールドの値を出力する
                                        仮想メソッド */
    {
        Console.WriteLine(language);
        Console.WriteLine(name);
    }
}
// 派生クラス
class VisualWebDeveloper : VisualStudio
{
    public override void displayName()
    {
        // this.language = 1; はprivateのためエラーになる
        this.name = "VisualWebDeveloper"; /* nameフィールドに
                                            VisualWebDeloperを
                                            代入 */
        base.displayName();
    }
}

class MainClass
{
    static void Main()
    {
        // 派生クラスのインスタンスを作成
        VisualWebDeveloper v = new VisualWebDeveloper();
        v.ideInfo(1); // typeフィールドに1を設定
        // v.name = "sample"; これはprotectedのためエラーになる
        v.displayName(); // 出力値:1  VisualWebDeveloper
    }
}

今日は最後のプログラムでわざとエラーを出力し、その後、//でコメントにしてエラーをなくしてみたりしました。また1歩成長したなあと思い、プログラミング学習がわくわく楽しみな今日この頃です。

0 コメント:

コメントを投稿