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


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

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

でも日本人からみると、言語じゃなくてですよね。

まあ、どう見たって、

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


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

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

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

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

なんか、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返すのが良いかどうかはさておき
    }
}

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

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

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

さぁ、考えてみよう!