これは、基本ユニット手順である
クラスは、属性および方法を含む;
クラスは、テンプレートであるオブジェクトプログラムの実行です。
よくある質問:
(1)三オブジェクト指向機能
1)によって開発されたパッケージ()アップ
- 内部実装の詳細を隠す、モジュール開発者は、内部の実装と言い訳要件を気に、唯一のインタフェースモジュールの呼び出しに関係の発信者。
- 利点:セキュリティ保証(回避コードリーク)、迅速なアプリケーション(直接適用)、チームワーク(同じ仕事より)。
- アプリケーション:プログラムは、基本ユニットがパッケージ化され、基本的な単位であるが、等しくクラスモジュールパッケージであってもよいです。
2)継承
- 既存のコードを再利用。
- 利点:更新、どこでも更新;欠点:簡単に複雑な関連。
- アプリケーション:オブジェクト、フォーム
3)多型
- 別の要求に応じたオブジェクトのインタフェースが異なる応答を作ってみましょう。
- 利点:プログラムを維持するために簡単に、拡張することは容易です。
- アプリケーション:多型継承、多型インターフェイス(シンプル植物、抽象工場)。
注:多型は、後に詳述します
OPP原理(2)の開発
1)単一責任の原則(オブジェクト明確な責任の原則)
- 要件:オブジェクトのみ、我々はより多くの、プログラムが不安定である(高い凝集、低カップリング拡張子)の変化原因あまりにも簡単責任に焦点を当てる必要があり、一つのことを行います。
2)原則(オープンクローズドのコア原則)
- 要件:需要は時に変更されたクラスのデザイン極力変更しますが、拡張クラスによって行われます。つまり、変更、開いている拡張子を閉じました。
3)依存関係逆転の原則(OPPエッセンス)
- 要件:インターフェイスベースのプログラミング、ハイレベルモジュールの呼び出しインタフェースモジュール底実装は、基礎となる変更のインターフェースを直接レベルに影響を与えます。
4)インタフェース偏析原理
- 要件:可能な限り専用の小さなインターフェースを使用して、代わりのインターフェースが複雑すぎる避けるために、全インタフェースを使用しました。
5)リヒター置換原則
- 要件:継承は、サブクラスでは、仮想マシンを動的に特定のサブクラスはポリモーフィズムを実現するために、ベースの親クラス変数オブジェクトを見つけることができます親クラスを置き換えることができます。
(3)オブジェクトとクラス
オブジェクト:
存在する任意のエンティティがオブジェクトであり、これは、2つの特性を備えて静的および動的を含む、本当に存在している、
静的特徴:それ自体をオブジェクトデータを格納するためのオブジェクトの属性を表し、
動的特徴:説明するために、オブジェクトのメソッドを表しますどのようなオブジェクトを行います。
オブジェクトの役割:
データストレージ1内のオブジェクトの属性;
2.ソフトウェア機能は、方法によって達成されます。
カテゴリー:
クラスと呼ばれる単位で整理同じタイプ、プロパティ、メソッド、抽象の合計が、
オブジェクトは実際のものと同じクラスの個体です。
クラスとオブジェクトの違い
- クラス定義は、実際には、このモデルでは、このような「車」として抽象モデル、、、「属性」と「方法」の定義です。
- オブジェクトは、このクラスのモデルに従って実際に、特定のエンティティを作成するには、各プロパティには、特定の「価値」を持っています。
オブジェクト(4)クラスの定義を使用して
クラス仕様の1)定義:
例を見てください:
namespace Demo
{
/// <summary>
/// 学生类
/// </summary>
class Student
{
// 私有字段:学员
private int studentId;
// 私有字段:学员姓名
private string studentName = "";
//属性:学号
public int StudentId
{
get { return studentId; }
set { studentId = value; }
}
//属性:学生姓名
public string StudentName
{
get { return studentName; }
set { studentName = value; }
}
//获取学员信息
public string GetStudent()
{
//这里直接使用的是字段
string info = string.Format("姓名:{0} 学号{1}", studentName, studentId);
return info;
}
}
}
namespace Demo
{
class Program
{
static void Main(string[] args)
{
//创建对象
Student objStudent = new Student();
//给对象属性赋值
objStudent.StudentId = 10001;
objStudent.StudentName = "guobaoyan";
//调用对象方法
string info = objStudent.GetStudent();
Console.WriteLine(info);
//类的外面对字段的访问都是通过get和set方法
Console.WriteLine(objStudent.StudentName);
Console.ReadKey(true);
}
}
}
2)クラス属性とメソッドは、
- クラステンプレートでクラスを呼び出すことにより、1つ以上のオブジェクト、属性またはオブジェクトを作成します。
- オブジェクト、値に割り当てられます。オブジェクト名のプロパティ名;.
- メソッドを呼び出します:オブジェクトはメソッドの名前です。
(5)フィールド属性
1)アクセス修飾子
アクセス修飾子:
アクション:アクセスへのオブジェクトのプロパティやメソッドを制限する範囲(内部クラスの外、など)
の種類:民間(プライベート:外から見える)公共(パブリック:外部から見えます)
注:デフォルトのプライベート(内部使用のみクラス);公共のために定義されるオブジェクトのニーズへのアクセスの形で希望
2)フィールド
一般に、異なるクラスは内部使用のためにある方法;そのためprivate修飾子を使用します。フィールドは、「メンバ変数」と呼ばれる
フィールドの命名命名法は、一般的にラクダを使用します
フィールドの人気の理解:
- 民営化:フィールド私有財産と同様に、個人的な使用のために、民間の修正の使用;
- 標準を追加します:いくつかのフィールド、決定するために書かれたプログラムでクラスを追加します。
プロパティ
属性は、プライベートフィールド(GET、セット)に対応して操作されています。
ロールの属性:
- 処置:静的属性の主な用途は、オブジェクト指向設計の機能でオブジェクトを記述する。
- 要件:パスカル命名法は、一般的に修飾されたpublicを使用し、使用、およびデータ・フィールドの同じ種類れます。
理解のプロパティ:
- プロパティの入り口が実際に民間分野への外部からのアクセスで、プロパティ自体は、任意のデータを格納しません。
- フィールドの割り当てに実際に私有財産ポイントに割り当て、それらを。
- プロパティの値は、実際にプライベート視野点の属性を取得する値を読み取ります。
プロパティデータの不正使用を避けます
getおよびセットではとても効果的に不正なデータを防ぐために、我々が必要とするあらゆる論理的に追加することができます。
、読み取り専用属性が設定されている使用書き込み専用
決まった方法はありません
対応するプライベートフィールドない性質ありません。
対応するプライベートフィールドではなく、論理的な計算過程なし
比較属性フィールド:
フィールド(メンバ変数):
- 主にデータ交換のためのクラスの内部で使用するために、一般的に専用フィールドです。
- フィールド値があってもよい、割り当てることができる;(内部クラス)
- フィールドではなく、オブジェクト指向が提唱されている合計フィールドを使用する、パッケージの属性フィールドを設定し、外部の時間にデータを提供します。
属性:
- 属性データは、一般的に、多くの場合、それは公開され、外側の、静的特性は、主にオブジェクトを記述するために使用されている提供することです。
- 自分のロジックによると、セキュリティを向上させる、書き込み専用、読み取り専用に設定されています。
- 内部属性は、不正取引を防止するために必要なビジネスロジックに加えてもよいです。
自動プロパティ:
プライベート・フィールドが直接操作することはできません。ビジネスロジックを追加しないで、設定することはできません読み取り専用、書き込み専用、唯一の標準フォームに適用されます。