2013-06-27 3 views
-8

У нас есть класс животных на вершине. Тогда у нас есть подклассы млекопитающих, рептилий, рыб и птиц. Подклассы этого подкласса - лев, собака, змея, ящерица, килька, акула, голубь и орел. Все это классы. Нам нужно иметь значение, если животные являются наземными, водными или летающими, а также водными животными являются 2 типа: пресноводные и соленые. Кроме того, они могут быть, например, водными и наземными. Я думал о интерфейсах, но, возможно, это не хорошо, потому что для птиц, например, у нас нет того, что реализовать как метод. Может быть, я могу сделать это как переменные в классе животных, а затем в конструкторах будут эти логические переменные. Я не уверен, как наилучшим образом реализовать это. можешь мне помочь ?Как я могу реализовать эту иерархию?

+0

Что означает «Мб»? –

+0

По крайней мере, дайте некоторые доказательства того, что вы пытались. –

+0

У вас нет ничего, чтобы реализовать для птиц? srsy? а как насчет мухи? крылья лоскута? парить? – darijan

ответ

1

Нет, вы не делаете переменные для признаков животного, потому что эти черты не меняются (без учета эволюции).

Во-первых, вам нужна достойная книга по объектно-ориентированному дизайну, вместо того, чтобы просить нас помочь. Возьмите инициативу и выполните некоторые исследования.

На данный момент, как о только реализации некоторых основных полиморфных булевы функции, такие как IsTerrestrial(), IsAquatic() и т.д ... Может быть, сделать перечисление для AquaticType, который возвращает None, FreshWater, SaltWater или Both. Вы переопределяете эти методы на самом высоком уровне, чтобы ваши подтипы не беспокоились.

Например, почти все рыбы не являются наземными, поэтому подклассам Fish не следует реализовывать этот метод (класс Fish должен). Аналогично, большинство млекопитающих не являются водными.

Это немного субъективно. Существует множество способов представления этой информации в иерархии классов, но это должно дать вам начало.