Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

I lang-modeling

193 views

Published on

UMLを用いたI言語周りのモデリング

Published in: Science
  • Be the first to comment

  • Be the first to like this

I lang-modeling

  1. 1. オブジェクト指向とUML オブジェクト指向モデリング
  2. 2. データ/手続き指向 • 従来のソフトウェア開発はデータ/手続き指向 で行われていた • データ/手続き指向は、データと手続きの境界 が曖昧なので、ソフトウェア設計が複雑化 • データ/手続き指向言語の例 – C言語 – Pascal言語 – Fortran言語など
  3. 3. オブジェクト指向 • オブジェクト指向の導入 – 世間にある事柄すべてをオブジェクトで表現 – データやふるまいがオブジェクトに属する – オブジェクト間の相互作用をメッセージで表現 – オブジェクトの境界が明確化し、ソフトウェア設計 の複雑さを軽減 • オブジェクト指向言語の例 – Java言語 – C++言語など
  4. 4. オブジェクトとは • モノを表す概念 • オブジェクトの構成要素(2つ) – 属性(attribute) – ふるまい(behavior) • メッセージ – オブジェクトAからオブジェクトBのふるまいを実行 「走れ」 (メッセージ)
  5. 5. クラスとオブジェクト • クラス – オブジェクトの共通の事柄を定義したもの – オブジェクトを定義するテンプレート(ひな型) – クラスを拡張して新しいクラスを定義可能 • オブジェクト – クラスというひな形を実体化して、具体的なデー タを与えたものがオブジェクト
  6. 6. UML • Unified Modeling Language • オブジェクト指向モデリング言語 • オブジェクト、クラス、オブジェクト同士の関係 などを図で表現
  7. 7. クラス図 • 目的 – クラスを定義する – クラスを拡張して、新しいクラスを定義する – クラスの依存関係を定義する
  8. 8. クラス図(人) • 人を表すクラスHumanを定義 • クラスの属性を中央に書く – ILang[]型のiLang変数を持つ – []は配列(複数個があることを示す) – バイリンガル/トリリンガルを考慮して、配列[]にした • クラスのふるまいを下段に書く – learnLanguageというふるまいを持つ – Languageは引数 – voidは復帰値がないことを示す
  9. 9. クラス図(I言語) • I言語を表すクラスILangを定義 • I言語の属性 – Lexicon型のlexicon変数を持つ • I言語のふるまい – mergeというふるまいを持つ – Contextは文章を解析するのに必要なコンテキスト – Sentenceは文章 – mergeの結果として何らかを取得するが、それが何な のか不明なので、Object[]という普遍的な型にした
  10. 10. クラス図(Lexicon) • Lexiconクラス • 属性やふるまいが不明なら、 クラス名のみ定義 • クラス名を定義するだけでも意味がある – Lexiconが抽象的な概念だとわかる
  11. 11. I言語の拡張 • I言語を拡張して、言語ごとのiLangを定義 • I言語の属性とふるまいを継承 – lexiconはILangをそのまま継承するので、 拡張クラスでは書かない – ただし、ふるまいのmergeはILangの定義を上書きし、 各言語ごとの処理を定義するため、拡張クラスで再 度書く
  12. 12. Lexiconの拡張 • 言語ごとにLexiconの属性やふるまいが違う かもしれないので、拡張クラスを定義 • 親クラスLexiconが抽象的なものであり、子ク ラス(拡張クラス)で具体化していく
  13. 13. 各クラスの関係を結びつける • HumanはiLang属性を持ち、ILangに依存 • ILangはlexicon属性を持ち、Lexiconに依存 • mergeの引数に必要なクラスとして、 ContextとSentenceに(弱めの)依存
  14. 14. オブジェクト図 • 目的 – クラスから生成したオブジェクトの状態を表現 – オブジェクトの属性にどんな値を入れるかによっ て、オブジェクトの状態が変わる
  15. 15. 人が生まれると • 左図が先に紹介したクラス図 • 右図がHumanクラスから生成したオブジェクト – 「Humanオブジェクトを生成する」=「人が生まれる」 • 右図にはふるまいを書く欄がないのが特徴 – 属性が、オブジェクトの状態を決める – ふるまいは、オブジェクトの状態とは無関係 • human1には普遍文法が備わっているというが? – 普遍文法が備わっていることをUMLでどう表現するか…?
  16. 16. 人が言語を学ぶ • 左図は生成したてのHumanオブジェクト • 日本語を学ぶ = learnLanguage(日本語)を実行 • すると、右図になる – iLangの第1要素([0]がそれ)に、 Japanese_ILangのオブジェクトであるjapanese_ILang1 を代入 – この代入によって、I言語の安定状態を示す個別文法 が備わった状態を表現?
  17. 17. バイリンガルの場合は • learnLanguage(日本語)と learnLanguage(日本手話)を実行すると、 上図のように、バイリンガルになる
  18. 18. なぜUMLなのか? • UMLを描くために – どんなオブジェクトがあるのかを考える必要 – オブジェクトがどんな状態を持つのかを考える必要 – オブジェクトがどんな行為をするのかを考える必要 • UMLを使うと – クラスやオブジェクトの曖昧さを把握し、必要に応じて 曖昧さを排除できる – 新しいクラスやオブジェクトを見つけ出して、リファクタ リングできる
  19. 19. おわり • 今回、紹介したこと – オブジェクト指向 • オブジェクト • クラス • 属性 • ふるまい – UML • クラス定義 • クラスの拡張 • クラスの依存関係 • オブジェクトの状態

×