LoginSignup
3
1

More than 3 years have passed since last update.

UML(Unified Modeling Language)のどこが言語(Language)なのか?

Last updated at Posted at 2018-06-02

UMLは、日本人から見ると「図」

UMLって、言語だって知っていますか?
Unified Modeling Language で、ラングエッジ 、つまり言語です。

でも日本人からみると、言語じゃなくてですよね。
image.png
まあ、どう見たって、

これでも、日本人から見たら、やっぱりですよね。

image.png
「図書館は、蔵書を所蔵する。」

UMLは、英語圏の人から見ると「言語」

でも、これを英語にしてみましょう。

image.png

「A Library houses bibliothecas.」
※house:所蔵する、bibliotheca:蔵書、owner:所有者

image.png

なんか、UMLのクラス図の並びって、英語の SVO(主語・動詞・目的語) と同じじゃないですか?

はい。

UMLのクラス図って、英語の SVO を絵で描いたものになってます。

つまり、英語圏の人は、普段使う言語を図に置き換えてモデリングできるんです。

英語圏の人から見たら、そのまま言語でしょ。
Modeling Language、モデリング言語

「言語」でプログラミングしたら、、、

普通の感覚で言語ならば、
クラス図描いたら、
それをクラスとして実装して、

book.cs
// (日本人向けの説明)本について書きます
class book
{
    // (日本人向けの説明)本には、タイトルがあります
    public string Title:
}
library.cs
// (日本人向けの説明)図書館について書きます
class library
{
    // (日本人向けの説明)図書館には、蔵書リストがあります。蔵書リストは、bookのリストです。
    List<book> Bibliothecas = new List<book>():

    // (日本人向けの説明)図書館には、蔵書を追加できます
    public void AddBibliotheca(book newBook)
    {
        // (日本人向けの説明) 蔵書リストに追加する、新しい本を
        Bibliothecas.Add(newBook);
    }

    // (日本人向けの説明)図書館では、タイトルから蔵書を検索できます
    public book SearchBook(string targetBookTitle)
    {
        // (日本人向けの説明)ある本、蔵書リストの中にある
        foreach( book bibliothea in this.Bibliothecas ){
            // (日本人向けの説明) その本のタイトルが同じ、探している本のタイトルと、
            if( bibliothea.Title.Equals(targetBookTitle){
                // (日本人向けの説明) 戻す、その本を
                return bibliothea;  // この辺は、Linqで書けばいいのかな.
            }
        }
        return null:  // null返すのが良いかどうかはさておき
    }
}

みたいに、日常の言語的な感覚で、実装することができる。
日本人向けにコメント入れたけれど、英語圏の人ならコメントいらない。

これならば、不具合が少なくなるよね。

どうして、不具合が少なくなるのか?

さぁ、考えてみよう!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1