1

そのため、メイン ドライバーで作成されたクラスのインスタンスを読み取ることができるようにするには、委任クラス (ref) が必要です。ref でクラス参照を作成しようとしましたが、それは世界でより多くのオブジェクトを作成しただけで、元のオブジェクトを動かしませんでした。

メインドライバーコード:

public static void main(String args[])  
{   
    AbstractTrackRobot Sprint100Bot = new Sprint100Bot(1,1,North,0);
    AbstractTrackRobot Sprint200Bot = new Sprint200Bot(1,1,North,0);
    AbstractTrackRobot Sprint400Bot = new Sprint400Bot(1,1,North,0);

    AbstractReferee ref = new TrackReferee(1,1,North,0);
    ref.meet();
}

TrackReferee コード:

public class TrackReferee extends AbstractReferee
{
    AbstractTrackRobot Sprint100Bot = new Sprint100Bot(1,1,North,0);
    AbstractTrackRobot Sprint200Bot = new Sprint200Bot(1,1,North,0);
    AbstractTrackRobot Sprint400Bot = new Sprint400Bot(1,1,North,0);

    public TrackReferee(int st, int ave, Direction dir, int Beepers)
    {
        super(st, ave, dir, Beepers);
    }

    public void meet()
    {
        Sprint100Bot.run();
        Sprint200Bot.run();
        Sprint400Bot.run();
    }
}

編集:申し訳ありませんが、明確にする必要がありましたが、メインドライバーのコードを変更することは許可されていません。これは、既に提供されているためです。

4

2 に答える 2

1

TrackReferee クラスで AbstractTrackRobot の参照を作成する必要があります。TrackReferee のオブジェクトを作成する場合。main で作成された AbstractTrackRobot クラス オブジェクトを渡します。このようにして、TrackReferee クラスのオブジェクトは、メインで作成された AbstractTrackRobot クラスのオブジェクトへの参照を持ちます。あなたの問題が明確であることを願っています。

   public static void main(String args[])  
    {   
        AbstractTrackRobot Sprint100Bot = new Sprint100Bot(1,1,North,0);
        AbstractTrackRobot Sprint200Bot = new Sprint200Bot(1,1,North,0);
        AbstractTrackRobot Sprint400Bot = new Sprint400Bot(1,1,North,0);

        AbstractReferee ref = new TrackReferee(1,1,North,0, Sprint100Bot ,Sprint200Bot , Sprint400Bot);
        ref.meet();
    }


    public class TrackReferee extends AbstractReferee
    {
        public AbstractTrackRobot Sprint100Bot;
        public AbstractTrackRobot Sprint200Bot;
        public AbstractTrackRobot Sprint400Bot;

        public TrackReferee(int st, int ave, Direction dir, int Beepers, AbstractTrackRobot Sprint100Bot, AbstractTrackRobot Sprint200Bot ,  AbstractTrackRobot Sprint400Bot)
        {
            super(st, ave, dir, Beepers);
    this.Sprint100Bot = Sprint100Bot;
    this.Sprint200Bot = Sprint200Bot;
    this.Sprint400Bot = Sprint400Bot;

        }

        public void meet()
        {
            Sprint100Bot.run();
            Sprint200Bot.run();
            Sprint400Bot.run();
        }
    }

これは、要件に応じて代替ソリューションになる可能性があります。つまり、コンストラクターを変更する必要はありません。

public static void main(String args[])  
{   
    AbstractTrackRobot Sprint100Bot = new Sprint100Bot(1,1,North,0);
    AbstractTrackRobot Sprint200Bot = new Sprint200Bot(1,1,North,0);
    AbstractTrackRobot Sprint400Bot = new Sprint400Bot(1,1,North,0);

    AbstractReferee ref = new TrackReferee(1,1,North,0);
    ref.Sprint100Bot = Sprint100Bot;
    ref.Sprint200Bot = Sprint200Bot;
    ref.Sprint400Bot = Sprint400Bot;
    ref.meet();
}



   public class TrackReferee extends AbstractReferee
        {
            AbstractTrackRobot Sprint100Bot;
            AbstractTrackRobot Sprint200Bot;
            AbstractTrackRobot Sprint400Bot;

            public TrackReferee(int st, int ave, Direction dir, int Beepers)
            {
                super(st, ave, dir, Beepers);


            }

            public void meet()
            {
                Sprint100Bot.run();
                Sprint200Bot.run();
                Sprint400Bot.run();
            }    
        }
于 2013-10-10T04:57:33.330 に答える