Conceitos de Orientação a Objetos – Parte 2 de 6

Segue a parte 2, da série Conceitos de Orientação a Objetos, de Daniel Moreira Yokoyama:

Classes

Procure olhar novamente para uma foto qualquer. Como pode ser que você seja capaz de reconhecer cada objeto que você  vê nela? Pegue uma cadeira e observe. Tente comparar com uma outra cadeira qualquer que você tenha, por exemplo, na sua casa. Ou no restaurante onde você almoça. Ou na casa de um amigo seu. Note que cadeiras possuem diversas variações de forma que é quase impossível encontrar duas cadeiras de dois ambientes distintos que sejam parecidas.

A maioria das cadeiras só são semelhantes quando se encontram num mesmo escritório ou ao redor de uma mesma mesa. No entanto, por mais diferentes que elas possam ser entre si (se tem apoio de braços, se possuem 4 pernas ou apenas uma  central que se divide em várias ao chegar no chão, ou apenas uma armação de ferro que a sustenta, se tem rodinhas, se gira, se é reclinável ou não, se ajusta a altura ou não, enfim… todas as variações possíveis se tratando de cadeiras) ainda assim você sempre a reconhecerá como uma cadeira, assim como será capaz de identificar cada um dos objetos na foto que viu anteriormente.

O cérebro é capaz de fazer este reconhecimento por que, em algum momento antes, quando o memos objeto era uma novidade para ele, ele foi capaz de classificá-lo. Quando estamos conhecendo o mundo ao nosso redor, nosso cérebro identifica tudo o que é capaz de identificar e classifica aquilo como algo reconhecível através de determinadas características. Em algum momento na sua vida, você reparou que tudo aquilo que seja composto por um sustento, um acento e um encosto, é uma cadeira. E, a partir daí, sempre que viu uma cadeira, independente do quão diferente ela fôsse daquela primeira, você soube reconhecer que ela era uma.

Se lhe for pedido que pegue um papel e uma caneta, e desenhe uma cadeira, independente de qualquer técnica que você utilize para desenhá-la, se irá caprichar ou fazê-la às pressas, com certeza você irá traçar, no mínimo, um sustento, um acento e um encosto. Da mesma forma, você consegue reconhecer uma pessoa quando ela foi desenhada usando apenas riscos simples e um círculo na cabeça e, finalmente, considerá-la como semelhante a uma pessoa real, ainda que diferente.

Na programação orientada a objetos, você cria classes que dirão ao seu sistema como cada um dos objetos devem ser. A classe Cliente terá atributos do cadastro do cliente, seu endereço, seus pedidos, seu contato. Todas estas informações são úteis para dizer ao seu sistema como um cliente deve se parecer, para que, quando ele veja um objeto com estas características, ele possa dizer: Isto é um cliente. A classe não é composta por um objeto, mas define o que o objeto vai ser. Ela é aquele conceito dentro do seu cérebro de como uma cadeira deve se parecer, para que quando você veja uma, seja capaz de diferenciá-la de um banco, uma cama, um carro ou um elefante.

Atributos (ou propriedades)

Os objetos possuem atributos que definem seu estado. Informações como pêso, côr, data de fabricação, data de vencimento, valor, idade, sexo, nome, e-mail, telefone, prazo de entrega, e tantas outras, atribuem características aos seus objetos de acordo com suas classes, definindo o estado em que eles se encontram num determinado momento.

O estado de um objeto pode ou não ser alterado conforme o tempo passa. Mas, em qualquer instante, é apenas um só.

Métodos

Os objetos também interagem entre si, enviando e recebendo mensagens e respostas. Eles manifestam essa interatividade através da invocação de métodos que definem e implementam uma determinada responsabilidade que um objeto tem. Um aparelho de som tem a responsabilidade de tocar uma música, desde que receba o comando para isto, o comando está definido em um botão, e a implementação desta responsabilidade está situada em seus componentes eletrônicos. Assim, quando o usuário aperta o botão definido, ele espera que o aparelho de som comece a tocar música. Observe que um aparelho de som também vem equipado com outros botões, que representam a definição de outras responsabilidades, como parar de tocar, começar a gravar, alterar o controle de volume, mudar a estação de rádio ou procurar por trilhas em uma mídia de CD. Cada uma destas responsabilidades compõem toda a utilidade do Aparelho de som, ou seja, ao definir um problema complexo (Construir um aparelho de som), dividiram-no em problemas menores (Tocar radio, tocar Cd, Gravar, mudar de estação, mudar o volume, parar de tocar) que definiu seus métodos básicos.

Aqui vale a pena lembrar novamente de como a OOP é uma evolução da programação estruturada.

Pois é assim que se deve tentar entender como definir quais métodos os seus objetos deverão ter antes de implementá-los na sua classe. Você define suas responsabilidades. Um cliente efetua compras, um pedido precisa incluir produtos, precisa emitir uma nota, precisa ser entregue.