SlideShare a Scribd company logo
1 of 9
Download to read offline
UML入門

           2007.10.26
         Kuniaki IGARASHI
http://igarashikuniaki.net/tdiary/
この資料について
   UML入門です。
   UMLでよく使うクラス図と
   シーケンス図に絞って説明します。
   UMLには他にもユースケース図、アクティブティ図、状態図、
   などなどたくさんの図があります。
   C++で説明を行います。

UMLでの名前と、C++での名前を併記します。
UML : name in UML(english)/ UMLでの名前(日本語)
C++ : name in C++(english)/ C++での名前(日本語)
例)
UML : attribute/属性
C++ : member variable/メンバ変数
What's UML ?
Unified Modeling Language
the Unified Modeling Language (UML) is a standardized specification language for object modeling.
UML is officially defined at the Object Management Group (OMG).

ISO acceptance: OMG is pleased to announce that the UML specification
(version 1.4.2, OMG document: formal/05-04-01) is now an accepted ISO specification.
It is available from ISO as ISO/IEC 19501.

UML version 2.1.1 2007/02/03
http://www.omg.org/technology/documents/formal/uml.htm
We can dounload the UML standards.



  簡単に言うと、コミュニケーションの道具。言葉と同じ。
  みんなが知ってるルールで図を書けば、
  伝えるのも簡単だし早い!
クラス図
C++ codes
                             ClassA            class name/クラス名
class ClassA{
                       +field1 : int           UML : attribute/属性
public:
                       #field2 : char          C++ : member variable/メンバ変数
   int filed1;
                       -field3 : ClassB*       [可視性] [属性名] : [型]
protected:
   char field2;        +method1 : void         UML : operation/操作
private:               #method2 : int          C++ : method/メソッド
   ClassB* field3;     -method3 : char*        [可視性] [操作名] : [戻り値の型]
public:
   void method1();
protected:
                                   属性はassociation/関連を使って書くことも可能です。
   int method2();
private:                                                    UML : multiplicity/多重度
   char* method3();                                         * = 0~無限大
};                                                          0..1 = 0 or 1
                                           ClassA            ClassA              ClassB
                                                                      1   0..1
UML : visibility/可視性
                                      - field3 : ClassB
# protected
+ public
- private
クラス図
C++ codes
                                                           UML : abstract method/抽象操作
class ParentClass{
                                                           C++ : 純粋仮想関数
                                             ParentClass
   int filed1;
                                                           Italic style(斜体)にする
                                                field1
   static char field2;                                     属性に抽象操作を持つクラス名も斜体に。
                                                field2
   virtual void method1() = 0;
                                                           UML,C++ : static/静的
   int method2(){                             method1
                                                           下線を引く
      // ...                                  method2
   };
                     UML : generalization/汎化
};
                     C++ : inheritance(is-a)/継承
                     この形の矢印
                                                                            <<interface>>
                                            ChildClass
class ChildClass : public ParentClass{                                         IFClass
   void method1(){
      // ...                                                                  method1
                                                             JAVAなどには
                                             method1                          method2
   };                                                        interface
                                             method3         という概念もあります。
   static void method3(){                                    破線矢印で表します。
      // ...                                                 C++には無いです。
   };                                                                      ImprementedClass
};
                                                                                 method1
                                                                                 method3
クラス図
C++ codes              Color
class Color {
   // ...                       UML : aggregation/集約
};                              C++ : has-a/持っている
                                この形の矢印

class Fruit {          Fruit
   Color color;
                       color
   // ...
};

class Basket {
   Fruit fruits[10];   Basket
}                                           note/ノート
                       fruits
                                            commentを
                                             書くときは
                                           こう書きます。
クラス図
           Fruit                       Fruit                composition/コンポジション =
                                                            aggregation/集約 + 以下の制限

                                                            持たれている対象(Fruit)のインスタンスは、
                                                            同時に2つ以上のクラスに属することはできない。

                                                            ほとんどの場合、コンポジション関係の2つのイ
         Basket                       Basket
                                                            ンスタンスは生存期間が同じ。
           fruit                       fruit


 aggregation/集約 composition/コンポジション(構成?)
