- メインおよび補助モジュール
- モジュール式プログラミング機能
- モジュール性
- 関数定義
- 変数のスコープ
- 手続き型です
- モジュール式プログラミングの例
- 実際のモジュール性
- Javaの関数
- 利点
- 独立したプロジェクトプログラミング
- 効率的なプログラム開発
- モジュールの複数使用
- デバッグと変更が容易
- 短所
- 過度にオブジェクト指向の構造
- モジュールが小さすぎる
- 理由もなく分解する
- 用途
- C言語
- 参考文献
モジュールは、プログラムは、管理論理的及び機能的モジュールと呼ばれる多数の小さなブロックまたは自律的な構成要素に分割されているソフトウェア開発のために使用される技術です。
モジュールは、特定の問題を解決するステートメントのブロックです。各モジュールには、独自の機能を実行するために必要なすべてのものが含まれており、プロジェクトの残りの部分に影響を与えることなく編集または変更できます。
モジュールを使用して問題を解決する例。出典:Kayau / CC BY(https://creativecommons.org/licenses/by/3.0)
このプログラミング方法は、各モジュールの機能にアクセスするために他のソフトウェアコンポーネントによって使用される永続的なモジュールインターフェイスを維持することによって実現されます。
モジュールはコンポーネント間に論理的な境界を課し、保守性を向上させます。これらは、異なるモジュール間の依存関係を最小限に抑えるように設計されたインターフェースを介して組み込まれます。
メインおよび補助モジュール
メインモジュールといくつかのセカンダリモジュールは、モジュール式プログラミングを構成するものです。メインモジュールから、補助モジュールの機能が呼び出されます。
これらのプラグインは、メインモジュールの実行時に読み込まれる個別の実行可能ファイルとして存在します。各モジュールには、PROGRAMステートメントで割り当てられた一意の名前があります。
作業チームは、システムのすべてのモジュールを知る必要なく、別々のモジュールを個別に開発できます。各モジュール式アプリケーションはバージョン番号に関連付けられており、開発者がモジュールを保守する際に柔軟性を提供します。
モジュール式プログラミング機能
モジュール性
コンピューターは、コードを実行するためにコードの分解バージョンを必要としません。小さなチャンクでコードを書くことを余儀なくされるのは、人間の認知上の制限です。
プログラムには他の関数を含めることができ、他のファイルにある関数を参照することもできます。これらの関数またはモジュールは、操作の実行または値の計算に使用されるステートメントのセットです。
大規模で複雑なプログラムでシンプルさと読みやすさを維持するために、長いメイン関数ではなく、短いメイン関数を他の関数と組み合わせて使用します。
プログラムをモジュールのグループに分けることにより、各モジュールが理解しやすくなり、構造化プログラミングの基本的なガイドラインに準拠します。
関数定義
関数は、その定義の宣言と、それに続くコマンドおよびステートメントで構成されます。関数の一般的な形式は次のとおりです。
Function_name(パラメーター宣言){
文;
コマンド;
式を返します。
}
-パラメータの宣言は、関数に渡される情報を表します。
-関数で具体的に使用される追加の変数は、文で定義されています。
-すべての関数にreturnステートメントを含める必要があります。
変数のスコープ
メイン関数内またはユーザー定義関数内で宣言された変数は、ローカル変数と呼ばれます。これらは関数の実行時に値を持ちますが、関数が完了すると値は保持されません。
メインプログラムまたはユーザー定義関数の外部で宣言された変数は、グローバル変数と呼ばれます。これらの変数は、プログラム内の任意の関数から取得できます。
手続き型です
モジュール型プログラミングは、データを考慮せずに関数のコードを書くことに完全に向けられているため、非常に手続き型です。
モジュール式プログラミングの例
実際のモジュール性
壁にいくつかのコンセントがある電気のある家を想定してください。このシステムでは、電子レンジ、洗濯機、乾燥機などのさまざまな電気機器を接続できます。
これらのデバイスは、どこに配置されているかに関係なく、プラグを差し込んで電源を入れると特定のタスクを実行するように設計されています。
アプリケーションのモジュールは、これと同じ哲学に従う必要があります。つまり、アプリケーションのどの部分にいても、またはどのアプリケーションに接続していても、特定のタスクを実行するだけで済みます。
また、電気装置をコンセントから簡単に外せるように、モジュールはアプリケーションから簡単に取り外せるように設計する必要があります。
電気デバイスを取り外しても、接続されている他のデバイスの機能には影響しませんが、アプリケーションからモジュールを取り外しても、そのアプリケーションの他のモジュールの機能には影響がありません。
Javaの関数
Javaモジュールでは、独立した関数として記述されます。たとえば、受講したすべてのコースの成績に基づいて学生のGPAを計算する関数またはコードブロックがあるとします。
関数は、入力としてグレードのリストを取得し、計算されたグレード平均を返す必要があります。
この関数はCalculateAverageNoteと呼ばれます。データ型doubleの配列を使用して、ノートのリストを入力として受け取り、計算された平均を返します。
関数では、ローカル変数sumがゼロに初期化され、forループを使用して、すべての修飾がsumに追加されます。最後に、得られた合計をノートの数で割って、結果の値を返します。
入力マトリックスに3.5、3.0、4.0のノートがある場合、それらを追加すると、10.5の値が合計され、3つのノートがあるため、3で除算されます。関数は値3.5を返します。
利点
独立したプロジェクトプログラミング
モジュールに分割されている場合、複数のプログラマが同じプロジェクトで作業できます。異なるプログラマーが独立して異なるプログラムモジュールを設計できますが、これは大規模で複雑なプログラムに必要です。
効率的なプログラム開発
小さなスタンドアロンモジュールは、大きなプログラムよりも理解、設計、およびテストが容易であるため、プログラムをより迅速に開発できます。
プログラマーは必要な入力を提供し、モジュールの出力を調べてモジュールが正しいことを確認できます。
モジュールの複数使用
1つのプログラム用に作成されたコードは、他のプログラムでも役立つ場合があります。モジュール式プログラミングにより、これらのセクションを将来の使用に備えて保存できます。コードは再配置可能であるため、保存されたモジュールは、入出力要件を満たす他のプログラムにリンクできます。
モノリシックプログラミングでは、このようなコードのセクションはプログラム内に埋め込まれ、他のプログラムでは使用できません。
デバッグと変更が容易
モジュールは完全なプログラムよりも小さいため、テストが簡単です。各モジュールは、プログラムの他の部分とは別に作成およびテストできます。モジュールをテストした後、再度テストすることなく、新しいプログラムで使用できます。
プログラムを変更する必要がある場合、モジュール式プログラミングにより、作業が簡素化されます。新しいモジュールまたはデバッグされたモジュールは、プログラムの残りの部分を変更せずに既存のプログラムにリンクできます。
短所
過度にオブジェクト指向の構造
このプログラミングはインターフェースを使用していますが、これはかなり効果的なアイデアです。これを利用するために、一部のフレームワークには、交換可能なクラスの完全なセットが付属しています。たとえば、永続性を処理するために、永続性インターフェイスを実装する複数のクラスが存在する可能性があります。
ただし、統合開発環境(IDE)はこれについて混乱します。たとえば、メソッドのソースを見つけようとすると、IDEはどのメソッドを表示したいかわからないため、その名前のメソッドが存在するファイルの長いリストが表示されます。
モジュールが小さすぎる
非常に小さな関数のみを含むモジュールがたくさんあります。各モジュールでは、コードの見出しに加えて、追加の解析時間と処理時間が必要です。
したがって、多くの小さなモジュールを使用すると、コンパイルシステムにオーバーヘッドが追加され、パッケージサイズが大きくなります。
理由もなく分解する
一部のコードはほとんど変更されません。それらの場合、それを使用するだけでうまくいく場合、それをよりきれいに、または抽象的なロジックで見ようとすることを試みることはあまり意味がありません。
見た目が美しくないコードもありますが、近年はそれほど変わっていません。変更されておらず、すでにモジュールにうまく機能しているコードを分解する理由はありません。
用途
モジュール式プログラミングは単なる概念です。その実践は、任意のプログラミング言語、特に個別にコンパイルされたプログラムを持つ手続き型の言語に適用できます。
個別にコンパイルされたモジュールから構築されたコンポーネントライブラリは、リンカーと呼ばれるプログラミングツールを使用してセットに組み合わせることができます。
メインモジュールで使用される関数をエクスポートする必要がある場合に備えて、さまざまなモジュールの関数の名前は、アクセスを容易にするために一意である必要があります。
モジュール式プログラミングの概念をサポートするプログラミング言語には、C、Ada、PL / I、Erlang、Pascal、Algol、COBOL、RPG、Haskell、Python、HyperTalk、IBM / 360 Assembler、MATLAB、Ruby、IBM RPG、 SmallTalk、Morpho、Java(パッケージはモジュールと見なされます)、Perlなど。
C言語
モジュール式プログラミングは、C言語で適用することができます。これは、複数のモジュールに分割することで大きな問題を解決することができるためです。
これらの各モジュールは特定の問題を解決しますが、そのような手順のセットであるメインプログラムは全体として問題を解決します。
Cで定義されているすべての関数には、デフォルトでグローバルにアクセスできます。これは、関数の実装が定義されているヘッダーファイルを含めることで実行できます。
例として、スタックデータ型を宣言し、実装とデータ構造をユーザーから非表示にしたいとします。
これは、最初に、stack.hと呼ばれるパブリックファイルを定義することで実行できます。
stack.h:
extern stack_var1;
extern int stack_do_something(void);
これで、スタックデータタイプの実装を含むstack.cというファイルを作成できます。
参考文献
- CIO Wiki(2019)。モジュール式プログラミング。引用元:cio-wiki.org。
- IT定義(2020)。モジュール式プログラミング。取得元:defit.org。
- ニューメキシコ工科大学(2020)。関数を使用したモジュール式プログラミング。次から取得:ee.nmt.edu。
- クリスチャン・マイオリ(2020)。モジュール式コードを作成するための3つの創造的なテクニック。テックビーコン。techbeacon.comから取得。
- オタクのためのオタク(2020)。プログラミングにおけるモジュール方式。取得元:geeksforgeeks.org。
- 研究(2020)。モジュール式プログラミング:Javaでの定義とアプリケーション。study.comから取得。