2009-05-06 22 views
19

私は、「ステレオタイプ」とUMLの「スーパークラス」との違いについて混乱しています。ステレオタイプとUMLのクラス継承の違いは何ですか?

WidgetMaker」という図を作成したいとします。 WidgetMakerは明らかにActorあるので、UMLの標準はそれを俳優固定観念することです:

<<Actor>> WidgetMaker 

をしかし、私は、Java/Rubyの/ C++の世界でのプログラミングを育ちました。その世界では、関係は次のとおりです。

UMLで次のようになります
class Actor 
end 

class WidgetMaker < Actor 
end 

Actor 
    ^
    | 
WidgetMaker 

そうです、私の質問:なぜUMLを使用して、同じように簡単にこれらの概念をモデル化することができたときに、すべての固定観念を持っていませんそれはでもにあるクラス継承を使用しています。

我々は俳優のより多くの「種類」を持ったら、質問にもmurkier次のようになります。

<<Actor>> <<Person>> WidgetMaker 
+0

このリンクはhttps://sites.google.com/site/assignmentssolved/mca/semester2/mc0069/10に役立ちます – Premraj

答えて

1

ステレオ対

   Actor 
       ^
       | 
    ------------------------ 
    |   |   | 
    Person  Robot  Group 
    ^
    | 
WidgetMaker 

があり、どのアーティファクトに関する詳細な情報を提示するために使用特定の人工物のブロックへの文書化または同じものの分類は与えないかもしれません。たとえば、データクラスを識別した場合、そのクラスに名前を付けたり、属性や操作を説明することができますが、それ自体は完全な情報を提供しないかもしれません。ステレオタイプの場合は<>となります。それまでは、他のクラスとして開発者に継承されています。

ステレオタイプは、モデリング要素の新しい種類を作成する機能を提供し

「ステレオタイプは、UML表記の要素を拡張するために分類し、団体、継承関係、クラス、およびコンポーネントを拡張するために使用されています」。ステレオタイプは、UMLメタモデルの一部である要素に基づいていなければなりません。クラスの一般的なステレオタイプには、エンティティ、境界、コントロール、ユーティリティ、例外があります。クラスのステレオタイプは、ギルメットで囲まれたクラス名の下に表示されます(つまり、«および»gee-mayと発音されます)。必要に応じて、グラフィックアイコンまたは特定の色をステレオタイプに関連付けることができる。

+0

アイコンや色以外は、この「完全な情報」は何ですか?なぜ、色とアイコンのメタ属性が定義されているクラスをサブクラス化するだけで、それができないのですか?特定のタイプのデータを作成したい場合は、それをステレオタイプするかどうかを知るにはどうすればいいですか? –

+0

ステレオタイプは、境界クラス、コントロールクラス、ユーティリティクラスなど、共通の目的でクラスをグループ化する方法と考えるべきです。クラスの性質を変えず、それを文書化するのに役立ちます。 –

+0

これは静的な属性のように聞こえるようにします。しかし、WidgetMakerは俳優であり、俳優のように行動するだけでなく、俳優がいることもありません。 –

6

私が理解する限り、ステレオタイプの主な目的は、(モデリング言語としての)UML自体の拡張を可能にし、何もモデル化しないことです。

あなたの質問は、別の可能な有効な答えを意味するとも思う:一部の人は、クラス間の共通点を(非公式に)指定するためにステレオタイプを使用することを好む。彼らはサブクラス化よりも簡単で、モデルの目的には「十分に良い」という理由だけでそれを行うかもしれません。

たとえば、多くのソフトウェアシステムには、いわゆるドメインエンティティ(企業、顧客、注文書、製品など)を表すクラスがあります。結局、かもしれないCompanyCustomerなどを派生させるためにEntityのような共通のクラスを持ちたいと思っています。しかし、最初は、<<Entity>> Company,<<Entity>> Customerなどの常同クラスを使うだけで十分でしょう。基本的には、モデリング作業の利便性(およびコスト/メリット)の問題です。

2

あなたの例では、おそらくActorはクラスとして実装する必要はありませんが、これは必ずしもそうでなくてもかまいません。ステレオタイプは、クラスだけでなく、ほとんどのUML要素に適用できる抽象です。

セマンティクスをカプセル化して、セマンティクスがどのように提供されるのかを暗示しません。もう1つの例は、HTTPまたはRPCとしてステレオタイプされた通信チャネルです。彼らは、不必要な詳細でモデルを複雑にすることなく何かが提供される方法を読者と伝えています。

UML仕様には、いくつかの定義済みのステレオタイプがありますが、実際のパワーは、独自のプロファイルを通して自分自身を定義できることに由来します。ドメインオブジェクトをEJBとしてラベル付けして、すべてのボイラープレートコードを指定する必要がなくなります。

1

OMGがSysMLまたはBPMNプロファイルでそれらをどのように適用したかで、ステレオタイプの背後にある意図がよくわかります。具体的には、ステレオタイプは、ドメインを指定するための言語の一部として、新しいモデリング構造のセットを記述します。例えば、SysMLのBlockは、Classに適用されるステレオタイプです。それは、システムエンジニアリングで使用するクラスのカスタマイズをもたらします。この場合、クラスの使用を置き換えて、他の要素や図の種類との新しい関係を設定します。ブロック< <を満たす>>要件(許可された関係)またはブロックは、内部ブロック図(許可された動作)を使用してモデル化できます。 ステレオタイプは、あなたのサブジェクト空間をモデル化するためには使用されません。それは、システム定義の垂直または水平の側面に対するモデリング構造の使用を分類する。

0

ステレオタイプは、UMLメタモデルの構造を拡張する。ドメイン固有の属性をUMLモデルの要素に追加し、モデル化されるシステムのランタイムセマンティクスを変更しないでください。モデリング言語が豊かになるだけです。

この良い例は、デザインパターン図のクラスに「役割」を与えています。クラスの機能はクラス内で与えられ、ステレオタイプでは追加されません。これは上記のステートメントをサポートします。

今、難しい部分は継承またはステレオタイプのクラスです。 UML 1.3によれば、継承できません。しかし、いくつかのステレオタイプを介して "A"によってクラスに与えられた制約は、特殊クラスにも適用されます。私の意見では、これはランタイムにはまだ適用されないので、再び曖昧さは意味レベルに残ります。 this mail threadの詳細。

関連する問題