Introdução a programação orientada a objetos e herança
Programar orientado a objetos é muito mais que construir classes e métodos. A Wikipédia define como paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos. Resumindo: programar pensando em objetos da vida real.
A linguagem de programação Java te força a programar em classes. Desde o primeiro contato até o último você estará programando em classe, mas nem por isso é orientado a objetos. Objetos precisam se assemelhar aos objetos da vida real. Não é preciso ter dez objetos interagindo entre sí para ser orientado a objetos. Um objeto já é o suficiente. Por exemplo, um objeto ser humano teria os atributos: nome, altura, peso, cor, data de nascimento, estado e os métodos: andar, correr, saltar, dormir. Executar o método andar ou durmir mudaria o estado do objeto.
Outros objetos poderiam fazer parte desse mundo e interagir. Um objeto ônibus, por exemplo, receberia objetos seres humanos variando entre: motorista e passageiros. Quando o ônibus tivesse um motorista e o número mínimo de passegeiros poderia se desclocar para outros lugares. No deslocamento haveria outros veículos e objetos, como faróis e faixas de pedestre. Cada objeto com suas limitações exercendo sua função.
- Atributos e propriedades são a mesma coisa.
- bjeto é uma instância de uma classe. Classe é uma fábrica de objetos.
Pilares da programação orientada a objetos
A programação orientada a objetos é fundamentada em três pilares: herança, encapsulamento e polimorfismo. Para dominar a programação orientada a objetos você terá que dominar esses três pilares.
Primeiro pilar: Herança
Na herança um objeto herda as propriedades e métodos de outro objeto. O objeto herdado é o objeto pai o objeto que herda é o objeto filho – relação pai e filho.
A herança deve ser feita com cautela. Para um objeto poder herdar outro deve haver uma forte relação entre eles. Num E-commerce temos a classe Produto. Essa classe poderia ter os herdeiros CD de áudio, Filme, Livro, Roupa. O que esses objetos têm em comum é que todos são produtos, podem ser adicionados no carrinho e portanto comprados. Todos tem preço, peso e dimensões. Mas cada um tem suas especialidades, senão não justificaria sua existência. O CD de áudio tem autor, formato, faixas. O Filme tem formato, áudio e legenda, duração. O Livro tem autor, editora, páginas.
Quando um objeto herda outro objeto o herdeiro passa a ter o tipo do objeto herdado. Isso significa que todos os herdeiros de uma mesma classe compartilham ao menos um tipo em comum. O método adicionar produto de um Carrinho de compras estabelece que aceita somente objetos produtos. Mas pra ele não importa se esses produtos forem CD de aúdio ou Filme. Ambos são Produtos porque herdaram a classe Produto. Essa é a importância do tipo dos objetos. Eu demorei um pouco pra entender o que isso significava e onde era utilizado.
Se ainda não entendeu o que é tipo, pense em um restaurante que somente aceite pessoas descendentes de sua avó. Sua mãe e você poderão entrar, mas seu pai e eu não, a menos que sejamos parentes, minha mãe seja irmã de sua mãe ou filha ou outro grau de parentesco que envolva a descendência de sua avó.
Onde entra o Produto herdar a classe de banco de dados? Não entra, não há relação nisso! Muitos programadores cometem esse erro por acharem que estão facilitando o trabalho, outros por não saberem o que a herança significa na programação. Se você cometeu esse erro, tudo bem, mas não comenta mais. Objetos na vida real herdam objetos quando há uma relação entre eles, faça o mesmo na programação.
Até a próxima!