勉強するたびに忘れてしまうUML。Java Goldの勉強をしていたらいい感じのJavaの実装とUML図が出てきたのでメモ。基本はこれ。
用語 | 解説 |
---|---|
has-a 関係 | 全体を表現するクラスの属性に部分となるクラスが存在する、集約関係を表す。コンポジションは集約関係の一種。全体と部分のオブジェクトのライフサイクルが同一の状態を指す。 |
is-a 関係 | クラス間の構造に似通ったものが存在する関係を表す。Java言語では継承関係(extends)で成立する。 |
dependency 関係 | 他のクラスの変数を利用したり、一時的に別のクラスのオブジェクトを参照する場合は、依存関係を表す。 |
realization 関係 | 実現関係を表す。 |
上記の表、次のコードとUMLのネタ元にさせていただいたのは『オラクル認定資格教科書 Javaプログラマ Gold SE 7 スピードマスター問題集 (EXAMPRESS)』
例1. スーパークラス/インスタンスの生成と参照の保持/setterとgetter
■コード
class S { private B b; } class A extends S { private void print() { System.out.println(Y.NAME); } } class B {} class C { private void print() { System.out.println(new U().getter()); } } class Y { public static String NAME; } class U { private String name; public void setter(String name) { this.name = name; } public String getter() { return name; } }
■UML
TODO 追加予定
■例2 ArrayListのインスタンスを生成してList型の参照で保持
■コード
import java.util.*; interface I { } class A implements I { List<C> = new ArrayList<>(); } class B extends A { } class C { void method() { } }
■UML
TODO 追加予定
AクラスはArrayListのインスタンスを参照し、ArrayListはCクラスのインスタンスを参照するので、二重の集約関係となる。