UMLの書き方(読み方)〜概要とクラス図〜

最近、UMLを使用することが多いので大急ぎでここに読み方、書き方をまとめておきます。

UMLとは

早い話が、プログラムを組み上げるのにどのように組み上げてやれば良いか?を図示する為の書き方のルールをまとめたものです。

参考サイトによると以下の通りです。

UMLとは、オブジェクト指向のソフトウェア開発において、データ構造や処理の流れなどソフトウェアに関連する様々な設計や仕様を図示するための記法を定めたもの。ソフトウェアのモデリング言語の標準としてとして最も広く普及している。

まとめると、

UMLには複数の図の書き方がありますがここでは、クラス図に関してまとめると

クラスで管理するデータや振る舞い(メソッド)の関連を図で示したものです。

全世界共通言語なので、サンスクリット語圏の人とでもUMLであれば共通の認識を持つことが可能ということです。
メモとか、が微妙ですが。。。

UMLの種類

分類レベル1

構造図(structure diagram)、振る舞い図(behavior diagram)の2種類に分類される。

構造図にはクラス図(class diagram)がある
  1. オブジェクト図(object diagram)
  2. コンポーネント図(component diagram)
  3. パッケージ図(package diagram)
  4. 配置図(deployment diagram)
  5. 複合構造図(composite structure diagram)
  6. クラス図(上の参考サイトにはなかった(笑))

振る舞い図(behavior diagram)

A. アクティビティ図(activity diagram)
B. ユースケース図(use case diagram)
C. ステートマシン図(state machine diagram)
D. 相互作用図(interaction diagram)
E.シーケンス図(sequence diagram)
F. コミュニケーション図(communication diagram)
G. 相互作用概要図(interaction overview diagram)

上のGに関してはあまり見かけません。。。

とりあえずは、

クラス図

主に使いたいのは「クラス図」です。クラスとクラスの関係、相互にどんな処理を行うか?
詳細設計レベルでの記述を行いたいのでこのUMLを中心に記載します。

クラス図は、オブジェクト図を細かくしたようなイメージです。

例えば

じゃんけんゲーム(標準出力使用)を作る場合は下の様なクラスを用意してやると拡張したり仕様変更に強い形で実装出来ます。

  1. メインメソッドを動かすクラス
  2. 細かい処理を行うロジッククラス
  3. 標準出力に出力するクラス
  4. 入力などのチェックを行うクラス

これらのクラスに、どの様なデータを持たせ、どの様な処理(振る舞い)を行うのか?を図に書き込みます。

すると、全体的にクラス間の関係がよく見える。というわけです。

クラスの書き方

人間をサンプルに記載します。
人間には、以下のプロパティ(要素)があります。(部分的に抜粋)

  1. 年齢
  2. 名前
  3. 体重

もちろんその他にもたくさんあり、数えきることができないくらいです。

そして、もう1つ行動(振る舞い)があります。上記と同様に。。。

  1. 挨拶(greet())
  2. 道具を使う(useTooles())

というようにメソッドを定義しています。振る舞い=メソッドというわけです

これがクラスの書き方になります。
ちなみにJavaで実装すると下のようになります。

public class 人間クラス {
   private int 年齢;
   private String 名前;
   private int 体重;

   public void greet() {
       System.out.println("Hello!");
   }
   public void useTools() {
      // 実装内容が決まっていないので空実装
   }
}

UMLの矢印

矢印の種類には何個かありますが、とりあえず以下の2つを理解します。

継承(extends)

クラスの継承を示す矢印です。

実装(implements)

インターフェースの実装を示す矢印です。

「インターフェース」という言葉はたくさんの場面で全く違う意味で使用されることが多いので注意が必要です。
ここでいう「インターフェース」はインターフェース・クラスのことで、特定の機能(メソッド)を実現(実装)するもののことを指します。

他にもネットワーク越しでの通信じに使用するデータ・オブジェクトを指すこともあります。(わりかしこの意味が多いような。。。)

とりあえずは、これらを理解しておけば、大体のUMLは読めると思います。
わからないことは「調べれば良い」のです(笑)

関連ページ

UMLツール Star UML〜ユースケース図を書いて見た〜
UMLツール 〜Star UMLを使う〜



投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す