-4

私は現在、この問題の設計モードにいます:

事前定義されたスピーカー インターフェイスを実装します。Speaker をさまざまな方法で実装する 3 つのクラスを作成します。メイン メソッドがこれらのオブジェクトの一部をインスタンス化し、それらの機能をテストするドライバー クラスを作成します。

このプログラムを設計し、コーディング段階に移行するにはどうすればよいでしょうか。Speaker インターフェース・クラスを実装するために、これら 3 つのクラス (Politician、Lecturer、Pastor クラス) を使用したいと考えています。私が使用したい方法は次のとおりです。

public void speak(); public void announce (String str);

私の設計とコーディングでは、変数を宣言してオブジェクトを参照し、その変数に複数の参照を持たせるにはどうすればよいでしょうか?

4

3 に答える 3

1

本当に簡単です。簡単に言えば:

class ClassA implements Speaker
{
   public void speak(){
          System.out.println("I love Java") ; //implement the speak method
    }
}
class ClassB implements Speaker //follow the example of ClassA
class ClassC implements Speaker //same as above

Speaker[] speakers = new Speakers{new ClassA(),new ClassB(),new ClassC()} ;

for(Speaker speaker: speakers)
   speaker.speak(); //polymorphically call the speak() method defined in the contract.
于 2012-11-25T02:10:19.023 に答える
0

「インタフェースとは」を参照してください。http://docs.oracle.com/javase/tutorial/java/concepts/interface.html これで、探している基本を始めることができます。

実装の開始は次のようになります...

class Politician implements Speaker
{
  public void speak()
  { 
    // Method implementation
  }
  public void announce (String str)
  {
    // Method implementation
  }
}
class Lecturer implements Speaker
{
  public void speak()
  { 
    // Method implementation
  }
  public void announce (String str)
  {
    // Method implementation
  }
}
class Lecturer implements Speaker
{
  public void speak()
  { 
    // Method implementation
  }
  public void announce (String str)
  {
    // Method implementation
  }
}

public static void main(String [] args)
{
   Speaker s1 = new Politician();
   Speaker s2 = new Pastor();
   Speaker s3 = new Lecturer();
   // Do something...
}
于 2012-11-25T02:11:52.543 に答える
-1

ファクトリ メソッド デザイン パターンを使用します。http://en.wikipedia.org/wiki/Factory_method_patternでこの記事を確認してください。

Factory パターンを使用する場合、コードは次のようになります。

public class SpeakerFactory {

      enum SpeakerEnum { POLITICIAN, LECTURER, PASTOR} ;
      Speaker getSpeaker(SpeakerEnum speakerType) {
          switch (speakerType) {

          case POLITICIAN : return new Politician();

          ....

          }
      }

}

于 2012-11-25T04:05:31.487 に答える