仕事でクラス図を使うので、調べてみた。
参考URL:http://www.masatom.in/pukiwiki/UML/%A5%AF%A5饹%BFޤδ%F0%C1%C3/#l3423afe
##はじめに
クラス図を活用できるツールとして
・AmaterasUML(http://amateras.osdn.jp/cgi-bin/fswiki/wiki.cgi?page=AmaterasUML)
・draw.io(https://draw-io.softonic.jp/)
などが知られている。
今回はAmaterasUMLを用いて学習。
##クラス図
例えば従業員クラスがあるとすると、
クラス図はこのように表す。
・1段目 / クラス名
・2段目 / フィールド
・3段目 / メソッド
##可視性
可視性(private/protected/public)はアクセスレベルごとに左のマークが変化する。
メンバ、フィールドともに上から順に
・public
・private
・protected
・package
である。(↓Amaterasでの表記)
以下のサイトが参考になる。
(https://www.ibm.com/support/knowledgecenter/ja/SS4JE2_7.5.5/com.ibm.xtools.viz.class.diagram.doc/topics/cvisibility.html)
##クラスフィールド・メソッドとメンバフィールド・メソッド
名前にクラスとつくものはJavaで言うstaticなものである。
フィールドまたはメソッドに下線を引いて表す。
##依存
破線矢印で表す。
クラス間で関係性があまりないときに用いる。
Javaでnew()する側からnew()される側へ矢印を引いて表す、らしい…
例えば会社クラス(Company) 内で
Employee emp = new Employee();
と書かれていた場合、こんなかんじだろうか…
##集約
白塗りの実線ひし形で表す。
クラス間で「全体」と「部分」の関係にある時の表現。
例えば部署と社員といった具合である。
##コンポジション
黒塗りの実線ひし形で表す。
集約の一種で、より一層結びつきが強いときに使う。
「部分」は「全体」と生存期間を共にする、らしい…
ん~…むずかしい。
一つの「部署」インスタンスは一つの「会社」インスタンスにしか属することができないとして、こんな感じだろうか。
##継承
白塗りの実線矢印で表す。「汎化」とも言う。
例えばSEが従業員クラスを継承しているとする。
「継承」と聞くと矢印は逆のように思うが、SEや営業など様々な種類を従業員へ「汎化」するとかんがえると納得が行く。間違えそうなので注意が必要である。
##実現
白塗りの破線矢印で表す。
Javaのインターフェースを表すときに用いる。
「SE」や「営業」が「勤務」インターフェースを実現していたとする。
##多重度
ここが一番難しい…
実践と数字や*、..を使って表す。
例えば、従業員と会社で
・従業員は必ず会社に属している。
・従業員は一つの会社にしか所属できない。
・会社には0~複数の社員が所属している
記号についてであるが
「*」は2以上、「..」は~(範囲)を表している。
以下のサイトからとてもわかりやすく説明して頂けた。
(https://www.atmarkit.co.jp/ait/articles/0105/02/news002.html)
##まとめ
(感想
多重度以外は何とかなりそう。
資格でも多重度はよく出るので注意。
以上。