from UML version 2.1.1
quot;Composite aggregation is a strong form of aggregation that requires a part instance be included in at most
one composite at a time. If a composite is deleted, all of its parts are normally deleted with it. Note that a part can
(where allowed) be removed from a composite before the composite is deleted, and thus not be deleted as part of the
composite. quot;
                                                           Engine engine;
     Car               Engine                  Bus         Car car;
                                                           car->Set(engine);           engineインスタンスは
   engine                                  engine
                                                           Bus bus;                    carインスタンスで持ったら
                                                           bus->Set(engine);           busインスタンスでは持てない。
シーケンス図
オブジェクトが対話する様子を見える化するための道具

                UML: object /オブジェクト
                or   actor/アクター

                UML: message/メッセージ
                C++: method- call/ メソッド呼び出し
                UML,C++:return/リターン (省略可)

                UML:self-call/自己呼び出し



                UML:frame/フレーム
                loop文やif文を記述
参考文献
Uml Distilled: A Brief Guide to the Standard Object Modeling Language
ISBN-13: 978-0321193681
Martin Fowler

UMLモデリングのエッセンス第3版
ISBN-13: 978-4798107950
↑の本の日本語版。

Design Patterns: Elements of Reusable Object-Oriented Software (Addison-
Wesley Professional Computing Series)
ISBN-13: 978-0201633610
GoF本。デザインパターンの基礎。難しい。

増補改訂版Java言語で学ぶデザインパターン入門
ISBN-13: 978-4797327038
結城浩さん著。GoF本に沿ってデザインパターンを易しく分かりやすく解説。

本資料の題材は結城さん本の序章にある「UMLについて」を参考にさせて頂きました。
また、「UMLモデリングのエッセンス第3版」でUMLについて学ばせて頂きました。
感謝申し上げます。m(_ _)m

More Related Content

What's hot

非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎信之 岩永
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safeKumazaki Hiroki
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する増田 亨
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情Yuta Kikuchi
 
対話テキストの自動要約
対話テキストの自動要約対話テキストの自動要約
対話テキストの自動要約Masahiro Yamamoto
 
HttpClient詳解、或いは非同期の落とし穴について
HttpClient詳解、或いは非同期の落とし穴についてHttpClient詳解、或いは非同期の落とし穴について
HttpClient詳解、或いは非同期の落とし穴についてYoshifumi Kawai
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Modelscvpaper. challenge
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3までYahoo!デベロッパーネットワーク
 
記号創発ロボティクスの狙い
記号創発ロボティクスの狙い 記号創発ロボティクスの狙い
記号創発ロボティクスの狙い Tadahiro Taniguchi
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること信之 岩永
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計増田 亨
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Preferred Networks
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門NVIDIA Japan
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?Mr. Vengineer
 
ゲームエンジンの中の話
ゲームエンジンの中の話ゲームエンジンの中の話
ゲームエンジンの中の話Masayoshi Kamai
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門増田 亨
 
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)Photon運営事務局
 

What's hot (20)

非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
冬のLock free祭り safe
冬のLock free祭り safe冬のLock free祭り safe
冬のLock free祭り safe
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
対話テキストの自動要約
対話テキストの自動要約対話テキストの自動要約
対話テキストの自動要約
 
HttpClient詳解、或いは非同期の落とし穴について
HttpClient詳解、或いは非同期の落とし穴についてHttpClient詳解、或いは非同期の落とし穴について
HttpClient詳解、或いは非同期の落とし穴について
 
【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models【メタサーベイ】基盤モデル / Foundation Models
【メタサーベイ】基盤モデル / Foundation Models
 
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
深層学習による自然言語処理入門: word2vecからBERT, GPT-3まで
 
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
 
記号創発ロボティクスの狙い
記号創発ロボティクスの狙い 記号創発ロボティクスの狙い
記号創発ロボティクスの狙い
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
 
世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計世界でいちばんわかりやすいドメイン駆動設計
世界でいちばんわかりやすいドメイン駆動設計
 
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
 
