Exercícios Resolvidos de Membros estáticos: static

Ver Teoria

Enunciado

Um programador está desenvolvendo um jogo online. Em determinado momento ele criou uma classe chamada M o n s t r o que representa os inimigos do jogo. Cada objeto M o n s t r o tem um nome, um valor de força e um indicador de vida, ambos inteiros que variam de 0 a 100.

Neste jogo podem existir no máximo 50 monstros de cada vez. Assim que um monstro é criado ou morto a quantidade de monstros deve ser atualizada.

Passo 1

Beleza pessoal, vamos nessa!

A questão está pedindo pra gente criar uma classe com um número máximo de objetos. Ou seja, vamos precisar contabilizar quantos objetos foram criados, quando o numero de objetos for maior que este máximo comportamento da classe vai mudar!

Vamos começar com o cabeçalho do código.

E vamos também criar uma constante global que contem o número máximo permitido de monstros.

Passo 2

Vamos desenvolver a estrutura da classe.

Vamos declarar a classe M o n s t r o

E como atributos privados vamos declarar a string n o m e e os inteiros f o r c a e v i d a .

Vamos mudar para o encapsulamento público. Aqui vamos declarar o atributo estático inteiro c o n t M o n s t r o s . Vai ser esse o atributo responsável por efetuar a contagem de monstros.

E em seguida vamos declarar os métodos da classe. Vamos precisar construtor que vai inicializar os três atributos da classe, e que vai aumentar a contagem de c o n t M o n s t r o s a cada novo objeto criado.

E também de uma função m o r r e u ( ) que vai diminuir a contagem de monstros sempre que um inimigo for derrotado.

Prontinho! A estrutura geral da classe está feita. Vamos agora desenvolver os detalhes.

Passo 3

A primeira coisa a fazer é determinar o valor inicial do atributo estático c o n t M o n s t r o s . Pra isso a gente chama o atributo fora da classe e inicializa:

Show!

Passo 4

Agora vamos desenvolver os métodos. O primeiro é o construtor, que vai receber e inicializar os atributos da classe. Para facilitar o processo de criar objetos, vamos colocar valores padronizados para os parâmetros do construtor.

Nós também temos que atualizar a contagem de monstros. Um novo monstro foi criado, então o valor de c o n t M o n s t r o s aumenta mais um:

E o construtor ainda não acabou! Aqui a gente tem que lembrar que a quantidade máxima de monstros é 50 . E o que impede a existência 51 º ? Até agora, nada! Então vamos adicionar aqui uma condição para eliminar automaticamente os monstros excedentes.

Para isso vamos usar um i f que quando o número de monstros passar do máximo, automaticamente o método m o r r e u ( ) vai ser executado, eliminando o monstro extra no momento da criação!

Passo 5

Agora temos que desenvolver o método m o r r e u ( ) . Um monstro morre quando sua vida chega a zero. Então o objetivo desse método será setar a v i d a do monstro para 0 , e em seguida atualizar a contagem de monstros em menos um.

Pro jogo ficar mais dinâmico, vamos adicionar também uma mensagem informando que o monstro foi derrotado.

Prontinho! A classe e seus métodos estão concluídos!

Passo 6

Show de bola, agora vamos testar essa classe.

Primeiro, vamos exibir a quantidade de monstros inicial. Esse valor tem de ser zero.

Em seguida, vamos criar a quantidade máxima de monstros permitida, para testar se a contagem está ocorrendo como deveria, e exibimos a nova quantidade de monstros.

E depois precisamos conferir se o limitador de monstros funciona. Então vamos criar mais um objeto da classe M o n s t r o e ver o que acontece quando o atributo c o n t M o n s t r o s .

Agora vamos rodar o programa e ver o resultado:

Viu que legal? A quantidade de monstros foi contada corretamente! E assim que um monstro excedente foi criado, automaticamente ele foi eliminado do jogo.

Resposta