Programação Java: Introdução: O que são e para que servem as Classes e Objetos

Linguagem Java , Programação Java, Java Curso gratis.

  • Click here to study this Java tutorial in English

O conceito de orientação a objetos, é, sem dúvida, o mais importante em Java.
E é por isso que ensinaremos desde o início, em nosso curso de Java.

Por ser um conceito um pouco abstrato, é normal que demore um pouco até entender tudo. E até entender bem, vai demorar mais ainda.
Porém, vamos ensinar, ao longo de vários tutoriais, divididos em várias seções, estes tão importantes detalhes.

Nesta parte, como só vimos o básico e laços da programação Java, vamos apenas ensinar como declarar as classes, instanciar os objetos (com e sem construtores) e como usar testes condicionais dentro das classes que criamos.
Isso dará uma idéia do que são classes e objetos, e é importante que se habitue a estas idéias.

O que são Classes e Objetos em Java

Como havíamos comentado em nosso artigo com a explicações sobre o primeiro programa que criamos, classes podem ser vistas como abstrações ou definições maiores das coisas e objeto já é algo mais real, mais concreto, é um elemento ou tipo daquela classe.
Usando essas definições, é realmente difícil entender os conceitos, por isso vamos usar exemplos.

Por exemplo, podemos ver “Pessoa” como uma classe. É uma classe que representa seres humanos, que possuem cabeça, coração, cérebro etc. É uma generalização maior.
Podemos declarar você, caro leitor, como um objeto dessa classe, com seu nome e características específicas de uma “Pessoa”. Você pertence a classe “Pessoa”. Eu também, pois possuímos cabeça, coração, cérebro etc.
Nós temos essas características gerais, que todos da classe “Pessoa” possuem. Ou seja, em Java, dizemos que somos instâncias da classe “Pessoa”.

Utilidade das Classes e Objetos em Java

Esse tipo de representação vai nos ajudar muito em programação Java.

Por exemplo, imagine que você foi contratado para criar um aplicativo para uma empresa em Java, claro.
Você tem que cadastrar os milhares de funcionários da empresa.
É claro que você não vai declarar milhares de strings para armazenar o nome de cada um, nem de inteiros para armazenar seus números nem de floats para armazenar seus salários.
Seria humanamente impossível fazer isso.

Agrupar coisas semelhantes
Aí que entra a vantagem da programação orientada a objetos. Podemos ver todos esses funcionários de uma mesma maneira: como a classe Funcionario.

O que a classe “Funcionario” tem em comum?
Tem um nome, uma idade, uma data de contratação, um salário, um setor em que trabalham e outras coisas específicas da empresa.

Pronto.
Você pode ver essa classe como um tipo de dado.
Assim como ‘int’ ou ‘float’, agora existe o tipo ‘Funcionario’. Toda vez que entrar alguém novo na empresa, você declara esse elemento como fazendo parte do tipo ‘Funcionario’. Ou seja, estará criando um objeto dessa classe.
O objeto, diferente da classe, é algo mais específico, ele que terá as informações pessoais de cada funcionário.

Crie uma vez, use quantas vezes quiser
A grande vantagem desse tipo de ‘visão’, é que, ao declarar a classe, você declara dentro dela os tipos: string, float, int etc, que estão dentro da classe.

Então, quando for criar um objeto, automaticamente esses dados estarão criados!
Aí que reside a beleza do Java e da orientação a objetos. É muito, mas muito útil e prático. É um novo jeito de pensar e ver o mundo. Dizemos que é um tipo de paradigma de programação  diferente.

Altere uma parte do código, e a mudança se propagará em todo o código
Ok, você criou seu aplicativo usando a classe “Funcionario”.

Porém, a pessoa que te contratou que muitas vezes não são da área de TI esqueceu de te informar que os funcionários devem ter uma informação no cadastro: se possuem carro ou não.
E aí? Alterar tudo? Começar do zero?

Claro que não. Simplesmente vá na classe e coloque esse atributo (informação), e automaticamente todos os objetos passarão a ter esse dado, “carro”.
Então é só pedir para os funcionários preencherem esse dado no seu aplicativo de cadastro.

Classe à parte, vida à parte
Uma coisa interessante que a programação orientada a objetos nos proporciona é a divisão das partes do programa. Dois programadores podem programar duas classes de forma totalmente independente e fazer com que elas funcionem perfeitamente.
Coisa que em outros paradigmas de programação é quase impossível.

Por exemplo, você criou a classe “Funcionario”.
Nessa classe você precisa a informação do salário de cada funcionário, porém você não tem acesso aos detalhes financeiros da empresa. Ora, nem precisa e nem deve ter, é algo mais restrito.

Outro programador, responsável pelo setor financeiro, pode ter criado a classe “Salario” que recebe os dados de cada pessoa, sua posição na empresa, bônus, horas extras etc etc, e te dá somente o resultado final: o número. Esse dado é o que você vai usar na sua classe “Funcionario”.

Isso todo pode ser feito de uma maneira totalmente eficiente, segura e independente, tanto por você como pelo programador que fez a outra classe.
A única troca de informação é que você pega um float dele e ele pega o nome do seu funcionário ou código dele da empresa.

O mais importante disso é: em nenhum momento foi necessário um ver o código do outro!
Na hora de trabalhar, isso nos diz muito em termos de rendimento!

Como saber quando usar Classes e Objetos em Java

Como você pode notar, através dos exemplos dos Carros, das Pessoas e dos Funcionários, as Classes são nada mais que um grupo de informações. Sempre que quiser usar essas informações, declare um Objeto daquela classe.
Ou seja, sempre que quiser generalizar ou criar um grupo com características parecidas, não tenha dúvida, use Classe e Objetos.

Em um jogo, Worms Armageddon ou Counter-Strike, por exemplo. Existem vários jogadores. Ora, eles são parecidos, tem semelhanças e características em comum. Não perca tempo declarando seus atributos individualmente, use classes e objetos.

Na verdade, em Java, tudo são classes e objetos, então não há muito essa preocupação.
Nosso programa principal, que contém a ‘main()’, é uma classe. Para receber dados, usamos a classe Scanner.
Em C , não existe Orientação a Objetos.
Em C++ , você escolhe se usa ou não.

Adiante, veremos que uma classe pode se parecer com uma e outra, pegar ‘emprestado’ detalhe de outras, implementar ou estender outras.
Existem vários recursos para serem usados nas Classes, inclusive de segurança, que permitem que alguns objetos tenham acesso a alguns dados, outros não.

Recursos gráficos: por exemplo, as janelas dos aplicativos Java, botões, menu e tudo mais são classes.
Como dissemos, Java gira em torno de orientação a objetos, e Java é uma linguagem de programação riquíssima e ilimitada. Logo, o que é possível fazer com as classes e objetos também é bem vasto.