操作区画


クラスの挙動

操作区画は、クラスの振る舞いを表すための区画です
言語レベルで考えれば、メソッドやメンバ関数などがこれに属します

UML において操作という言葉を使う場合、これは振る舞いというよりも
より厳密にはインスタンスが実行を要求するサービスを表します
操作区画は、このクラスがオブジェクトに提供しているサービスを表すのです

操作は、デフォルト構文として次のように定められています

可視性 名前 (パラメータリスト) : 返却値型表現 { プロパティ文字列 }

可視性と名前、プロパティ文字列については、属性の構文と同じ意味です
パラメータリストは、カンマで区切ったパラメータの並びを指定します
これは、次のように記述します

入出力種別 名前 : 型表現 = デフォルト値

入出力種別とは、操作がパラメータを修正するかどうかを表します
これには、次にいずれかのキーワードを指定します

キーワード意味
in 入力パラメータ
修正してはならない
out 出力パラメータ
呼び出し側に情報を返すために修正してもよい
inout 修正しても問題のないパラメータ

例えば、値型の情報を渡されたのであれば修正しても問題はないでしょう
逆に、情報を利用するために参照を渡された場合、修正してはいけません
これを修正してしまうと、呼び出し側で思いもよらないエラーが発生します
情報を取得する目的で参照を渡されたならば out となります

名前は仮引数の名前、型表現は言語依存のパラメータ型です
デフォルト値は、パラメータを受け取らなかった場合に与えるデフォルト値です
ただし、デフォルト値を与えられるかどうかはプログラミング言語に依存するため
言語を想定しない抽象的な設計図を志すのであれば、指定するべきではありません

返却値型表現は、実装言語に依存する戻り値型を指定します
値を返さない場合はコロンから省略できます
しかし、筆者は可読性と明確さを尊重し、値を返さない場合は void と記載します



この図は Character 抽象クラスを表しています
例えば、Draw() メソッドは数値型の index と Point 型の point パラメータがあり
それぞれには、省略された時に備えてデフォルト値が割り当てられています
デフォルト値が表現できない言語にこの設計を生かしたい場合は
オーバーロードを利用して省略に備えるという方法が考えられます

また、操作において、抽象操作はクラス名同様に斜体で表示します
サブクラスに実体を委ねる抽象メソッドを表現することができます
それと、UML では Sun の Java API 開発者の命名規則を採用し
操作名は、一般に小文字で始まるという見解を示し、スタイルガイドに挙げています



前のページへ戻る次のページへ