インターフェイス


型とクラス

これまで、クラスを作成する時にステレオタイプを指定することはありませんでしたが
実は、UML ではいくつかのステレオタイプが予約されており
クラスにおいても、暗黙的にステレオタイプが採用されていました

UML において、クラスは型を表現するための 《Type》
実装クラスとなる 《ImplementationClass》 の2種類に大別されます
Type は抽象クラスやインターフェイスに近い存在で、振る舞いを定義します
必要に応じて、これらの詳細をステレオタイプを記述することができます

Type は、属性や関連を持つことができますが
これらも、操作を定義するために導入するべきであるとされています



図の上のクラスは実装クラスで、全ての操作や属性が明確な実態を持ちます
これに対し、Type クラスはメソッド本体を含まず、仕様のみの定義であり
その実体は、実装クラスに委ねるように設計されている点で注目されます

しかし、Type を実装する ImplementationClass が
必ずしも Type が定義する仕様に従った振る舞いを行うかどうかは保証されません
また、このような設計をすることもほとんどないでしょう
一般的には、抽象クラス(斜体)かインターフェイスとして記述するべき問題です

インターフェイスは、実体を一切持たない仕様記述子であるとされます
さらに、原則として属性、状態、関連も存在してはいけません
インターフェイスは、操作の振る舞いのみを記述し、操作は参照を持ちません
言語レベルでは、抽象操作だけの抽象クラスと同一のものと考えられます

インターフェイスは 《interface》ステレオタイプで表します
ただし、UML において、インターフェイスは抽象クラスではなく
クラスと同等物の要素として扱われる点に注意してください



上記したようにインターフェイスは
抽象操作のみの抽象クラスであることを保障するステレオタイプです
プログラミング言語によっては、インターフェイスという概念が存在する言語や
抽象クラスを使って理論的にインターフェイスを設計する必要がある言語などがあり
UML におけるインターフェイスをどのように実現するかは、言語に依存します


実現

インターフェイスのような、抽象的な仕様を定義したモデルを
実体とするためにはクラスに実装する必要があります
これを実現と呼びます

実現は、インターフェイスから、実現する要素に向けて
三角矢印破線で関係を表すことができます
若しくは、小さな円を描き、すぐ側にインターフェイス名を記述し
これと実現クラスとを実線で結合する簡易表示も認められます

こうした関係を持ったとき、矢印の根元をクライアントと呼び
矢印の頭側をサプライアと呼びます
実現を行うとき、クライアントはサプライアの操作を保障する必要があります



図、下部の《interface》は、インターフェイスを詳細に書いています
ImageIcon クラスの右にある小さな丸は、簡易表示されたインターフェイスの例です



前のページへ戻る次のページへ