ビデオ: 業務モデリングとシステム開発(6) ~UMLとユースケース図~ 2024
オブジェクトをカテゴリに分類し、カテゴリをサブカテゴリに分類するのは当然です。あなたが住む場所を探すなら、あなたは住居、アパート、タウンハウス、マンション、マンションなどとして住居ユニットを分類しています。住宅は、牧場、スプリットレベル、植民地時代、ソルトボックスなどのスタイルによって、さらに編成することができます。 UMLは、これらのタイプの分類(一般化と特殊化とも呼ばれます)を取得し、それらをモデラーとプログラマーとして使用するための表記法を提供します。
<!いくつかのオブジェクト指向の開発者は、少しの作業を省くために尽力します。一度何かをモデル化して再利用すると、彼らは興味を持っています。クラスのメソッド(操作のプログラムコード)を一度しか作成せずに何度も使用できる場合は、それらにサインして生産性を高めることができます。属性と操作を一度指定してから何度も再利用することで時間を節約したい場合は、をお読みください。
スーパークラスと呼ばれるより汎用的なクラスに置きます。 共通の機能を共有するクラスは、スーパークラスの サブクラス として知られています。例えば、ビデオテープ、オーディオテープ、コンパクトディスク、または映画フィルム上の記録された材料の長さは、記録された4種類のメディアすべての属性である。これらのクラスは、物理的な大きさやそれぞれの記録に使用された日付などの他の属性も共有できます。この場合、 スーパークラス はRecordedMediaであり、サブクラスはVideotape、Audiotape、CompactDisc、およびMovieFilmであり、いくつかの共有属性にはrecordedLengthとtotalLengthが含まれます。 <!クラス間で類似の属性または操作を見つけるこのプロセスは、一般化として知られています。
たとえば、recordLengthという属性をRecordedMediaというより一般的なクラスに一般化します。 UMLで一般化を示すプロセスは簡単です:1。サブクラスを特定します。 同じ属性および/または操作を持つクラスを見つけます。これらのクラスはあなたのサブクラスです。 2。スーパークラスを作成します。 サブクラスの共通属性および/または操作を保持するスーパークラスを提供します。スーパークラスに、すべてのサブクラスを分類する名前を付けます。スーパークラスを図のサブクラスの上に置くと、読みやすくなりますが、必須ではありません。)3。スーパークラスに共通の機能を追加する。
サブクラスから共通の属性と操作を削除し、それらをスーパークラスに配置します(1回だけ)。 4。一般化関係を描く。
各サブクラスからスーパークラスに一般化行を描画します。 UMLでは、汎化線は、スーパークラスの端に白い矢じりの矢印で示される実線で表されます。 UMLでは、サブクラスをスーパークラスに接続する白抜き矢印の線を一般化関係と呼びます。
属性や操作などの共通の機能を持つスーパークラスを作成すると、サブクラス
はスーパークラスからそれらの機能を継承します。このようにして、各サブクラスで何度も使用するのではなく、共通の機能をスーパークラスに一度書き込むだけで済みます。
あなたは、クラス間の関係を記述するためにあなた(または他の人)が使用する言語を見て、あなたが一般化しているかどうかを知ることができます。記録されたメディアとこのセクションの前のビデオテープのような様々なタイプを記述する際に、 "記録メディアの4種類"というフレーズが現れることに注意してください。あなたが "kind of"や "type of"のようなフレーズを使って自分自身を見つけたら、あなたはあなたの手に一般化している可能性があります。
お客様のクライアントの一人がアーカイブ内の資料を追跡することに関心があるとします。このクライアントには、ビデオテープやオーディオテープのような
種類の
種類の記録メディアが蓄積されています。モデラーとして、これらのメディアとその類似点の違いを把握する必要があります。図1の図は、
継承階層に配置されたいくつかの一般化の始まりを示しています。 図1: 単純継承階層。
開発者は、スーパークラスに表示してサブクラスで再利用する共有属性と操作を再利用するのと同じ概念を参照するために、一般化または継承という用語を使用します。一般化とは、仕様(サブクラス)から汎用(スーパークラス)まで一般化する概念を指します。継承とは、サブクラスに対する汎化の効果を指します。
クラス間に 汎化 関係がある場合、その意味はクラス間の関係 とは大きく異なります。アソシエーションは最終的に多くの
オブジェクト間の関係です。あるクラスのインスタンスの中には、他のクラスのインスタンスとの関係(リンク)があります。 クラス
間の一般化関係では、関係は実際にクラスに関するものです。サブクラスから作成されたオブジェクトには、サブクラスとスーパークラスのすべての機能が含まれていると言えます。
あなたは一般化関係のクラスから1つのオブジェクトしか持っていません。サブクラスとスーパークラスの2つのクラスを表示しても、作成されるオブジェクトは1つだけです。 Videotapeクラスのオブジェクトは、継承のためにRecordedMediaクラスのオブジェクトであると考えることもできます。図2は、すべての属性を持つVideotapeクラスから作成されたオブジェクトを示しています。(クラスのインスタンスはオブジェクトシンボルとして表されます。)2つの異なるオブジェクト(1つはRecordedMedia、もう1つはVideotape)ではなく、1つのオブジェクトだけです。オブジェクトvtu83-1023が作成されると、すべての属性の値が設定されました。テープへの録音は57分です。物理テープの全長は60分です。テープは、10インチの高さ、7インチの幅、および1.5インチの深さを有するUmaticビデオカセットである。録音はアナログであり、録音者が参照できるようにテープの内容のログがテープに添付されています。 図2: 継承されたすべての属性を示すインスタンス。 サブクラスとそのスーパークラスによって定義されるインスタンスは1つだけです。サブクラスとスーパークラスは、(インスタンスを作成するための)コンストラクタ操作と(インスタンスを破棄する)デストラクタ操作を持つことができます。あなたのソフトウェアが実行され、サブクラスのインスタンスを作成すると、スーパークラスのコンストラクタが最初に実行され、その後にサブクラスのコンストラクタが実行されます。作成したインスタンスを削除する時間が来ると、サブクラスのデストラクタが最初に呼び出され、その後にスーパークラスのデストラクタが呼び出されます。サブクラスのサブクラスがあるために物事がより複雑になる場合は、次のことを覚えておいてください。コンストラクタは、継承階層の一番上から一番下まで呼び出されます。デストラクタは、最低のサブクラスから最高のスーパークラスの順に呼び出されます。