狠狠撸

狠狠撸Share a Scribd company logo
UML
1
UML
概要
? オブジェクト指向の分析?設計?理解に役立つUMLについて学習
します。
2
目次
? UML
? UMLとは
? クラス図
? その他のダイアグラム
3
UML
4
UML
? UMLとは
? Unified Modeling Language の略です。
? オブジェクト指向における分析や設計で使用されるモデリング用の図の
集まりです。
? UMLに含まれる図のことを「ダイアグラム」と呼びます。
5
UML
? UMLを学習することのメリット
? 業務分析のツールとして使用できます。
? オブジェクト指向の設計?理解の手助けとなります。
? 図で視覚的にクラス間の関連性を表すことができます。
? デザインパターンを理解する上ではクラス図の理解はほぼ必須です。
6
UML
? UMLで使用されるダイアグラム一覧
? アクテビティ図
? オブジェクト図
? クラス図
? コミュニケーション図
? コンポーネント図
? コンポジット構造図
? シーケンス図
? 状態マシン図
? 相互作用概念図
? タイミング図
? 配置図
? パッケージ図
? ユースケース図
7
※名前順
UML
? UMLの分類
UMLの図は大きく2種類に分類できます。
? 構造の表記
? クラスの関係性など、静的な関連性を表す図
? 振る舞いの表記
? 処理の呼び出しの流れなど、動的な関連性を表す図
8
UML
? 構造の記述
? オブジェクト図
? クラス図
? コンポーネント図
? コンポジット構成図
? 配置図
? パッケージ図
9
UML
? 振る舞いの記述
? アクティビティ図
? コミュニケーション図
? シーケンス図
? 状態マシン図
? 相互作用概要
? タイミング図
? ユースケース図
10
UML
? プログラムの流れや全体像を把握するためによく使用されるダイ
アグラム
? クラス図
? シーケンス図
? 業務分析でよく使用されるダイアグラム
? ユースケース図
? アクティビティ図
11
クラス図
? クラス図とは
? UMLの中で最も使用頻度の高いダイアグラムです。
? クラスの仕様とクラス間の関連性を記述できるものです。
? デザインパターンを理解するうえでクラス図は必須の知識です。
12
クラス図
? クラスの書き方
? 長方形を3つの区画に分けます。
? 上はクラス名です。
? 真ん中はフィールドです。
? 下はメソッドです。
? クラスフィールドやクラスメソッド
の場合は、下線を入れます。
? アクセス修飾子を指定することも可能です。
13
※使用ツール:Cacoo
クラス図
? 継承の書き方
? 継承関係を表した図です。
? 図の矢印は継承を指します。
? 上のクラスがスーパークラスで、
下がサブクラスです。
? 抽象クラスや抽象メソッドは斜体で
表記するのが一般的です。
? サブクラスから見たスーパークラスのことを
「特化」と呼びます。
? スーパークラスから見たサブクラスのことを
「汎化」と呼びます。
14
※使用ツール:Cacoo
クラス図
? 実装(実現)の書き方
? 実装関係を表した図です。
? インターフェースの場合、
継承ではなく実装という言葉で表現します。
? 実装は破線の矢印で表すのが一般的です。
? 上がインターフェースで、下が
実装しているクラスです。
? インターフェースの場合は
<<interface>>や<I>などを表記します。
15
※使用ツール:Cacoo
クラス図
? 集約の書き方
? 集約(アグリゲーション)を表した図です。
? 矢印は、オブジェクトを持っている側から
持たれている側に向かう。
? 図は、Carクラスの
オブジェクトがTireクラスの
オブジェクトを保持している
ことを示しています。
16
※使用ツール:Cacoo
クラス図
? 関連の書き方
? 関連(知っている)ことを表した図
? プログラム的には集約とほとんど同じ意味。
17
※使用ツール:Cacoo
クラス図
? 使用
? クラスを使用すること表すには、図の矢印を使用する。
? ClassがUtilクラスを使用することを示している。
18
※使用ツール:Cacoo
クラス図
? クラス図の有効活用
? クラス図は、システムの詳細設計の際のクラス設計する場合に役立ちま
す。
? 既存のシステムの改修作業などでも役に立ちます。
? 既に存在しているクラスの全体像の把握をするのに役立つので有効に活
用しましょう。
19
シーケンス図
? シーケンス図
? クラス図は、クラス間の静的な関係を表した図でした。
? クラス図ではクラスの振る舞いの相互作用(どのメソッドからどのメ
ソッドが呼ばれるかなど)は分かりません。
? この振る舞いの相互作用を時系列で表したのがシーケンス図です。
20
シーケンス図
? シーケンス図
21
※使用ツール:Astah
ユースケース図
? ユースケース図とは
? ユースケース図は、ユーザーとシステム間のやり取り(相互作用)を記
述すための図です。
22
ユースケース図
? ユースケース図
23
※使用ツール:Astah
アクティビティ図
? アクティビティ図とは
? 手続きや、メソッド(関数)のロジック、ビジネスプロセスなどのフ
ローを記述するための技法。
? フローチャートに似た役割を果たす。
24
アクティビティ図
? アクティビティ図
25
※使用ツール:Astah
オブジェクト図
? オブジェクト図とは
? オブジェクトのある時点におけるスナップショットを表す図。
? インスタンス図とも呼ばれる。
? クラス図だけでは構造を把握するのが困難な場合に有効。
26
※使用ツール:PlantUML
コミュニケーション図
? コミュニケーション図とは
? シーケンス図では、時系列でオブジェクト間のやり取りを記述しますが、
コミュニケーション図では、時系列に関係なくオブジェクトを配置でき
ます。
? メッセージのやり取りをオブジェクトの関係を中心に表現できる。
27
コミュニケーション図
? コミュニケーション図
28
※使用ツール:Astah
コンポーネント図
? コンポーネント図とは
? コンポーネントの構造や、コンポーネント間の相互作用と表す図です。
? そもそもコンポーネントとは、ソフトウェアの部品という意味ですが
クラスとの明確な違いはありません。
一般には複数のクラスから構成されるシステムの一部をコンポーネン
と呼びます。
? システムをいくつかの部品に分割し、その関係性や構造を示す場合に使
用します。
29
コンポーネント図
? コンポーネント図
30
※使用ツール:PlantUML
コンポジット構造図
? コンポジット構造図とは
? 複数のクラスを包括するようなクラス、コンポーネントにおいて、
その内部構造を表現するための図です。
31
ステートマシン図
? ステートマシン図とは
? ステートマシン図は、1つのオブジェクトの存在期間中における振る舞い
を示す図です。
32
※使用ツール:PlantUML
図は公式サイトより引用
相互作用概要図
? 相互作用概要図とは
? 相互作用概要図は、アクティビティ図とシーケンス図を合体させたもの
です。
? アクティビティ図の中のアクテビティを、シーケンス図に置き換えたも
の、もしくはアクティビティ図の記法で制御フローを分割したシーケン
ス図。
33
タイミング図
? タイミング図とは
? タイミングは、オブジェクトの状態が変化するタイミングを表すことを
重視した図です。
34
配置図
? 配置図とは
? 配置図は、システムの物理的なレイアウトを示す図です。
? ソフトウェアのどの部分がハードウェアのどの部分で動作するかを示す。
35
パッケージ図
? パッケージ図とは
? パッケージとは、クラスをグルーピングするための仕組みです。
? 言語によっては名前空間とも呼ばれます。
? パッケージ図は、パッケージ(名前空間)、およびパッケージ間の依存
関係を表す図です。
? 規模が大きいシステムでは、パッケージ間の依存関係を把握するのに便
利です。
36
まとめ
? クラス図?シーケンス図?ユースケース図?アクティビティ図は
使われる場面や役に立つ場面も多いので知っておくと良いでしょ
う。
? UMLはクラスの構造や処理の流れを理解するためのツール、人に
説明するためのツールとして活用すると便利です。
? ほとんど使われない図もあるので、全部覚える必要はありません。
(興味がある人は調べて勉強してみてください。)
37
ツール?サービスの紹介
? UMLが作成できるサービス?ツールの紹介
? cacoo
? https://cacoo.com/ja/
? 無料だと機能が限られるが、ブラウザ上から様々な図が描けるサービス
? astah
? http://astah.change-vision.com/ja/
? 無料だとビューアーしか使用できない。
? その他
? eclipseなどのIDEにはプラグインも多く提供されているので、色々試して
みる。
38
PlantUML
39
PlantUML
? PlantUML
? テキスト(コード)からUMLのダイアグラムを作成することができる
ツールです。
? 公式サイトにて作成したUMLを画像ファイルでエクスポートできます。
? VS CodeやIDEの拡張機能もあります。
? https://plantuml.com/ja/
40
PlantUML
? クラス図(サンプル)
41
@startuml class
class Class {
{static} staticField
field
{static} staticMethod()
method1()
method2()
}
@enduml
PlantUML
? クラス図?継承(サンプル)
42
@startuml superSub
abstract class SuperClass
SuperClass <|-- SubClass
SuperClass : {abstract} abstra
ctMethod()
SubClass : method()
@enduml
PlantUML
? クラス図?実装(サンプル)
43
@startuml Interface
interface Interface
Interface <|.. Class
Interface : {abstract} method()
Class : method()
@enduml
PlantUML
? クラス図?集約(サンプル)
44
@startuml Aggregate
Car o- Tire
@enduml
PlantUML
? クラス図?関連(サンプル)
45
@startuml Relation
class Car
class Tire
Car -> Tire
@enduml
PlantUML
? クラス図?使用(サンプル)
46
@startuml USE
class Class
class Util
Class .> Util
@enduml
PlantUML
? クラス図?ポリモーフィズム(サンプル)
47
@startuml Charactor2
プレイヤー o- キャラクター
キャラクター <|-- 戦士
キャラクター <|-- 魔法使い
キャラクター <|-- 勇者
class プレイヤー {
play(キャラクター ch)
}
キャラクター : 戦う()
戦士 : 戦う()
魔法使い : 戦う()
勇者 : 戦う()
@enduml
PlantUML
? シーケンス図(サンプル)
48
@startuml sikensu
VIEW -> Controller: get
Controller -> Model: getData
Controller <-- Model
VIEW <-- Controller
@enduml
PlantUML
? アクティビティ図(サンプル)
49
@startuml activity
|会員顧客|
start
:ログインする;
:商品を検索する;
|Webサイト|
:検索結果を表示する;
|会員顧客|
:検索結果を確認する;
stop
@enduml
PlantUML
? ユースケース図(サンプル)
50
@startuml
actor 一般顧客
actor 会員顧客
rectangle 商品購入 {
一般顧客 --> (会員登録する)
一般顧客 --> (商品を検索する)
会員顧客 --> (商品を検索する)
会員顧客 --> (商品を注文する)
会員顧客 --> (購入履歴を確認す
る)
}
@enduml
UML演習
51
演習
? 演習
? オブジェクト指向の演習のソースコードのクラス図を作成してください。
? 何で表記するかは自由です。
紙、PlantUML、Excelなど、自分がやりやすそうな方法でクラス図を作成
してください。
52
Ad

