オブジェクト指向

オブジェクト指向

ここでは,オブジェクト指向技術に関する情報をご紹介します.
UML (Unified Modeling Language: 統一モデリング言語) やオブジェクト指向開発プロセス,ソフトウェア パターン,UML 対応の CASE ツール等が中心です.
オブジェクト指向関連の書籍や Web サイトもご紹介します.


凡例:
本頁内 : 頁内へのリンク
別頁 : サイト内の別頁へのリンク
外頁 : 外部サイトへのリンク

オブジェクト指向について

UML 関連

・UML技術者認定制度

■ 2000/11/30

「UML技術者認定制度」というのが有ります.
現在実施されているのは,ブロンズ レベル (UML が読めるレベル) とシルバー レベル (UML が書けるレベル) の二つです.
(2001/10/30 追記: 現在はゴールドレベル試験も追加されています)
Web サイトで受験出来,合格すると認定証を送って来ます.

無料です.

ある程度 UML の学習が進んだところで実力を確かめるのには宜しいかと思います.

# ちなみに筆者は,3レベルとも取得しました.

# (2004/02/06 追記: 「UML技術者認定制度」は,2003年10月一杯で終了し,UMTP/Japan 特定非営利活動法人UMLモデリング推進協議会の実施する「UML モデリング技能認定試験」に移行しました)

■ 2003/05/29

・上記とは別に,OMG 認定の UML 技術者資格試験が年内にスタートする予定です.
OMG (Object Management Group) とユーエムエル教育研究所 (UTI) によって行われるそうです.
詳細は,ユーエムエル教育研究所 (UTI)

■ 2003/05/30

・また,UMLモデリング推進協議会が「UML技術者認定制度」をベースとした UML を使ったモデリング技量を測る認定試験を開始するようです.
こちらは 2003年11月から徐々にスタートし,最初の認定料は4000〜5000円になる予定だそうです.

# (2003/11/10 追記: UMTP/Japan 特定非営利活動法人UMLモデリング推進協議会)

■ 2003/10/27

OMG 認定 UML 技術者資格試験の方ですが,受験料一万円のモニター試験キャンペーンが行われました.
英語で実施されたベータ試験の日本語版で,100 名の受験者が選抜されました.

# ちなみに筆者もこのモニター試験を受けました.
# (2003/11/10 追記: 合格しました)

■ 2004/02/06

OMG 認定 UML 技術者資格試験のインターメディエイト (日本語版) が1月30日から配信開始されました.

・UML の最近の動向

■ 2001/04/04

・現在の UML のバージョンは 1.4 です.現在オブジェクト指向技術の標準化団体 OMG (Object Management Group,参加企業は IBM,HP,Sun Microsystems,Microsoft,Oracle,東芝等 700 社以上) を中心に 2.0 を作成中です.

※ OMG <http://www.omg.org/>
※ 豆蔵 UML 1.4 変更・拡張点 〜 素早い移行のために 〜 <http://www.mamezou.com/tec/Tips/uml14Changes/>

・現在 UML は,OMG によって管理され,過去のバージョン・最新のバージョンから未来のバージョンに到るまでオープンにされています.また,バージョンが同じなら世界中で同一であることが保証され,方言のようなものは存在しません.

・今年中あたりに UML は ISO (国際標準化機構) に取り入れられる予定です. ISO に取り込まれればいずれ近い内に JIS (日本工業規格) にも取り入れられます.

・XMI (XML Metadata Interchange Format) と呼ばれる XML を使った技術により,各種 UML 対応 CASE ツールを通してデータの標準化が進むことになっています.

・これらにより,今後オブジェクト指向の唯一の標準的な技術として一般的に使われるようになっていくと考えられます.

■ 2003/05/29

・更に最近の動向です.
現在の UML のバージョンは 1.5 です.
UML 1.5 (OMG の最新公式 UML ドキュメント) を参照すると最新のものが見られます.又,PDF 等の形式で英語版がダウンロード出来ます.

