20

通常、オブジェクト指向プログラムにはさまざまな種類のオブジェクトが含まれており、それぞれが管理する特定の種類の複雑なデータに対応しているか、銀行口座、ホッケー選手、ブルドーザーなどの現実世界のオブジェクトまたは概念に対応している可能性があります。

モジュラー プログラミング (「トップダウン デザイン」および「段階的改良」とも呼ばれる) は、プログラムの機能を独立した交換可能なモジュールに分離することを強調するソフトウェア設計手法であり、それぞれが目的の 1 つの側面のみを実行するために必要なすべてを含むようにします。機能。

私が考えることができる違いは、モジュール式プログラミングのように、1 つの特定のものに対して 1 つのモジュール (1 つのオブジェクト) しか持たないことになっているのに対し、1 つのクラスに複数のオブジェクトを持つことができるということです。

ここに例があります(私が理解している方法)

プログラムがあるとします。いくつかの入力フィールドとボタン。次に、いくつかの計算が行われ、プログラムは何かを出力します。

このプログラムは、入出力モジュールと計算モジュールの 2 つのモジュールを持つことができます。

ただし、プログラムがレイア​​ウト (画面に表示されるすべてのオブジェクトを含むクラス) とロジック部分 (計算の深さに応じてクラスまたは関数になる可能性がある) を持たない理由がわかりません。 )。

この例は、モジュラー プログラミングとオブジェクト プログラミングの両方の観点から「正しい」ものですか? モジュラーと oop を一緒に使用できますか? そして、これら 2 つのパラダイム/プログラミング スタイルの大きな違いは何ですか?

4

1 に答える 1

26

モジュールはクラスとして実装できます。これは確かに正しいです。ただし、モジュールはプログラムの論理的に分離された部分であることを意図しており、クラスのさまざまなオブジェクトを持つことができるため、モジュールをクラスとして持つことは意味がありません。モジュラー システムを作成し、モジュールにクラスを使用する場合、それらをすべてシングルトンにします。

あなたの例では、オブジェクト指向プログラミングでは、入力フィールドとボタンを定義するクラス、または電卓として使用されるクラスがあるでしょう。さらに深く掘り下げて、SumCalculator、ProductCalculator などとして実装できる Calculator インターフェースを定義することもできます。また、ユーザーがプログラムによって実行されるさまざまな計算を選択できるように、いくつかのファクトリを投入することもできます。はい、LayoutModule (InputField および Button タイプのオブジェクトを追跡する) や LogicModule (Calculator 実装を追跡する) などのシングルトン クラスを使用できます。

モジュール式プログラミングは、これらの 2 つ (またはそれ以上) のモジュールがあることを意味するだけで、それらが達成することをどのように達成するかについては何も述べていません。モジュールは、オブジェクト指向アプローチを使用することも、まったく使用しないこともでき、手続き型の C スタイル プログラミングを使用できます。クラスを介したモジュラー プログラミングについて説明した方法は、モジュールを分離する方法にすぎません。たとえば、それらをクラスとして分離したり、複数のコンパイル単位にまたがる関数として分離したりできます。それはあなたの選択です。

オブジェクト指向プログラミングは、プログラムがオブジェクト指向であることを意味します。アプリケーション内のモジュールについては何も述べていませんが、アプリケーション内のいくつかのアイデアを表す論理的な部分は、クラスとオブジェクトを介してモデル化する必要があります。

このように、2 つのアプローチを一緒に使用することができます。また、モジュール化することを決定した場合、通常、オブジェクト指向の選択により、これらのモジュールがクラスとその関係を介して定義されることが課せられます。

于 2013-08-03T22:22:53.587 に答える