Skip to content

Latest commit

 

History

History
71 lines (55 loc) · 1.85 KB

44.md

File metadata and controls

71 lines (55 loc) · 1.85 KB

Pergunta

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:

  1. Considera que monster é uma instância de Enemy. Escreve duas linhas de código, uma para imprimir no ecrã a propriedade Health da instância, outra para imprimir a propriedade NumberOfEnemies da classe.
  2. Porque razão faz sentido a propriedade NumberOfEnemies ser static?
  3. De que parte do código pode ser alterado o valor da propriedade NumberOfEnemies?

Soluções

Solução 1

// Imprime a propriedade Health no ecrã
Console.WriteLine(monster.Health);
// Imprime a propriedade NumberOfEnemies no ecrã
Console.WriteLine(Enemy.NumberOfEnemies);
  1. 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 propriedade static, ela é comum para todas as instâncias da classe, isto é, o seu valor é o mesmo para todas estas instâncias.
  2. Esta propriedade só pode ter o seu valor alterado dentro da própria classe, uma vez que a mesma tem o set como private.

Por Luiz Santos.

Solução 2

// Print Health
Console.WriteLine(monster.Health);

// Print NumberOfEnemies
Console.WriteLine(Enemy.NumberOfEnemies);
  1. A variável em questão parece estar ao nível da classe, então faz sentido que seja static.

  2. Dentro da própria classe, pois a propriedade têm um set privado.

Por Inácio Amerio.