1
1

UMLの読み方(初心者用)

Posted at

はじめに

Javaを学習し始め、色々な本を手にするとUMLが良くつかわれていることに気づく。本によってはUMLの解説があるが、解説なしでUMLを使う本もあり、UML図を見て「これ、どういう意味だっけ?」を解決するために、私が学習していく中でよく使うUMLの基本をまとめてみた。学習中に出てこなかった内容は記載していないので、UMLのすべては載っていません。
私自身が初心者のため誤っている箇所があると思います。誤りに気付いた箇所があれば教えていただけると幸いです。

クラス図

クラス図2.png

クラス間の関連

クラス図全体.png

  1. 継承
    is-aの関係。ElectricCarはCarの1種である。
    ElectricCarはextends Carで作成する。
    ElectricCarはCarを派生したものである。

  2. 依存
    usesの関係。ElectricCarはCharginStationを使用する。

  3. 集約
    has-aの関係。ParkingLotはElectricCarを保持してかつ、ParkingLotはElectricCarが無くても良い。
    ParkingLotはElectricCarを集約していると言える。

  4. コンポジション
    has-aの関係。ElectricCarはTireを保持していてかつ、ElectricCarはTireが必要。
    ElectricCarはTireで構成されていると言える。

  5. 実装
    ParkingLotはインタフェースPaymentSystemを実装したものである。

  • 集約とコンポジションの違い
    集約は保持する側(ParkingLot)が無くても保持される側(ElectricCar)の存在が可能。
    コンポジションは保持する側(ElectricCar)が無いと保持される側(Tire)の存在が出来ない。このため保持する側が消えると保持される側も消えてしまう。

  • カーディナリティ(矢印の数字)
    集約の例では、ParkingLotが存在する場合、ParkingLotはElectricCarを0~*だけ保有できる事を表している。
    (*は任意の個数で、nと記載しても良い。)
    逆にElectricCarが存在するとき、ParkingLotは0~1だけ存在する事を表している。
    ElectricCarは必ずParkingLotにあるとは限らないため、ParkingLotは0を含めている。
    コンポジションの例では、ElectricCarが存在する場合、ElectricCarはTireを4~5だけ保有している事を表している。スペアタイヤを積んでいる事もあるので最大を5つとしている。もしも対象の車が3輪だった場合の最小値は3と出来る。
    逆にTireが存在するとき、Tireは必ず1つのElectricCarに保有される。つまりTireは複数のElectricCarに装備できず、またElectricCarが無ければ存在できない。

参考文献等

UML図の作成はフリーソフトdraw.ioを使用した。

UML図の作成にあたり、参考にした本
-デザインパターンとともに学ぶ- オブジェクト指向のこころ

UML図の作成にあたり、参考にしたページ

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1