1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門1076: CUDAデバッグ・プロファイリング入門
1076: CUDAデバッグ・プロファイリング入門
 
TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?TensorFlow Lite Delegateとは?
TensorFlow Lite Delegateとは?
 
ゲームエンジンの中の話
ゲームエンジンの中の話ゲームエンジンの中の話
ゲームエンジンの中の話
 
ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門ドメイン駆動設計 本格入門
ドメイン駆動設計 本格入門
 
LBFGSの実装
LBFGSの実装LBFGSの実装
LBFGSの実装
 
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
【Photon勉強会】1時間でわかるプラグイン開発とその実際(2017/3/23講演)
 
Graph Convolutional Network 概説
Graph Convolutional Network 概説Graph Convolutional Network 概説
Graph Convolutional Network 概説
 

Viewers also liked

Using Mind Maping And UML Effectively in Software Development
Using Mind Maping And UML Effectively in Software DevelopmentUsing Mind Maping And UML Effectively in Software Development
Using Mind Maping And UML Effectively in Software DevelopmentKenji Hiranabe
 
勉強会資料 Uml概要
勉強会資料 Uml概要勉強会資料 Uml概要
勉強会資料 Uml概要Takao Sumitomo
 
3 基礎UML言語 第3章 クラス図とオブジェクト図(2)
3 基礎UML言語 第3章 クラス図とオブジェクト図(2) 3 基礎UML言語 第3章 クラス図とオブジェクト図(2)
3 基礎UML言語 第3章 クラス図とオブジェクト図(2) Enpel
 
かんたん!UMLのバージョン管理,どこでもモデリング
かんたん!UMLのバージョン管理,どこでもモデリングかんたん!UMLのバージョン管理,どこでもモデリング
かんたん!UMLのバージョン管理,どこでもモデリングKento Tsuji
 
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-データモデリング入門【実習編】-astah*を使って、TMの手法を使う-
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-Koichi Inami
 
ソフトウェア設計のすすめ
ソフトウェア設計のすすめソフトウェア設計のすすめ
ソフトウェア設計のすすめYoshimura Soichiro
 
モデリングもしないでアジャイルとは何事だ
モデリングもしないでアジャイルとは何事だモデリングもしないでアジャイルとは何事だ
モデリングもしないでアジャイルとは何事だIwao Harada
 
Astah Community スタートガイド
Astah Community スタートガイドAstah Community スタートガイド
Astah Community スタートガイドChangeVision
 
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料Hironori Miura
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう増田 亨
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南Mikiya Okuno
 

Viewers also liked (13)

Using Mind Maping And UML Effectively in Software Development
Using Mind Maping And UML Effectively in Software DevelopmentUsing Mind Maping And UML Effectively in Software Development
Using Mind Maping And UML Effectively in Software Development
 
勉強会資料 Uml概要
勉強会資料 Uml概要勉強会資料 Uml概要
勉強会資料 Uml概要
 
Umlとは
UmlとはUmlとは
Umlとは
 
3 基礎UML言語 第3章 クラス図とオブジェクト図(2)
3 基礎UML言語 第3章 クラス図とオブジェクト図(2) 3 基礎UML言語 第3章 クラス図とオブジェクト図(2)
3 基礎UML言語 第3章 クラス図とオブジェクト図(2)
 
Uml速習会
Uml速習会Uml速習会
Uml速習会
 
かんたん!UMLのバージョン管理,どこでもモデリング
かんたん!UMLのバージョン管理,どこでもモデリングかんたん!UMLのバージョン管理,どこでもモデリング
かんたん!UMLのバージョン管理,どこでもモデリング
 
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-データモデリング入門【実習編】-astah*を使って、TMの手法を使う-
データモデリング入門【実習編】-astah*を使って、TMの手法を使う-
 
ソフトウェア設計のすすめ
ソフトウェア設計のすすめソフトウェア設計のすすめ
ソフトウェア設計のすすめ
 
モデリングもしないでアジャイルとは何事だ
モデリングもしないでアジャイルとは何事だモデリングもしないでアジャイルとは何事だ
モデリングもしないでアジャイルとは何事だ
 
