-2

私は Foo という名前のクラスを持っています。このクラスはジェネリック変数を格納します。Setという名前の別のクラスがあります。Set は Foo オブジェクトのセットであるため、Set はジェネリック クラスでもあります。この各クラスには多くの属性と実装されたメソッドがあり、これらのメソッドは任意の型を処理できます。

class Foo<T>{
    private T var;

    public void show(){ (...) }
    (...)
}

class Set<T>{
    private Foo<T>[] things;

    public void showAllElements(){ (...) }
    public int quantityOfElements(){ (...) }
    (...)
}

Integer、String、Double、および任意のタイプのセットを作成できるようにします。

しかし、Foo クラスと Set クラスのテンプレートとしても使用したい抽象クラスがあります。それを Animal クラスと呼びましょう。

abstract class Animal{
    private String voice;
    public void talk(){ (...) }
}

そして、次のような動物のセットを作りたい:

class FooAnimal<T extends Animal>{
    private T var;

    public void show(){ (...) }
    public void talk(){
        var.talk();
    }
}

class SetOfAnimals<T extends Animal>{
    private FooAnimal<T>[] things;

    public void showAllElements(){ (...) }
    public int quantityOfElements(){ (...) }
    public void makeAllTheAnimalsTalk(){
        for(int i=0; i<things.lenght(); i++)
            things[i].talk();
    }
}

Foo および Set 用に作成したコードを SetOfAnimals および FooAnimal クラスにコピー アンド ペーストすることなく、これを行うにはどうすればよいですか?

問題を説明する UML ダイアグラムへのリンクがあります。

http://i.imgur.com/r3yE37Y.png?1

これどうやってするの?この問題を解決するために、どの講義をお勧めしますか?

問題をより理解しやすいように編集する必要がありました...申し訳ありません。

4

1 に答える 1