・UML の 2.0 は,随分掛かりましたが今年完成予定です.特徴等は,本サイト中の「オブジェクト指向」-「イベント参加レポート集」-「UML Forum/Tokyo 2003」に若干記述しました.

■ 2003/10/24

・近く UML2.0 がリリースされます.2004 年の 4 月の予定です.
初のメジャー バージョンアップとなります.殆どの仕様が決まり,現在はデバッグ中です.

・OMG 認定の UML 技術者資格試験も 2.0 をベースとしています.

・2.0 では,多くの変更が為されていますが,図 (Diagram) についても追加や名称の変更が行われています.

UML 1.X の図は以下の通りでした.

構造図
(Structural Diagrams)
クラス図 (Class Diagrams) パッケージ図 (Package Diagrams)
オブジェクト図 (Object Diagrams)
コンポーネント図 (Component Diagrams)
配置図 (Deployment Diagrams)
振る舞い図
(Behavioral Diagrams)
ユースケース図 (Use Case Diagrams)
相互作用図
(Interaction Diagrams)
シーケンス図 (Sequence Diagrams)
コラボレーション図 (Collaboration Diagrams)
ステートチャート図 (Statechart Diagrams)
アクティビティ図 (Activity Diagrams)

UML 2.0 では次のように変更されました.

構造図
(Structural Diagrams)
クラス図
(Class Diagrams)
オブジェクト図 (Object Diagrams)  
パッケージ図 (Package Diagrams)  
複合構造図 (Composite Structure Diagram) 新規
コンポーネント図 (Component Diagrams)  
配置図 (Deployment Diagrams)  
振る舞い図
(Behavioral Diagrams)
ユースケース図 (Use Case Diagrams)  
相互作用図
(Interaction Diagrams)
シーケンス図 (Sequence Diagrams)  
コミュニケーション図 (Communication Diagrams) コラボレーション図 (Collaboration Diagrams) から名称変更
インタラクション・オーバービュー図 (Interaction Overview Diagrams) 新規
タイミング図 (Timing Diagram) 新規
ステートチャート図 (Statechart Diagrams)  
アクティビティ図 (Activity Diagrams)  

尚,UML2.0の新しい部分については,イベント参加レポート集 - UML Forum/Tokyo 2003でも若干触れております.


遊び

Design Patterns for Computer Aided Design別頁
デザインパターンを活用したサンプルとして,ウィンドウズ上で動作する CAD アプリケーションの設計を行ってみようと思います.

バグ パターン別頁
冗談です.

・オブジェクト原理主義 (謎)
昨今は,C++ や Java,C# 等のハイブリッド (謎) なオブジェクト指向言語が流行っているようですが,其れを潔しとせず,もっと純粋にオブジェクト指向されている人も居るようです.

このような人達の事を,私は (畏敬の念をもって) 「オブジェクト原理主義者」と呼んでおります.

1. 汝,オブジェクト以外の何者もプログラムの構成要素とする事勿れ.
2. 汝,組込型を作り又使う事勿れ.
3. 汝,みだりに公開する事勿れ.
4. 汝,みだりに依存する事勿れ.


UML 対応 オブジェクト指向 CASE ツール


■ Rational Rose, Rational XDE
・IBM Rational Software <http://www-6.ibm.com/jp/software/rational/>
・高価だが標準的

■ VEST−SAVER for Java Ver1.3
・ヴェスト ソフトウェア社 <http://www.vest.co.jp/>
・評価システムがダウンロード可

■ Together Control Center 6.0.1
・Borland <http://www.borland.com/together/>
・Borland Japan <http://www.borland.co.jp/together/>

■ Paradigm Plus
・Computer Associates <http://www.caj.co.jp/>
・評価版有り

■ Rhapsody in C++
・I-Logix <http://www.ilogix.com/> 販売元 伊藤忠テクノサイエンス株式会社 <http://www.ctc-g.co.jp/>
・デモ版が無償ダウンロード可

