pi-17. Javaにおけるオブジェク
ト指向設計とUMLクラス図
1
金子邦彦
(Java マスター講座:基礎から応用まで)
URL: https://www.kkaneko.jp/pro/pi/index.html
Javaにおけるクラス定義・クラス階層・継承の概念、
およびUMLクラス図による設計と実装
【学習内容の構成】
• クラス定義と継承:属性・コンストラクタ・メソッド
の定義、スーパークラスからサブクラスへの属性とメ
ソッドの継承
• UMLクラス図:クラスの属性・操作・相互関係(親子
関係、関連)を表現する設計図の記法
• UMLからJavaへの実装:クラス図をもとにしたJava
プログラムの作成
• 前提:Javaの基本データ型、基本的なプログラミング
経験
• 意義:オブジェクト指向設計の理解、設計図とコード
の対応関係の習得
2
GDB online
3
Java などのプログラミング言語の体
験,演習ができるオンラインサービス
http://www.pythontutor.com/
オンラインなので、「秘密にしたいプログラム」を
扱うには十分な注意が必要
GDB online で Java を動かす手順
① ウェブブラウザを起動する
② 次の URL を開く
https://www.onlinegdb.com/
4
③ 「Language」のところで,「Java」を選ぶ
5
6
④ ソースコードを入れる
⑤ 実行.実行結果を確認
「Run」をクリック.
17-1. クラス定義,クラス階層,
継承
7
Java のデータの種類
8
データの種類
基本データ型
サイズ
整数
byte
8 bit
short
16 bit
int
32 bit
long
64 bit
浮動小数
float
32 bit
double
64 bit
文字
char
16 bit
true/false
boolean
・基本データ
・基本データの配列
・クラスに属するオブジェクト: String クラスなど多種
クラス定義
9
オブジェクトの生成を行うメソッドのことを
コンストラクタという
クラス定義の中には,属性の定義(属性名とデータ
型),コンストラクタの定義,その他メソッドの定
義を含める.
クラス階層
クラス階層とは,複数のクラスが親子
関係をなすこと
10
クラスA
クラスB
親
子
クラスD
親
子
クラスC
親
子
継承
• 継承とは,スーパークラスの属性とメソッドをサブ
クラスが受け継ぐこと
11
クラスの類似性
• 類似した2つのクラス
Ball Circle
属性 属性
x x
y y
color color
r
メソッド
move move
reset reset
12
メソッドの名前も
中身も全く同じとする
r の有り無しが
違う
x, y, color は同じ
クラスの親子関係
クラス名 Ball
属性 x, y, color
メソッド move, reset
13
クラス名 Circle
属性 x, y, color, r
メソッド move, reset
クラス Circle は,親クラスで
あるクラス Ball の属性とメ
ソッドを継承する.
class Ball {
double x;
double y;
String color;
public Ball(double x, double y,
String color) {
this.x = x;
this.y = y;
this.color = color;
}
public void move(double xx, double
yy) {
this.x = this.x + xx;
this.y = this.y + yy;
}
public void reset() {
this.x = x;
this.y = y;
}
}
class Circle extends Ball {
double r;
public Circle(double x, double y, String color,
double r) {
super(x, y, color);
this.r = r;
}
}
17-2. UML のクラス図
14
UML のクラス図
• プログラム(ソースコード)に関する設計図の書き方の1つ
• クラスと相互関係,クラスの属性,クラスの操作を書く
15
クラス クラス
クラス
クラス
クラス名
属性
操作
UML
• UML は,Unified Modeling Language のこと
• モデリング(構造や,振る舞いや,インタラク
ション)の書き方(表現)の方法を統一すること
16
問いかけ
• クラスの相互関係には何があるのでしょうか?
親クラス・子クラス
関連: あるクラスが,別の
クラスの振る舞いや属性を呼び出す
17
親クラス・子クラス
18
親クラス
子クラス
三角の矢印
関連
19
「人」についてのデータ処理をするとき,
「住所」の属性や振る舞いを呼び出す場合がある
・「住んでいる」:呼び出す理由
・「0..1」や「1」:関連の多重度
関連の多重度
20
人 住所
・1人の「人」には,住所は1つ
・住所は
誰もいなくなっても(引っ越しなど)
記録は残す.同居で複数人いても記録は
まとめない
クラス
21
クラス名
属性
操作
・クラスがどういう
役割を担うか
・メソッド名とタイプ
を 「move: void」
のように書くことも
UMLの特徴
• UML では,書き方(表現)の方法を統一するので,
「人によって書き方の方法が違う」,「使用する
プログラミング言語によって書き方の方法が違
う」ということがない
• クラス,パッケージ,オブジェクト,アクティビ
ティ,ユースケース,ステートチャート,シーケ
ンス,コラボレーションの書き方(表現)の書き
方が統一される
※ この授業では,UMLのクラス図の演習を実施
22
17-3. UML のクラス図に関する実
演・演習
23
演習
資料:25 ~ 26
【トピックス】
• UMLのクラス図
24
オンラインのサイト www.draw.io
• https://www.draw.io/
• チャート、設計図等を作成できるオンラインのサ
イト
• さまざまなシェイプ (Shape) を組み合わせて、
チャート、設計図を作成
• 画像(PNG, JPEG など)、PDFファイル形式、
XML形式でのエクスポート機能もある
25
起動までの手順
• Webブラウザで開く
https://www.draw.io
• 保存先が設定できる.保存する必要がないので
「Decide latet」を選ぶ
26
次のような画面が出ることがある(初めて使用す
るときなど)
• 新規作成したいので「Create New Diagram」を選ぶ
27
• 種類は「Brank Diagram」を選び、「Create」をクリック
28
編集画面
シェイプの種類
メニュー
ボタン
選択した
シェイプの
プロパティ
全選択: CTRL + A (同時押し)
※ CTRL は「コントロールキー」
削除: メニューの「Edit」の「Delete」
29
アンドゥ:メニューの「Edit」の「Undo」
30
UML図のためのシェイプは「UML」の下
展開
ボタン
スクロール
31
32
UML図のためのシェイプは「UML」の下
クラス
「3段の四角」が使いやすい
33
親クラス・子クラス
マウスで線を引く
種類を選ぶ
34
UML図のためのシェイプは「UML」の下
関連
「Association 1」が使いやすい
「0..1」や「1」は
キーボードで入れる
「+」, 「Text」と操作し
「住んでいる」は,
キーボードで入れる
属性を減らすときは、属
性を選び
右クリックメニューで
「Delete」
35
属性を増やすときは、属
性を選び
右クリックメニューで
「Duplicate」
テキストの
場所は,マウスで
移動できる
次のクラス図を作成しなさい
36
17-4. UML のクラス図からの
Java プログラム作成
37
演習
資料:39 ~ 43
【トピックス】
• UMLのクラス図
• プログラム作成
38
39
次のクラス図の Java プログラムを演習
40
① GDB online のエディタで,次のプログラムを入れる
Address クラス定義
41
② 続けて,次のように入れる
Person クラス定義
42
③ 続けて,次のように入れる
Student クラス定義
43
④ 続けて,次のように入れ,実行し,実行結果を確認する
関連ページ
• Java プログラミング入門
GDB online を使用
https://www.kkaneko.jp/pro/ji/index.html
• Java の基本
Java Tutor, GDB online を使用
https://www.kkaneko.jp/pro/pi/index.html
• Java プログラム例
https://www.kkaneko.jp/pro/java/index.html
44