UML入門

・UMLとは?

UML(Unified Modeling Language)とは、オブジェクト指向を使ったシステム開発で用いられるさまざまなモデルの標準化された表記法で、 分析から設計、実装まですべての工程で使用されます。
有用性として
・表現力が高く容易に理解できる為、UMLのみで意思の疎通が図れる
・すべての工程で用いる表記法が一貫している為、システム関係者間で協調作業を容易に行える
・標準化された言語であり、世界中でコミュニケーションがとれる
といったことが挙げられます。
現在は、オブジェクト指向でのシステム開発における必須知識の一つとなっています。
1.オブジェクト指向
  • UMLは、オブジェクト指向技術の表記法を標準化したものです。
    ここではオブジェクト指向について説明します。
  
オブジェクト指向の基本概念
  • オブジェクト指向はソフトウェアの開発技術の1つで、 その名前が示すとおり「オブジェクト」という単位ですべてをとらえる考え方です。
    オブジェクトとは物理的、概念的にまとまった”もの”、”人”のことです。
    「田中さんに、早くレポートを出すように言っておいて」
    ”田中さん””レポート”など名詞として抽出できるものがオブジェクトになります。
    ”早く””出す””言う”などの形容詞、動詞は一般的にオブジェクトにはなりません。
    それはオブジェクトが以下のような特徴を持つからです。
  
オブジェクトの特徴
  • ・オブジェクトは状態を持つ
    ・オブジェクトは振る舞いを持つ
    オブジェクト指向開発では、関係のあるデータ(属性)と手続き(振る舞い)を一緒に扱います。
    オブジェクトは他のオブジェクトから依頼されると、内部の状態を変更したり、 何らかのサービスを提供したりします。
    田中さんは「名前」や「年齢」といった属性を持ち、 「どなたですか?」と聞かれれば「田中です」と答え、 「何歳ですか?」と尋ねられれば「23歳です」と答えます。
  
クラス
  • オブジェクトの属性や振る舞いの共通性に着目して、抽象化したものをクラスと言います。
    この作業をクラス化(類型化)と言います。
    逆にクラスからオブジェクトを生成することをインスタンス化と言います。
    「人間」クラスから生成された「田中さん」オブジェクトは「名前」や「年齢」といった 「人間」共通の属性を持っています。
    そして「年齢を尋ねられると、年齢を答える」という振る舞いを持っています。
    ではクラスとクラスの結びつきについて考えてみましょう。
  
関係
  • クラスとクラスの結びつきを関係と言います。
    関係を明確にすることで、より正確にモデル情報を伝えることが可能になります。
    以下は代表的な関係です。
    ・依頼する(会話する)
    ・参照する
    ・作成する
    ・使用する(消費する)
    ・状態を表現する
    ・集約(する)
    集約とはあるオブジェクトが他のオブジェクトの一部であったり、持っていたりする関係です。
    また同じクラス間でも複数の異なる関係を引くこともあります。
    「田中さん」は「○○銀行」の「行員」ですが、口座を開設しているので、「お客」でもあるわけです。
  
継承
  • 継承とは一つのクラスの性質をすべて受け継いだ上で、さらに性質を加えた新しいクラスを作ることです。
    まず、異なるクラスの共通している性質に着目し、共通の部分のみを上位クラスに配置し、 クラスの階層構造を作成します。これを凡化と言います。
    逆に、独自の性質に着目し、特殊化されたクラスを定義することを特化と言います。
    このとき階層構造の上位クラスをスーパークラス、下位クラスをサブクラスと言います。
    サブクラスはスーパークラスで定義された属性と操作をすべて持ってます。
    例えば「乗物」クラスは「船」「飛行機」「車」などのサブクラスを持ち、
    「車」クラスは「軽自動車」「普通車」「大型車」などのサブクラスを持ちます。
    「普通車」クラスは「乗物」クラス、「車」クラスのすべての属性と操作を持ちます。
  
メッセージ
  • オブジェクト指向ではメッセージのやり取りによってシステムが進行します。
    メッセージは送る相手と相手にしてほしいことから構成されます。
    送られた相手は振る舞いとしてあらかじめ定義されているもの以外は メッセージを受け付けることができません。
    リモコンを操作する例で考えてみましょう。
    田中さんはリモコンを使い、エアコンの設定温度を21度に変更しました。
    これは「田中さん」オブジェクトから「リモコン」オブジェクトに、 そして「リモコン」オブジェクトから「エアコン」オブジェクトに行なわれたメッセージ送信といえます。
    また、同じメッセージを送っても受ける側のオブジェクトにより、異なった反応をします。 これをポリモフィズム(多相性)と言います。
    例えば「移動する」という同じ依頼を受けても、 「船」「飛行機」「自動車」はそれぞれ異なる動きをするでしょう。
    この様に、一つのインターフェイスで様々な実装を隠すことができ、 保守拡張性の高いシステム開発が可能となります。
  
もう一言
  • オブジェクト指向は現実そのままを表現することが強調されますが、 実際には現実と異なる表現を用いることもあります。
    オブジェクト指向ではオブジェクトは”もの”でも意志を持っているようにとらえます。 現実では、時間を知りたい時は時計をみるのですが、オブジェクト指向では、 「時計」オブジェクトに対し時間を尋ね、「時計」オブジェクトが時間を教えてくれることになります。
    また、現実では会社が従業員に給与を支払う際、給与計算をするのは経理担当でしょうが、 オブジェクト指向では従業員が、給与の属性と操作を持つと考えます。

    オブジェクト指向についてはこの位にしましょう。
    <次回はユースケース図について説明します>