!--a11y-->

オブジェクト指向 (OO) 、正確に言うとオブジェクト指向プログラミングは、ソフトウェアソリューションに実社会のオブジェクトを反映させる問題解決方法です。
この文書は ABAP オブジェクトに限定して概説するもので、その範囲を超えてオブジェクト指向全体について包括的に紹介するものではありません。この文書では、オブジェクト指向で一般に使用される用語を、ABAP オブジェクトでも使用されるものに絞って説明します。後続のセクションでは、これらの用語が ABAP オブジェクトでどのように使われるかをさらに詳しく説明します。このセクションの最後に、 その他の資料としてオブジェクト指向に関する書籍をいくつか選んで紹介します。
オブジェクトとは、データの格納とサービスの提供を行うソースコードの一部分です。データはオブジェクトの属性となります。サービスはメソッドと呼ばれます ( 操作または機能とも呼ばれます) 。一般に、メソッドはオブジェクトのメソッドだけが認識できるプライベートデータ ( オブジェクトの属性または状態) を処理します。したがって、オブジェクトの属性はユーザが直接変更できず、オブジェクトのメソッドによってのみ変更されます。これによって、オブジェクトの内部的な整合性が保証されます。
クラスはオブジェクトを記述するものです。技術的な観点では、オブジェクトはクラスの実行時インスタンスです。理論上は、1 つのクラスをもとに任意の数のオブジェクトを登録することができます。クラスの各インスタンス ( オブジェクト) には、一意の ID およびその属性に対する独自の値セットが割り当てられます。
プログラムでは、一意のオブジェクト参照を使用してオブジェクトを識別およびアドレスします。オブジェクト参照を使用することで、オブジェクトの属性とメソッドにアクセスできます。
通常、オブジェクト指向プログラミングではオブジェクトに以下の特性があります。
オブジェクトは、他のユーザに対するそのリソース ( 属性とメソッド) の可視性を限定します。すべてのオブジェクトにはインタフェースがあり、それによって他のオブジェクトとの対話方法が決まります。オブジェクトの実装はカプセル化されます。つまり、オブジェクトの外部からは不可視となります。
同じ ( 同じ名称の) メソッドでもクラスが異なれば動作が異なります。オブジェクト指向プログラミングには、インタフェースと呼ばれる構造が含まれています。これらの構造によって、異なるオブジェクトにある同じ名称のメソッドをアドレスすることができます。アドレスの形式は常に同じですが、メソッドの実装はクラス固有です。
既存のクラスを使用して新しいクラスを派生させることができます。派生クラスはスーパークラスのデータとメソッドを継承します。ただし、派生クラスでは既存のメソッドを上書きしたり、新しいメソッドを追加したりすることができます。
以下に挙げるのは、オブジェクト指向プログラミングの利点の一部です。
キ オブジェクト指向の構造化によって、他のプログラミング技法よりも現実に近い表現が可能になるため、複雑なソフトウェアシステムが理解しやすくなります。
キ うまく設計されたオブジェクト指向システムでは、クラスレベルで変更を実装できるため、システムのその他のポイントで変更を加える必要がありません。これによって、全体的に必要な保守作業が削減されます。
キ オブジェクト指向プログラミングでは、多態性と継承によって、個々のコンポーネントを再利用することができます。
キ オブジェクト指向システムでは、問題の多くを設計段階で検出して訂正できるため、システムの改訂と更新に関連する作業量が削減されます。
上記の目標を実現するには、以下のものが必要です。
キ オブジェクト指向プログラミング言語
オブジェクト指向プログラミング技法では、必ずしもオブジェクト指向プログラミング言語を必要とするわけではありません。ただし、オブジェクト指向プログラミングの効率性は、システムカーネルでオブジェクト指向言語の技法がどのように実装されているかに直接左右されます。
キ オブジェクト指向ツール
オブジェクト指向ツールを使用すると、オブジェクト指向言語でオブジェクト指向プログラムを作成することができます。これらのツールによって、開発オブジェクトとそれらのオブジェクト間の関係をモデル化し、保存することができます。
キ オブジェクト指向モデリング
ソフトウェアシステムのオブジェクト指向モデリングは、上記の目標を実現するうえで最も重要で最も手間がかかり、かつ最も難しい必要条件です。オブジェクト指向設計には、オブジェクト指向プログラミングだけでなく、それ以上のものが関係します。また、オブジェクト指向設計には実際の実装とは関係のない論理的な利点があります。
ABAP ユーザガイドのこのセクションでは、ABAP 言語のオブジェクト指向の拡張について概説します。新機能の使い方を説明するために、簡単な例を使用しています。ただし、これらの例はオブジェクト指向設計のモデルとして提供するわけではありません。ABAP オブジェクトの各命令に関する詳細については、ABAP エディタのキーワード文書を参照してください。オブジェクト指向のソフトウェア開発に関する包括的な概要については、以下に挙げる書籍をご覧ください。
オブジェクト指向、オブジェクト指向プログラミング言語、オブジェクト指向分析と設計、オブジェクト指向プロジェクトのプロジェクト管理、パターンとフレームワークなどに関して、多数の書籍が出版されています。以下に紹介するのは、最も重要なトピックを扱っている良書のごく一部です。
キ Scott Ambler 著『The Object Primer 』SIGS Books & Multimedia (1996) 、ISBN: 1884842178
プログラマ向けに書かれたオブジェクト指向に関する非常に優れた入門書です。オブジェクト指向の中心的な概念が包括的に説明されているほか、オブジェクト指向を手早く徹底的に学ぶことのできるプロシージャモデルが掲載されています。理論にもとづいていながら、実用的で読みやすく書かれた書籍です。
キ Grady Booch 著『Object Solutions: Managing the Object-Oriented Project 』Addison-Wesley Pub Co (1995) 、ISBN: 0805305947
効率的なオブジェクト指向プログラミングにとって同様に重要な、オブジェクト指向の非技術的な側面を網羅した良書です。読みやすく、実用的なヒントが満載されています。
キ Martin Fowler 著『UML Distilled: Applying the Standard Object Modeling Language 』Addison-Wesley Pub Co (1997) 、ISBN: 0201325632
UML ( 統一モデリング言語。新たに標準化された、モデリングのためのオブジェクト指向言語と表記法) に関する優れた書籍です。オブジェクト指向に関する知識と経験がある読者を対象としています。
キ Erich Gamma 、Richard Helm 、Ralph Johnson 、John Vlissides 共著『Design Patterns. Elements of Reusable Object-Oriented Software 』Addison-Wesley Pub Co (1998) 、ISBN: 0201634988
繰り返し発生する設計上の問題をオブジェクトを使って解決する方法が、パターンとして示されています。これは初めての本格的なパターン本であり、優れたオブジェクト指向設計の例が多数収録されています。
キ James Rumbaugh 著『OMT Insights: Perspectives on Modeling from the Journal of Object-Oriented Programming 』Prentice Hall (1996) 、ISBN: 0138469652
オブジェクト指向の分析と設計、実装、依存性の管理などに関する疑問と問題に取り組んだ記事が多数収録されています。ぜひ読まれることをお奨めします。
オブジェクト指向の初心者は、まず Scott Ambler の『The Object Primer 』を読んでから実地経験を積んでいくとよいでしょう。オブジェクト指向分析と設計については、Ambler と Fowler が示している CRC 技法を使用することを強くお奨めします。そのあとに、オブジェクト指向分析と設計の普遍的な表記法である UML について学習してください。最後に、パターンに関する書籍を最低 1 冊は読んでおくとよいでしょう。
大規模な OO プロジェクトを開始する際にまず生じる疑問として、何をどのような順序で行うか、どのフェーズをどのタイミングで終了すればよいか、開発作業をどのように分けて編成するか、いかにリスクを最小化するか、どのように優れたチームを編成するかなどがあります。プロジェクト管理のベストプラクティスの多くは、オブジェクト指向の世界に合わせて再定義する必要がありました。これによって生じた機会には大きな意義があります。プロジェクト管理におけるオブジェクト指向の使い方に関する追加情報については、Grady Brooch の『Object solutions 』または Martin Fowler の著作の「An outline development process 」という章を参照してください。
オブジェクト指向については、これ以外にも多数の優れた書籍があります。上に挙げた書籍が、完璧あるいは最良というわけではありません。