2019年6月28日UMLの構造図の書き方の説明。詳しくは、参考ページのUML入門などが、分かりやすい。雑談UMLは、プログラムを図によってイメージを説明するために作られたが、プログラムに対する説明はコメントで書くことの方が多いだろう。数式などを意味的に記述したものを数学的な書式で表示するためのツールであり、これを開発したクヌースは、そのドキュメントをEWBによって記載している。WEBは、プログラムの説明を記載したドキュメントであり、この中に説明を交えたプログラムを記載する。このドキュメントをツールにかけることで、綺麗にレイアウトしたドキュメントや、プログラムのソースコードを取り出すことができる。枠の中に、上段:クラス名、中段:属性(要素)、下段:メソッド(関数)を記載する。可視性に応じて、”+-#”などを記載する。関連クラスが他のクラスと関係がある場合には、その関係の意味に応じて、直線や矢印で結ぶ。(a)関連:単純に関係がある場合、(b)集約:部品として持つが、弱い結びつき。関係先が消滅しても別に存在可能。(c)コンポジション:部品として持つが強い結びつき。自動車は、エンジン(Engine)を部品として持つ。エンジンは車体と一緒に廃棄なら、コンポジションで実装する。自動車は、同じく車輪(Wheel)を4つ持つが、自動車を廃棄してもタイヤは別に使うかもしれないので、集約で実装する。集約で実装する場合は、C++などであれば、ポインタで部品を持ち、部品の廃棄(delete)は、別に行うことになる。クラスの設計を行う場合には、部品として持つのか、継承として機能を持つのか悩む場合がある。この場合には、“is-a”の関係、“has-a”の関係で考えると、部品なのか継承なのか判断しやすい。Engine”と表現すると、おかしいことが判る。このことから、CarはVehicleからの派生であり、Carの属性としてEngineを部品として持つ設計となる。オブジェクト図クラス図だけで表現すると、複雑なクラス関係では、イメージが分かりづらい場合がでてくる。この場合、具体的な値を図に書き込んだオブジェクトで表現すると、説明がしやすい場合がある。このように具体的な値で記述するクラス図は、オブジェクト図と言う。書き方としては、クラス名の下に下線を引き、中段の属性の所には具体的な値を書き込んで示す。miniOrange。