Até aqui, procuramos levá-los a um raciocínio sobre o mundo real de forma que seja simples a associação deste com os conceitos da POO.
Na POO, tudo é baseado em classes e objetos. O conceito de classes é universal e imprescindível para a POO, qualquer que seja a linguagem em que esta seja aplicada.
Uma classe é a definição de um objeto. Semanticamente, podemos definir uma classe como sendo um conjunto de características e atributos que definem um objeto. Sendo assim, podemos definir um objeto como algo que é criado, estabelecido, definido e concebido a partir de uma classe.
Um ótimo exemplo para a afirmação acima é imaginar um bolo como sendo um objeto. Qual seria a classe do objeto bolo? O que o define? Como ele é feito ou criado? Neste caso, a classe do objeto bolo seria a sua receita. É nela que está definido o quanto de farinha será gasto no bolo, quanto tempo ele deverá ficar no forno, entre outros atributos e características. Podemos dizer então que a classe molda o objeto.
Outro exemplo simples é o de uma casa e sua planta. A planta seria a classe, pois define todas as características para a construção desta, enquanto que a casa é o nosso objeto.
Na ótica da programação, um objeto é uma instância de uma classe. Não se assuste com esta frase. Ela ficará bem entendida até final deste capítulo.
É bom frisar que a partir de uma classe, é possível construir uma série de objetos. Com uma receita, é possível fazer infinitos bolos assim como com uma planta, é possível construir uma série de casas.
Podemos então começar a definir o que é o conteúdo de uma classe. Ela deverá listar todas as características do objeto, podendo incluir:
- campos e propriedades – o que define as características (ex: cor, tamanho, etc.);
- comportamentos, ações ou métodos;
- reações ou eventos – qual o comportamento deste objeto com base em alguma ação causada;
Isso é dito procurando ainda associar a idéia de objetos reais. Entretanto, na POO alguns aspectos e definições especiais são implementados para garantir o perfeito comportamento na criação, utilização e descarte dos objetos e classes. São eles:
- construtores;
- destrutores;
Cada um destes elementos citados são membros de uma classe, cada qual com sua aplicação.
Cada linguagem de programação tem sua sintaxe para interpretar, definir e diferenciar cada um destes membros da classe. Algumas estabelecem implementações adicionais a cada uma destas características das classes. No entanto, o padrão conceitual de classe e objeto deve ser seguido.