Завершение некоторых простых методов - PullRequest
0 голосов
/ 08 декабря 2011

пытаясь завершить некоторые методы, которые, я думаю, должны быть простыми для тех, кто имеет небольшой опыт работы с Java.Я абсолютный новичок:)

Завершите метод setXPosShark (), который устанавливает x-позицию акулы в аргумент метода int.

    /**
    * Sets the x-position of the shark to the value of the argument
    */
    public void setXPosShark(int x)
    {
      // to be completed for part(i)
    }

Будет ли это:

    shark.setXPos(x);

?

Завершите метод setXPosSwimmer (), который устанавливает положение x ног пловца в аргумент x, положение xтела до x плюс 10 и положения x головы до x плюс 46.

    /**
    * Sets the x-position of each of the legs, body and head of the swimmer. 
    * The x position of the legs is set to the argument, the x position of 
    * the body is set to the argument plus 10, and the x position of the  
    * head is set to the argument plus 46.
    */

    public void setXPosSwimmer(int x)
    {
      // to be completed for part(ii)       
    }

Завершите метод sinkSwimmer ().Метод должен переместить каждый компонент (голова, тело и ноги) пловца вниз на 50 единиц и сделать цвет каждого компонента синим. (

    /**
    * Makes the swimmer appear to disappear by increasing the 
    * y-position of each of the head, body and legs by 50, and 
    * turning their colour blue.
    */   
    public void sinkSwimmer()
    {
      //to be completed for part(iii)
    }

Завершить метод moveSimmer() который заставляет компоненты пловца переместиться на одну единицу вправо от их текущего положения.

    /**
    * Causes the swimmer to move one unit to the right of its current position. 
    */
    public void moveSwimmer()
    {
      // to be completed for part(iv)
    }

Огромное спасибо всем, кто может помочь. Я работаю всю ночь, чтобыпопробуйте выполнить неофициальное задание (т. е. оно не будет оцениваться), чтобы я мог получить отзыв до предстоящего задания. Спасибо, Али

РЕДАКТИРОВАТЬ Мои предположения

Для второго:

    this.leg.setPosition(x); 
    this.body.setPosition(x+10); 
    this.head.setPosition(x+46); 

Третий:

    this.legs.setPosition(y-50);  
    this.body.setPosition(y-50); 
    this.head.setPosition(y-50); 

Четвертый:

    this.legs.(this.legs() );

Не совсем уверен в этом.

Вотвставить ссылку на полный код, с которым я работаю (довольно большой): http://pastebin.com/mF06jjSv

1 Ответ

0 голосов
/ 16 декабря 2011

(1) Для завершения метода вам необходимо заполнить код для завершения метода.Поэтому я предполагаю, что у вас есть класс акул, который может выглядеть примерно так:

public class Shark {

    // ....all the methods you mentioned above....

}

Ваш класс состоит из двух компонентов, называемых полями и методами.Методы отвечают за выполнение действий и изменение данных полей классов.Метод setXPosShark(int x) будет отвечать за изменение поля, в котором хранится позиция X акулы.

Вот пример для первого метода:

public class Shark {

     private int xPostion; // <-- this is a field.

     public Shark(int x, int y) {
          this.xPosition = x;
          // complete for the y.
     }

     public void setXPosShark(int x) {
          this.xPosition = x;
     }

}

Примечание: обратите внимание, какПоле является частным.Рекомендуется, чтобы все поля в классе были частными и чтобы данные в этих полях взаимодействовали через методы.Это защитит данные и позволит вам проверять и обрабатывать данные перед их сохранением.В этом случае проверка не требуется.Но во втором вопросе вам нужно изменить данные перед их сохранением, добавив 10.

Важность сохранения конфиденциальности полей можно увидеть во втором вопросе.

Предполагая, что у вас есть классструктура выглядит так:

public class Swimmer {
    // total of 6 fields required for x and y positions of head, body and legs.
    private int headXPosition;
    private int bodyXPosition;
    private int legsXPosition;

    // Constructor should set each field to a default value (possibly 0).

   // Example of a setter method.
    public void setXPosSwimmer(int x) {
        this.headXPosition = x+46;
        // other two fields omitted... 
    }


    // Example of a getter method.
    public int getHeadXPosition() {
        return this.headXPosition 
    }

}

В setXPosSwimmer(int x) вы не столько делаете, сколько проверяете переданное значение x, как выполняете некоторые манипуляции с данными перед его сохранением.Манипуляции с точки зрения добавления 46 к голове и 10 к ногам и ступням.

Если вы сделали headXPosition или любое из других полей общедоступными, другой программист (например) мог бы установить headXPosition без добавления +46, что может вызвать проблемы для вашей программы.Поскольку это классное задание, которое не будет проблемой, но в реальном мире, когда речь заходит о создании API (программ, которые могут взаимодействовать с другими программами), вы захотите защитить данные внутри объектов ваших программ.

Краткое замечание о ваших классах:

Методы set ... () известны как сеттеры, они отвечают за установку данных, которые хранятся в полях класса.Поскольку данные являются частными, никакой другой класс не может получить к ним доступ.Если вы попытаетесь вызвать shark.xPosition;вы получите ошибку времени компиляции, так как xPosition является приватным.Таким образом, вам нужно будет написать метод для получения (или извлечения) данных.Эти методы называются геттерами и используют соглашение get .... (), которое будет возвращать данные.Так что в случае класса Shark вы можете написать метод getXPosition(), который будет: return this.xPosition.

. Для вашего третьего вопроса вам нужно будет добавить еще три поля в классе Swimmer для храненияY позиция.Вам также необходимо написать соответствующие методы установки и получения.

Для методов sinkSwimmer и moveSwimmer просто настройте соответствующие поля.То же, что вы делали для метода setXPosSwimmer(int x).

Также после просмотра вашего кода я предлагаю вам разбить вещи на отдельные файлы * .java, чтобы с ними было легче работать.Поскольку вы начинающий, я бы также использовал IDE, которая поможет вам понять объекты.Я рекомендую использовать BlueJ, который можно бесплатно загрузить по адресу: http://www.bluej.org/.

Также, если вы не хотите иметь 6 полей в классе Swimmer, вы можете использовать массив примитивов типа int следующим образом:

...

private int[] head;
private int[] legs;
private int[] body;

// Constructor:
public Swimmer() {
    this.head = new int[2];
    // and so on... replacing .head with the other fields names.
}
...

int[] head = new int[2] Создает массив с двумя пробелами [0, 1] соответственно.0 представляет позицию X, а 1 представляет позицию Y.Это путем вызова this.head [0] возвращает int, представляющее позицию x и т. Д.

Как таковая установка позиции X на голове будет выполняться следующим образом:

...
public void setXPosSwimmer(int x) {
    this.head[0] = x+46;
    this.legs[0] = x+10;
    this.body[0] = x+10;
}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...