ソフトウェア工学では、中クラス図統一モデリング言語(UML)がある静的構造図の種類、システムのクラス、その属性、操作(またはメソッド)を示すことにより、システムの構造、およびオブジェクト間の関係を記述します。

UMLダイアグラム階層内のクラスダイアグラム

より早く、より簡単にUMLを学ぶ

あなたはより早く、より簡単にそしてより早くUMLを学ぶための無料のUMLツールを探していますか?Visual Paradigm Community Editionは、すべてのUML図タイプをサポートするUMLソフトウェアです。それは国際的な賞を受賞したUMLモデラーですが、それでも使いやすく直感的で完全に無料です。

クラス図の目的

  1. システム内の分類子の静的構造を表示します
  2. 図は、UMLで規定されている他の構造図の基本的な表記法を提供します。
  3. 開発者や他のチームメンバーにも役立つ
  4. ビジネスアナリストはクラス図を使用してビジネスの観点からシステムをモデル化できます

UMLクラス図は次のもので構成されています。

  • 一連のクラスと
  • クラス間の一連の関係

クラスとは

システム内ですべて同様の役割を持つオブジェクトのグループの説明。

  • 構造的特徴(属性)は、クラスのどのオブジェクトが「知っている」かを定義します。
    • クラスのオブジェクトの状態を表す
    • クラスの構造的または静的な機能の説明
  • ビヘイビア機能(操作)は、クラスのどのオブジェクトが「実行できる」かを定義します。
    • オブジェクトがやり取りする方法を定義する
    • 操作は、クラスの動作上または動的な機能の説明です。

クラス表記

クラス表記は3つの部分から構成されています。

  1. クラス名
    • クラスの名前が最初のパーティションに表示されます。
  2. クラス属性
    • 属性は2番目の区画に表示されます。
    • 属性タイプはコロンの後に表示されます。
    • 属性はコード内のメンバー変数(データメンバー)にマップされます。
  3. クラス操作(メソッド)
    • 操作は3番目の区画に表示されます。それらはクラスが提供するサービスです。
    • メソッドの戻り型は、メソッドシグネチャの末尾のコロンの後に表示されます。
    • メソッドパラメータの戻り型は、パラメータ名の後のコロンの後に表示されます。
    • 操作がコード内のクラスメソッドにマッピングされる

簡単なクラス

クラスのグラフィカル表現 - 上に示すようにMyClass:

  • MyClassには3つの属性と3つの操作があります
  • op2のパラメータp3はint型です。
  • op2はfloatを返す
  • op3はClass6へのポインタ(*で表示)を返します

クラスの関係

クラスは、他のクラスとの1つ以上の関係に関与している可能性があります。関係は、次のいずれかのタイプになります。(関係のグラフィカル表現については、右側の図を参照してください)。

関係タイプ

グラフ表示

継承(または汎化):

  • "is-a"関係を表します。
  • 抽象クラス名はイタリック体で示しています。
  • SubClass1とSubClass2はスーパークラスの特化です。
  • 子から親クラスを指す中空の矢じりのある実線

継承

簡単な協会

  • 2つのピアクラス間の構造的リンク
  • Class1とClass2の間に関連があります
  • 2つのクラスを結ぶ実線

単純な関連付け

集約

特別なタイプの協会。それは「の一部」の関係を表します。

  • Class2はClass1の一部です。
  • Class2の多くのインスタンス(*で表示)はClass1に関連付けることができます。
  • クラス1とクラス2のオブジェクトは別々の有効期間を持ちます。
  • 結合の端に充填されていないダイヤモンドが複合クラスに接続されている実線

集約

構成

全体が破壊されたときに部分が破壊される特殊なタイプの集約。

  • クラス2のオブジェクトはクラス1と共存して死にます。
  • Class2は自立することができません。
  • コンポジットクラスに接続されている関連付けに、塗りつぶされたダイヤモンドが付いた実線

組成

依存関係

  • 一方の定義を変更しても他方が変更される可能性がある場合は、2つのクラス間に存在します(ただしその逆はありません)。
  • クラス1はクラス2に依存
  • 開いた矢印の付いた破線

依存

関係の名前

  • 関係の名前は、関連行の中央に書かれています。
  • 良い関係名は、それらを大声で読むときに意味があります。
    • "すべてのスプレッドシートにいくつかのセルが含まれています "、
    • 「式は値に評価されます」
  • それらは関係を読む方向を示す小さな矢印をしばしば持っています。例えば、式は値に評価されますが、値は式に評価されません。

関係の名前

関係 - ロール

  • 役割は関連の方向性を示す目的です。
  • 役割は関連行の末尾に書かれており、関係においてそのクラスが果たす目的を説明します。
    • 例えば、細胞は発現に関連しています。関係の本質は、がセルのであるということです。

ナビゲーション性

矢印は、1つのインスタンスが関係に参加している場合に、それに関連する他のクラスのインスタンスを特定できるかどうかを示します。

上の図は、

  • スプレッドシートがあれば、それに含まれるすべてのセルを見つけることができますが、
    • どのスプレッドシートに含まれているかをセルから判断することはできません。
  • セルが与えられると、関連する式と値を取得できますが、
    • 値(または式)が与えられると、それらが属性であるセルを見つけることができません。

クラスの属性と操作の可視性

オブジェクト指向設計では、属性と操作に対する可視性の表記法があります。UMLは、パブリック保護プライベート、およびパッケージの 4種類の可視性を識別します

