\r\n\r\n
AOPとOOPの比較
AOP(Aspect Oriented Programming)とOOP(Object Oriented Programming)は、2つのプログラミングパラダイムである。プログラミングは基本的なスタイルです。プログラミングパラダイムは、プログラムの各要素をどのように表現するか、問題を解決するための各ステップをどのように定義するかが異なります。その名の通り、OOPは現実世界のオブジェクトとその振る舞いを使って問題を表現することに重点を置いており、AOPはプログラムを個別の横断的な関心事に分解する役割を担っている。
AOPとは?
AOPは、プログラムを複数の領域にまたがるまとまった機能領域(懸念と呼ぶ)に分解し、モジュール性を向上させることを扱うプログラミングパラダイムである。他の多くのプログラミングパラダイムは、関心事をグループ化し、固有のエンティティにカプセル化するために、抽象化(クラス、メソッドなど)のサポートを提供します。しかし、懸念(例えば「ロギング」)は、システムの各ロギング部分がロギングポリシーの影響を受けるため、横断的な懸念の例である。すべてのAOP実装の主な焦点は、すべての関心を一箇所に集めるために適切な横断的な式を持つことです。
OOPとは?
OOPでは、解決すべき問題を実世界の要素で考え、その問題をオブジェクトとその振る舞いで表現することに重点を置いています。クラスは実世界のオブジェクトの抽象的な表現を記述します。クラスは設計図やテンプレートに似ていて、似たようなアイテムや組み合わせられるものを集めたものです。クラスには属性と呼ばれるプロパティがあります。プロパティは、グローバル変数とインスタンス変数として実装されます。クラスのメソッドは、これらのクラスの振る舞いを表したり定義したりします。クラスのメソッドやプロパティをクラスのメンバと呼びます。クラスのインスタンスはオブジェクトと呼ばれます。このように、オブジェクトは実世界のオブジェクトに非常に近いデータ構造である。
OOPには、データの抽象化、カプセル化、ポリモーフィズム、メッセージパッシング、モジュール化、継承などの重要な概念があります。一般的にカプセル化は、プロパティを非公開にする一方で、これらのプロパティにアクセスするために使用できるパブリックメソッドを作成することで実現されます。継承は、ユーザーが他のクラス(スーパークラスと呼ばれる)からクラス(サブクラスと呼ばれる)を拡張することを可能にします。ポリモーフィズムにより、プログラマはあるクラスのオブジェクトをそのスーパークラスのオブジェクトに置き換えることができます。問題定義にある名詞がそのままプログラムのクラスとなることも多い。同様に、動詞もメソッドになる。代表的なOOP言語には、JavaやC言語があります。
AOPとOOPの違いは何ですか?