Exercícios Resolvidos de Membros estáticos: static

Ver Teoria

Enunciado

Crie uma classe P r o d u t o s para gerenciar o estoque de uma loja. Cada produto deve ter os um nome, um valor de venda e a quantidade disponível no estoque. Os atributos devem ser recebidos no momento em que o objeto seja instanciado.

Além disso, qualquer um dos objetos dessa classe deve ser capaz de acessar a quantidade de produtos no estoque e também deve saber quantos tipos de produtos diferentes estão disponíveis.

Para testar essa classe instancie 4 produtos diferentes com preços e quantidades variadas. E imprima o a quantidade e a variedade de produtos existentes.

Passo 1

Vamos nessa, pessoal. Essa questão pede pra gente criar uma classe para os produtos de uma loja, com atributos que representem o nome, quantidade e valor do produto. Por questão de boas práticas, estes atributos serão privados.

O diferencial da questão é que teremos duas variáveis que devem ser compartilhadas entre as classes: v a r i e d a d e P r o d u t o s e t o t a l E s t o q u e . Para isso, estes atributos devem ser do tipo s t a t i c . Para seguir as boas práticas, estes atributos serão privados.

A questão também pede pra gente imprimir os valores de v a r i e d a d e P r o d u t o s e t o t a l E s t o q u e , mas como estas são variáveis privadas vamos precisar criar um método para acessá-las.

Mas primeiro, vamos escrever o nosso cabeçalho. Adicionamos a classe < s t r i n g > para facilitar nossa vida.

Passo 2

Vamos começar a classe chamada P r o d u t o s . Vamos iniciar o escopo privado com a palavra-chave p r i v a t e .

E agora vamos declarar os atributos: o primeiro é o n o m e do tipo s t r i n g , depois o valor do produto será o atributo v a l o r do tipo f l o a t , e a quantidade de produtos será armazenada no atributo q u a n t i d a d e do tipo i n t .

Agora vamos dar atenção aos atributos estáticos. O primeiro representa a variedade de produtos disponíveis, vamos chamar de v a r i e d a d e P r o d u t o s e o segundo representa a quantidade de todos os produtos no estoque, então chamaremos de t o t a l E s t o q u e .

Passo 3

Agora vamos dar uma olhada nos atributos públicos da classe.

O primeiro deles é o nosso método construtor, que vai receber o os parâmetros do produto: n o m e ,   v a l o r e q u a n t i d a d e .

Antes de concluir o método construtor temos que olhar para as variáveis estáticas.

O atributo v a r i e d a d e P r o d u t o s aumenta sempre que um produto novo é inserido, então devemos atualizar esse atributo no momento da criação de um novo objeto.

Já o atributo t o t a l E s t o q u e depende da quantidade de produtos inseridos. Então vamos usar o operador + = para adicionar a q u a n t i d a d e inserida no t o t a l E s t o q u e .

A classe está quase pronta. Mas antes de fechar a classe temos que desenvolver um método capaz de acessar os atributos v a r i e d a d e P r o d u t o s e t o t a l E s t o q u e . Então vamos criar o protótipo do método s t a t i c   v o i d   p r i n t E s t o q u e ( ) que será responsável por imprimir os valores.

Esse método pode ser do tipo estático pois ele só deve ter acesso as variáveis estáticas.

E com isso podemos fechar a nossa classe.

Passo 4

Contudo, a classe ainda não está concluída. Precisamos definir os valores iniciais dos atributos estáticos.

Então, fora da classe, nós chamamos os atributos utilizando a sintaxe t i p o   n o m e C l a s s e ∷ n o m e A t r i b u t o . Lembre-se que fora da classe não precisamos usar a palavra-chave s t a t i c . Veja como fica no nosso código:

Também precisamos definir o corpo do método p r i n t E s t o q u e . Para isso usamos a sintaxe: t i p o   n o m e C l a s s e ∷ n o m e M e t o d o ( ) . Novamente, o uso do s t a t i c não é necessário.

No corpo da função vamos usar o c o u t para enviar uma mensagem legal pro usuário.

Agora sim, a classe está completamente finalizada.

Passo 5

Vamos por a classe pra trabalhar agora.

Vamos começar criando quatro objetos da classe P r o d u t o . Você pode dar a eles o nome, valor e quantidades de quiser. Aqui eu escolhi alguns valores aleatórios:

Prontinho, agora basta a gente invocar o método p r i n t E s t o q u e (   ) . A gente pode usar qualquer objeto para isso, porém, as boas práticas sugerem que a melhor forma de usar um método estático é pela sintaxe: n o m e C l a s s e ∷ n o m e M e t o d o . No código fica assim:

Agora vamos rodar pra ver se deu tudo certo:

E é isso! Tudo certo! Até a próxima, pessoal.

Resposta