Blog

A importância da Abstração na Programação Orientada a Objetos

A imagem mostra uma pessoa desenvolvedora criando código utilizando abstração na programação orientada a objetos.
Conceitos de Programação / Desenvolvimento / Desenvolvimento de Software / Programação

A importância da Abstração na Programação Orientada a Objetos

Quando se fala em paradigmas de linguagem de programação, a Programação Orientada a Objetos (POO) é, com certeza, um dos modelos mais populares entre os desenvolvedores. Ela possui quatro principais pilares: Abstração; Encapsulamento; Herança; e Polimorfismo.

Neste artigo, vamos falar sobre o conceito Abstração, utilizando um exemplo prático para ressaltar sua importância.

Abstração na Programação Orientada a Objetos

Embora alguns materiais de estudo deixem um pouco de lado a Abstração na Programação Orientada a Objetos para focar nos demais pilares, é importante frisar que a Abstração é o pontapé inicial dentro de qualquer linguagem Orientada a Objetos

O conceito de abstração consiste em esconder os detalhes de algo, no caso, os detalhes desnecessários. Dessa forma, todos os outros pilares serão desenvolvidos a partir da Abstração.

Como abstrair um modelo/entidade que faça sentido como um objeto?

Para facilitar o processo de abstração na Programação Orientada a Objetos, definimos 3 princípios para uma abstração concisa, são eles:

  • O que o objeto precisa ser?
  • O que ele faz?
  • E o que ele deve ter?

No exemplo a seguir, utilizaremos a linguagem C# para abstrair um personagem de RPG para um objeto.

Primeiro princípio: o que o objeto precisa ser?

public class Personagem
{
}

Neste caso, queremos que o personagem seja uma entidade que possa causar e sofrer dano.

Segundo princípio: o que o objeto faz?

public class Personagem
{
public void Atacar(Personagem adversario)
{
}
}

O personagem atacará outro personagem diminuindo a quantidade de vida do adversário com base em seu poder de ataque, e o personagem atacado receberá o dano consequente.

Terceiro princípio: o que o objeto deve ter?

public class Personagem
{
public string Nome { get; set; }
public int PoderDeAtaque { get; set; }
public int QuantidadeDeVida { get; set; }

public void Atacar(Personagem adversario)
{
adversario.QuantidadeDeVida -= PoderDeAtaque;
}
}

O personagem deve ter um nome pelo qual será identificado. Além disso, para atacar, queremos que o personagem possua um medidor de poder e, para receber dano, o personagem terá uma quantidade limitada de vida.

Abstração: criação de objeto de forma sucinta e coesa

Nota-se que, com estes 3 princípios, podemos criar um objeto de forma sucinta e coesa, sem utilizar de atributos os métodos desnecessários para o contexto. É importante que, na hora de utilizar este objeto em um projeto real, o seu código POO deva sempre buscar o baixo acoplamento. Ou seja, a independência entre um objeto e outro.

Neste artigo, fizemos este exemplo básico criando uma classe chamada Batalha, em que movemos o método Atacar para ela. Dessa forma, haverá apenas um objeto responsável por realizar os ataques dos personagens, já que a ideia é que o personagem seja apenas um modelo e que o combate seja gerido por uma classe a parte.

public class Batalha<T> where T : Personagem
{
public void Atacar(T quemAtaca, T quemRecebeDano)
{
quemRecebeDano.QuantidadeDeVida -= quemAtaca.PoderDeAtaque;
}
}

Conclusão

A Abstração na Programação Orientada a Objetos acontece bem antes do código e é muito importante que seja bem definida. Assim, facilitará a arquitetura do projeto como um todo. Para uma ideia ser bem executada, antes ela precisa ser bem estruturada.

Além disso, lembre-se de estudar também sobre os outros pilares da orientação a objetos. Então, aqui vão algumas sugestões de conteúdos sobre este mesmo tema: https://www.macoratti.net/oo_conc2.htm.

Veja também:

Como identificar problemas no código

Conceitos de programação que você precisa conhecer

Autor: Marcelo Wesley.

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the comparison bar
Compare