privateで保護する
privateを指定すると、クラスの外部から直接アクセスできないようにする。
privateアクセス修飾子です。
class Picture
{
private Image img;
private int top;
private int left;
...
}
publicで公開する
publicはクラスの外部からアクセスできるアクセス修飾子です。
public void SetImage(Image i)
{
img = i;
}
public Image GetImage()
{
return img;
}
クラスの外部からアクセスできるメソッドを利用するとき、オブジェクトを作成し、画像を変更したり、取得したりするわけです。
p.SetImage(img);
pb.Image = p.GetImage();
プロパティの仕組みを知る
常にSet…Get…という名前のメソッドを定義し、これを使ってフィールドに値を設定することにすると、プログラムが煩雑になってしまう場合があります。
そこで、フィールドに簡潔にアクセスする方法として用意されてるのが、プロパティ(property)という仕組みです。
プロパティはsetとgetという名前のフィールド設定・取得専用の処理を用意しておくという仕組みです。この処理はアクセサ(accessor)と呼ばれます。
public int Top
{
set { top = value; } //プロパティとして値を設定する
get { return top; } //プロパティとして値を取得する
}
構文:プロパティの定義
アクセス指定子 型 プロパティ名
{
set{ 値を設定する処理;}
get{ 値を戻る処理;}
}
プロパティの利用
プロパティ名 = 値;
変数 = プロパティ名;
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(); //publicなメソッドを介してフィールドにアクセスします
pb.Top = p.Top; //publicなプロパティを介してフィールドにアクセスします
pb.Left = p.Left;
pb.Parent = fm;
Application.Run(fm);
}
}
class Picture
{
private Image img; //privateを指定してクラスの外部からアクセスできないようにします
private int top; //privateを指定してクラスの外部からアクセスできないようにします
private int left; //privateを指定してクラスの外部からアクセスできないようにします
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; } //プロパティとして値を取得する
}
}
}

コメント