Recommended

2018年度 若手技術者向け講座 UML
2018年度 若手技術者向け講座 UML
keki3
?
Computer terminology
Computer terminology
keki3
?
Introduction to programming
Introduction to programming
keki3
?
2019年度 若手技術者向け講座 デザインパターン 演習問題
2019年度 若手技術者向け講座 デザインパターン 演習問題
keki3
?
2019年度 若手技術者向け講座 デザインパターン
2019年度 若手技術者向け講座 デザインパターン
keki3
?
2019年度 若手技術者向け講座 リファクタリング
2019年度 若手技術者向け講座 リファクタリング
keki3
?
2019年度 若手技術者向け講座 オブジェクト指向
2019年度 若手技術者向け講座 オブジェクト指向
keki3
?
Wakatemukekouza2019 web
Wakatemukekouza2019 web
keki3
?
2019 若手技術者向け講座 DB設計
2019 若手技術者向け講座 DB設計
keki3
?
2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL
keki3
?
2019 若手技術者向け講座 DBMSの機能 演習問題
2019 若手技術者向け講座 DBMSの機能 演習問題
keki3
?
2019年度 若手技術者向け講座 DBMSの機能
2019年度 若手技術者向け講座 DBMSの機能
keki3
?
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
keki3
?
2019年度若手技術者向け講座 インデックス
2019年度若手技術者向け講座 インデックス
keki3
?
2019年度 若手技術者向け講座 SQL演習
2019年度 若手技術者向け講座 SQL演習
keki3
?
2019年度若手技術者向け講座 実践SQL
2019年度若手技術者向け講座 実践SQL
keki3
?
2018年度 若手技術者向け講座 デザインパターン
2018年度 若手技術者向け講座 デザインパターン
keki3
?
2018年度 若手技術者向け講座 オブジェクト指向01
2018年度 若手技術者向け講座 オブジェクト指向01
keki3
?
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング
keki3
?
2018年度 若手技術者向け講座 DB設計?正規化
2018年度 若手技術者向け講座 DB設計?正規化
keki3
?
2018年度 若手技術者向け講座 大量データの扱い?ストアド?メモリ管理
2018年度 若手技術者向け講座 大量データの扱い?ストアド?メモリ管理
keki3
?
2018年度 若手技術者向け講座 実行計画
2018年度 若手技術者向け講座 実行計画
keki3
?
2018年度 若手技術者向け講座 インデックス
2018年度 若手技術者向け講座 インデックス
keki3
?
2018年度 若手技術者向け講座 SQL概要
2018年度 若手技術者向け講座 SQL概要
keki3
?
Work efficiency
Work efficiency
keki3
?
Excel vba
Excel vba
keki3
?
Excel function
Excel function
keki3
?
Excel kinou
Excel kinou
keki3
?

