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 acessá-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 deixá-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.


HARDWARE

Entendendo o seu computador

O que há dentro do meu computador?

Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

O Playstation só nasceu porque uma parceria entre Sony e Nintendo, para desenvolver uma unidade de CD para o Super Nintendo, fracassou. Clique aqui e saiba mais.


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.


O épico jogo River Raid, do Atari, foi desenhado e boa parte de sua programação foi feita por uma mulher: Carol Shaw, uma excelente programadora e funcionária da Activision em 1982. Saiba mais sobre a história deste incrível jogo, aqui.


As primeiras máquinas de fliperama do mundo a utilizarem moedas, chamadas de Galaxy Game, custavam mais de 20 mil dólares para serem produzidas. Saiba mais sobre elas aqui.


A Máquina de Pascal, criada em 1642 pelo filósofo, físico e matemático francês Blaise Pascal, é reconhecida como o primeiro computador do mundo e ele foi criado com o objetivo de calcular impostos. Saiba mais.


Em 1949 a revista Popular Mechanics fez uma previsão para o futuro, dizendo: "Um dia os computadores pesarão menos do que 1,5 tonelada". E pensar que temos smartphones capazes de realizar milhões de vezes mais operações do que os computadores daquela época.


Digitar senhas em computadores de uso coletivo é extremamente perigoso, pois além de softwares de monitoramento, existem dispositivos de hardware que podem capturar suas senhas. Evite ao máximo acessar sites de bancos a partir destes computadores. Veja mais aqui.


A empresa Take-Two pagou à Infogrames mais de 22 milhões de dólares pelos direitos de Civilization, em novembro de 1994. Ainda sobre este título, Sid Meier, um dos seus fundadores, é o profissional da área dos games mais premiado em todo o mundo.


A primeira versão do clássico Mega Man, para Nintendo 8 bits, tem seu recorde de pontos estabelecido em 03/11/2006, por David Archey, que cravou 2.396.700 pontos, terminando o jogo.


Excesso de barulho dentro do seu gabinete, principalmente logo que você o liga, pode ser sintoma de problemas nas ventoinhas, que podem precisar ser limpas ou trocadas. Entre em contato com um técnico de sua confiança e verifique isso o quanto antes.


O ábaco é o dispositivo de cálculo mais antigo construído e conhecido pelo homem. Suas formas mais primitivas datam de 400 a.C. e eles foram encontrados na China e na Babilônia. Para saber mais sobre a história dos computadores, clique aqui.


A empresa Universal City Studios, detentora dos direitos autorais do King Kong, processou a Nintendo logo após o lançamento de Donkey Kong, pois segundo ela, o game violava os seus direitos. Ela venceu o processo e recebeu da Nintendo uma indenização de quase 2 milhões de dólares.


Street Fighter 2, lançado para o Super Nintendo no início dos anos 90, foi o principal responsável pelo aumento nas vendas deste console. Graças ao sucesso do título nos Arcades e à perfeita adaptação ao console, muitos consumidores adquiriram o SNES para jogarem o título em casa. Saiba mais.


Apenas no ano de 1982, o clássico Pac Man vendeu mais de 400 mil máquinas de fliperama em todo o mundo e recebeu cerca de 7 bilhões de moedas nestas máquinas. Saiba mais.


Desde o seu lançamento, em 1985, o fantástico jogo Tetris vende pelo menos 70 milhões de unidades por ano em todo o mundo! Os dados são oficiais e fornecidos pela THQ, uma das distribuidoras do título.


O mouse foi criado em 9 de dezembro de 1968, por um americano chamado Douglas Engelbart, que o batizou de "XY Position Indicator for a Display System". Conheça a história do mouse clicando aqui.