Наследяващ клас: Къде и кога се прави инициализация на пропъртита? (Minedraft)
Пример от лектор на Microsoft:
// TechnicalEmployee Class inheriting from Employee Class
class TechnicalEmployee : Employee
{
// Calls upon base-class (Employee Class) constructor from within derived class (TechnicalEmployee Class)
// Sets baseSalary to 75000 for all TechnicalEmployee objects
public TechnicalEmployee(String name) : base(name, 75000)
{ }
}
Пример: Minedraft C# OOP Basics Exam - 16 July 2017
Условие на задачата.
For all harvesters you need to validate, that ore output and energy requirement for each harvester is NOT negative.
Also you need to validate that energy requirement for each harveter is NOT over 20000.
UPON INITIALIZATION, divides its given energyRequirement by its sonicFactor.
Конструктор на колега:
public SonicHarvester(string id, double oreOutput, double energyRequierment, int sonicFactor)
: base(id, oreOutput, energyRequierment)
{
this.SonicFactor = sonicFactor;
this.EnergyRequirement /= this.SonicFactor;
}
Моят конструктор:
public SonicHarvester(string id, double oreOutput, double energyRequirement, int sonicFactor)
: base(id, oreOutput, energyRequirement /= sonicFactor)
{
SonicFactor = sonicFactor;
}
Така го разбирам:
В първият случай се прави опит за създаване на обект и след това се модифицират свойствата му.
Във втория директно се създава обект със зададените свойства.
При команда: RegisterHarvester Sonic AS-51 100 100000 10
Проверката е if(value > 20_000) throw Exception.
В първия случай гърми със 100_000.
Във втория минава с 10_000.
Каква е конвенцията?
Кой вариант е правилен?