インターフェイス指定子」まで解説を行います。第15回目より、DevelopmentStyleからJavaSolutionに移管しました。順序付けの使い方はUMLの通常の使い方に沿っています。Javaでのマッピングはjava.util.Listとjava.util.SortedSetが軸です。順序付けを表現するために、制約orderedと制約sortedを使用します。図1の左側が制約orderedを使った場合、右側が制約sortedを使った場合です。プロファイル/順序付け(クリックで拡大)また、Javaでの実装との連携を目的として以下の独自タグ付き値を導入します。collectionClassタグ付き値collectionClassは、制約orderedまたは制約sortedを実現するためのコレクションの実装クラスを指定します。以上のタグ付き値を使用したアソシエーションはこの目的のため、図2のようになります。順序性の独自タグ付き値(クリックで拡大)また、省略形としては制約orderedおよび制約sortedをタグ付き値的に利用し、図2の下側のように実装クラスを定義することも可能です。この表記は、本来はUMLの文法違反ですが、ドローツールなどでUMLを記述している場合には、このような略記法があってもよいと思います。Javaでの実装/制約ordered制約orderedは以下のルールでマップします。型としてインターフェイスjava.util.Listを使用する実装クラスのデフォルトとしてクラスjava.util.ArrayListを使用する実装クラスを指定したい場合は独自タグ付き値collectionClassで指定するこのルールに沿って図1を実現したJavaプログラムは以下のようになります。順序付け/orderdまた、図2に示した独自タグ付き値を実現したJavaプログラムは以下のようになります。タグ付き値collectionClassで実装クラスとしてjava.util.LinkedListを指定した場合です。java.util.Listが使用されます。Javaでの実装/制約sorted制約sortedは以下のルールでマップします。型としてインターフェイスjava.util.SortedSetを使用する実装クラスのデフォルトとしてクラスjava.util.TreeSetを使用する実装クラスを指定したい場合は独自タグ付き値collectionClassで指定するこのルールに沿って図1を実現したJavaプログラムは以下のようになります。順序付け/sortedまた図2示した独自タグ付き値を実現したJavaプログラムは以下のようになります。タグ付き値collectionClassで実装クラスとしてcom.example.MySortedSetを指定した場合です。インスタンス変数の型にはjava.util.SortedSetが使用されます。多重度が2以上の場合、マッピングが難しくなります。このため、本プロファイルでは使用方法を定義しません。補助的な使用にとどめておきます。限定子もUMLの通常の使い方に沿っています。Javaでのマッピングはjava.util.Mapが軸となります。限定子を使ったアソシエーションは図3に示すように表現します。プロファイル/限定子(クリックで拡大)Javaとのマッピングを前提とすると限定子に指定する属性は、型が明確になっていなければなりません。限定子の型としては文字列(java.lang.String)が使われるケースが圧倒的に多いので、文字列の場合は省略可能とします。限定子の属性型はプリミティブ型かバリューオブジェクトのみとします。Javaでの実装との連携を目的として以下の独自タグ付き値を導入します。collectionClassタグ付き値collectionClassは、限定子を実現するためのコレクションの実装クラスを指定します。本プロファイルではUMLの限定子を以下のルールでJavaにマップします。型としてインターフェイスjava.util.Mapを使用する実装クラスのデフォルトとしてクラスjava.util.HashMapを使用する実装クラスを指定したい場合は独自タグ付き値collectionClassで指定する図3を実現したJavaプログラムは以下のようになります。限定子また図3の右側に示した独自タグ付き値を実現したJavaプログラムは以下のようになります。タグ付き値collectionClassで実装クラスとしてcom.example.MyMapを指定した場合です。java.util.Mapが使用されます。インターフェイス指定子■■インターフェイス指定子の使い方も、UMLの通常の使い方に沿っています。Javaでのマッピングはインスタンス変数またはクラス変数の型として実装されます。UMLでの表現インターフェイス指定子を使ったアソシエーションは図4に示すように表現します。図1を実現したJavaプログラムは以下のようになります。インターフェイス指定子インターフェイスIEmployeeとクラスPersonには図5に示すようにリアライゼーション(実現:realization)のリレーションシップがなければなりません。インターフェイス指定子関連のクラスいうまでもありませんが、この関係をJavaにマップすると以下のようにクラスPersonがインターフェイスIEmployeeをimplementsする形で実装されます。配列」から解説していきます。(2017/5/9)ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。(2017/4/6)ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。(2017/4/3)初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。