Astah Community スタートガイド
Astah Community スタートガイドAstah Community スタートガイド
Astah Community スタートガイド
 
SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料SQLアンチパターン メンター用資料
SQLアンチパターン メンター用資料
 
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみようドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
 
データベース設計徹底指南
データベース設計徹底指南データベース設計徹底指南
データベース設計徹底指南
 

Similar to UML入門

【12-B-4】 並列処理開発を支援するコンパイラの機能
【12-B-4】 並列処理開発を支援するコンパイラの機能【12-B-4】 並列処理開発を支援するコンパイラの機能
【12-B-4】 並列処理開発を支援するコンパイラの機能devsumi2009
 
Ohp Seijoen H20 06 Mojiretsu
Ohp Seijoen H20 06 MojiretsuOhp Seijoen H20 06 Mojiretsu
Ohp Seijoen H20 06 Mojiretsusesejun
 
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーションYuya Yamaki
 
ブラウザでMap Reduce風味の並列分散処理
ブラウザでMap Reduce風味の並列分散処理ブラウザでMap Reduce風味の並列分散処理
ブラウザでMap Reduce風味の並列分散処理Shinya Miyazaki
 
20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編mochiko AsTech
 
技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTracterada
 
20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説mochiko AsTech
 
自由軟體之授權
自由軟體之授權自由軟體之授權
自由軟體之授權Guo Albert
 
How To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPHow To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPAtsuhiro Kubo
 
4200 Kte7.0 Training V1.0
4200 Kte7.0 Training V1.04200 Kte7.0 Training V1.0
4200 Kte7.0 Training V1.0wayneliao
 
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~Don't forget Cygwin ~Cygwin のこともわすれないであげてください~
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~fd0
 
Ruby on Rails Tutorial Part I
Ruby on Rails Tutorial Part IRuby on Rails Tutorial Part I
Ruby on Rails Tutorial Part IWei Jen Lu
 
事件模型探究
事件模型探究事件模型探究
事件模型探究ematrix
 

Similar to UML入門 (20)

【12-B-4】 並列処理開発を支援するコンパイラの機能
【12-B-4】 並列処理開発を支援するコンパイラの機能【12-B-4】 並列処理開発を支援するコンパイラの機能
【12-B-4】 並列処理開発を支援するコンパイラの機能
 
Ohp Seijoen H20 06 Mojiretsu
Ohp Seijoen H20 06 MojiretsuOhp Seijoen H20 06 Mojiretsu
Ohp Seijoen H20 06 Mojiretsu
 
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
【13 C 2】デベロッパーに贈る!M-V-VMパターンで造るWPFアプリケーション
 
ブラウザでMap Reduce風味の並列分散処理
ブラウザでMap Reduce風味の並列分散処理ブラウザでMap Reduce風味の並列分散処理
ブラウザでMap Reduce風味の並列分散処理
 
20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第2部Air編
 
技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac技術トレンディセミナー フレームワークとしてのTrac
技術トレンディセミナー フレームワークとしてのTrac
 
20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編 解説
 
自由軟體之授權
自由軟體之授權自由軟體之授權
自由軟體之授權
 
How To Create Custom DSLs By PHP
How To Create Custom DSLs By PHPHow To Create Custom DSLs By PHP
How To Create Custom DSLs By PHP
 
yonex
yonexyonex
yonex
 
4200 Kte7.0 Training V1.0
4200 Kte7.0 Training V1.04200 Kte7.0 Training V1.0
4200 Kte7.0 Training V1.0
 
S2Flex2
S2Flex2S2Flex2
S2Flex2
 
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~Don't forget Cygwin ~Cygwin のこともわすれないであげてください~
Don't forget Cygwin ~Cygwin のこともわすれないであげてください~
 
Reloaded
ReloadedReloaded
Reloaded
 
What Can Compilers Do for Us?
What Can Compilers Do for Us?What Can Compilers Do for Us?
What Can Compilers Do for Us?
 
object-shapes
object-shapesobject-shapes
object-shapes
 
Grails紹介
Grails紹介Grails紹介
Grails紹介
 
