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?

Criar um jogo é muito mais complexo do que parece. São milhares, às vezes, milhões de linhas de código. Isso não é exagero! Apenas o jogo Ultima Online possui 6.006.313 linhas de programação, totalizando 25.103.295 palavras


O personagem Mario só possui bigode porque quando ele foi criado, em 1981, a resolução de tela dos equipamentos disponíveis não permitia que fosse desenhada uma boca, então os desenvolvedores fizeram o grande bigode para contornar essa limitação tecnológica.


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.


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.


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.


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.


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.


O ENIAC, primeiro computador valvulado do mundo, possuía 17.000 válvulas, 500.000 pontos de solda, 30 toneladas de peso e ocupava uma área de 180 metros quadrados. Clique aqui e conheça mais sobre a história dos computadores.


Considerando todas as adaptações de jogos de videogame para o cinema, a mais bem sucedida foi Lara Croft: Tomb Raider, lançado em 2001 e que faturou 274 milhões de dólares. Ele foi dirigido por Simon West e estrelado pela bela Angelina Jolie.


O primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.


A partida mais longa do clássico Space Invaders durou incríveis 38 horas e 32 minutos e esta façanha foi conseguida por um jogador de apenas 12 anos! O jogo, claro, podia ser pausado para alimentação e descanso, mas ainda assim o recorde, estabelecido no dia 02/09/1980, ainda não foi quebrado. Saiba mais.


O console Nintendo Entertainment System (NES), da Nintendo, detém o recorde de videogame mais clonado em todo o mundo. Já foram catalogados mais de 300 aparelhos diferentes capazes de reproduzir seus jogos! Saiba mais sobre ele 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 é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.


O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!


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.