構造化プログラミングとオブジェクト指向プログラミング

初期のプログラミング、プログラミングのフローチャートとトップダウン方式では。この設計方法では、プログラマは、小さなタスクごとに小さなタスクに大きな問題、および書き込み処理(または機能)となります。最後に、プログラマは、プログラムの流れに応じて、あなたがしたい他のプロシージャを呼び出す、プログラムの流れを開始するには、マスター・プロセスを記述します。プログラミングのこのタイプとして知られている構造化プログラミング構造化プログラミング言語が広く使用されている多くの、最も顕著には、C言語であります。

構造化プログラミングでは、タスクの周りのプログラムは、設計によって解決されます。プログラミングプロセスパラメータによってプロセスへのデータ転送中に必要な特定のタスクを実行するために準備するプロセスです。渡されたデータを表示および変更する手順、および値は、呼び出し元のプロセスに戻すことができます。

1970年代の後、OOP(オブジェクト指向プログラミングと呼ばれる、 OOP)が人気となりました。OOPは、コンピュータアプリケーションの開発に完全に異なるアプローチを採用しています。この方法では、プログラムが設計する課題を解決するための周りではなく、対象問題を中心にデザインで解決すべき。各オブジェクトについて、我々は、プロパティとオブジェクトの振る舞いを記述するためのクラスを記述します。これは、オブジェクトクラスの説明です。同様に、オブジェクトは、クラスのインスタンスです。プロパティおよびコンポーネントの動作からのオブジェクト。属性オブジェクトは、特性を持ち、行動オブジェクトがアクションを行うことができます。オブジェクトの各属性は、クラスのメンバ変数として表されます。各オブジェクトの振る舞いは、クラスのメソッドになっています。

構造化プログラミングとオブジェクト指向プログラミングとの違いを示すために、我々は理解するための給与計算プログラムを実行するために簡単な例を使用します。

同社は、給与計算プログラムを書くために私たちを望んでいる場合。同社の従業員は毎週支払われますが、スタッフの給与体系が異なっている:一部の従業員の賃金をに従ってか、日常的に、報酬は週労働時間に基づいて計算され、いくつかの賃金は年俸を固定されています。また、賃金の計算は、社会保障、メディケアと所得税から控除されます。

我々はプログラミングに構造化プログラミングのアプローチを使用する場合、プログラムは、多くのプロセスの給与計算タスクを書き込みます。例えば、我々はcomputePay(呼び出されたプロシージャを書くことができます)従業員の給与データを入力し、その賃金に戻ることです。またcomputeMedicareTax(と呼ばれるプロセス)ように健康保険、社会保障との、computeSSTax()の計算を書くことができます。各プロセスは、渡された従業員データを必要とします。あなたはcomputePay()プロセスを呼び出したい場合たとえば、私たちは、渡された(時間給は、そのような労働時間など)報酬情報をスタッフにする必要があります。プログラミング構成されているプロセス間でのデータ転送が頻繁に発生します。呼び出し元のプロセスに渡されたデータを返すデータを変更するプロセス。

スムーズに各作業を可能にするために、従業員の賃金プログラムの発展に伴い、我々はプロセスを追加し、変更する必要があります。あなたはcomputePay()プロセスを書き始めるときたとえば、私たちは、従業員の二種類があることがわかります:給与とスタッフは、従業員の年俸を取るために時間がかかります。この場合、我々は2 computePay()プロシージャ、年俸を取るために支払われた時間と従業員のための1つを取るために、従業員のための1つを記述する必要があります。

今、私たちは、異なる視点からの従業員のための手順の賃金よ。今回は、小さなタスクを実行するよう発行しませんが、オブジェクトから開始して、プログラムを書くためのオブジェクト指向プログラミングの方法により、ある問題領域を決定します。

オブジェクトは、問題領域、事やエンティティに登場するすべての人物することができ、単にそれは、入れて「何か。」給与計算例では、従業員の賃金を与えるので、スタッフ(従業員)が対象です。従業員は会社のために働いて、その会社が他の目的です。より詳細な分析の後、我々は、給与計算部門も対象であることがあります。プログラミングの開始後、我々は他のより明白なオブジェクトの初期設計でそれを見つけるでしょう。

問題のドメインオブジェクトが発見された後、我々は、各オブジェクトのプロパティと動作を記述するためのクラスを記述します。たとえば、私たちは、従業員の属性や行動に対応するために、Employeeクラスが必要になります。

Employeeオブジェクトのプロパティは、その上何の従業員、例えば、名前、住所、社員番号、社会保障番号、およびを指します。各プロパティは、メンバ変数Employeeクラスによって表されます。

ターゲットオブジェクトの従業員の行動は、従業員が何ができるかである、または私たちは、これらのオブジェクトを何をしたいのか。従業員は多くのことを行うことができますが、プログラムのための賃金は、我々は彼らの支払いを計算できるようにする必要があり、その後、給料を送信するために週にそれらを郵送しました。これらの望ましくない行動はEmployeeクラスのメソッドとなっています。

会社の各従業員のために、私たちはEmployeeオブジェクトをインスタンス化します。あなたは50人の従業員を持っている場合は、50 Employeeオブジェクトを必要としています。メモリには、その上の50名、住所、給与とがあります。各従業員は区別することができるので、私たちは50の参照変数の参照型の変数を必要としています。バックでは、我々は、オブジェクトをインスタンス化し、それへの参照を割り当てる方法が表示されます。

注意:オブジェクト指向プログラミングと構造化プログラミングは、メソッドの間で呼び出すことで、データに送信されますが、両者の間にかなりの違いがあります。

プログラムの構造は、タスクを実行するために必要なデータを処理する場合は、必要なデータは、プロシージャに渡されます。メソッドにデータを渡す必要がなく、必要なデータにアクセスするためのオブジェクト指向プログラミングでは、私たちの使命のオブジェクト、方法。

従業員の報酬を計算する場合たとえば、私たちはすることができ、従業員()メソッドの代わりに、computePay Employeeオブジェクトを呼び出し、computepay()メソッドに関連するEmployeeオブジェクトを渡す必要はありません。それは時間の従業員オブジェクトごと報酬、給与、および他の必要なデータを含む、すべてのメンバ変数の従業員オブジェクトにアクセスできるようにcomputePay()メソッドは、Employeeオブジェクトの一部であるため。

おすすめ

転載: blog.csdn.net/qq_45097560/article/details/90757039