Pokédex Orientada a Objetos: Uma Introdução aos Pilares da POO
- #Java
- #C#
- #JavaScript
- #Orientação a objetos, classes e métodos
- #Python
- #C #
- #POO
- #JavaScript
Para entender conceitos novos, nada melhor do que usar referências do que já conhecemos. Como Pokémon is My Passion, preparei este artigo para apresentar de forma simplificada cada pilar da programação orientada a objetos junto com seu objetivo principal.
Encapsulamento
Você sabe que cada Pokémon possui estatísticas como pontos de vida, nível, ataques específicos da espécie, entre outras. No entanto, não é possível alterar diretamente esses atributos no menu. Para mudar um ataque, por exemplo, é preciso usar itens como as Technical Machines (TMs), Heart Scales ou treinar o Pokémon até que ele atinja um determinado nível e, então, aprenda um novo golpe.
Em POO, o encapsulamento funciona de forma semelhante: ele protege os dados internos de um objeto, impedindo que sejam acessados ou modificados diretamente. Essas informações só podem ser alteradas por meio de métodos e propriedades específicos, que controlam e validam cada mudança. Isso garante que os dados se mantenham corretos, evita erros inesperados e deixa o código mais seguro, organizado e de fácil manutenção.
One…two…and…ta-da! Você aprendeu Encapsulamento.
Herança
Charmeleon e Charizard fazem parte da mesma linha evolutiva e, aqui no exemplo, vamos dizer que Charmeleon é a classe pai, enquanto Charizard, sendo a última evolução, é a classe filha. Sendo assim, Charizard herda de Charmeleon atributos como a habilidade Blaze e a tipagem Fogo, e ainda estende seus dados ao adquirir uma segunda tipagem, tornando-se Fogo/Voador (é, pois é… ele não é do tipo Dragão).
O objetivo da herança é reaproveitar código e manter uma organização lógica entre as classes. Dessa forma, as classes derivadas podem usar atributos e métodos já existentes na classe base e ainda modifica-los ou estendê-los conforme necessário.
Polimorfismo
Eevee é um Pokémon especial que pode evoluir para até OITO!! formas diferentes, cada uma com sua própria tipagem e conjunto de golpes. Por exemplo, Vaporeon é do tipo Água, enquanto Sylveon é do tipo Fada. Essas evoluções são subclasses de Eevee, que, por sua vez, é subclasse de Pokemon e tem a ação Atacar().
Todas as evoluções de Eevee herdam o método Atacar() mas o ataque executado depende do objeto específico que está chamando o método. Ou seja, mesmo que o nome do método seja o mesmo, o comportamento muda de acordo com a forma de Eevee instanciada que está em batalha. Isso é o que chamamos de polimorfismo na programação orientada a objetos.
Abstração
Durante uma batalha, o jogo exibe mensagens como "It's super effective!" ou "It's not very effective", indicando se o ataque foi forte ou fraco contra o adversário, além de notificações como "A critical hit!" para golpes que causam dano extra e mensagens sobre mudanças nas estatísticas, como "Pikachu's Speed fell!". Porém, o jogo não revela exatamente quanto dano foi causado, por que o golpe foi crítico ou em quanto a velocidade diminuiu.
Essa é uma forma de abstração: mostrar apenas o essencial para o jogador, escondendo toda a complexidade dos cálculos e regras que ocorrem nos bastidores. O objetivo da abstração é facilitar a interação e manter o sistema organizado, evitando sobrecarregar o usuário ou o programador com detalhes desnecessários naquele momento.
Equipe Rocket decolando na velocidade da luz
Os pilares da Programação Orientada a Objetos são conceitos fundamentais que se aplicam independentemente da linguagem que você está aprendendo. Dominar esses conceitos é o primeiro passo para se tornar um ótimo desenvolvedor e estar pronto para enfrentar qualquer ginásio!
É claro que o assunto é muito mais complexo, e para compreendê-lo completamente é preciso ir além, com muita prática e estudo. Aqui, apenas brinquei com a temática, fazendo uma conexão entre os dois mundos que tanto amamos.
Escrevi este artigo inspirado no trabalho do Miguel Gonçalves, “Pokémon e Programação: Escolha seu Inicial — Python, Java ou C?”, disponível aqui na DIO. Recomendo muito a leitura, é uma abordagem bem divertida sobre as linguagens.
Renda-se agora ou prepare-se para lutar!