5-1 クラス図

1.クラス図とは

 クラスの構成を図を使って表現するには、クラス図※を使います。クラス図は、四角形の枠の中に、クラス名やフィールド変数、メソッドなどを書き込んだもので、クラスの内容をコンパクトに示すことができます。また、クラス同士の関係をさまざまな方法で図示できるという特徴があります。

例題 Memberクラスとそのクラス図

例題 継承してクラスを作る          (StudentMember.java)

1	package samaple; 
2	import java.time.LocalDate;
3	public class StudentMember extends Member {
4		private LocalDate birthday;										// 誕生日
5		public StudentMember(int id, String name, LocalDate birthday) { // コンストラクタ
6			super(id, name);
7			this.birthday = birthday;
8		}
9		public LocalDate getBirthday() {					// 誕生日のゲッター
10			eturn birthday;
11		}
12		public void setBirthday(LocalDate birthday) {	// 誕生日のセッター
13			this.birthday = birthday;
14		}
15		public LocalDate expirationDate() {				// 有効期限日を返す
16			return birthday.plusYears(18);				// 誕生日に18年を足した日付を返す
17		}
18	}

 Memberクラスは、フィールド変数にidとnameを持つ簡単なクラスです。その他には、コンストラクタとゲッター、セッターがあります。
 Membereクラスを表すクラス図(右側)は、3つの部分からできています。線で区切られた最上段がクラス名、2段目がフィールド変数、最後がコンストラクタとメソッドを書く場所です。

先輩、クラス図って、一体、何に使うんですか?
プログラムだけで十分じゃないかなぁ。
何かのシステムを作る時は、そのシステムでどんなクラスがあればいいか考える。
クラス図はそれを考えるための道具の1つだ。
うーん。
でも今から何かのシステムを作るわけじゃないですよね。
クラス図にはクラスの中身を一目で理解できるという利点がある。
クラス同士の関連を表現する機能もあるから、継承の説明に便利だ。

2.クラス図の書き方

 クラス図はUML(Unified Modeling Language:統一モデリング言語)の一部ですから、作成のための細かな規則がいろいろあります。ここでは、最低限知っておく必要のある規則について、Memberクラスのクラス図を元に、解説します。

フィールド変数

Memberクラスでは、フィールド変数は次のように書かれています。

-id:int
-name:String

 最初に変数名を書いて、その頭に – 記号を付けます。ここで - は private を意味します。記号は、 - # ~ + の4つが規定されていて、次の表のような意味です。ただし、ほとんどの場合、変数はprivateですから – を付けます。

記号 意 味 Java言語での意味
- private 他のクラスの中では使えない
# protected 同じパッケージのクラスの中と、サブクラスの中で使える
~ デフォルトアクセス 同じパッケージのクラスの中で使える
+ public すべての他のクラスの中で使える

 また、プログラムでは、int id; のように書きますが、クラス図では -id:int のように、順序が逆になります。その理由は、クラス図はクラスの構成を表すので、要素を区別するための名前(変数名)が重要で、型は補足的な情報とみなすからです。

コンストラクタとメソッド

 コンストラクタとメソッドは、宣言部分だけを書き、変数と同様に、先頭にアクセス範囲を表す記号を付けます。Memberクラスではどれもpublicなので、+ が付いています。

 コンストラクタでは、引数がフィールド変数と同じように、変数名:型、という書き方になっていることに注意しましょう。これは、メソッドでも同じです。

+Member(id:int, name:String)

 メソッドは次のように書かれています。コンストラクタと違うのは、右端に戻り値型を付けることです。

+getId():int
+getName():String
+setId(id:int):void
+setName(name:Strig):void,br>

 なお、クラス図では、メソッドだけを書いて、コンストラクタを省略する場合もあります。

クラス図の主な特徴
① クラス名、フィールド変数、コンストラクタとメソッドの3つの領域に分割されている
② 変数は、変数名:型 のように書く
③ コンストラクタやメソッドの引数は、②と同じように書く
③ メソッドは、method():型 のように戻り値型を書く
④ 要素の先頭に付ける + は public を表し、- は private を表す
練習5-1

1. 〇ページに掲載したAdderクラスのクラス図を書きなさい。
 (フリーハンドで書いて構いません)

2. 次の、クラス図からEmployeeクラスを作成しなさい。