web-dev-qa-db-ja.com

UMLクラス図に抽象メソッドを描画する方法

public abstract class Shape {   
    abstract int area();
}

抽象メソッドのUMLクラス図をどのように描画しますか?使用する +-または#

public class Room { 
    int nWindows;   
}

また、クラスインスタンス変数にパブリック、プライベート、または保護されていない場合はどうなりますか?

10
Nicholas Chan

概要

UML仕様によると:

抽象分類子の名前は、使用中のフォントで許可されている場合、斜体で表示されます。あるいは、またはさらに、抽象分類子は、その名前の後または下にテキスト注釈{abstract}を使用して表示できます。

ただし、操作はnot分類子であることに注意してください。 isAbstract属性はBehavioralFeatureとしてまだありますが、2.5仕様では抽象であることをモデル化する方法を定義していません。古い仕様(1.4.x)では分類子と同じ方法を使用しており、操作の抽象化を示すために広く認識されている方法です。機能の波括弧内の要素は、名前の直後ではなく、行末に表示されることに注意してください(分類子には、名前の直後に他の指定がありません)。

おそらく、作者が誤って機能の抽象化表記の2.5仕様を省略しました。

もちろん、抽象操作は任意の可視性の種類を持つことができます。

もちろん、操作は、それを含むClassifier(あなたの場合はClass)も抽象的である場合にのみ抽象的である可能性があります。

見えない種類

一般に、UMLの可視性の種類はオプションです。つまり、単純に省略できます。 UMLはモデルであることを考慮に入れるだけでよいので、実際には一部の無関係な要素を無視したり、モデリングの後の段階でそれらを指定したりできます。 UMLで可視性の種類を使用しないと、最終的な可視性の種類について想定を行うことはできません。

一方、実際のコードで可視性の種類の指定を使用しない場合(まったく許可されている場合)、いくつかのデフォルトの動作があります。例えば

  • Javaこれはパッケージ(#)です-UMLの理解では、Javaはそれを「package-private」と呼びます、
  • c ++では、プライベート機能(-)、
  • PHPこのような機能は公開(+)として扱われます

等々。

12
Ister