2009年11月30日月曜日

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

Microsoft Visual C# 2008 Express Edition

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

publicでメソッドを定義するのではなくset,get キーワードを使用してprivateのフィールドの値を取得、設定してみる。

using System;

class VisualStudio // 基本クラス
{
    int language = 0; // private
    protected string name = "VisualStudio";

    public int Language
    {
        set
        {
            this.language = value;
        }
        get
        {
            return this.language;
        }
    }
    public virtual void displayName()
    {
        Console.WriteLine(name);
    }
}
class VisualWebDeveloper : VisualStudio // 派生クラス
{
    public override void  displayName()
    {
        this.name="VisualWebDeveloper";
        base.displayName();
    }
}

class MainClass
{
    static void Main()
    {
        VisualWebDeveloper v = new VisualWebDeveloper();
        v.Language = 1; // setを呼ぶ
        Console.WriteLine(v.Language); // getを呼ぶ 出力値:1
        v.displayName(); // 出力値:VisualWebDeveloper
    }
}

protectedも同様にset,get キーワードを使用してより記述をよりすっきりさせる。

using System;

class VisualStudio // 基本クラス
{
    int language = 0; // private
    protected string name = "VisualStudio";

    public int Language
    {
        set
        {
            this.language = value;
        }
        get
        {
            return this.language;
        }
    }
    public string Name
    {
        set
        {
            this.name = value;
        }
        get
        {
            return this.name;
        }
    }
}
class VisualWebDeveloper : VisualStudio // 派生クラス
{
}

class MainClass
{
    static void Main()
    {
        VisualWebDeveloper v = new VisualWebDeveloper();
        v.Language = 1; // Languageのsetを呼ぶ
        Console.WriteLine(v.Language); // getを呼ぶ 出力値:1
        v.Name = "VisualWebDeveloper"; // Nameのset呼ぶ
        Console.WriteLine(v.Name); // get 出力値:VisualWebDeveloper
    }
}

C# バージョン 3.0 からより省略して記述できる。

using System;

class VisualStudio // 基本クラス
{
    int language = 0; // private
    protected string name = "VisualStudio";

    public int Language {get;set;}
    public string Name {get;set;}
}
class VisualWebDeveloper : VisualStudio // 派生クラス
{
}

class MainClass
{
    static void Main()
    {
        VisualWebDeveloper v = new VisualWebDeveloper();
        v.Language = 1; // Languageのsetを呼ぶ
        Console.WriteLine(v.Language); // getを呼ぶ 出力値:1
        v.Name = "VisualWebDeveloper"; // Nameのset呼ぶ
        Console.WriteLine(v.Name); // get 出力値:VisualWebDeveloper
    }
}

オブジェクト初期化子を使用してみる。

using System;

class SampleClass
{
    // フィールド
    public int a = 10;
    public int b = 20;
    private int c;
    // 既定のコンストラクタ
    public SampleClass()
    {
        Console.WriteLine(this.a);
        Console.WriteLine(this.b);
    }
    public void setC(int c)
    {
        this.c = c;
    }
}

class mainClass
{
    static void Main()
    {
        // 出力値:10 20
        var sample = new SampleClass { a = 100,b=200 };
        // 出力値:100 200
        Console.WriteLine(sample.a);
        Console.WriteLine(sample.b);
        /* オブジェクトの初期化子はこのクラスからアクセスできる
        レベルのメンバにのみ適用できるので
        var sample1 = new SampleClass { c = 100 }
        はエラーとなる */
    }
}

インデクサを使用してみる。

using System;

class SampleArray
{
    // private
    int[] array = new int[10];
    // インデクサの定義
    public int this[int index]
    {
        set
        {
            array[index] = value;
        }
        get
        {
            return array[index];
        }
    }
}

class MainClass
{
    static void Main()
    {
        var s = new SampleArray();

        s[0] = 10;
        s[5] = 100;
        s[9] = 1000;
        // 出力値:10 100 1000
        Console.WriteLine( s[0] );
        Console.WriteLine( s[5] );
        Console.WriteLine( s[9] );
    }
}

インデクサとwhile ループを組み合わせて全てのs[i]に代入してみる。

using System;

class SampleArray
{
    // private
    int[] array = new int[10];
    // インデクサの定義
    public int this[int index]
    {
        set
        {
            array[index] = value;
        }
        get
        {
            return array[index];
        }
    }
}

class MainClass
{
    static void Main()
    {
        // 出力値:10から19までの整数
        int i = 0;
        while (i < 10)
        {
            var s = new SampleArray();
            s[i] = i + 10;
            Console.WriteLine(s[i++]);
        }
    }
}

今日もわざとエラーを出力してみたりしまた。わざとエラーを発生させるとより理解が深まる気がします。

私はプログラミング学習初心者なので知らなかったことですが、プログラミング言語はもう出来上がっているものだと思っていましたが、OSやアプリケーション等と同様にバージョンアップというものがあることを知り、また1つ新しいことを知り嬉しいです。

バージョンアップがあるということは新機能の追加や機能変更がある度により言語が使いやすくなったり、また学習することが増えるということだと思うので、プログラミング学習の楽しみが尽きないということになると思ったりしています。

なのでこれからもプログラミング学習がわくわく楽しみな今日この頃です。

0 コメント:

コメントを投稿