2011-08-10 9 views
1

私はあなたに私にこれに対する答えを与えることを望んでいません、私は答えを見つける方法を理解するために単に説明を求めています。継承関係が説明されています

は、我々は4つのクラスA、B、C、Dの私たちは、次の変数を持っているプロジェクトがあるとします。

Aを、 B b; C c; D d;

次の割り当ては、すべての法的(これら全てコンパイル)されている:

= B。 a = c; d = b;

次の割り当ては、(彼らはコンパイルエラーを引き起こす)は違法です:

C = D; d = c; d = a;

これらのクラス間の継承関係を描画します。

ヘルプは高く評価され、感謝:)

+0

はこの宿題ですか? – Kal

+0

いいえ、模擬試験の質問です。正直なところ、これをどこから始めるべきかわからない。 Hierachyは一つのことですが、Inheritance Relationshipsは私の心を吹き飛ばしました。 – user888175

+0

「試験」の場合、宿題とは何か異なりますか? –

答えて

4

法的割り当ては左辺の変数のクラスが右側のクラスのスーパークラスであることを意味します。

a = bは、bがaのサブクラス階層のどこかにある、つまりaがbの祖先であることを意味します。

コンパイルされていない場合、有効な割り当てではないことを意味します。

「法的な」割り当てから、bはaのサブクラスであり、cはaのサブクラスであり、bはdのサブクラスであると推論することができます。

うまくいけば、これで十分です。

+0

こんにちは、その情報をありがとう。私はそれらを法律と違法に分類しました。質問は終わったのですか?または次のステップがありますか?これまでのご協力ありがとうございます。 – user888175

+0

@ user888175、はい。それらのクラス間の文字通り継承関係を「引き出す」ためには、UMLを理解する必要があります。 – mre

+0

私たちがコンピュータにアクセスできないときは、試験場のシナリオでそれを考えてみてください。それでは、どうやって質問を完成させることができますか? – user888175

1

ここでは、ダイアグラムの開発に使用する方法があります。 4つのクラスのセットの間に可能なすべての継承ラインを描画します。割り当てが合法である場合、その関係に対応する継承ラインは有効としてマークされることができる。割り当てが不正な場合、その関係に対応する継承ラインは削除できます。完了したら、残りの行には最終的な継承マップが含まれているはずです。

1

クラスXがクラスYから継承する場合、次のように、タイプYの変数xのオブジェクトを割り当てることが可能である:

y = x; 

2クラスは、これを継承していない場合には不可能であるとコンパイルエラーが発生します。

サイドノート:これは、あなたが唯一のそれはまだ、まだクラスX.

0

の目的であるにもかかわらず、Yのメソッドにアクセスできることを意味するがここにヒントがあります:満たしている唯一の有効な階層があります与えられた制約。

有向非循環グラフを描画します。割り当てが有効な場合は、割り当てられている値のタイプ(右側)から、割り当てられている変数のタイプ(左側)に矢印を描きます。割り当てが無効な場合は、その方向に矢印はありません。これは、派生クラスの矢印がスーパークラスを指すUMLのようなものを生成します。

関連する問題