Помогите мне с моделью объекта строительства, пожалуйста.
Мне нужен абстрактный класс Unit
, представляющий каждую воинскую часть в игре. Есть Soldier
, Tank
, Jet
и Bunker
(дети Юнита). Каждый из них имеет int
свойства Count
и Defense
, конструктор с одним параметром int count
и одним методом GetTotalDefense
.
Моя идея заключается в следующем.
private abstract class Unit
{
private int Count { get; set; }
private const int Defense = 0;
protected Unit(int count)
{
Count = count;
}
public int GetTotalDefense()
{
return Count * Defense;
}
}
private class Tank : Unit
{
private const int Defense = 5;
}
Каждый юнит имеет разные Count
и разные Defense
. Тело конструктора и тело GetTotalDefense
всегда одинаковы. Что мне нужно находится в переопределении дочернего класса Defense
, потому что у каждого модуля есть свои. Это свойство должно быть константным, все экземпляры танка (солдата, ...) имеют одинаковую защиту. Есть ли возможность наследовать свойство const, или каждому ребенку нужно собственное свойство const Defense
?
А вот пример, который я хотел бы привести.
О, есть также класс войск
public class Troop
{
private Soldier Soldiers { get; set; }
private Tank Tanks { get; set; }
private Jet Jets { get; set; }
private Fort Forts { get; set; }
public Troop(int soldiers, int tanks, int jets, int forts)
{
Soldiers = new Soldier(soldiers);
Tanks = new Tank(tanks);
Jets = new Jet(jets);
Forts = new Fort(forts);
}
public int GetTotalDefense()
{
return Soldiers.GetTotalDefense() + Tanks.GetTotalDefense() + Jets.GetTotalDefense() + Forts.GetTotalDefense();
}
}
Также не стесняйтесь предложить лучшее решение , спасибо.
PS: я очень строг в отношении модификаторов доступа, поэтому будьте точны в своих примерах, спасибо.