Java иерархия наследования классов животных - PullRequest
0 голосов
/ 02 ноября 2018

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

Написание классов или интерфейсов для представления следующего:

  • Приемлемый
  • Животное
  • Летучая мышь
  • Птица
  • Синий кит
  • Собака
  • Эму
  • Рыба
  • Золотая рыбка
  • Млекопитающее
  • Оттер
  • Попугай
  • Рептилия
  • Черепаха
  • WaterDweller
  • Кит
  • Крылатый

Вам необходимо определиться со структурой классов / интерфейсов. Рассмотрим:

Какой должен быть абстрактный класс? конкретный класс? Который должен быть интерфейс? Как классы должны быть связаны через наследование? В какие классы должны быть помещены методы? Какие методы должны быть переопределяется? Какую информацию следует принять в качестве параметра и какую информацию можно жестко закодировать в классе? Некоторые дополнительные Подробности / требования:

У всех животных есть метод isWarmBlooded, который возвращает логическое значение. Метод может быть в классе напрямую или наследоваться. Все животные имеют название. Все классы имеют метод toString, который возвращает имя, является ли животное теплокровным, и список всех животных имена, которые относятся к животному. Метод toString может быть в Класс прямо или наследуется. Животные, которые могут быть приняты в качестве домашних животных, имеют метод "getHomeCareInstructions", который возвращает описание того, как ухаживать за животным. Животные, которые живут в воде обитатели) имеют метод "livingOnLand", который возвращает логическое значение может ли животное также жить на суше. Животные, у которых есть крылья метод "fly", который возвращает логическое значение того, может ли животное летать. Эта часть задания не обязательно сложна из перспектива программирования. На что стоит потратить время, это тщательно учитывая дизайн ваших классов и как они должны быть связаны через наследование или интерфейсы

Я не уверен, как спроектировать это, потому что я знаю, что птица - крылатая, но летучая мышь - тоже. Поэтому летучая мышь расширяется, но летучие мыши также являются млекопитающими. Я не могу вытянуть крылатого млекопитающего, потому что птицы не млекопитающие. Кроме того, киты и выдры - обитатели воды, а также водные обитатели. Я не могу позволить водным обитателям распространять млекопитающих (потому что киты / выдры - это млекопитающие), но рыбы не являются млекопитающими и являются водными обитателями. Как бы я сделал так, чтобы летучая мышь была и крылатой, и млекопитающим? Программирование - легкая часть, просто борющаяся со структурой проекта. Как я могу структурировать это так, чтобы оно могло работать?

1 Ответ

0 голосов
/ 02 ноября 2018

Итак, при моделировании вы должны думать:

Какие фактические животные?

например. киты, выдры -> классы

которые являются типами животных ?

например. птица. -> абстрактный класс

Так как каждый эму - птица.
Это называется принцип замещения Лискова https://en.wikipedia.org/wiki/Liskov_substitution_principle

Какие характеристики у животного?

например. WaterDweller, Winged -> это интерфейсы.

У каждого класса может быть один суперкласс, он может иметь много характеристик, например, крылатый, или водный житель, или усыновленный

одно дополнение для вашего примера летучей мыши:

Это является млекопитающим -> поэтому его суперкласс является млекопитающим. Он является крылатым - что характерно - поэтому он реализует крылатый интерфейс.

class Bat extends Mammal implements Winged{
}
...