UMLクラス図とは
クラス、プロパティ、メソッドやオブジェクト間の関係性を図にまとめたものです。UMLは、オブジェクト指向のプログラミングのアプローチを記述するためのモデルとして考案されたものです。
属性と操作
「クラス」には「属性」と「操作」がついてきます。「属性」はクラスが保有する要素を意味します。
「操作」ではそのクラスで実行可能な内容が記述されます。
以下のクラス図を例にすると、「バスケットボール選手」というクラスの中には「選手名」「背番号」という「属性」があり
「ドリブル」「パス」「シュート」「リバウンド」「ブロック」という「操作」があると言えます。
また「属性」は「クラス」の下に、「操作」は「属性」の下に記載します。
画像には「属性」と「操作」の左に「+」と「−」がありますが、これはそのシステムにアクセスできる範囲はどこまでかを設定しています。
クラス図で可視性を表現する場合、要素名や操作の左側に記号で可視性が記入されます。
可視性を表現する記号は以下の4種類です。
「+」・・・すべてのクラスからアクセス可能
「−」・・・自クラスのみアクセス可能
「#」・・・自クラス及び継承されているクラスからアクセス可能
「~」・・・同一パッケージ内のクラスからアクセス可能
集約
クラス同士の関係が「全体と一部」であるとき「集約」として表現されます。バスケットボールチームを例に例えると、[バスケットボールチーム]クラスという全体の中の一部として「監督」「バスケットボール選手」クラスがあるイメージです。
依存
クラスの間に「使用する」関係があることを表します。呼び出し元の操作の中でパラメータが依存先のクラスで使用されます。
以下のクラス図を例にすると「監督」や「バスケットボール選手」がなんらかの違反を犯すと「審判」がペナルティを課すイメージです。
汎化
汎化関係とは、あるモデル要素(子)が他のモデル要素(親)に基づいて作成される関係です。汎化関係を開発に利用すると「バスケットボール選手」クラスに分類される「シューター」クラスを開発するときは
「バスケットボール選手」の属性と操作を引き継いで、差分である「3Pシュートを決める」操作だけ開発すれば良くなります。
最後に
今回は、以前に作成した以下のクラス図を基に概要をまとめました。VSCodeにDraw.ioをインストールして作成しました。
https://blog.serverworks.co.jp/vscode-drawio-setup
何か誤り等があればご指摘いただけると助かります。