Utilizamos cookies para ajudá-lo a navegar com eficiência e executar determinadas funções. Você encontrará informações detalhadas sobre todos os cookies em cada categoria de consentimento abaixo.
Os cookies categorizados como “Necessários” são armazenados no seu navegador, pois são essenciais para ativar as funcionalidades básicas do site.
Também utilizamos cookies de terceiros que nos ajudam a analisar como você usa este site, armazenam suas preferências e fornecem conteúdo e anúncios que são relevantes para você. Estes cookies só serão armazenados no seu navegador com o seu consentimento prévio.
Você pode optar por ativar ou desativar alguns ou todos esses cookies, mas a desativação de alguns deles pode afetar sua experiência de navegação.
Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.
Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.
Performance cookies are used to understand and analyse the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Advertisement cookies are used to provide visitors with customised advertisements based on the pages you visited previously and to analyse the effectiveness of the ad campaigns.
20 de setembro de 2022
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.
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.
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:
No exemplo a seguir, utilizaremos a linguagem C# para abstrair um personagem de RPG para um objeto.
public class Personagem { }
Neste caso, queremos que o personagem seja uma entidade que possa causar e sofrer dano.
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.
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.
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; } }
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.
Autor