プログラム用の抽象的な「モジュール」があります。それがGUIモジュールだとしましょう。モジュールとそのタイプのインターフェースのみが含まれています-他のモジュールとの互換性のためです(他のモジュールでは、GUIモジュールとそのタイプを使用でき、実装について気にする必要はありません)。
だから私はそのようなsthを持っています:
GUI::Component //represent the abstract component (button, label etc.)
//so it's only the base class for components
GUI::Clickable //if any component is clickable, it must inherit from it
GUI::Button : public Component, public Clickable
GUI::Label : public Component
しかし、Label
またはButton
仮想メソッドしか持っていません(モジュールのインターフェースだと思います)。GUI モジュール実装の例では、 andSomeGUIImp
を宣言する必要があります (オブジェクト ファクトリにより、and はユーザーに対して透過的になります)。SomeButton : public GUI::Button
SomeLabel : public GUI::Label
コードを変更したくはありません。適切な UML ダイアグラムを作成したいだけです。
そのすべての要素 ( Component, Clickable, Button
) はインターフェースですか? それとも抽象クラス?
Label
とButton
が よりも「抽象度が低い」(ユーザーがより直接的に使用でき、より詳細に指定されている) ことを何らかの形で示したいと思いますComponent
。
Clickable
また、 (機能性) とComponent
(すべてのコンポーネントの抽象ベース) の違いを示すとよいでしょう。
現在の解決策(確信が持てない)
理由は 100% とは言えませんが、私の意見では、これはおそらくClickable
インターフェイスでComponent
あり、抽象クラスであり、Button
単なる通常のクラスです。
しかし、それはモジュール内の関係を示しており、それを無視してButton
(純粋な仮想メソッドしか持たない) も、一部のモジュールの実装の宣言にすぎませんか?