Minicursos - Programação Orientada a Objetos

Classes e Métodos Estáticos


Vamos a mais um importante conceito da POO, que são as classes e métodos estáticos. Elas são muito simples e seus nomes já são bastante sugestivos, mas antes de falarmos delas, vamos relembrar um pouco o conceito de classes.

Classes são a “receita” para a criação dos objetos, pois contém as instruções de todas as ações que eles poderão executar e ainda descrevem todos os atributos que o objeto possuirá. Então, sempre que instanciamos uma classe, geramos um novo objeto ativo na memória, e a partir disso podemos manipular seus atributos através de métodos. Vejam abaixo o exemplo de uma classe chamada "Carro", que contém dois atributos e métodos para inserir e ler o conteúdo destes.

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Nós podemos criar quantas instâncias desse objeto quisermos e, a cada nova instância, um novo objeto é gerado na memória, conforme a figura abaixo:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Muito bem, esse é o funcionamento de uma classe comum. O que diferencia uma classe estática de uma classe não estática é que a estática não pode ser instanciada, portanto não gera essas múltiplas instâncias dos objetos na memória.

Quando o programa que referencia uma classe estática é carregado, ela é alocada na memória automaticamente, sem a necessidade de se chamar um construtor através da palavra reservada new, como acontece com as classes não estáticas. Essa classe estática permanecerá na memória durante toda a execução do programa e, a partir de qualquer local do código que se tentar recuperar seus valores, eles serão sempre os mesmos para todos os requisitantes, já que estaremos lidando com uma mesma fonte de dados, e não com várias, como pode acontecer com as classes não estáticas. É como se no início da execução do programa um objeto dessa classe estática fosse instanciado e não mais permitisse a instanciação de nenhum outro. Ele será único durante todo o tempo em que o programa permanecer sendo executado.

Vejam o que acontece quando eu altero o tipo da classe Carro para static:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

A estrutura de uma classe estática é realmente diferente de uma não estática. A imagem acima mostra uma classe que tinha dois atributos, que eram a marca e o modelo, e métodos para acessa-los, seja para inserir essas informações ou para lê-las. Vejam como a estrutura de uma classe estática com as mesmas funções é mais simples:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Vale a observação de que os atributos da classe estática precisam ser estáticos também. Vejam o que acontece se eu tentar deixa-los não estáticos e compilar a aplicação:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Vou recolocar a palavra static depois do modificador de acesso public e demonstrar como é simples acessar esses atributos da classe estática "Carro".

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Agora vejam como o acesso a esse membro da classe estática é feito:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Aqui farei uma observação importante. Os membros estáticos podem, sim, ter seu valor alterado durante a execução da aplicação, vejam esse complemento do código acima:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Faço a inserção do valor “FIAT”, depois o exibo em uma caixa de mensagens, em seguida troco esse valor por “GM”, então faço a exibição novamente. Vejam:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

E, depois de clicar em OK:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Vejam que o valor foi alterado corretamente.

Agora vamos falar um pouco sobre os métodos estáticos. Eles, na verdade, possuem funcionamento igual ao de um método não estático. Nesse caso existe somente uma pequena mudança que se refere à classe, que agora não vai estar instanciada.

Criei, para usar de exemplo, um método chamado calculaPreco(int qtde), que recebe a quantidade de veículos vendidos por uma concessionária e, dependendo dessa quantidade, lhe fornece um desconto, retornando um preço final já com o desconto calculado, que pode ser de 2000 ou 4000 reais.

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Criei um Textbox para o usuário digitar a quantidade de veículos vendidos e um botão para retornar o preço final, conforme figura abaixo:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Para o retorno e exibição do valor, o código ficou da seguinte forma:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Exibição do valor:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Também poderíamos atribuir esse valor de retorno a uma variável, que é o que normalmente acontece quando utilizamos métodos estáticos. Segue um exemplo:

Classes e Métodos Estáticos - Programação Orientada a Objetos - POO

Dessa forma é que funcionam as classes e métodos estáticos. Eles são de enorme importância, mas devem ser usados com cautela. É preciso que se saiba claramente qual classe ou membro você quer que fique disponível para todas as outras classes (ou instâncias delas), pois no fundo esse é o papel dos componentes estáticos.

Fazendo uma comparação grosseira, é como se eles fossem variáveis globais da aplicação, pois serão alocados na memória logo que ela for executada pela primeira vez e permanecerão lá o tempo todo. Use-os somente quando não necessitar manipular valores de membros da instância.

Se por um lado o código fica mais simples, por outro ele ocupa espaço na memória o tempo todo. Também é importante lembrar que os dados armazenados em uma classe estática não possuem uma identidade única, como acontece com as classes não estáticas. Para estas últimas podemos criar várias instâncias, cada um com um identificador e colocar dados diferentes neles. Isso não é possível com componentes estáticos.

Enfim, espero que tenha ficado claro todas as diferenças entre classes e métodos estáticos e os não estáticos. Com este tópico encerramos o minicurso de POO. Na sequência temos o de C#, que fará uso de vários conceitos aprendidos aqui.



Algumas notícias

Xiaomi vende 52,9 milhões de celulares no segundo trimestre de 2021 e faturamento dispara

A gigante chinesa Xiaomi registrou um aumento de quase 85% no seu faturamento no segundo trimestre de 2021 em comparação ao mesmo período do ano passado. A receita divulgada pela empresa foi de 13,5 bilhões de dólares (algo em torno de 70 bilhões de reais) nos meses de abril a junho deste ano...

Ler Notícia Completa

Galaxy S9 e Galaxy S9 Plus receberão atualização de segurança este mês

