誌上セミナー ●情報化講座 (12) |
監修 :
田中 成典 教授
関西大学
総合情報学部 |
|
|
|
●オブジェクト指向の基礎知識
オブジェクトは、属性(姿・形・性質)・関連・振舞い(操作)・アイデンティティといった4つの特性を持っています。属性と関連を合わせて、プロパティと呼び、プロパティと操作を合わせて、オブジェクトの特性と呼ぶ場合もあります。同じ特性を持つオブジェクトの集合であり、共通の特性を抽象化したものをクラスといい、クラスから生成したオブジェクトのことをインスタンスといいます。
通常、クラスにおいては、インスタンスが持つデータとそのインスタンスに対して行える操作が定義されますが、それらデータ構造と処理を一体化すること(カプセル化)により、データと操作の関連やインスタンスが持つ役割を明確にし、整理することができます。
カプセル化では、データの値、型、それに対する操作に対して、外部からはアクセスできず(情報隠蔽)、外部からはメッセージでアクセスします。そのことにより、データの内部構造を意識しないプログラミングが可能になります。
また、クラスと操作においては、1つのメッセージを異なるクラスオブジェクトに送った場合、異なる振舞いとして適用されるといった多態性
(ポリモフィズム)もあります。
●モデルについて
モデルとは、対象物を構築する前に、理解する目的で単純化・抽象化したもので、目的とは無関係な詳細を省略しますので、元の実体よりも扱いが容易になります。オブジェクト指向開発において、モデル化が重要になります。
抽象化とは、ある目的にとって、重要な要素を抽出し、重要でない要素は切り捨てるということで、同じ対象物についても、目的により、多くの異なる抽象化が可能となります。
モデルは、静的モデル(システムの静的、構造的、データ的な側面を表現するモデル)、動的モデル(システムの時間的、動作的、制御的な側面を表現するモデル)、機能モデル(システムの変換的、関数的、機能的な側面を表現するモデル)の3つに分類されます。
●オブジェクト指向による分析と設計
オブジェクト指向の歴史は、1970年代後半、Tom Demarcoによるデータフロー・ダイアグラムいわゆる構造化分析/設計(SA/AD)からはじまり、1980年代後半には、Shlaer/Mellor法、Booch法、James
Rumbaughらのオブジェクト指向方法論(OMT)、Ivar Hjalmar JacobsonによるOOSE法(ユースケースが特徴)が大きな役割を果たしてきました。
1996年には、UML (Unified Modeling Language)Ver.0.9が誕生し、1997年には、OMGのもとUML
Ver.1.1として標準化されました。
オブジェクト指向開発の利点としては、
・モデル化が容易である
・各フェーズ間のモデル変換作業が容易である
・反復的な開発により、矛盾や不具合発生の機会が減少する
が挙げられます。
●オブジェクト指向プログラミング
オブジェクト指向言語としては、SmallTalk、C++、Java、C#などがあり、特徴としては、データと操作の組み合わせであるカプセル化や多態性、継承が挙げられます。オブジェクト指向プログラミングの利点としては、再利用性、拡張性、段階的リリースの容易さがあり、データと手続きの一体化(カプセル化)が特徴です。作成手順としては、クラスの作成、各クラス内部への属性記述、各クラス内部への操作記述といったようにクラスを組み合わせて、1つのプログラムを作成します。オブジェクト間はメッセージでやりとりを行い、オブジェクトが受け取ったメッセージにより、操作を実行します。
●UML
様々なOMT方法論が統合されてできたUMLですが、オブジェクト指向開発のメリットを最大限に活用するために、今後ますます重要度が高まるモデリング手法と思われます。UMLは、オブジェクト指向を表現するダイアグラムを必要に応じてかき分けます。図としては、要求図(ユースケース図)、構造図(クラス図、オブジェクト図、パッケージ図)、振舞い図(シーケンス図、コラボレーション図、アクティビティ図、ステートチャート図)、実装図(コンポーネント図、配置図)があります。基本モデルとしては、システムに要求される機能である機能モデル(ユースケースモデル)、オブジェクトモデルである静的モデル、メッセージの流れを表す相互作用モデルやオブジェクトの状態変化を表す状態モデルといった動的モデルから成り立ちます。
●当社での使用事例
弊社製品では、UC-win/FRAME(3D)、UC-win/Section、UC-1 地盤解析シリーズなどがオプジェクト指向で開発されています。使用しているプログラミング言語はDelphiです。Delphiもオプジェクト指向言語であり、従来はObject
Pascalと呼ばれていました。
例えば、UC-win/FRAME(3D)には、「断面」というオブジェクトが存在します。この「断面」オブジェクトは、「アウトライン」オプジェクトや「材料」オブジェクトなどの複数のオブジェクトで構成されております。ここで、「断面」オブジェクトのデータを変更することを考えます。「断面」オブジェクトにデータ変更を要求すると、実際は「アウトライン」オブジェクトや「材料」オブジェクトが自分の役割を認識してそれぞれがデータ変更を行います。その結果、最終的に「断面」オブジェクトのデータ変更が完了します。このように、あるオブジェクトが持つ複雑で膨大なデータ変更をそれぞれのオブジェクトに役割を委譲することによって、単純化することに成功しています。
また、UMLも必要に応じて活用しています。特にクラス図を作成する機会は多く、設計や実装に役立てています。1つのプロジェクト(製品、部品)を大勢で開発するときは、UMLを活用して各プログラマーの意思統一を図っています。現在は、UMLの一部(クラス図など)からソースコードの一部を自動生成したり、あるいは、その逆を自動的に行うツールもあるようですので、この利用も検討しています。
|
参考文献:
・「オブジェクト指向への招待」 啓学出版、春木良且
・「オブジェクト指向方法論OMT」 トッパン J.ランボー/M.ブラハ/W.プレメラニ/F.エディ/W.ローレンセン著 羽生田栄一監訳
・「DBエンジニアのためのUML実践活用講座」DBMagazine 2002年3月号、翔泳社、井上樹,奥村洋
・「最新オブジェクト指向がわかる」 技術評論者、河合昭男 |
|
|
(Up&Coming '08 晩秋の号掲載) |
|
|
>> 製品総合カタログ
>> プレミアム会員サービス
>> ファイナンシャルサポート
|