まず、オブジェクト指向プログラミングの基礎の設計
1.1オブジェクト指向プログラミング
(1)オブジェクト指向プログラミングとは何ですか
全ての機能は、いくつかまたはコードの偶数ブロックに含まれており、コードブロックは、単一のプログラムを提供することができるため、アプリケーション設計、C言語は、単純すぎます。従って、複数のプログラムを達成するために再利用コードブロックのための機会を増やすためには、オブジェクト指向プログラミング方法を使用することが必要です。
オブジェクト指向プログラミングは、単一のものによって各コンピュータアプリケーションは、オブジェクトプログラムワード(またはユニット)の組み合わせにおいて役割を果たし得ることができます。
コンセプト(2)とオブジェクトクラス
オブジェクト指向設計プログラムは、オブジェクトベース、イベント駆動型プログラミングです。オブジェクトは、プログラムの基本的な要素であり、およびイベントハンドラは、オブジェクト間の相関関係を確立しました。
A、クラス
人生はそのような人々、車、植物などのエンティティの無限の数があり、各エンティティは、プロパティと行動の範囲を持っています。例えば、自動車等の色、モデルの性質を定義することができるだけでなく、その、前方、後方、および他の動作を定義します。オブジェクト指向設計では、特定のエンティティの性質や行動の具体的な定義は、クラス(クラス)と呼ばれています。
B、オブジェクト
オブジェクトは、アプリケーションの基本的な要素を構成し、オブジェクト指向プログラミング技術の核心です。クラスでは、各オブジェクトは、クラスのインスタンスです。例えば、人間は、エンティティ・クラスであり、各個人は、ヒト被験体とは異なります。誰もが性質の異なる身長、体重、など、と立って、歩行動作を持っています。オブジェクト指向プログラミングでは、オブジェクトと呼ばれる特性の性質は、オブジェクトで発生するイベントは、イベント、動作呼び出されたメソッドのために生成イベントと呼ばれます。
オブジェクトの三つの要素を構成するプロパティ、メソッド、およびイベント。
(3)、事前定義クラス
ただ、コントロールを学ぶために始めて、フォームは、ユーザー定義のデータ型は事前に定義されたクラスと呼ばれる、.NET Frameworkが提供されています。
1.2、カプセル化と隠れ
パッケージングは、クラス内の生体組織のメンバーを指します。C#は、クラスのメンバーは、データメンバー、プロパティ、メソッド、およびイベントを含みます。クラスは、パッケージには、良いクラスの独立性を確保し、パッケージを達成するためのツールです。
(1)クラスの定義
C#は、クラスはクラスによって定義されています。たとえば、フォームを確立するために、WindowsフォームアプリケーションがForm1クラスのキーワードで作成されたときにクラスを定義します。
次のように一般的な形式のクラスが定義されているので。
class 类名
{
//定义数据成员
//定义属性
//定义方法
//定义事件
}
(2)定義されたクラスのメンバ
クラス定義ではなく、それはデータ、プロパティ、イベント、およびメソッドを含むクラスのすべてのメンバー、の定義を提供します。修飾子は、次によって定義することができます。
修飾子 | 意味 |
公衆 | クラスのメンバーは、任意のコードによってアクセスすることができます |
民間 | コードがクラスにアクセスするときに、クラスのメンバーのみが行うことができ、あなたは民間のデフォルトを使用して、メンバーを定義します |
保護されました | クラスメンバーは、クラスまたは派生クラス(すなわち、サブクラス)コードによってアクセス可能です |
Aは、データメンバーを定義します
クラス宣言文のデータメンバーがデータメンバーを指定するには、アクセスレベルのアクセス修飾子と組み合わせて、標準の変数によって定義されます。保護的な役割を再生するには、データメンバー、一般的にプライベートと保護された修飾子の声明。
class vehicle
{
private int wheels; //车轮数
private float weight; //车重量
}
B、規定された方法
アクセスレベルと組み合わせたクラス定義された関数宣言文の標準的な方法によってアクセス修飾子の方法を指定します。
public class Vehicle
{
private int wheels;
private float weights;
public void SetVehicle(int wheels,float weights) //定义方法SetVehicle设置车轮数和车重量
{
this.wheels = wheels;
this.weights = weights;
}
public void GetVehicle() //定义方法GetVehicle()获得车轮数和车重量
{
MessageBox.Show("车轮数:" + this.wheels.ToString() + "\n车重量:" + this.weights.ToString());
}
}
private void button1_Click(object sender, EventArgs e)
{
int wheels;
float weight;
wheels = int.Parse(textBox1.Text);
weight = float.Parse(textBox2.Text);
Vehicle v = new Vehicle();
v.SetVehicle(wheels, weight);
v.GetVehicle();
}
SetVehicle()メソッドでは、車輪及び可変量の二組が存在します。車輪と重み付けの車両の2人のメンバーのためのデータのセット、及びGetVehicle
(3)プロパティを定義します
C#クラス属性を定義することができますキーワードのセットによって定義された属性値を設定するための1;別のキーワードgetで定義された属性値を、取得します。前記コードブロックは、読み取り専用または書き込み専用プロパティを設定するために無視されてもよいです。
访问修饰符 数据类型 属性名
{
set
{
... //属性的set代码块
}
get
{
... //属性的get代码块
}
}
namespace WindowsFormsApplication12
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
float x, y;
string msg1, msg2;
x = float.Parse(textBox1.Text);
y = float.Parse(textBox2.Text);
Point p = new Point();
p.MyX = x;
p.MyY = y;
msg1 = "您输入的坐标为(" + p.MyX.ToString() + "," + p.MyY.ToString() + ")";
label3.Text = msg1;
msg2 = p.ReadXY;
MessageBox.Show("您输入的坐标为" + msg2 + "!");
}
}
class Point
{
private float x; //x坐标
private float y; //y坐标
public float MyX //定义属性MyX
{
set
{
x = value; //提供对数据成员x的赋值
}
get
{
return x; //提供对x的访问
}
}
public float MyY
{
set
{
y = value;
}
get
{
return y;
}
}
public string ReadXY
{
get
{
return "(" + x + "," + y + ")";
}
}
}
}
プロパティは、実際には、クラスのアクセスプライベートデータメンバへの道を提供します。だけでなく、属性を定義するデータメンバへのアクセスの問題を解決するだけでなく、強力な動作制御を提供します。
1.3、オブジェクトとそのメンバーへのアクセス
オブジェクト指向プログラミングでは、任意のは、事前に定義したり、後でオブジェクトとして知られて使用することができます前に、カスタムクラスをインスタンス化しなければならないこと「を定義し、使用後、」原則を遵守しなければなりません。
ステートメント(1)オブジェクト
类型 对象名=new 类名();
アクセスの(2)のメンバー
一般的にオブジェクトにアクセスするために必要なことで定義されたクラスのメンバー、異なる種類のデータのメンバー、そのアクセス異なる形。
データメンバ:オブジェクトのデータメンバ
プロパティ:オブジェクトプロパティ
方法:オブジェクトのメソッド
イベント:より複雑な、公式のMSDNのヘルプドキュメントに記載されています
例:学生のクラスのメソッドを確立するためには、writeメソッドでデータ読み取り()、データ出力を読み取ることができます。
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
string id, name;
float score;
Console.Write("请输入学号:");
id = Console.ReadLine();
Console.Write("请输入姓名:");
name = Console.ReadLine();
Console.Write("请输入得分:");
score = float.Parse(Console.ReadLine());
student s = new student();
s.SetInfo(id, name);
s.MyScore = score;
Console.WriteLine("\n======以下是输出=======\n");
Console.WriteLine(s.OutPut());
Console.WriteLine("\n按下任意按键结束程序:");
Console.ReadKey();
}
}
class student
{
private string sId; //学号
private string sName; //姓名
private float score; //分数
public void SetInfo(string sId,string sName) //定义方法SetInfo()设置学号和姓名
{
this.sId = sId;
this.sName = sName;
}
public float MyScore //定义属性MyScore
{
set
{
score = value;
}
get
{
return score;
}
}
public string OutPut() //定义方法OutPut,提柜对所有数据成员的格式化输出
{
return "学号:" + sId + " 姓名:" + sName + " 得分:" + score;
}
}
}
1.4コンストラクタとデストラクタ
(1)コンストラクタ
コンストラクタは、そのオブジェクト文でデータメンバに割り当てることができます。新しいキーワードと組み合わせて使用すると、オブジェクトを宣言します。