More Related Content

More from keki3 (20)

2019 若手技術者向け講座 DB設計
2019 若手技術者向け講座 DB設計
keki3
?
2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL
keki3
?
2019 若手技術者向け講座 DBMSの機能 演習問題
2019 若手技術者向け講座 DBMSの機能 演習問題
keki3
?
2019年度 若手技術者向け講座 DBMSの機能
2019年度 若手技術者向け講座 DBMSの機能
keki3
?
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
keki3
?
2019年度若手技術者向け講座 インデックス
2019年度若手技術者向け講座 インデックス
keki3
?
2019年度 若手技術者向け講座 SQL演習
2019年度 若手技術者向け講座 SQL演習
keki3
?
2019年度若手技術者向け講座 実践SQL
2019年度若手技術者向け講座 実践SQL
keki3
?
2018年度 若手技術者向け講座 デザインパターン
2018年度 若手技術者向け講座 デザインパターン
keki3
?
2018年度 若手技術者向け講座 オブジェクト指向01
2018年度 若手技術者向け講座 オブジェクト指向01
keki3
?
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング
keki3
?
2018年度 若手技術者向け講座 DB設計?正規化
2018年度 若手技術者向け講座 DB設計?正規化
keki3
?
2018年度 若手技術者向け講座 大量データの扱い?ストアド?メモリ管理
2018年度 若手技術者向け講座 大量データの扱い?ストアド?メモリ管理
keki3
?
2018年度 若手技術者向け講座 実行計画
2018年度 若手技術者向け講座 実行計画
keki3
?
2018年度 若手技術者向け講座 インデックス
2018年度 若手技術者向け講座 インデックス
keki3
?
2018年度 若手技術者向け講座 SQL概要
2018年度 若手技術者向け講座 SQL概要
keki3
?
Work efficiency
Work efficiency
keki3
?
Excel vba
Excel vba
keki3
?
Excel function
Excel function
keki3
?
Excel kinou
Excel kinou
keki3
?
2019 若手技術者向け講座 DB設計
2019 若手技術者向け講座 DB設計
keki3
?
2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL
keki3
?
2019 若手技術者向け講座 DBMSの機能 演習問題
2019 若手技術者向け講座 DBMSの機能 演習問題
keki3
?
2019年度 若手技術者向け講座 DBMSの機能
2019年度 若手技術者向け講座 DBMSの機能
keki3
?
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
keki3
?
2019年度若手技術者向け講座 インデックス
2019年度若手技術者向け講座 インデックス
keki3
?
2019年度 若手技術者向け講座 SQL演習
2019年度 若手技術者向け講座 SQL演習
keki3
?
2019年度若手技術者向け講座 実践SQL
2019年度若手技術者向け講座 実践SQL
keki3
?
2018年度 若手技術者向け講座 デザインパターン
2018年度 若手技術者向け講座 デザインパターン
keki3
?
2018年度 若手技術者向け講座 オブジェクト指向01
2018年度 若手技術者向け講座 オブジェクト指向01
keki3
?
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング
keki3
?
2018年度 若手技術者向け講座 DB設計?正規化
2018年度 若手技術者向け講座 DB設計?正規化
keki3
?
2018年度 若手技術者向け講座 大量データの扱い?ストアド?メモリ管理
2018年度 若手技術者向け講座 大量データの扱い?ストアド?メモリ管理
keki3
?
2018年度 若手技術者向け講座 実行計画
2018年度 若手技術者向け講座 実行計画
keki3
?
2018年度 若手技術者向け講座 インデックス
2018年度 若手技術者向け講座 インデックス
keki3
?
2018年度 若手技術者向け講座 SQL概要
2018年度 若手技術者向け講座 SQL概要
keki3
?
Work efficiency
Work efficiency
keki3
?
Excel vba
Excel vba
keki3
?
Excel function
Excel function
keki3
?
Excel kinou
Excel kinou
keki3
?

2019年度 若手技術者向け講座 UML