クラス図

クラス間の静的な構造を表現するための図。クラス図はクラス・インターフェイスとそれらの関係から構成される。
クラスの書き方は単純で、四角形の中にクラスの名前とメソッド、書きたいなら引数と戻り値を書くだけ。省略。

クラス間の関係には4種類ある。

それぞれクラス間の関係を表すので、クラスとクラスの間に線を引くことで関係を示す。


generalization

generalizationは継承を表す。javaならextends、C++なら:(SuperClass : SubClass)。 インターフェイスの継承であっても、extendsならこっち。


realization

interfaceをclassで実装するときUMLではrealizationを使って表す。JavaならImplements。c++にはInterfaceの機能がない。


association

associationはオブジェクト間に構造的に関係があることを示す。具体的には集約-aggregation-、合成-composition-という関係。 aggregationは関連するオブジェクト間に「全体-部分」の関係が成り立っていることを言う。 インスタンス変数によって実装される。

    Class TaskList
    {
        Task *t = new Task(task_num);
        .......
    }
  
こんな感じ?このときTaskListとTaskはaggregationの関係にあると言える。
compositionもaggregationとほぼ意味は同じ。ただ、より強い集約関係にある場合に用いる。 aggregationにより集約されたクラスは独立させても機能するが、composition関係ならは集約していないと機能をきちんとはたさない。 この場合、aggregationの菱形を黒く塗る事でUMLとして表せる。


dependency

dependencyはUMLでやたら出てくるが、クラス図の場合はuse の関係を表す。

    class GpuScheduler
    {
        TaskList * tasklist = (TaskList*)connector->dma_load();
                              //
    }
  

LINK