POO é um dos diversos termos da programação que são extremamente importante, mas, ao mesmo tempo, confuso para muitos.
Pois, a primeira vez que escutamos o termo POO ou Programação Orientada a Objetos, pode soar “Grego”.
Mas, é um conceito muito interessante que nos ajuda na hora de programar, principalmente na criação de jogos.
O que é POO?
POO significa Programação Orientada a Objetos, e é um paradigma da programação que busca nos trazer uma nova visão.
Pois, ela nos ajuda a entender os objetos que estamos criando, como se representássemos o mundo real.
E observar que todo objeto criado, possui características (atributos) e comportamentos (métodos) específicos.
E que os programas (jogos), são construídos a partir da interação entre esses objetos.
Mas, enxergando os objetos de jogo que vamos criar dessa forma, facilita na hora de programar seus comportamentos.
E te ajuda a reaproveitar muitos códigos, tirando o trabalho de sempre ter que criar do zero.
Pois, você não precisa recriar um mago do zero, só pra ter um com poder de fogo e outro de gelo.
Porque usando POO, e com poucos ajustes você aproveita um inimigo, base, para recriar variações dele.
E para isso precisamos usar os pilares da POO, que são: Herança, Polimorfismo, Encapsulamento e Abstração.
Herança
Herança permite que uma classe herde atributos e métodos de outra classe.
E a classe que herda chamamos de subclasse ou classe filha, e a herdada de superclasse ou classe pai.
Porém, a subclasse pode adicionar novos atributos e métodos e/ou substituir, ou modificar os já existentes.
Pois, isso evita a duplicação de código e torna a hierarquia de classes mais organizada e fácil de manter.
Por exemplo: você cria uma classe pai, de inimigo mago, com seus comportamentos: Andar, Voar, Ataque mágico.
E depois você pode criar variações desse mago, fazendo as variações herdarem os comportamentos da classe Pai.
Mas, você reescreve a função de ataque, modificando o comportamento para ele usar fogo, ou usar ataques de gelo, etc.
Clique na imagem abaixo para ler sobre Herança:
Polimorfismo
Polimorfismo permite que um objeto possa ser tratado de diversas formas, assumindo diferentes comportamentos dependendo do contexto usado.
E pode ser alcançado de várias maneiras em POO, usando de interfaces, classes abstratas, sobrecarga ou sobreposição de métodos.
Pois, após ser herdado, apesar de trazer todas as características do objeto pai, ele reescreve um ou mais comportamentos (funções).
E no exemplo do Mago, seria o mesmo que criar um novo objeto que herde as características da classe Pai.
Mas, no lugar de fazer ataque mágico, você reescreve essa função para curar, ou abrir portais.
E assim, mesmo que herde da classe pai, esse comportamento em específico perde a função de ataque.
E passa a curar, podendo até mesmo separar magos inimigos de aliados, magos bons e ruins.
Porém, todos eles estão herdando da mesma classe Pai Mago, e executando comportamentos totalmente diferentes.
E em resumo, Herança e Polimorfismo caminham juntos e estão diretamente ligados.
Clique na imagem abaixo para ler sobre Polimorfismo:
Encapsulamento
Encapsulamento consiste em esconder os atributos, ou seja, variáveis para que não possam ser modificadas diretamente.
Pois, caso o valor desse atributo seja modificado diretamente, pode acarretar mau funcionamento de outras classes herdeiras.
E então trocamos o acessador public, por private, e criamos funções especificas para modificar os valores.
Por exemplo, na classe Pai Mago, temos o valor padrão para o ataque setado como 5.
E caso esse atributo esteja publico e outro script mude o valor para 50, vai desbalancear todo seu jogo.
Pois, todos magos que herdem esse valor, passam a ter ataque 50 agora.
E inimigos magos que fossem chefes com 150 de ataque ficariam fracos, e os iniciais com 10, mais fortes.
Mas, encapsulando a propriedade e criando funções para mudar esses valores, evitamos esse problema.
Pois, cada Mago que herde da classe pai, definirá seu ataque através dessa função criada para isso.
Clique na imagem abaixo para ler sobre Encapsulamento:
Abstração.
A abstração é alcançada definindo uma classe, que encapsula as propriedades e comportamentos necessários para representar o objeto de interesse.
E essas propriedades, e comportamentos são modelados de forma a representar apenas os aspectos relevantes do objeto.
Mas, essa classe só terá as características base para ser o objeto, mas por si só, não executará os comportamentos.
Por exemplo, temos a classe pai Mago, com seus atributos: velocidades, poder de ataque, mas não executa as funções.
E é usada apenas para Herdar esses atributos, porém, é nas classes filhas que implementamos os comportamentos de mago.
E usando de fato os atributos da classe pai, para executar as funções de andar, atacar, ou outras que desejarmos.
Porém, podemos entender essa classe Abstraída como sendo uma “Fantasia”, que tem a aparência, mas não faz nada.
E passa de fato a fazer algo, quando vestimos essa fantasia (herdando seus Atributos), executando assim os comportamentos.
A Programação Orientada a Objetos (POO) é muito importante na programação de jogos.
Pois, ela fornece uma estrutura organizada e modular para o desenvolvimento de sistemas complexos.
E permitindo que jogos complexos sejam desenvolvidos de forma mais rápida, e organizada.
Uma dica muito bacana para você, que tem interesse em aprender mais sobre a Unity e a sua linguagem C#, essa é a sua chance.
Pois, temos um curso sensacional que te mostra a base da programação na Unity.
E de quebra você ainda vai desenvolver um jogo top down com sistema de diálogo, crafts, inimigo e muito mais.
Basta clicar na imagem ao lado para saber tudo sobre esse curso incrível!
Seja o primeiro a comentar.