Ruby on Rails Tutorial Part I
Ruby on Rails Tutorial Part IRuby on Rails Tutorial Part I
Ruby on Rails Tutorial Part I
 
Spring Framework勉強会
Spring  Framework勉強会Spring  Framework勉強会
Spring Framework勉強会
 
事件模型探究
事件模型探究事件模型探究
事件模型探究
 

More from Kuniaki Igarashi

my_everyday_life_with_ruby
my_everyday_life_with_rubymy_everyday_life_with_ruby
my_everyday_life_with_rubyKuniaki Igarashi
 
EM高専カンファレンス 編集後記とまえがき
EM高専カンファレンス 編集後記とまえがきEM高専カンファレンス 編集後記とまえがき
EM高専カンファレンス 編集後記とまえがきKuniaki Igarashi
 
世界のどこかで楽しくRubyでお仕事するために
世界のどこかで楽しくRubyでお仕事するために世界のどこかで楽しくRubyでお仕事するために
世界のどこかで楽しくRubyでお仕事するためにKuniaki Igarashi
 
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」「学生さんと一緒に Rubyイベントを つくっている←イマココ 」
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」Kuniaki Igarashi
 
高専カンファレンスカンファレンス
高専カンファレンスカンファレンス高専カンファレンスカンファレンス
高専カンファレンスカンファレンスKuniaki Igarashi
 
高専カンファレンス014Tokyo 前説
高専カンファレンス014Tokyo 前説高専カンファレンス014Tokyo 前説
高専カンファレンス014Tokyo 前説Kuniaki Igarashi
 
高専カンファレンス014tokyo 実行委員長挨拶
高専カンファレンス014tokyo 実行委員長挨拶高専カンファレンス014tokyo 実行委員長挨拶
高専カンファレンス014tokyo 実行委員長挨拶Kuniaki Igarashi
 
雷は落ちるのか昇るのか
雷は落ちるのか昇るのか雷は落ちるのか昇るのか
雷は落ちるのか昇るのかKuniaki Igarashi
 
World Wide Ruby Conferences
World Wide Ruby ConferencesWorld Wide Ruby Conferences
World Wide Ruby ConferencesKuniaki Igarashi
 
高専カンファレンス 014東京 予告編
高専カンファレンス 014東京 予告編高専カンファレンス 014東京 予告編
高専カンファレンス 014東京 予告編Kuniaki Igarashi
 
高専カンファレンス2010秋 予告編
高専カンファレンス2010秋 予告編高専カンファレンス2010秋 予告編
高専カンファレンス2010秋 予告編Kuniaki Igarashi
 
高専カンファレンスについて @kosenconf-012hachinohe
高専カンファレンスについて @kosenconf-012hachinohe高専カンファレンスについて @kosenconf-012hachinohe
高専カンファレンスについて @kosenconf-012hachinoheKuniaki Igarashi
 
高専カンファレンス2009秋in東京 実行委員長挨拶
高専カンファレンス2009秋in東京 実行委員長挨拶高専カンファレンス2009秋in東京 実行委員長挨拶
高専カンファレンス2009秋in東京 実行委員長挨拶Kuniaki Igarashi
 
高専カンファレンス2009秋in東京 予告編
高専カンファレンス2009秋in東京 予告編高専カンファレンス2009秋in東京 予告編
高専カンファレンス2009秋in東京 予告編Kuniaki Igarashi
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2Kuniaki Igarashi
 
RubyKaigi Lightning Talks TwYM episode1
RubyKaigi Lightning Talks TwYM episode1RubyKaigi Lightning Talks TwYM episode1
RubyKaigi Lightning Talks TwYM episode1Kuniaki Igarashi
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your MessagesKuniaki Igarashi
 

More from Kuniaki Igarashi (20)

my_everyday_life_with_ruby
my_everyday_life_with_rubymy_everyday_life_with_ruby
my_everyday_life_with_ruby
 
EM高専カンファレンス 編集後記とまえがき
EM高専カンファレンス 編集後記とまえがきEM高専カンファレンス 編集後記とまえがき
EM高専カンファレンス 編集後記とまえがき
 
