• ベストアンサー

JAVAについて問題です.お願い致します

1 .装飾用クラスの基本の型(Decorator)は,インタフェースではなく抽象クラスにすべきである。その理由を考察し,簡潔に説明せよ。 2.装飾用クラス(DecoratorA 等)のオブジェクトに,被装飾クラス(Core, DecoratorA等)のオブジェクトを参照させるために,フィールドへの代入メソッド(セッター)ではなく,コンストラクタを用いるのが望ましいのはなぜか。その理由を考察し,簡潔に説明 せよ。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

問題ですか?ここは質問に答えるサイトですので、まずは自分でどこまで解けたかを述べてわからないところを質問してくださ

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 抽象クラスのオブジェクトを生成できない理由は?

    ・抽象クラスは、なぜ(オーバーライドしないと)オブジェクトを生成できないのでしょうか? ・インタフェースみたいに、抽象メソッドしか宣言することができないなら話は分かるのですが… ・抽象メソッドでない普通のメソッドを実装できるのなら、オブジェクトを生成してくれても良いと思うのですが… ・そういう問題ではない?

    • ベストアンサー
    • Java
  • Java コード教えてください。

    【Java】以下のコードを教えてください。 夕食のメニューを表示するプログラムの作成を行う。 以下の仕様を満たし、実行例のように 動作するSupperMenu.java、Supper.javaを作成しなさい。 [SupperMenu.java]  String型のフィールドmaindish (主食)(初期値は設定しない)、sidedish(副菜・スープ)(初期値は設定しない)を持つ。 いずれもクラス外からはアクセスできない。 2つのコンストラクタを持つ。 引数を持たないコンストラクタは、コンストラクタを実行した際にSupperMenuクラス のフィールドmaindishとsidedishにそれぞれ”ムニエル”と”スープ”を代入する。 クラス 外からアクセスできる。  String 型の仮引数 md と sd を持つコンストラクタは、コンストラクタを実行した際に SupperMenuクラスのフィールドmaindishとsidedishにそれぞれmdとsdの文字列を 代入する。 クラス外からアクセスできる。  引数も戻り値も持たないメソッドshowMenu()を持つ。 maindishとsidedishの情報を用いて 夕食のメニューの表示を行う。 クラス外からアクセスできる。 [Supper.java]  以下の内容を記述する。 1 class Supper{ 2 public static void main( String [] args ){ 3 SupperMenu sm1 = new SupperMenu(); 4 SupperMenu sm2 = new SupperMenu("ステーキ", "サラダ"); 5 sm1.showMenu(); 6 sm2.showMenu(); 7 } 8 }

  • Javaの課題がわかりません。教えてください

    ジェネリックスでコレクションクラスの作成です //次のクラスを実装する。 //クラス: /** * オブジェクトの集合(セット)を管理するクラス。 */ public class MySet<E>{ } //フィールド: /** オブジェクトを格納する配列への参照 */ private E[] elements;{ } /** 格納されている要素数 */ private int size;{ } //コンストラクタ: /** * 8件の要素を格納できる配列を用意する。 */ public MySet(){ } /** * n件の要素を格納できる配列を用意する。 */ public MySet(int n){ } //メソッド: /** * elemをセットに追加する。成功でtrueを返す。 */ public boolean add(E elem){ } /** * セット内でelemと同値の要素を探索する。存在すればtrueを返す。 */ public boolean contains(E elem){ } /** * セットに含まれる要素数を返す。 */ public int size(){ } /*※mainメソッドを用意し,実装した全てのコンストラクタやメソッドが正常に 機能しているかどうかを検証する。*/ {}の中身以外は変更しないで作成します。

  • 継承・実装の関係で悩んでいます。

    継承・実装の関係について悩んでいます。 ここでは、アクセス制御を考えずに、インスタンスかstaticかabstract(ここではabstract final staticやabstract classのこと)の違いで、どう継承するのか考えています。 // 継承 はメソッドのオーバーライドのことを考えます。(オーバーロードは考えない) クラスAからクラスBでオーバーライドしたメソッドは、 クラスCでさらにオーバーライドできるのでしょうか? クラスCが クラスBのクラスAからオーバーライドしたメソッド をクラスBのメソッドとして見たときに、オーバーライドすることは可能なのでしょうか? クラスA │ インスタンスフィールドA │ staticフィールドA │ │ クラスA() { } │ │ インスタンスメソッドA () { } │ staticメソッドB() { } ↓ クラスB extends クラスA │ インスタンスフィールドA // 継承 │ インスタンスフィールドB │ staticフィールドB │ │ サブクラス1() { } // コンストラクタは継承しない、super()で呼び出す │ │ インスタンスメソッドA () { } // 継承 │ │ インスタンスメソッドB () { } │ staticメソッドB () { } ↓ クラスC extends クラスB implements インタフェースD, ... ↑ インスタンスフィールドA // クラスBのフィールドを継承 │ インスタンスフィールドB // クラスBのフィールドを継承 │ インスタンスフィールドC │ staticフィールドC │ │ サブクラス2() { } │ │ インスタンスメソッドA () { } // クラスBのメソッドを継承 │ インスタンスメソッドB () { } // クラスBのメソッドを継承 │ インスタンスメソッドD () { } // インタフェースDのメソッドを実装 │ インスタンスメソッドE () { } // インタフェースDのメソッドを実装 │ │ │ インスタンスメソッドC () { } │ staticメソッドC() { } │ interface インタフェースD extends インタフェースE ↑ │ staticフィールドD // public static final │ │ インスタンスメソッドD() { } // public abstract │ インスタンスメソッドE() { } // 継承 │ interface インタフェースE staticフィールドE // public static final インスタンスメソッドE() { } // public abstract

    • ベストアンサー
    • Java
  • JAVAのコンストラクタ、継承の問題を回答頼む

    commonパッケージにHeroクラスを継承した、SuperHeroクラスを作成してください * ●HP, POWER, ENDURANCEはHeroと同じでそれぞれ、(25, 10, 7) * フィールド * item : Item * メソッド * attackメソッドをオーバーライドし、 * powerフィールドの値に加えて、itemフィールドのadditionalDamage分を加算した値を返す * itemフィールドのアクセサ */ public static void main(String[] args) { // TODO SuperHeroインスタンスとSlimeインスタンスを作成し、それぞれの名前に"勇者(装備あり)", "スライム"を設定してください // TODO Itemクラスのインスタンスを作成し、("こんぼう", 5)をコンストラクタの引数にしてください // TODO SuperHeroインスンタンスのitemフィールドに作成したitemインスタンスをセットしてください // TODO SuperHeroインスンタンスのattackメソッドを呼び出して、戻り値を出力してください // ※ 15と出力されれば正解

  • インターフェース

    インターフェースについて学ぼうと思っているのですが、 どうもいまいち何がなんだかわからなくなっています。 インターフェースはクラスによって実装され、 実装クラスはインターフェースで宣言されている 抽象メソッドを実行する とあるのですが、実装とは何ですか? 抽象メソッドとは何ですか?

    • ベストアンサー
    • Java
  • RequestDispacherインターフェイスのことを知っている方がいたら・・

    マニアックな質問なのかもしれませんが・・ インターフェイス及び抽象メソッドの定義は ●インターフェイスに定義されているメソッドは必ず抽象メソッドである ●抽象メソッドにはメソッドのプロトタイプだけが定義されている だと思うのですが、 RequestDispatcherインターフェイスのforwardメソッドには既に 「サーブレットから他のリソースへ、requestオブジェクトとresponseオブジェクトを転送する」 という処理内容が定義されているように思います。>java.sun.comのapiドキュメント これってインターフェイスの原則から外れていると思うのですが、 どうなのでしょうか。「例外」もあるってことなんでしょうか。 おひまだったら解答をお願いいたします。

    • ベストアンサー
    • Java
  • オブジェクトの問題です。 お願いします。

    処理内容: 以下の3つのクラスを作成し、実行し、以下の結果を得るプログラムを作成せよ。 実行例 佐藤さんの体重は、85キログラムです。 (1) 抽象クラスの作成 クラス名 People name: String型、perivate宣言 getText(): 戻り値の型は、String publicなabstractメソッド getName(): 戻り値の型は、String publicメソッド People(): namaeを設定するpublicなコンストラクタ (2) 抽象クラスの実装 クラス名 Taiju weight: int型 private宣言 体重を表す Taiju(): 名前と体重を設定するコンストラクタ getText(): 戻り値の型は、String 抽象メソッドをオーバーライドしたメソッド 「○○さんの体重は、◇kgです。」 という、文字列を返すメソッドとする。 (3) メインクラス クラス名 MainTaiju Taijuクラスのインスタンスを、”佐藤”、85 のコンストラクで作成。 あと、出力例のように出力。

  • Java リフレクションについて

    1.リフレクションを使い、値をセット(BeanのSetterメソッドにて) 2.1でセットした値を取得するために、下記コードで取得 Method Method = Class.getMethod("getLstData"); Object obj = Method.invoke(****); 上記の****の箇所には、メソッドのあるクラスのインスタンスを渡す、 というところまでは分かりますが、newInstance()してしまうと、新しいオブジェクトになってしまうので 値が取得できません。 error>>java.lang.IllegalArgumentException: object is not an instance of declaring class どのようにすれば、値の取得が可能でしょうか。 どなたかご教授いただければと思います。 ※Java 1.5を使用

    • ベストアンサー
    • Java
  • 継承したメソッドのドキュメンテーションコメント

    C#の開発を始めて日が浅いため、現場におけるお作法がわかりません。 現場におけるクラス・インターフェースを継承したメソッドのドキュメンテーションコメントの付け方に関する一般論についてお教えいただきたいです。 ※基底クラス、及びインターフェースの抽象メソッドにはドキュメンテーションコメントの記述がある物とします。 ※普段はJavaを使っている為、そこから引用している書いている部分があります。ご容赦下さい。 ・抽象クラスにおけるインターフェースから継承した抽象メソッド(実装しない場合) Javaとは違い、抽象クラスであってもインターフェースが持つの抽象メソッドを無視する事はできず、 public abstract修飾子を付けて抽象メソッドを定義してやる必要があるようなのですが、 この場合、ドキュメンテーションコメントは省略すべきでしょうか? それとも、何かしら記述するべきなのでしょうか?(Javaで言うところの@inheritDoc等・・・そのような物があるかはわかりませんが) ・新たに実装を行う場合(抽象メソッドの実装等) 省略すべきでしょうか? ・既存の実装を拡張し、変更の影響は微小かつメソッド内のみで完結し、概要やその他のメソッドの責任において表記すべき内容に変化が無い場合 省略すべきでしょうか? ・既存の実装を拡張し、想定される例外の追加等、メソッド外にも影響を及ぼす大きな変更が入った場合 新たに完全なドキュメンテーションコメントを作成するべきでしょうか? それとも差分以外は新たに作成すべきではないのでしょうか? 一般論と言っても規模や進め方によって様々だとは思いますが、 通念的に「心がけていくべき事」等あれば、是非お教え下さい。 最後に、この質問の趣旨からは外れるのですが、一つ追加で別の質問をさせてください。 私は何故抽象クラスがインターフェースの抽象メソッドを無視できないかがわかっておりません。 (インターフェース-インターフェース、抽象クラス-抽象クラスは無視できるのに) 敢えて明示的に定義を強要させている以上、何か理由あっての事だと思いますが、 それがわからず悶々村々としながら作業しております。 その理由をお教えいただけませんでしょうか。 宜しくお願い致します。