image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Paola Caroline
Paola Caroline12/08/2025 13:23
Share
Suzano - Python Developer #2Recommended for youSuzano - Python Developer #2

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. 

image

 

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. 

 image

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. 

image

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. 

image

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!

Share
Recommended for you
Avanade - Back-end com .NET e IA
Suzano - Python Developer #2
Riachuelo - Primeiros Passos com Java
Comments (2)
DIO Community
DIO Community - 12/08/2025 15:35

Carlos, seu relato é um ótimo exemplo de como a história da computação é marcada por pessoas que desafiaram a visão “impossível” da sua época. O fato de Grace Hopper ter criado o A-0 System quando programar ainda era sinônimo de manipular código binário mostra que inovação, muitas vezes, nasce mais da ousadia do que da tecnologia disponível.

Na DIO, acreditamos que conhecer essas histórias não é só inspirador, é também uma forma de entender por que as ferramentas que usamos hoje existem. Cada compilador moderno carrega um pouco dessa visão de traduzir ideias humanas para a linguagem da máquina, liberando programadores para pensar em lógica, arquitetura e criatividade, não apenas em instruções de baixo nível.

Na sua opinião, qual é o maior impacto dessa “tradução” para a evolução da programação: o ganho de produtividade ou a democratização do acesso à tecnologia?

Islânia Silva
Islânia Silva - 12/08/2025 15:05

Parabéns pelo artigo!!

Recommended for youSuzano - Python Developer #2