コンピューター, プログラミング
PLO - これは何ですか? オブジェクト指向プログラミングの基本原則
なぜオブジェクト指向プログラミングは、ほとんどのプロジェクトで好まれますか? PLOは、その複雑さに対処する効果的な方法を提供しています。 代わりに、実行可能な命令のシーケンスとしてプログラムを考慮するのではなく、特定のプロパティを持つオブジェクトのグループとして、それを表しており、特定のアクションでそれらを生産します。 これは明確に、より信頼性とlegkosoprovozhdaemyhアプリケーションになります。
基本原則オブジェクト指向プログラミング(OOP)は制限が既存のアプローチで発見されているので、形成します。 その中でも - データへの無制限のアクセスと変更に制限を課すリンク、多数。 彼らの意識とどのようなOOPプログラミングとその利点は何を理解することが重要な原因。
手続き型言語
C、パスカル、FORTRAN、および同様の言語は手続き型です。 、データを取得するために6分割番号、表示された結果を追加します。それは、オペレータのそれぞれが何かをするためにコンピュータに指示、です。 付録手続き型言語は、命令のリストです。 それが小さい場合、(多くの場合、パラダイムと呼ばれる)は、他の組織原理は必要ありませんされていません。 プログラマは、命令のリストを作成し、コンピュータがそれらを実行します。
機能の分離
アプリケーションは、ターンの面倒リストになったとき。 彼らがグループ化されるまで、数は数百の指示よりも多くを理解することができます。 このため、この関数はそのクリエイターへの応用がより理解させるための方法でした。 いくつかの言語では、同じ概念がサブルーチンや手続きを呼び出すことができます。
アプリは、明確に定義された目的とインターフェースをそれぞれ有する、機能に分割されます。
手順の分離のアイデアは、モジュールと呼ばれるオブジェクトの大きなグループに拡張することができるが、原理は類似している:文書のリストを運ぶ成分のグルーピング。
機能やモジュールの分離 - PLOになるまで数十年のためにそれはパラダイムをもたらす構造化プログラミングの隅石の一つ。
構造化プログラミングの問題
アプリケーションが大きくなるにつれ、 構造化プログラミングは、 問題が発生し始めて。 プロジェクトは、あまりにも複雑になります。 グラフィックスを移しました。 これは、プログラマーの多数を必要とします。 複雑さが成長してきました。 アップ撮影費用は、スケジュールがさらにシフトし、そして崩壊が来ました。
障害の原因の分析は、手続きのパラダイムの欠陥を明らかにしました。 かかわらず、どのようにうまく構造化された実装のプログラミングアプローチの、大規模なアプリケーションは、過度に複雑になります。
手続き型言語に関連したこれらの問題の原因は何ですか? まず、関数は、グローバルデータに無制限にアクセスできます。 第二に、無関係な手続きと悪い値は、現実の世界をシミュレートします。
我々は、在庫の会計ソフトウェアのコンテキストでこれらの問題を考えると、グローバルデータの最も重要な要素の一つは、のSKUのセットです。 異なる機能は、それは、変更を表示し、そうされ、新しい値を入力するためにそれらを参照することができます。D.を
無制限のアクセス
書かれたプログラムは、例えば、Cにおいて、データの2種類があります。 ローカル関数内で隠され、他の手順が使用されていません。
2つの以上の機能が同じデータへのアクセス権を持っている場合は、後者はグローバルでなければなりません。 このような、例えば、被験者についてのアカウント情報に入れられます。 グローバルデータは、使用可能な任意の方法かもしれません。
大規模なプログラムでは、多くの機能と多くの世界的な要素があります。 手続きのパラダイムの問題は、それがそれらの間の潜在的なリンクの大きい数を導くことです。
このような多数の接続には、いくつかの困難の原因となります。 まず、プログラムの構造の理解を複雑にしています。 第二に、困難は変更される場合があります。 グローバルデータ項目の変更は、それへのアクセス権を持つすべての機能の調整が必要な場合があります。
例えば、誰かが会計プログラムで占めオブジェクトコードは5桁の数字ではない構成する必要があり、および12から。これは、変更が必要になりますことを決定した データ型 ロングショートからを。 機能コードは、新しいフォーマットで動作するように修正されなければならないと今関連します。
要素は、より大きなアプリケーションで変更された場合は、手順はそれらへのアクセスを持っているものとは言い難いです。 でも、この数字なら、それらを変更すると、他のグローバルデータと誤動作することがあります。 すべてが他のすべてに接続されているので、一箇所の変更は、別に裏目に出ます。
現実世界のモデル化
手続きパラダイムの第二の、より重要な問題は、その場所固有のデータや機能が不十分な現実の世界で物事をシミュレートすることです。 ここでは、そのような人や車などのオブジェクトを扱っています。 彼らはデータなしや関数のようなものです。 複雑な実世界のオブジェクトは、属性や行動を持っています。
属性
電源やドアの数 - 人々のための属性(プロパティとも呼ばれる)の例としては、目の色とポストの名前、車のためです。 それが判明したように、プログラム内のデータに相当現実世界の属性。 それらは、青などの特定の値は、(目の色)または4(ドアの数)を有します。
行動
行動は - 実世界のオブジェクトは影響のいくつかの種類に応じて生成されているということです。 あなたが昇給のために上司に言わせれば、答えは「イエス」かで「いいえ。」 あなたがブレーキを押すと、車が停止します。 そして、発話行動を停止する例です。 手順と同様の挙動:何かをすると呼ばれ、それがそうされます。 このように、自分自身によるデータと関数は、実世界が効率的にオブジェクトをモデル化しません。
アドレッシング
OOPにおけるオブジェクトは、データと関数のセットとして表されます。 C ++のメンバ関数と呼ばれる唯一の手順は、その値を得ることを可能にします。 これらは隠され、変更から保護されています。 意味と機能を1つにカプセル化されています。 カプセル化とupryatyvanie - オブジェクト指向言語の説明では基本的な用語。
あなたがデータを変更したい場合は、機能が彼らと対話を正確に知っています。 他の手順は、それらにアクセスすることはできません。 これは、書き込み、デバッグ、およびプログラムの維持を簡素化します。
アプリケーションは、典型的には、メンバ関数を引き起こし、互いに相互作用する複数のオブジェクトで構成されています。
今日では、最も広く使われている言語のOOP(オブジェクト指向プログラミング) - C ++(プラスプラス)。 Javaでは、このようなポインタ、テンプレートやC ++よりも、それはそれほど強力で多用途になり、多重継承、などいくつかの機能を欠いています。 C#が、まだC ++の人気に達していません。
C ++におけるいわゆるメンバ関数は、Smalltalkのようないくつかの他のオブジェクト指向言語のメソッドを呼び出したことに留意すべきです。 データ項目は属性と呼ばれます。 オブジェクトのメソッドを呼び出すと、彼にメッセージを送っています。
アナロジー
あなたは、企業部門のオブジェクトを想像することができます。 ほとんどの組織では、従業員はその後、スタッフ、以下の過充電給与、小売業に従事し、週に1日は動作しません。 各部門は明確に割り当てられた職務を、独自のスタッフを持っています。 独自のデータがあります:賃金の指標、販売、経理担当者、部門内などの人々は、自分の情報と連携します... 会社の分割は、それゆえ、その動作の制御を容易にし、データの整合性を維持します。 会計を担当して給与計算。 あなたが7月に南支店に支払わ賃金の総額をお知りになりたい場合は、アーカイブを詳細に調べる必要はありません。 その人がデータにアクセスし、要求された情報への応答を送信するまで待機し、責任者にメモを送信するのに十分です。 これは、法令遵守や外部の干渉がないことを保証します。 同様にPLO内のオブジェクトは、組織のアプリケーションを提供します。
オブジェクトの向きが作業プログラムの詳細には適用されないことを忘れてはなりません。 ほとんどの命令C ++の演算子は、実際には、Cなどの手続き型言語に対応し、C ++でのメンバ関数だけ広い文脈が指示手続きまたはオブジェクト指向かどうかを確立することができますC.に機能に非常に似ています。
OOPでのオブジェクト:定義
代わりに、別の関数にその部門についての質問のオブジェクト指向言語でのプログラミングの問題を考慮すると、分離施設での問題があります。 OOPの考え方は、アプリケーションを開発する方がはるかに簡単です。 これは、ソフトウェアと実際のオブジェクトの類似性によるものです。
OOPでのオブジェクトは、どんなものがありますか? ここではいくつかの一般的なカテゴリがあります。
OOPでの物理オブジェクト - です:
- トランスポート・フロー・モデル。
- 回路設計プログラム内の電気部品。
- 国の経済モデル。
- 航空管制システムの航空機。
環境、ユーザーのコンピュータの要素:
- メニュー;
- 窓;
- グラフィックス(線、矩形、円)。
- キーボード、マウス、プリンタ、ディスクドライブ。
人:
- 労働者;
- 学生;
- 顧客;
- 売り手。
情報:
- 簿記;
- 個人的な問題;
- 辞書;
- 入植地の緯度と経度のテーブル。
現実世界のオブジェクトのコミュニケーションとPLOは、彼らがプログラミングに革命をもたらしている機能やデータの組み合わせの結果でした。 そこに手続き型言語でのこのような接戦。
クラス
PLO内のオブジェクト - クラスのメンバー。 それは何を意味するのでしょうか? プログラミング言語は内蔵されている データ型。 タイプ INT、T。E. C ++で予め定められている整数。 あなたはint型の変数の任意の数を宣言することができます。
同様に、一つのクラスによって定義された複数のオブジェクト。 これは、それらを作成していない、機能やその施設に含まれるデータを定義するだけでなく、int型変数を作成しません。
PLOのクラス - 類似したオブジェクトの数の説明。 プリンス、スティング、マドンナ歌手です。 彼らは適切な特性を持っている場合、そこにその名前の誰もありませんが、人はそう呼ぶことができます。 OOPオブジェクト - このインスタンス。
継承
生活の中で、クラスはサブクラスに分類されています。 例えば、動物は、両生類、哺乳類、鳥類、昆虫など。D.に分かれています
分裂のこの種の原則は、各サブクラスは、クラスの持つ共通の特徴を持っているということです。 すべての車は、車輪とモーターを持っています。 これは車の定義特性です。 各サブクラスの一般的な特性に加えて、独自の特性を有しています。 多くのバスの座席やトラック重い荷物を運ぶためのスペースを持っているがあります。
同様に、ベース・クラスは、それらが付加して独自の特性を共有するように定義することができるサブクラス親いくつかの誘導体であり得ます。 手続き型プログラムを簡素化する機能、などの継承。 コードのいくつかの部分はかなり同じことをやっている場合は、共通の要素を抽出し、1つの手順でそれらを置くことができます。 3つのアプリケーション領域は、共通のアクションを実行する関数を呼び出すことができますが、彼らが生産し、独自の操作ができます。 同様に、ベース・クラスは、誘導体の群に共通の情報を含んでいます。 同様の機能は、オブジェクト指向プログラムの継承を減少させ、その要素の関係を明らかにする。
リサイクル
クラスが作成され、デバッグが終了したら、あなた自身のアプリケーションで再利用するために他のプログラマに転送することができます。 これは、異なるアプリケーションに含めることのできる関数のライブラリのようなものです。
OOPでは、継承は複数回使用の考え方を拡張したものです。 既存のクラスから、それを変更することなく、我々は他の機能を追加した新しいものを形成することができます。 既存のソフトウェアの再利用のしやすさ - PLOの重要な利点。 初期投資の増加収益性を提供すると考えられます。
新しいデータ型を作成します
新しいデータ型の作成に適した施設。 プログラムは、2次元の値を使用すると仮定(例えば座標または緯度及び経度)、およびそれらに対する演算の動作を表現する欲求を持っています。
POSITION1 =位置+起源、
ここで POSITION1、位置 及び原点-独立した数値のペア。 これらの2つの値を含んでいるクラスを作成し、そのオブジェクトの変数宣言は、新しいデータ型を作成します。
ポリモーフィズム、オーバーロードします
上記算術位置で使用=(等しい)演算子、+(プラス)が作用するだけでなく、内蔵intなどの種類、ありません。 位置オブジェクト、および他の人が。所定の、ソフトウェアで設定されていません。 どのようにこれらの事業者はそれらを処理する方法を知っていますか? 答えは、新しい行動が彼らのために設定することができるという事実です。 これらの操作は、メンバー関数のクラスの位置になります。
多型と呼ばれるものを、彼らが作業しているに応じて、オペレータまたは手順を使用します。 このよう+などのオペレータ、または=がある場合は、新しいデータ型と仕事をする機会を得る、それが過負荷になっていることを述べています。 PLOでの過負荷 - 多型の一種。 それは、その重要な機能です。
PLO「ダミーのためのオブジェクト指向プログラミング」の本は、誰もが、より詳細には、このトピックに慣れることができます。
Similar articles
Trending Now