#Programação Orientada a Objeto

Carlos Henrique
weblank
Published in
3 min readApr 23, 2018

--

Qual a definição da programação orientada a objeto ? Esta é uma pergunta que não nos fazemos no dia-a-dia. Nós, seremos humanos, em geral, somos fruto de um conjunto de hábitos, sendo assim, na maior parte do tempo, somos seres irracionais. Um exemplo é que nós, desenvolvedores de softwares, não nos perguntamos todos os dias por que estamos usando “aquela” linguagem de programação e se estamos utilizando da forma correta.

Bom… Tô aqui por isso, para garantir que você pare 5 minutos e recorde um conceito básico mas muito importante para a maioria de nós.

##OOP — Object-Oriented Programming ou Programação Orientada a Objeto

É um dos paradigmas mais difundidos no mundo do desenvolvimento de softwares. As características são poucas então vamos lista-las e depois entrar no detalhe de cada uma.

  1. Abstração
  2. Encapsulamento
  3. Herança
  4. Polimorfismo

1. Abstração

A abstração se sustenta em três pilares: identidade, propriedades e métodos. Assim como nos objetos comuns do nosso dia-a-dia.

A identidade deve ser única para que não haja conflito. Em muitas linguagens de programação são utilizados os conceitos de pacotes ou namespaces para definir ambientes menores dentro do sistema inteiro assim com chance menor de repetição da identidade do objeto.

As propriedades são as características do objeto. Nada como um exemplo para tornar a definição mais clara
Propriedades de um carro podem ser: cor, modelo, ano, estilo, quantidade de portas, quantidade de janelas, tipo de motor, entre inúmeras outras propriedades.

Os métodos são as ações possíveis para o objeto, ainda no exemplo do carro, podemos ter métodos como: ligar o carro, desligar o carro, acender o farol podendo este último ter variações como farol médio, alto e com neblina. Assim como nas propriedades, os métodos podem ser tantos quanto a sua imaginação permitir.

2. Encapsulamento

O encapsulamento trata-se de uma técnica cujo o objetivo é “esconder” as propriedades dos objetos. Na prática, a maioria das linguagens orientadas a objeto implementam o encapsulamento das propriedades através de métodos especiais como getters e setters.

3. Herança

O conceito de herança é muito parecido com o exemplo mais comum e clássico da vida. Avós, pais, filhos, netos ...

Assim como neste exemplo, na programação tempos heranças diretas e indiretas como os cabelos dos pais e a cor dos olhos dos avós. Este conceito é implementado de diferentes formas nas liguangens de programação orientadas a objeto, sendo assim, vale a pena de aprofundar sobre a implementação nas suas linguagens de programação favoritas.

4. Polimorfismo

O polimorfismo é a capacidade de um objeto adaptar um método (ação) ou propriedade (característica) herdada pelas heranças diretas ou indiretas assim conseguindo entregar o resultado esperado sem precisar codificar novamente o método ou propriedade inteiros.

Os conceitos de herança e polimorfismo são importantes para uma boa prática apelidada de DRY (Don’t Repeat Yourself) mas essa ficará para um próximo post.

##Principais Vantagens e Desvantagens

Vantagens

  1. A criação e uso de bibliotecas são mais intuitivas;
  2. Reutilização do código, diminuindo o tempo de codigicação e acelerando o tempo de entrega.
  3. A simularidade entre a o mundo real e o código desenvolvido;

Desvantagens

Comparado a linguagens que adotam o paradigma funcional, as linguagens de programação orientadas a objeto são menos performáticas (+ lentas).

##Existem outros paradigmas? Quais ?

SIM! Alguns exemplos:

##Uma linguagem de Programação pode ser Multiparadigma ?

SIM novamente! Apesar de determinada linguagem de programação ser desenvolvida para melhor resolver um problema específico, ainda assim, podemos utilizar de diferentes paradigmas com a mesma linguagem.

--

--