【やさしいC#】lesson5.1 クラスの設計

C#

クラスをふりかえる

  この節では、これまでも利用してきた「クラス」と「オブジェクト」について、さらに深く学んでいきましょう。C#を扱う場合、クラスとオブジェクトについて深く知ることが欠かせません。

クラスとは

  クラスは、
ある特定のモノの状態や機能に着目してまとめたもの
となっています。

クラスを設計する

  私たちもクラスを設計することができます。モノについて着目し、状態や機能についてまとめていくことができるわけです。
  クラスの内容についてまとめ、コードを記述することを、クラスを定義する(definition)といいます。
  ■状態:画像、位置
  ■機能:動く

構文:クラスの定義

class クラス名
{
型名 変数名;

戻り値の型 メソッド(引数リスト)
{
文;
…;
return 式;
}

}

クラスでは、フィールド・メソッドを定義する。

クラスを定義する

   class Picture
    {
        private Image img;
        private int top;
        private int left;

        public Picture
() 
        {
            img = Image.FromFile("E:\\099_Technology\\C#\\csharp\\csharp_train\\lesson2\\google.JPG");
            top = 0;
            left = 0;
        }

        public void Move()
        {
            top = top + 10;
            left = left + 10;
        }
    }

  クラスの中では、オブジェクトを作成するときに初期化を行う特別なメソッドを記述することもあります。これをコンストラクタ(constructor)といいます。コンストラクタはクラス名と同じ名前を使うきまりとなっています。

構文:コンストラクタの定義

コンストラクタ名(引数リスト)
{

}

オブジェクトを作成する

Picture p = new Picture();
p.Top; //フィールドを利用します
p.Left; //フィールドを利用します
p.Move(); //メソッドを呼び出します

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

namespace lesson5
{
    class Sample2
    {
        static void Main(string[] args)
        {
            Form fm = new Form();
            fm.Text = "ようこそC#へ";

            PictureBox pb = new PictureBox();

            Picture p = new Picture();
            p.Move();
            p.Move();

            pb.Image = p.GetImage();
            pb.Top = p.Top;
            pb.Left = p.Left;

            pb.Parent = fm;
            Application.Run(fm);
        }
    }
    class Picture
    {
        private Image img;
        private int top;
        private int left;

        public Picture() 
        {
            img = Image.FromFile("E:\\099_Technology\\C#\\csharp\\csharp_train\\lesson2\\google.JPG");
            top = 0;
            left = 0;
        }

        public void Move()
        {
            top = top + 10;
            left = left + 10;
        }
        public void SetImage(Image i)
        {
            img = i;
        }
        public Image GetImage()
        {
            return img;
        }

        public int Top
        {
            set { top = value; }  //プロパティとして値を設定する
            get { return top; }   //プロパティとして値を取得する
        }
        public int Left
        {
            set { left = value; } //プロパティとして値を設定する
            get { return left; }  //プロパティとして値を取得する
        }
    }
}

引数の仕組みを知る

戻り値 メソッド名(引数のリスト)
{
文;

return 式;
}

次のCalcクラスのAddメソッドが引数2つ渡す処理となっています。

class Calc
{
    public int Add(int x, int y)
    {
        int sum = x + y;
        return sum;
    }
}

このクラスを利用する側では、下記のように()内のカンマで区切って実際の引数を渡します。

Calc c = new Calc();
int sum = c.Add(2, 3);

戻り値の仕組みを知る

メソッドからは、情報を受け取ることもできます。呼び出し側に戻される情報を、戻り値(return value)といいます。

戻り値 メソッド名(引数リスト)
{
  文;
  …
  return 式;
}

class Calc
{
    public int Add(int x, int y)
    {
        int sum = x + y;
        return sum;
    }
}

引数と戻り値に注意する

  メソッドにおいて、引数は複数定義することができますが、戻り値は1つしか戻すことができませんので、注意してください。
  さらに、メソッドは必ずしも引数と戻り値を定義する必要がありません。

コメント

タイトルとURLをコピーしました