Помогите пожалуйста разобраться с заданием. Я только начал изучать язык JAVA и пока с этим есть некоторые трудности Суть задачи:
Задание А:
Создать интерфейс Run, для описания транспорта. Интерфейс должен иметь в себе следующие методы:
1.Метод вывода имени транспортного средства. 2.Метод получения скорости передвижения транспорта 3.Метод получения массы транспорта 4.Метод получения количества пассажиров 5.Метод получения количества колес транспорта
Вот код который я написал
public interface Run {
double getMassBus();
double getBusSpeed();
int getPassengers();
int getWheelAmount();
String getBusInfo();
}
Задание Б:
Создать абстрактный класс Mashine, который реализует интерфейс Run. В данном классе реализовать:
1.Константу максимальной скорости
2.Константу минимальной скорости
3.Константу минимального количества пассажиров
4.Константу максимального количества пассажиров
5.Поле с названием транспорта
6.Поле со скоростью передвижения транспорта в данный момент времени
7.Конструктор класса Mаshinе (String name, int speed)
8.Метод вывода информации о транспорте
Вот что удалось сделать
public abstract class Machine implements Run {
final int maxSpeed = 120; //Константа максимальної швидкості
final int minSpeed = 5; //Константа мінімальної швидкості
final int maxPasAmount = 30; //Максимальна к-сть пасажирів
final int minPasAmount = 1; //Мінімальна к-сть пасажирів
public String busName; //Поле з назвою транспортного засобу
public double presentSpeed; //Поле швидкості пересування в даний момент
//Конструктор класу Machine
public Machine(String name, double speed){
this.presentSpeed = speed;
this.busName = name;
}
//Реалізація методів з інтерфейсу
abstract public int getWheelAmount();
abstract public int getPassengers();
abstract public double getMassBus();
@Override
public double getBusSpeed(){
return presentSpeed;
}
@Override
public String getBusInfo(){
return "Назва " + busName + "\nМакс. шв: " + maxSpeed + "\nМін. шв: " + minSpeed + "\nМакс. к-сть пасажирів: " + maxPasAmount + "\nМін. к-сть пасажирів: " + minPasAmount;
}
}
Задание В: На котором все и встало
Создать супер класс "Автобус". От заданного супер класса создать двух прямых потомков "Городской" и "Междугородний двухэтажный". Потомки должны реализовывать все методы, какие нереализованные в абстрактном классе. Данные методы должны выводить на экран информацию о транспорте.
Вот до чего дошел:
public class Bus extends Machine{
private int wheels, amount;
private double mass;
//конструктор
public Bus(String name, double speed, int wheels, int amount, double mass) {
super(name, speed);
this.wheels = wheels;
this.amount = amount;
this.mass = mass;
}
//методы
@Override
public int getWheelAmount(){
return wheels;
}
@Override
public int getPassengers(){
return amount;
}
@Override
public double getMassBus(){
return mass;
}
}
Задание Г:
Создать демонстрационный класс, в котором создаются экземпляры обоих потомков, и производится вызов методов для вывода информации о наше транспорте.
ПРАВИЛЬНО ЛИ БЫЛО РЕАЛИЗОВЫВАТЬ ВСЕ МЕТОДЫ ИЗ ИНТЕРФЕЙСА В АБСТРАКТЕ ИЛИ ПО ЗАДАНИЮ, ЛУЧШЕ СДЕЛАТЬ ИХ В ПОТОМКАХ? ПОМОГИТЕ, ПОЖАЛУЙСТА ИСПРАВИТЬ НЕДОЧЕТЫ В ПЕРВЫХ ДВУХ ЗАДАНИЯХ И ДОДЕЛАТЬ В И Г. бОЛЬШОЕ ВАМ, ЗАРАНЕЕ, СПАСИБО
Рабочий код, объект , конечно создавать в другом классе, не всегда правильно, ибо создает зависимости в коде, однако так написано в задании. Вот код с геттерами и сеттерами. Все задание сделано.
interface Run{
double getMassBus();
double getBusSpeed();
int getPassengers();
int getWheelAmount();
String getBusInfo();
//Сеттеры
void setMassBus(double Mass);
void setBusSpeed(double Speed);
void setPassengers(int Pass);
void setWheelAmount(int Wheels);
//
}
abstract class Machine implements Run{
private final int maxSpeed =120;
private final int minSpeed =5;
private final int maxPasAmount =30;
private final int minPasAmount =1;
private String busName;
private double presentSpeed;
protected Machine(String name,double speed){
this.presentSpeed = speed;
this.busName = name;
}
abstract public double getMassBus();
abstract public double getBusSpeed();
abstract public int getPassengers();
abstract public int getWheelAmount();
//Cеттеры
abstract public void setMassBus(double Mass);
abstract public void setBusSpeed(double Speed);
abstract public void setPassengers(int Pass);
abstract public void setWheelAmount(int Wheels);
//
@Override
public String getBusInfo(){
return "Название транспорта: " + busName + " ,Скорость транспорта: " + presentSpeed;
}
}
class Bus extends Machine{
protected Bus(String name,double speed){
super(name,speed);
}
private double Mass;
private int Pass;
private double Speed;
private int Wheels;
@Override
public double getMassBus(){return Mass;}
@Override
public double getBusSpeed(){return Speed;}
@Override
public int getPassengers(){return Pass;}
@Override
public int getWheelAmount(){return Wheels;}
//Cеттеры
@Override
public void setMassBus(double Mass){this.Mass = Mass;};
@Override
public void setBusSpeed(double Speed){this.Speed = Speed;};
@Override
public void setPassengers(int Pass){this.Pass = Pass;};
@Override
public void setWheelAmount(int Wheels){this.Wheels = Wheels;};
//
}
class CityBus extends Bus{
public CityBus(String name,double speed){super(name,speed);}
}
class InterCityBus extends Bus{
public InterCityBus(String name,double speed){super(name,speed);}
}
class Demo{
public CityBus getCityBus(){
CityBus CB = new CityBus("Газель",50);
CB.setMassBus(500);
CB.setPassengers(20);
CB.setWheelAmount(4);
CB.setBusSpeed(70);
return CB;}
public void getInfoCityBus(CityBus s){
System.out.println("Для Городского автобуса - "+s.getBusInfo() + " Масса: " +s.getMassBus()+ " Скорость:" + s.getBusSpeed() + " Пассажиры: " + s.getPassengers()+ " Колеса: " +s.getWheelAmount() );
}
public InterCityBus getInterCityBus(){
InterCityBus CB = new InterCityBus("Такси",60);
CB.setMassBus(200);
CB.setPassengers(4);
CB.setWheelAmount(4);
CB.setBusSpeed(100);
return CB;}
public void getInfoInterCityBus(InterCityBus s){
System.out.println("Для Межгороднего автобуса - "+s.getBusInfo() + " Масса: " +s.getMassBus()+ " Скорость:" + s.getBusSpeed() + " Пассажиры: " + s.getPassengers()+ " Колеса: " +s.getWheelAmount() );
}
}
class qwer{
public static void main(String[] srgs){
Demo demo = new Demo();
CityBus cb = demo.getCityBus();
InterCityBus icb = demo.getInterCityBus();
demo.getInfoCityBus(cb);
demo.getInfoInterCityBus(icb);
}
}
Методы получения чего-либо (геттеры) должны быть без аргументов.
данном классе реализовать:
...
Метод вывода информации о транспорте
не реализовали.
Данные методы должны выводить на экран информацию о транспорте.
они у вас ничего не выводят
В абстрактном классе нужно реализовать методы, которые будут иметь одинаковую логику у всех потомков. А в дочерних классов можно переопредилить методы имеющие разную логику. Например getBusInfo()
.
Для того чтобы реализоваь метод абстрактного класса надо убрать слово abstract
, и добавить ему логики. В вашем случае надо просто вырезать весь метод getBusInfo()
включая @Override
из класса Bus
и переместить его в класс Machine
Для того чтобы переопределить родительский метод достаточно просто переписать его тело (то что находиться в фигурных скобочках) в дочернем классе
Например
//это переопределенный метод, с другой логикой
@Override
public String getBusInfo(){
return "Я Городской автобус!";
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть короткий mp3 файл из которого мне нужно получить сырую аудио-дорожку в виде массива для последующего преобразования ФурьеЯ пытался...
В классе Scanner есть для int метод nextInt(), для double метод nextDouble(), для String метод nextLine(), а какой есть для char?