A Samsung começou a liberar esta semana, para proprietários dos modelos Galaxy S9 e Galaxy S9 Plus, uma nova atualização de segurança. Por enquanto somente alguns países da Europa receberam o pacote, que deve ser dis...

Ler Notícia Completa

Novas câmeras 'debaixo da tela' da Oppo surpreendem

Para muitos, colocar uma câmera embaixo da tela de um celular era uma tarefa impensável, por conta de diversos problemas técnicos. Os primeiros testes da Oppo que se propuseram a isso geravam imagens de qualidade bastante insatisfatória, já que a captação da luz era prejudicada pela tela. A prim...

Ler Notícia Completa

As memórias DDR5 estão chegando e trarão muitas melhorias

A próxima geração de memórias RAM já possui especificações definidas e promete grande melhoria em relação às atuais DDR4. E o mais importante: mesmo com desempenho bastante superior, elas consumirão menos energia. A tensão de trabalho das memórias DDR5 será de apenas 1.1V contra os 1.2V das atu...

Ler Notícia Completa

Google Chrome consumirá menos memória RAM em breve

O navegador da gigante de buscas da Internet é, sem dúvida, um dos melhores disponíveis, mas é inegável que o consumo de memória RAM por parte dele é exagerado. Este problema já se estende por anos, mas parece que em breve ele terá uma solução. Um novo recurso do Windows 10, chamado SegmentHeap...

Ler Notícia Completa

Sites e vídeos sem propagandas? Sim, é possível através da exploração de uma falha!

Seguramente você já se deparou com sites que bloqueiam o conteúdo da página e te obrigam a assinar determinado serviço para ler o conteúdo, certo? Ou foi tentar assistir aquele vídeo e as propagandas em tela cheia não pararam de surgir. Bem, todos já nos deparamos com isso, no entanto, um bug de...

Ler Notícia Completa

Inteligência Artificial cria antibiótico super potente

Pesquisadores do MIT (EUA) identificaram um novo e poderoso composto antibiótico usando um algoritmo de aprendizado de máquina, uma técnica de inteligência artificial. Em testes de laboratório, a droga matou algumas das bactérias causadoras de doenças mais problemáticas do mundo, incluindo algu...

Ler Notícia Completa

Google lança programa para capacitar profissionais brasileiros e com direito a bolsas

O Google iniciou nesta terça-feira (17) o Certificado Profissional de Suporte em TI para brasileiros. Trata-se de um curso desenvolvido pela gigante de tecnologia em parceria com a Coursera. Inicialmente, o módulo de ensino foi anunciado a um valor de US$ 39 por mês. Entretanto, sofreu uma redu...

Ler Notícia Completa

Intel Core i9-9900KS é um monstro com frequência de 5GHz em todos os núcleos

A Intel é uma das empresas presentes na Computex 2019, a maior feira de hardware da Ásia. E a empresa começou a esquentar os motores antes mesmo do início das conferências, exibindo um processador que não está para brincadeira: o Intel Core i9-9900KS, uma edição especial e ainda mais turbinada do...

Ler Notícia Completa

Como conversar com alguém no WhatsApp sem adicionar o número aos contatos

Este processo pode, à primeira vista, parecer um pouco confuso para usuários que não são muito experientes usando seu smartphone. Mas uma vez que você conclua o processo , vai entender o método e parecerá mais fácil. 1. Abra o seu navegador preferido no seu smartphone e digite o seguinte link na...

Ler Notícia Completa

O que acontece com o cérebro no exato momento em que morremos

O que passa em nossa cabeça no momento da morte? Não se sabe exatamente e, embora os cientistas tenham alguma resposta, a resposta continua sendo um grande mistério. Além de difícil solução, tentar respondê-la pode criar implicações éticas. No entanto, uma equipe de cientistas da Universidade...

Ler Notícia Completa

Operada e devolvida ao útero, menina que nasceu duas vezes hoje 'acorda sorrindo toda manhã'

Um bebê pode nascer duas vezes? Não é o caso da absoluta maioria das crianças, mas foi assim para a pequena Lynlee Boemer. Em outubro de 2015, sua mãe, Margaret Boemer, descobriu que estava grávida de gêmeos. Ela sofreu um aborto espontâneo, mas um dos bebês sobreviveu. Com dez semanas de ges...

Ler Notícia Completa

Você sabia?

Nos primeiros oito dias após o lançamento do console Nintendo Wii foram vendidas 600 mil unidades. Isso equivale a quase um por segundo e estes incríveis números são referentes às vendas apenas nos EUA!

O primeiro jogo a fazer uso de uma Inteligência Artificial foi o Mouse in the Maze, criado em 1955, na União Soviética. Você pode saber mais sobre ele clicando aqui.

Até a primeira metade dos anos 90 era bastante comum que as trilhas sonoras dos games fossem criadas por mulheres e a responsável pelas músicas do clássico Street Fighter 2 foi Yoko Shimomura. Segundo ela, o ritmo "Tararirarin" da música tema do personagem Blanka, do Brasil, veio à sua cabeça enquanto ela estava no trem a caminho da Capcom.

O título Space Invaders, lançado em 1980, fez tanto sucesso em todo o mundo que as pessoas compravam o console Atari apenas para poderem jogá-lo em casa. Saiba mais sobre este incrível título clicando aqui.

Ajude o Contém Bits com um cafezinho!

Se você gostou do artigo, se ele lhe foi útil de alguma maneira e você quiser ajudar o Contém Bits, saiba que é simples, fácil e rápido. Basta clicar na imagem do PayPal (ou no cafezinho) e seguir as instruções, em ambiente seguro e com o respaldo do Paypal. Eu agradeço muito! :)


Você gostará destes vídeos!