クラス内の属性および操作名の前の+、 - 、#、および〜の記号は、属性および操作の可視性を示します。

  • +はパブリック属性または操作を表します
    • プライベート属性または操作を表します
  • #は保護された属性または操作を表します
  • 〜はパッケージの属性または操作を表します

クラスの可視性の例

簡単なクラス

上記の例では:

  • MyClassNameのattribute1とop1はpublicです。
  • attribute3とop3は保護されています。
  • attribute2とop2はプライベートです。

さまざまなクラスのメンバーについて、これらの表示タイプのそれぞれに対するアクセス権を以下に示します。

アクセス権一般公開(+)非公開( - )保護(#)パッケージ(〜)
同じクラスのメンバーはいはいはいはい
派生クラスのメンバーはいいいえはいはい
他のクラスのメンバーはいいいえいいえ同じパッケージに

多重度

各クラスのいくつのオブジェクトが関係と多重度に参加するかは、次のように表すことができます。

  • まさに1 - 1
  • ゼロまたは1 - 0…1
  • 多数 - 0 … または
  • 1つ以上 - 1 … *
  • 正確な数 - 例えば3…4や6
  • あるいは、複雑な関係 - 例えば、0.1、3.4、6 *は、2または5以外の任意の数のオブジェクトを意味します。

多重度の例

  • 要件:学生は多くのコースを受講することができ、多くの学生は1つのコースに登録することができます。
  • 以下の例では、クラス図(左側)は静的モデルに対する上記の要件のステートメントを示し、オブジェクト図(右側)は次のコース登録のスナップショット(クラス図のインスタンス)を示しています。それぞれソフトウェア工学とデータベース管理のコース

オブジェクト図

集計例 - コンピュータと部品

  • 集約は「からなる」階層を示す関連付けの特別な場合です。
  • 集合体は親クラス、コンポーネントは子クラスです

集計の例

継承の例 - セル分類

  • 継承は、「一種の」階層を示す関連付けのもう1つの特別な場合です。
  • 継承は分類法を導入することによって分析モデルを単純化します
  • 子クラスは、親クラスの属性と操作を継承します。

継承の例

クラス図 - 図ツールの例

クラス図には、クラスまたは関係に添付されたメモもあります。メモは灰色で表示されます。

クラス図の例

上記の例では:

上記のクラス図の意味は、以下の点を読むことで解釈できます。

  1. Shapeは抽象クラスです。斜体で表示されます。
  2. 形状はスーパークラスです。円、長方形、多角形はShapeから派生します。言い換えれば、円は形です。これは一般化/継承関係です。
  3. DialogBoxとDataControllerの間には関連があります。
  4. 形状はウィンドウの一部です。これは集約関係です。形状はウィンドウなしでも存在できます。
  5. ポイントはサークルの一部です。これは作曲関係です。ポイントは円なしでは存在できません。
  6. ウィンドウはイベントに依存します。ただし、EventはWindowに依存しません。
  7. 円の属性は半径と中心です。これはエンティティクラスです。
  8. Circleのメソッド名は、area()、circum()、setCenter()、およびsetRadius()です。
  9. Circleのパラメータradiusはfloat型のinパラメータです。
  10. クラスCircleのメソッドarea()は、double型の値を返します。
  11. Rectangleの属性とメソッド名は隠されています。ダイアグラム内の他のクラスでも、属性とメソッド名が隠されています。

複雑なシステムを扱う - 複数または単一クラス図

大規模なシステムや大規模なビジネスエリアをモデル化している場合は、必然的に多数のエンティティを検討する必要があります。問題をモデル化するために、複数または単一のクラス図を使用する必要がありますか。答えは:

  • すべてのエンティティとその関係を単一のクラス図でモデル化するのではなく、複数のクラス図を使用することをお勧めします。
  • システムを複数のクラス図に分割すると、特に各図がシステムの特定の部分をグラフィカルに表現している場合に、システムの理解が容易になります。

ソフトウェア開発ライフサイクルにおけるクラス図の見方

ソフトウェア開発ライフサイクルのさまざまな開発フェーズでクラス図を使用することができます。通常、クラス図を3つの異なる観点(詳細レベル)で段階的にモデル化することで、段階的に進みます。

概念的な観点:図は、実社会のものを説明していると解釈されます。したがって、概念的な観点から考えると、調査中のドメインの概念を表す図を描くことになります。これらの概念は当然それらを実装するクラスに関連します。概念的観点は言語に依存しない見なされます

仕様の観点:図は、ソフトウェアの抽象化またはコンポーネントを仕様とインターフェースで記述していると解釈されていますが、特定の実装へのコミットメントは示していません。したがって、仕様の観点から見ると、実装ではなくソフトウェアのインタフェースを見ていることになります

実装の観点:図は、特定のテクノロジと言語でソフトウェアの実装を説明するものとして解釈されます。したがって、実装の観点から考えると、ソフトウェアの実装検討されています

今すぐUMLクラス図を描こうとする

クラス図とは何か、そしてクラス図の書き方を学びました。あなた自身のクラス図を描く時が来ました。無料のUMLソフトウェアであるVisual Paradigm Community Editionを入手し、無料のクラス図ツールを使って独自のクラス図を作成してください。それは使いやすく直感的です。

関連リンク

視覚的パラダイムオンライン

コメント

コメントフォーム
記事の評価
  • リセット
  • リセット