世界のどこかで楽しくRubyでお仕事するために
世界のどこかで楽しくRubyでお仕事するために世界のどこかで楽しくRubyでお仕事するために
世界のどこかで楽しくRubyでお仕事するために
 
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」「学生さんと一緒に Rubyイベントを つくっている←イマココ 」
「学生さんと一緒に Rubyイベントを つくっている←イマココ 」
 
高専カンファレンスカンファレンス
高専カンファレンスカンファレンス高専カンファレンスカンファレンス
高専カンファレンスカンファレンス
 
高専カンファレンス014Tokyo 前説
高専カンファレンス014Tokyo 前説高専カンファレンス014Tokyo 前説
高専カンファレンス014Tokyo 前説
 
高専カンファレンス014tokyo 実行委員長挨拶
高専カンファレンス014tokyo 実行委員長挨拶高専カンファレンス014tokyo 実行委員長挨拶
高専カンファレンス014tokyo 実行委員長挨拶
 
雷は落ちるのか昇るのか
雷は落ちるのか昇るのか雷は落ちるのか昇るのか
雷は落ちるのか昇るのか
 
World Wide Ruby Conferences
World Wide Ruby ConferencesWorld Wide Ruby Conferences
World Wide Ruby Conferences
 
高専カンファレンス 014東京 予告編
高専カンファレンス 014東京 予告編高専カンファレンス 014東京 予告編
高専カンファレンス 014東京 予告編
 
高専カンファレンス2010秋 予告編
高専カンファレンス2010秋 予告編高専カンファレンス2010秋 予告編
高専カンファレンス2010秋 予告編
 
Cafe igaiga
Cafe igaigaCafe igaiga
Cafe igaiga
 
高専カンファレンスについて @kosenconf-012hachinohe
高専カンファレンスについて @kosenconf-012hachinohe高専カンファレンスについて @kosenconf-012hachinohe
高専カンファレンスについて @kosenconf-012hachinohe
 
高専カンファレンス2009秋in東京 実行委員長挨拶
高専カンファレンス2009秋in東京 実行委員長挨拶高専カンファレンス2009秋in東京 実行委員長挨拶
高専カンファレンス2009秋in東京 実行委員長挨拶
 
勉強会でAgileを
勉強会でAgileを勉強会でAgileを
勉強会でAgileを
 
高専カンファレンス2009秋in東京 予告編
高専カンファレンス2009秋in東京 予告編高専カンファレンス2009秋in東京 予告編
高専カンファレンス2009秋in東京 予告編
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
 
RubyKaigi Lightning Talks TwYM episode1
RubyKaigi Lightning Talks TwYM episode1RubyKaigi Lightning Talks TwYM episode1
RubyKaigi Lightning Talks TwYM episode1
 
197x Timer with Your Messages
197x Timer with Your Messages197x Timer with Your Messages
197x Timer with Your Messages
 
TwYM
TwYMTwYM
TwYM
 

