Fundamentos da Orientação a Objetos – Herança, Abstração e Encapsulamento

fundamentos orientação a objetos

Um dos maiores desafios do paradigma orientado a objetos é sem dúvida a criação de códigos coesos. Na programação, a coesão além de ser um dos fundamentos da orientação a objetos, também possui uma definição própria e é um conceito importantíssimo para a criação de algoritmos.

A arte de delegar funções desnecessárias em um bloco de código é capaz de amenizar a sobrecarga de dados. E esta é uma das principais características desse paradigma.

Portanto, nesse post você vai conhecer os principais conceitos que são fundamentais para o entendimento orientação a objetos. Depois da leitura você vai ter uma noção do que é a coesão, herança, associação, abstração e encapsulamento.

Acompanhe:

Reúso de Código: Herança e Associação

Segundo o livro Orientação a Objetos – Cada do Código (2016), a herança e a associação são mecanismos que criam um relacionamento, possibilitando a reutilização de código de forma mais prática e menos propícia a erros. Portanto, tem-se um código que traduz a realidade do mundo real sem a repetição poluída, que dificulta a manutenção.

Na herança, há a criação de classes. Estas podem ser derivadas de outras, herdando assim todos os seus dados e comportamentos. Caso seja preciso acrescentar novas informações ou modificar comportamentos existentes, com a herança isso é possível.

Na associação, por outro lado, reaproveita-se o código de modo diferente. Uma classe pede a outra para poder fazer aquilo que ela não consegue fazer sozinha, como é afirmado no livro Orientação a Objetos – Casa do Código (2016).

Dessa forma, em vez de se repetir um bloco de códigos inserido em outra página, a associação permite que uma classe forneça um porção do seu código a outra, como se fosse uma troca. Isso evita a repetição desnecessária do código, pois este não é escrito duas vezes, e sim reaproveitado.

Coesão

Uma das principais características da Orientação a Objetos é a coesão. Esse princípio diz, como afirma Thiago Leite e Carvalho (2016), que cada unidade de código deve ser responsável por apenas as informações e códigos que elas devem executar.

Diferentemente do paradigma estruturado em que os códigos são feitos em um bloco só, no orientado a objetos, os códigos são separados e organizados. Uma outra diferença entre o estruturado e o orientado a objetos, é que no primeiro, pode ser mais fácil o desenvolvimento do código, enquanto que no segundo, o código se torna mais complexo, justamente por ser separado e coeso.

Em resumo, a coesão garante que uma unidade de código não poderá assumir responsabilidades que não lhes são necessárias, evitando assim a sobrecarga de dados.

Vamos tomar como exemplo uma aplicação web para gerenciamento de uma loja qualquer. Nela, temos de desenvolver inúmeras funções e ferramentas que vão facilitar o cotidiano da empresa que a comprar.

Então, entidades como produtos, clientes, funcionários, fornecedores, vendas e estoque têm de ter suas informações restringidas a elas mesmas. Seus códigos, de acordo com a coesão, devem estar presentes apenas em sua unidade. Assim você não vai ver o código do funcionário e seus dados junto com o código do cliente, por exemplo.

Cada um deles precisa ter o seu espaço, onde estarão presentes as suas informações (atributos) e funções (métodos e comportamento).

Abstração

No início, o conceito de abstração é um pouco difícil de ser entendido. A programação orientada a objetos é voltada para a resolução de problemas reais, ou seja, que acontecem em nosso cotidiano. Por isso, abstrair essas informações e transformá-las em códigos é uma das características mais importantes da orientação a objetos.

De acordo com o Dicionário Online Dicio, abstração significa:

  1. Ação de abstrair, de analisar isoladamente um aspecto, contido num todo, sem ter em consideração sua relação com a realidade.
  2. [Filosofia] Operação mental através da qual elementos e aspectos são isolados, somente no pensamento, sendo que (na totalidade) não existem isoladamente; resultado dessa operação.
  3. Fazer abstração de uma coisa. Não levar algo em consideração.

Portanto, traduzindo esses conceitos para a programação, pode-se dizer que a abstração é a capacidade de não se preocupar com todas as características de um elemento, sendo possível trabalhar apenas com o que for essencial, segundo Thiago Leite e Carvalho (2016).

Assim, quando o objetivo for desenvolver um código para a criação de um motor, pode-se criar um molde o mais genérico possível e posteriormente, acrescentar novas versões de diferentes modelos.

Encapsulamento

Na programação orientada a objetos, o encapsulamento serve para ocultar como determinada parte do projeto é feita, de modo a aparecer somente aquilo que o programador desejar. Em outras palavras, o encapsulamento mostra apenas o resultado ocultando as ações que chegaram até ele.

Uma outra característica do encapsulamento é a proteção de informações. Com ele todas as informações que não podem ser acessadas por terceiros são mantidas seguras e impossíveis de modificar.

A programação orientada a objetos possui inúmeras particularidades, mas que fazem toda a diferença na vida do programador. No próximo post, vamos falar sobre os conceitos de classe, atributos e objetos.

Caso não queira perder, assine a nossa newsletter.

Fonte: CARVALHO, L. Thiago. Orientação a Objetos: Aprenda seus Conceitos de Forma Efetiva. Casa do Código (2016).

Qual é a sua opinião?