OOPで知っているように、インターフェースは実装なしで一連の操作を提供しますが、クラスはその逆です。
オブジェクト指向設計では、umlを使用します。インターフェースには実装なしの一連の操作があり、クラスにも実装なしの一連の操作があります(クラスにはその操作に加えて属性があることを知っています)?
では、UMLの違いは何ですか?
OOPで知っているように、インターフェースは実装なしで一連の操作を提供しますが、クラスはその逆です。
オブジェクト指向設計では、umlを使用します。インターフェースには実装なしの一連の操作があり、クラスにも実装なしの一連の操作があります(クラスにはその操作に加えて属性があることを知っています)?
では、UMLの違いは何ですか?
OOP でわかっているように、インターフェイスは実装なしで一連の操作を提供しますが、クラスはその反対です。
そうではありません -抽象クラスは、1 つ以上のメソッドが宣言されているが定義されていないクラスです (C++ および Java では、これらは抽象メソッドです)。すべてのメソッドを抽象化してクラスを定義することができます。この場合、インターフェイスとの類似性が非常に高くなります。
ただし、UML の重要な概念の 1 つは、インターフェイスが他のクラスまたはコンポーネントに公開される一連のメソッドであるということです。目的は、一連の操作を定義することです。
ただし、プログラミングに移行すると、開発を支援するためにメソッドを抽象化することができます (たとえば、すべてのサブクラスに実装があることを確認することにより)。このメソッドは、純粋にクラスの内部にある可能性があります。
最後に 1 つ: UML のインターフェイスとクラスという用語は、Java などの言語のインターフェイスとクラスと同義ではありません。たとえば、Java では複数のクラスの継承が許可されていません。代わりに、Java にはinterface
、クラスが複数の型を実装できるようにする があります (クラスではありません - 微妙な違いです)。
編集
クイックノートの専門用語:
クラスが型であるように、定義は宣言です。
( Type と Class の違いは何ですか? を参照)
インターフェースの目的は一連の操作を定義することですが、クラスでも一連の操作を定義するのと同じですか?
したがって、インターフェースの目的は、他のオブジェクトが使用したい一連のパブリック操作を宣言する (定義するのではなく) ことです。クラス (UML で) は、操作 (パブリックおよびプライベート) の完全なセットです。クラス (Java、C++ など)は、すべての非抽象操作をさらに定義します。
したがって、重要なのは意図です。システムの他のコンポーネントが一連の操作を使用する場合は、interfaceを使用します。UML を使用して (コンポーネント、アルゴリズムなどの) 実装を記述する場合は、classを使用します。
それらの操作を実装することを想定したクラスに行くと、それらの操作を説明する図や実装の兆候を示すものとして、それらの操作の実装が表示されませんか?
UML ツールはモデリング用であるため、意図的に操作定義を入力する場所を提供することを避けています。これは後で使用します。アイデアは、次のことです。
この意図的なギャップ (欠乏と言うかもしれません) は、UML の「定義」と「宣言」が無意味であることを意味します。ごめん。
ウィキペディアによると-
統一モデリング言語 (UML) は、オブジェクト指向ソフトウェア エンジニアリングの分野で標準化された汎用モデリング言語です。統一モデリング言語には、オブジェクト指向のソフトウェア集約型システムのビジュアル モデルを作成するための一連のグラフィック表記法が含まれています。
したがって、最も重要なことは、UML が汎用でグラフィカルであることです。クラスやインターフェースだけではありません。UML は、システムのアーキテクチャの青写真を視覚化する標準的な方法を提供します。ソフトウェアの構築には計画が必要です。構造図、動作図、相互作用図は、新しいシステムとレガシー システムの両方に適した複数の次元と詳細レベルで視覚化するのに役立ちます。統一されたユニバーサルで、大規模システムの並行開発に対応します。
UML について考えるとき、頭に浮かぶ用語の 1 つにソフトウェアの品質があります。ここ数年、ソフトウェア業界を悩ませてきたことの 1 つは、ソフトウェア設計の貧弱さです。過去 10 年間、ソフトウェア業界はかなり順調でしたが、グローバリゼーションの影響により、ソフトウェアの設計方法が変化しています。