44 - Considera a seguinte classe:
public class Enemy
{
public static int NumberOfEnemies { get; private set; }
public int Health { get; set; }
public Enemy(int health)
{
NumberOfEnemies++;
Health = health;
}
public void Die()
{
NumberOfEnemies--;
Health = 0;
}
}
Responde às seguintes questões:
- Considera que
monster
é uma instância deEnemy
. Escreve duas linhas de código, uma para imprimir no ecrã a propriedadeHealth
da instância, outra para imprimir a propriedadeNumberOfEnemies
da classe. - Porque razão faz sentido a propriedade
NumberOfEnemies
serstatic
? - De que parte do código pode ser alterado o valor da propriedade
NumberOfEnemies
?
// Imprime a propriedade Health no ecrã
Console.WriteLine(monster.Health);
// Imprime a propriedade NumberOfEnemies no ecrã
Console.WriteLine(Enemy.NumberOfEnemies);
- Porque esta é uma propriedade que está, em suma, a controlar o número
total de inimigos que se originam a partir da instanciação da classe
Enemy
. Então, sendo esta uma propriedadestatic
, ela é comum para todas as instâncias da classe, isto é, o seu valor é o mesmo para todas estas instâncias. - Esta propriedade só pode ter o seu valor alterado dentro da própria
classe, uma vez que a mesma tem o
set
comoprivate
.
Por Luiz Santos.
// Print Health
Console.WriteLine(monster.Health);
// Print NumberOfEnemies
Console.WriteLine(Enemy.NumberOfEnemies);
-
A variável em questão parece estar ao nível da classe, então faz sentido que seja
static
. -
Dentro da própria classe, pois a propriedade têm um
set
privado.
Por Inácio Amerio.