(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;
}
...