Programação Orientada a Objetos

Estudar o paradigma orientado a objetos nem sempre é fácil no início.

Neste post você vai conhecer conceitos importantes, como a herança, o polimorfismo e a sobrescrita. Preparado? então acompanhe:

Tópicos que você vai ver

1. O que é orientação a objetos?
2. Qual é o objetivo da programação orientada a objetos?
3. Abstração
4. Encapsulamento
5. Herança
6. Reuso
7. Polimorfismo
8. Sobrescrita

O que é Orientação a Objetos?

Existem inúmeras linguagens de programação. Linguagens servem para que consigamos instruir ao computador que faça algo.

Obviamente, a nossa máquina não entende a linguagem que usamos para programar.

Contudo, existe algo mágico chamado de compilador, que “traduz” o nosso código em linguagem de máquina ou linguagem de baixo nível – os 0 e 1.

Cada linguagem de programação tem suas regras, características e paradigmas.

Algumas são orientadas a objetos e outras não. Mas o que quer dizer ser orientada a objetos?

Uma linguagem orientada a objetos tende a ser mais próxima da nossa realidade, pois consegue absorvê-la em seus códigos. A POO consegue desenvolver soluções que, por exemplo, as linguagens estruturadas não são capazes.

O paradigma estruturado é engessado e complicado de se corrigir quando há falhas. 
Geralmente todo o código está num lugar só, não é dividido por classes. 
Portanto, a sua manutenção é delicada.

Ele foi difundido baseado no princípio de que poderia abstrair os problemas do cotidiano com apenas três estruturas: sequência, decisão e iteração.

A sequência é a execução de um bloco de instruções após o outro. A decisão, é a estrutura de condição, que determina se um bloco será executado ou não depois de ser testado. Por fim, a iteração são as estruturas de repetição, que ordenarão ao bloco de código repetir o que está em sua instrução, até ser obrigado a parar.

Todavia, a complexidade dos problemas aumentou de tal maneira que o paradigma estruturado não era mais suficiente para resolvê-la. E aí entra a Orientação a Objetos.

Qual é o objetivo da Programação Orientada a Objetos?

Simplificar o código, torná-lo coeso, limpo, elegante e o mais importante: colocar tudo separado em seu lugar. Não há aquela mistureba doida de dados para lá e para cá.

Programação Orientada a objetos

Quais são as principais características da Orientação a Objetos?

Abstração

É o modo de se trabalhar com as características em comum de um certo grupo de objetos.

Pode ser descrito como um conceito abstrato de algo, que pode dar vida a outras coisas semelhantes, mas com diferentes características.

Encapsulamento

Uma de suas melhores características, o encapsulamento, permite restringir o acesso aos elementos de uma classe.

Isso garante uma segurança maior na manipulação dos dados e do que é feito com eles.

O encapsulamento pode ocultar como uma aplicação é feita, como os cálculos dos métodos são efetuados, etc. Ele faz com que seja mostrado somente o essencial.

Herança

É a capacidade de uma classe herdar os atributos, métodos e demais elementos presentes em outra classe.

Ou seja, dá-se um relacionamento entre duas ou mais classes, em que uma classe, chamada de super classe ou classe-pai (mãe), transfere seus atributos e métodos a outra.

É importante dizer que, quando uma classe herda elementos de uma superclasse, pode-se adicionar elementos, mas nunca excluir os que são herdados.

Outro item importante que você, nobre navegante tem de ficar atento é que, nem sempre uma subclasse tem acesso a todos os elementos de sua classe pai.

Isso acontece por causa da visibilidade dos seus atributos e métodos. Se eles forem privativos, então não há acesso. Usa-se, mas não há acesso direto a eles.

Reuso

De acordo com as boas práticas de programação, a repetição de código é uma prática de cheiro ruim. Isto quer dizer que é abominável.

A repetição de códigos torna a aplicação vulnerável a erros, já que se o programador precisar modificar alguma parte em sua estrutura, poderá se esquecer de arrumar onde foi duplicado.

A manutenção ou a correção de erros em um código repleto de repetições é desgastante e penosa. A chance de o erro persistir é grande.

Por isso, a Orientação a Objetos pode reaproveitar elementos da classe sem a necessidade de repeti-los.

Polimorfismo

O polimorfismo é uma consequência da herança. Ele existe, pois, pode acontecer de uma subclasse precisar modificar o comportamento de um método para adaptar às suas necessidades.

Geralmente, o polimorfismo é fruto de classes e métodos abstratos. Uma boa prática da programação é a assinatura  dos métodos, feita pela classe mãe. Assim, a subclasse herda apenas o método sem a sua implementação, restando a ela a livre implementação do código.

Sobrecarga de Métodos

Nada mais é do que um mesmo método com parâmetros diferentes. Esta característica é importantíssima em OO, pois em muitos casos implementa-se ou herda-se um método, mas os dados têm de ser modificados.

Sobrescrita

É a mesma coisa que ‘reescrever’ um método. Também é uma consequência da herança. A sobrescrita pode ‘apagar’ um comportamento herdado, reescrevendo outro no lugar.

Isto significa que, quando o bloco de códigos da subclasse for rodar, os métodos que serão executados serão os que ela sobrescreveu e não os originais da classe mãe.

DICA: A principal diferença entra a sobrescrita e o polimorfismo é que, o polimorfismo não necessita tecnicamente reescrever o método, pois herdou um comportamento abstrato – sem implementação. Já a sobrescrita herda um método já implementado, cabendo a si modificar ou não.

A programação orientada a objetos é fascinante. Pode até ser mais complicada de se compreender do que o paradigma estruturado, mas as suas ferramentas nos auxiliam a desenvolver aplicações melhores e mais complexas.

Pois bem, nobre navegante da programação, você viu até aqui conceitos importantíssimos sobre a OO. Não perca os próximos posts de Orientação a Objetos.

Gostou do artigo? Para você, o que é mais difícil de se compreender em Orientação a Objetos?

Qual é a sua opinião?