UML入門

  • 1. UML入門 2007.10.26 Kuniaki IGARASHI http://igarashikuniaki.net/tdiary/
  • 2. この資料について UML入門です。 UMLでよく使うクラス図と シーケンス図に絞って説明します。 UMLには他にもユースケース図、アクティブティ図、状態図、 などなどたくさんの図があります。 C++で説明を行います。 UMLでの名前と、C++での名前を併記します。 UML : name in UML(english)/ UMLでの名前(日本語) C++ : name in C++(english)/ C++での名前(日本語) 例) UML : attribute/属性 C++ : member variable/メンバ変数
  • 3. What's UML ? Unified Modeling Language the Unified Modeling Language (UML) is a standardized specification language for object modeling. UML is officially defined at the Object Management Group (OMG). ISO acceptance: OMG is pleased to announce that the UML specification (version 1.4.2, OMG document: formal/05-04-01) is now an accepted ISO specification. It is available from ISO as ISO/IEC 19501. UML version 2.1.1 2007/02/03 http://www.omg.org/technology/documents/formal/uml.htm We can dounload the UML standards. 簡単に言うと、コミュニケーションの道具。言葉と同じ。 みんなが知ってるルールで図を書けば、 伝えるのも簡単だし早い!
  • 4. クラス図 C++ codes ClassA class name/クラス名 class ClassA{ +field1 : int UML : attribute/属性 public: #field2 : char C++ : member variable/メンバ変数 int filed1; -field3 : ClassB* [可視性] [属性名] : [型] protected: char field2; +method1 : void UML : operation/操作 private: #method2 : int C++ : method/メソッド ClassB* field3; -method3 : char* [可視性] [操作名] : [戻り値の型] public: void method1(); protected: 属性はassociation/関連を使って書くことも可能です。 int method2(); private: UML : multiplicity/多重度 char* method3(); * = 0~無限大 }; 0..1 = 0 or 1 ClassA ClassA ClassB 1 0..1 UML : visibility/可視性 - field3 : ClassB # protected + public - private
  • 5. クラス図 C++ codes UML : abstract method/抽象操作 class ParentClass{ C++ : 純粋仮想関数 ParentClass int filed1; Italic style(斜体)にする field1 static char field2; 属性に抽象操作を持つクラス名も斜体に。 field2 virtual void method1() = 0; UML,C++ : static/静的 int method2(){ method1 下線を引く // ... method2 }; UML : generalization/汎化 }; C++ : inheritance(is-a)/継承 この形の矢印 <<interface>> ChildClass class ChildClass : public ParentClass{ IFClass void method1(){ // ... method1 JAVAなどには method1 method2 }; interface method3 という概念もあります。 static void method3(){ 破線矢印で表します。 // ... C++には無いです。 }; ImprementedClass }; method1 method3
  • 6. クラス図 C++ codes Color class Color { // ... UML : aggregation/集約 }; C++ : has-a/持っている この形の矢印 class Fruit { Fruit Color color; color // ... }; class Basket { Fruit fruits[10]; Basket } note/ノート fruits commentを 書くときは こう書きます。
  • 7. クラス図 Fruit Fruit composition/コンポジション = aggregation/集約 + 以下の制限 持たれている対象(Fruit)のインスタンスは、 同時に2つ以上のクラスに属することはできない。 ほとんどの場合、コンポジション関係の2つのイ Basket Basket ンスタンスは生存期間が同じ。 fruit fruit aggregation/集約 composition/コンポジション(構成?) from UML version 2.1.1 quot;Composite aggregation is a strong form of aggregation that requires a part instance be included in at most one composite at a time. If a composite is deleted, all of its parts are normally deleted with it. Note that a part can (where allowed) be removed from a composite before the composite is deleted, and thus not be deleted as part of the composite. quot; Engine engine; Car Engine Bus Car car; car->Set(engine); engineインスタンスは engine engine Bus bus; carインスタンスで持ったら bus->Set(engine); busインスタンスでは持てない。
  • 8. シーケンス図 オブジェクトが対話する様子を見える化するための道具 UML: object /オブジェクト or actor/アクター UML: message/メッセージ C++: method- call/ メソッド呼び出し UML,C++:return/リターン (省略可) UML:self-call/自己呼び出し UML:frame/フレーム loop文やif文を記述
  • 9. 参考文献 Uml Distilled: A Brief Guide to the Standard Object Modeling Language ISBN-13: 978-0321193681 Martin Fowler UMLモデリングのエッセンス第3版 ISBN-13: 978-4798107950 ↑の本の日本語版。 Design Patterns: Elements of Reusable Object-Oriented Software (Addison- Wesley Professional Computing Series) ISBN-13: 978-0201633610 GoF本。デザインパターンの基礎。難しい。 増補改訂版Java言語で学ぶデザインパターン入門 ISBN-13: 978-4797327038 結城浩さん著。GoF本に沿ってデザインパターンを易しく分かりやすく解説。 本資料の題材は結城さん本の序章にある「UMLについて」を参考にさせて頂きました。 また、「UMLモデリングのエッセンス第3版」でUMLについて学ばせて頂きました。 感謝申し上げます。m(_ _)m