■ ObjectPlant
・ARCTAEDIUS <http://www.arctaedius.com/>

■ Jude
Java 言語と UML1.4 (Unified Modeling Language) によるオブジェクト指向設計サポート設計支援ツール "Jude"
<http://objectclub.esm.co.jp/Jude/jude.html>

■ Microsoft Visual Modeler に関して

Microsoft Visual Modeler は Microsoft Developer Studio Enterprize Edition 付属のオブジェクト指向開発 CASE ツールです.
ラショナル社の有名なオブジェクト指向開発 CASE ツール "Rational Rose" のサブセットで,ラショナル社によって開発されました.
機能としては貧弱ですが,Developer Studio Enterprize Edition を御使いの方は容易に試せるということでご紹介致します.

○ UML サポート

UML (Unified Modeling Language) は,オブジェクト指向開発では標準的な表記法です.Microsoft Visual Modeler ではこの UML のサブセットが描けます.

・クラス図及びコンポーネント図,配置図が描ける

・オブジェクト図,ユースケース図,相互作用図 (シーケンス図,コラボレーション図),アクティビティ図,ステートチャート図を描く機能はない

・論理ビュー,コンポーネント ビュー,配置ビューに分けて描ける

・論理ビューでは,ユーザー サービス・ビジネス サービス・データ サービスの 3 階層の論理パッケージに分ける,というアーキテクチャで描くのが基本.

○ Microsoft Developer Studio のその他のツールとの融和性

・コード生成
Visual Basic と Visual C++ のコードの自動生成が可

・ ソース管理
成果物は Visual Source Safe で管理出来る


■ VISIO
VISIO Professional Edition でも UML は描けます.

http://www.microsoft.com/japan/office/visio/

対応しているのは UML1.2 です.

Microsoft Visual Studio 6.0 との組み合わせにより,Visual Basic,Visual C++,Visual J++ のプロジェクトをリバース エンジニアリングしてクラス図の作成が出来るようです.
Enterprise Edition では,逆にクラス図から Visual Basic,C++,および Java のコード スケルトンの生成も出来るそうです.

VISIO Enterprise Edition を試してみました.

まず,UML で簡単な「クラス図」を書いてみました.

UML クラス図

このクラス図から「使用言語」に「C++」を選択して「コードの生成」を行うと,各クラス毎に .h ファイルと .cpp ファイルが自動作成されます.

例.

#ifndef __Top_Package__Composite__
#define __Top_Package__Composite__


// Include files
#include "Component.h"
class Composite : public Component
{
public:
    Composite();
    ~Composite();

    void Operation();

    Composite Add(Composite component);

    Composite Remove(Composite component);

    int GetChild(int index);

    std::set<Component*> get() const
    {
        return m_;
    }

    void set(const std::set<Component*> &the_)
    {
        m_ = the_;
    }

    protected:
    private:
        std::set<Component*> m_;
};

// END CLASS DEFINITION Composite

#endif // __Top_Package__Composite__

ちなみに Java だと

/* 静的モデル */
package Top_Package;

import Top_Package.Component;
public class Composite extends Component
{
    public Composite()
    {
        super();
    }
    public final Operation()
    {
    }
    public final Add(Composite component)
    {
    }
    public final Remove(Composite component)
    {
    }
    public final GetChild(long index)
    {
    }
    public final java.util.Vector get()
    {
        return this.m;
    }
    public final void set(java.util.Vector the_m)
    {
        this.m = the_m;
    }

    private java.util.Vector m = null;

}
/* END CLASS DEFINITION Composite */


■ その他のツール
オブジェクト指向関連 Web サイト - オブジェクト指向 CASE ツール

■ 関連ニュース
オブジェクト指向関連ニュース - オブジェクト指向 CASE ツール


オブジェクト指向以外の方法論

■ 記事