カプセル化は、3つの主要なオブジェクト指向プログラミング(OOP)の機能他の2つは多型性と遺伝性です。これらは一緒になってPLOの基盤を形成し、これらの3つの原則を使用して、さまざまな言語でプログラムを作成する可能性の全範囲を決定します。オブジェクト指向言語は、それらを明確にフォローする必要があります。
オブジェクト指向プログラミングは、その宇宙の3つの柱に立っています:
カプセル化(プログラミング)エンドユーザーからプログラムコードの一部を隠すためのアクセス修飾子の使用。その下には、開発者または継承するオブジェクトを意味します。
この定義は、カプセル化の下でそれはプログラムコードの全部または一部の隠蔽を意味する。 「カプセル化」の概念の本質は、アクセス修飾子の操作です。これは、開発者自身が、どのプロパティ、メソッド、クラスをクライアントクラスに対してオープンするのか、どのメソッド、クラスを隠すのかを決定することを意味します。
C#( "C Sharp")では、指定されたもの(後者を除く)に加えて、まだそのような修飾子があります:
カプセル化の仕組みにより、プログラムコードに対する外部の影響や、それに埋め込まれたデータの不正使用を排除することができます。これは、コードとデータを1つにまとめることによって行われます。
ソフトウェアモジュールの実装とプログラミングでコードに埋め込まれたデータは、オブジェクトと呼ばれます。カプセル化との関連の本質は、問題のメカニズムの保全性を維持し確実にすることができるのがこの技術であるという事実にあります。
カプセル化は、エンコード処理を簡素化する方法です。数多くのコード行が "舞台裏で"残り、メインクラスの作業ではオブジェクトのインスタンスが使用されます。
カプセル化はまた、データ保護の考え方を実現します。オブジェクト指向プログラミングのプログラムロジックは、ほとんどのデータがアクセス修飾子private(private、private)またはprotected(protected)によって隠されるという事実に基づいています。外部の世界であるクライアントは、ソフトウェアモジュールの実装を偶然または意図的に破損することはできません。実際にはこれを行うことは非常に簡単なので、カプセル化は非常に良い原則です。
クラスは、カプセル化の基本単位として、データを記述し、これらのデータで操作できるコードを含んでいます。オブジェクトを構築するための基礎でもあります。後者は、クラスのインスタンスとして表されます。
カプセル化(プログラミング)の例:
*注:
descriptionは、メソッド/プロパティ/変数の説明です。つまり、プログラム内で実際に何が起こっているかについてコメントしています。タグを開く/閉じるとデモンストレーション
システムを使用する。
名前空間OOPLibrary.Auto
{
///
///このクラスは、自動車の特性と動作を記述することを目的としています
///
パブリッククラスAuto
{
///
///このプロパティへの外部介入は、開発者が余分であると考えられるため、書き込むために作成された変数、車の年齢
///これは、修飾子private、すなわちプライベート・プライベート・アクセス(上記の説明を参照)でマークされています。
///
プライベートint _age;
///
///車が現在移動しているかどうかを示すブール変数(2つの可能な値 - はいまたはいいえ)
///エンドユーザーには、彼が誰であろうと、誰にも開放されてはいけません。したがって、この変数にはプライベートアクセス修飾子 "privat"が割り当てられます。
///
プライベートbool _isMoving;
///
///この文字列変数には、車の色に関する情報が含まれている必要があります。外部からの影響を受ける可能性があります
/// publicアクセス修飾子 "public"が色として選択されたためです。
///
パブリック文字列Color;
///
///この特定のケースでは、車の名前を変更することもできます
///は、public修飾子(クラスまたはアセンブリに関係なく、誰でも公開アクセス権)を割り当てます。
///
public string Name;
///
///クラスコンストラクタが開かれ、変数で表現され、前に指定されたすべてのプロパティが値を取得する
///
public Auto()
{
_age = 5;
_isMoving = false;
Color = "Purple";
名前= "Skoda Octavia";
}
///
///このメソッドは、autoの時代の戻り値を実装します。それはなぜ必要なのですか?
///プライベートアクセス修飾子は、クライアントがそれを変更することを可能にしません。
///
///車の年齢を返します。
public string GetAge()
{
"現時点では、選択されたマシンは" + _年+歳 "です。";
}
///
///車が動かない場合は、このメソッド動きの開始を実現する。車の状態(走行中かどうか)を示す変数がチェックされ、結果に応じて対応するアクションが実行されるか、または対応するメッセージが表示されます。
///
public void Start()
{
if(_isMoving)
{
Console.WriteLine( "移動は既に開始されています");
}
else
{
_isMoving = true;
Console.WriteLine( "開始するには、注意..前方に行こう!");
}
}
///
///移動が開始された場合、このメソッドは停止します。前述の場合と同じプログラミングロジック。
///
public void Stop()
{
if(_isMoving)
{
_isMoving = false;
Console.WriteLine( "Stop、machine");
}
else
{
Console.WriteLine( "エラー:車はすでに設置されており、移動しません");
}
}
///
///車両の動きがある場合は左に曲がる
///
public void MoveLeft()
{
if(_isMoving)
{
Console.WriteLine( "左に回した");
}
else
{
Console.WriteLine( "エラー:車は停止していますが、回転機能は現在使用できません");
}
}
///
///同様の方法で右回転
///
public void MoveRight()
{
if(_isMoving)
{
Console.WriteLine( "右折しました");
}
else
{
Console.WriteLine( "エラー:車はまだ移動していません。"右に曲がることは現在不可能な動作です。 ");
}
}
}
}
</ p>