前のページではクラスがひとつだけの単一クラス図を描きましたが、クラスが 2 つ以上ある場合はあるクラスと他のクラスの関係も図に示す必要があります。

クラス間の関係は主に

の2つに分けられます。
ここではまず汎化について学びます。

さて汎化とは具体的にはインヘリタンスの関係を表します。
例えば前ページの FRUIT スーパークラスを継承してソース 1 の様な ORANGE サブクラスを作ったとします。

ソース 1 :
public class ORANGE extends FRUIT{

        // コンストラクタ
	public ORANGE( int no )
	{
		this.set_name( "みかん No." + no );
	}
}

ちなみにMainクラスの例は次の通りです。

ソース 2 : Main クラスと main メソッド
public class Main{

	public static void main(String[] args){

		ORANGE orange = new ORANGE(1);
		orange.show();
	}
}

実行結果:

みかん No.1 美味い

この関係を英語で書くと

ORANGE is a FRUIT ( みかん は フルーツ です)

となりますので汎化は別名「is-a 関係」と言います。

さてこの「汎化」をクラス図で表す場合は中抜き三角の矢印線でクラスとクラスをつないで表します。
この矢印はスーパークラスの方に向けて付けます。

例えば上の FRUIT スーパークラスと ORANGE サブクラスを含むクラス図は次の図2となります。
なお ORANGE のコンストラクタは省略しています。


図1: 汎化(is-a 関係) の例