Odisseia Orientada a Objetos: A Saga da Programação
- #ChatGPT
- #POO
Pilares
A Programação Orientada a Objetos (POO) é um paradigma de programação que organiza e estrutura o código em torno de "objetos", que combinam dados e funcionalidades relacionadas.
Ela possui 4 pilares que vamos aprender utilizando uma dinâmica de um mundo de magia.
Objeto
Primeiramente devemos saber o que é um objeto.
Os objetos são basicamente formas de retratar algo que possui características e ações. Como um personagem de jogo que possui nome, vida e ataque.
Encapsulamento
‘Ninguém mais toca além de mim!’
Toda alteração de dados deve ser feita somente por métodos da própria classe, não podendo ser modificado por fora durante o código.
Sabe quando nós estamos aprendendo a programar e ficamos mudando o valor das variáveis em qualquer parte do código? Aqui não podemos fazer isso.
No exemplo abaixo, se queremos diminuir a variável de vida que nosso herói tem, a classe do herói precisa ter uma função responsável por fazer isso.
Herança
Que tal termos heróis diferentes?
Lembra da nossa classe “Heroi”? Podemos ter especializações que fazem tudo que os heróis fazem, e mais! Podemos criar novas classes que estentem da classe herói. Na programação dizemos que a classe herói é a classe mãe/pai das novas classes que criarmos, onde eles automaticamente terão todas as variáveis do herói e suas funções, mas agora podem ter ainda mais características.
Polimorfismo
Fazem coisas iguais, mas de forma diferente!
A nossa classe “Heroi” possui a função “atacar” que nossa guerreira e mago herdaram, mas cada um ataca de forma diferente, né?
Como guerreiro e mago já sabiam a função atacar por herdarem da classe de herói, aqui usamos o comando override para sobrescrever o que a função fazia, assim cada um age de uma forma diferente.
Abstração
Um exemplo a ser seguido
Como a classe de herói é somente uma base, nunca vamos criar algo que seja só herói, mas sim uma especialização variante dela como guerreiro e mago, a classe não precisa de conteúdo em suas funções, só precisa dizer o que o guerreiro e o mago precisam saber.
Podemos dizer somente que quem estender de herói precisa saber usar uma habilidade especial, mas como cada um vai ter uma habilidade diferente, a função em herói não precisa dizer o que farão.
Agora que guerreiro e mago sabem que precisam ter essa função, eles precisam sobrescrever dando conteúdo a ela.
Conclusão
Vamos criar nossos personagens!
Para a criação dos nossos objetos, as classes precisam ter um inicializador. É uma forma de criamos nossos personagens com seus atributos iniciais, nele passamos as informações essenciais que nosso personagem precisa ter, como nome e vida.
Agora que sabemos como criar nossas classes, basta criar nossos objetos com elas!
Agradecimentos
Obrigado por ler até aqui!
O artigo foi criado com o conteúdo de um e-book totalmente didático criado por mim como atividade de curso.
As imagens utilizadas são da empresa Ankama de seu jogo Waven, os códigos foram feitos pelo ChatGPT e modificado por mim e, para apresentação, colocados no ShowCode.