СитуацииПравильно доступ к параметрам от «: База» конструктора
Я делаю небольшую игру на основе текста с использованием некоторых методов объектно-ориентированного программирования, я узнал в этом учебном году, поэтому я делаю это в основном улучшить ООП, которые я сейчас знаю, и, надеюсь, улучшить некоторые из моих практик при помощи опытных пользователей.
Так, в неспециалист условия, я в настоящее время имею класс «ОРК», который простирающийся «враг» и «враг» расширяет «Entity»
public class Ork : Enemy
public class Enemy : Entity
У меня есть класс «Enemy», потому что я намерен сделать много уникальных типов объектов противника, а не просто «Орк», с этой текущей настройкой я мог бы сделать «Эльф» или «Человек» таким же образом. (и в будущем гораздо проще добавлять новые типы). У Enemy есть собственный конструктор.
public Enemy(string[] Droplist, int Defaultgold, string Weaknesses, string Resistances, string[] Taunts, string Aggro, string Critchance, string Threshold, string Name, string Type,
string Spawnzone, string _Class, int Defaultlevel, int Maxlevel, string trait, int str, int agi, int dex, int hel, int man)
{
//make a new entity instance.
entity = new Entity();
//Set all the local variables to the passed in parameters.
setEntity(Name, Type, Spawnzone, _Class, Defaultlevel, Maxlevel, trait, str, agi, dex, hel, man);
droplist = Droplist;
defaultgold = Defaultgold;
weaknesses = Weaknesses;
resistances = Resistances;
taunts = Taunts;
aggro = Aggro;
critchance = Critchance;
threshold = Threshold;
}
Как вы можете видеть, я установить входящий параметр в локальной переменной, и я использую setEntity, который делает некоторые из этой работы для меня. У меня также есть класс «Entity», и причина этого заключается не в том, что «Stats» является врагом, поэтому у меня есть «Entity» как посредник.
Проблема
Проблема находится в конце этой линии классов, Орков класса.
В других программах, например, моя программа Hillracing, мой конструктор для подобного класса будет выглядеть следующим образом:
public JuniorMember(string stringfirstname, string stringlastname, string stringmiddlename, string stringtitle, string strst, string strtwn, string strpc, string strEmail, int intMobile, int intHome,
string shrnumber, string memtype, string username, string password, int noracesrun, float perraceswon, string mempic, string memclub, string gender, int memexp, int yearofbirth, int monthofbirth, int dayofbirth, string nextofkin, string docName, string docTel, string healthIssues, string parentalConsent)
: base(stringfirstname, stringlastname, stringmiddlename, stringtitle, strst, strtwn, strpc, strEmail, intMobile, intHome, shrnumber, memtype, username, password, noracesrun, perraceswon, mempic, memclub,
gender, memexp, yearofbirth, monthofbirth, dayofbirth)
{
Таким образом, проблема, попросту говоря, в этой программе я, глядя на такое же количество параметров, и для меня лично, глядя на эти параметры, я не чувствую, что делаю это правильно.
Пример, который я дал от Hillracing, работает безупречно, но мне просто интересно, если это лучший способ сделать это, поскольку список параметров выглядит беспорядочным, и мне кажется, что я создаю вещи, которые были ранее создано. Я имею в виду, что 90% информации, необходимой мне для создания объекта Ork, происходит из других источников.
Редактировать
Благодаря замечаний, я удалил новый Entity я сделал в моем вражеского классе, теперь у меня есть следующий класс Enemy:
public class Enemy : Entity
{
private string[] droplist;
private int defaultgold;
private string weaknesses;
private string resistances;
private string[] taunts;
private string aggro;
private string critchance;
private string threshold;
public string[] Droplist { get { return droplist; } set { droplist = value; } }
public int Defaultgold { get { return defaultgold; } set { defaultgold = value; } }
public string Weaknesses { get { return weaknesses; } set { weaknesses = value; } }
public string Resistances { get { return resistances; } set { resistances = value; } }
public string[] Taunts { get { return taunts; } set { taunts = value; } }
public string Aggro { get { return aggro; } set { aggro = value; } }
public string Critchance { get { return critchance; } set { critchance = value; } }
public string Threshold { get { return threshold; } set { threshold = value; } }
public void setEntity(string EnName, string EnType, string EnSpawnzone, string En_Class, int EnDefaultlevel, int EnMaxlevel, string Entrait, int Enstr, int Enagi, int Endex, int Enhel, int Enman)
{
setStats(Enstr, Enagi, Endex, Enhel, Enman);
Name = EnName;
Type = EnType;
Spawnzone = EnSpawnzone;
_Class = En_Class;
Defaultlevel = EnDefaultlevel;
Maxlevel = EnMaxlevel;
trait = Entrait;
}
public Enemy(string[] Droplist, int Defaultgold, string Weaknesses, string Resistances, string[] Taunts, string Aggro, string Critchance, string Threshold)
:base(Name,Type,Spawnzone,_Class,Defaultlevel,Maxlevel,trait,str,agi,dex,hel,man)
{
//Set all the local variables to the passed in parameters.
setEntity(Name, Type, Spawnzone, _Class, Defaultlevel, Maxlevel, trait, str, agi, dex, hel, man);
droplist = Droplist;
defaultgold = Defaultgold;
weaknesses = Weaknesses;
resistances = Resistances;
taunts = Taunts;
aggro = Aggro;
critchance = Critchance;
threshold = Threshold;
}
Мой вопрос здесь, я не знаю, как получить информацию от Entity
в этот момент, я не могу получить доступ к переменным Name,Type,Spawnzone,etc,etc
, потому что они ожидают ссылку на объект.
вы можете сделать метод без параметров, и эти параметры будут преобразуется в свойства внутри вашего класса, и если эти свойства являются общими для ваших объектов, вы можете создать интерфейс для этого – Monah
'Enemy', расширяющий' Entity', вы не должны иметь переменную сущности в своем классе «Enemy», поскольку она уже является самой сущностью. –
Проверьте редактирование, я удалил экземпляр объекта из класса врага. – Method