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