- Apresentando um paradigma que é a base para inúmeras arquiteturas, POO, Programação orientada a objetos, onde foi mostrado como implementar usando o typescript, por meio de classes, detalhando seus pilares, abstração, encapsulamento, herança e polimorfismo.
- Seguindo com a introdução aos princípios SOLID:
S
ingle ResponsabilityO
pen/ClosedL
iskov SubstitutionI
nterface segregationD
ependency Inversion
Imagens ilutrstativas acesse Fonte clicando na imagem
- Atividade para pôr em prática a criação de classes usando o paradigma de orientação a objeto seguindo alguns princípios SOLID, de um jogo de fantasia, onde existem raças, arquétipos, personagens, monstros com características exclusivas e compartilhadas, e combate baseado em PVE e PVP.
- Criar classes usando dos pilares de POO.
- Criar interfaces.
- Implementar em Typescript, classes, Instâncias, atributos, métodos e objetos.
- Aplicar princípios SOLID.
- POO tem o objetivo de aproximar o mundo digital ao mundo real, inicialmente a mescla e confusão entre o pilar de abstração e encapsulamento é muito grande, conforme fui criando cada modelo do projeto foi fixando mais os pilares trabalhando na classe abstrata:
- Abstração: Definindo os aspectos relevantes do objeto criado, no caso da raça, onde é criada uma classe abstraída, onde toda raça vai ter um nome, dexterity, maxLifePoints e createdRacesInstance.
- Encapsulamento: Onde cada objeto tem seu nome, dexterity ou vida máxima, privados e determinados ao criarmos a raça com seu nome, deixando escondido e não sendo possível alterá-los, se não for usando métodos determinados que vão alterá-los, protegendo o conteúdo que desejamos, evitando alterações indesejadas e uso inadequados.
- Herança: Onde cada raça herdou sua característica básicas, pois toda raça teriam aquela base de atributos e métodos mais suas peculiaridades individuais, toda raça tem os atributos name, dexterity, maxLifePoints e o metodo createdRacesInstances.
- Polimorfismo: Tendo os mesmo métodos, mas com funcionalidades diferentes, toda raça tem seu contador individual de raças, com o createdRacesInstance, onde a classe realiza uma contagem, de quantas raças de anão foram criadas ou de elfos, quando formos verificar, cada um tem sua contagem de forma individual.
- SOLID, todo desenvolvimento abordei onde possível de forma mesclada, o uso de responsabilidade única, deixando as funcionalidades abertas para extensões, o uso de subtipos de Liskov foi bem usado na parte de raças e arquétipos, segregação de interfaces e inversão de dependências, mas tenho que dizer que essa parte de princípios é algo que preciso praticar mais, e ler mais conteúdo para ter uma visibilidade maior do seu uso.
🗞️ Requisitos solicitados durante o desenvolvimento do projeto
Nome | Avaliação |
---|---|
01 - Classe Race | ✔️ |
02 - Classes que herdam de Race | ✔️ |
03 - Energy | ✔️ |
04 - Classe Archetype | ✔️ |
05 - Classes que herdam de Archetype | ✔️ |
06 - Interface Fighter | ✔️ |
07 - Classe Character | ✔️ |
08 - Interface SimpleFighter | ✔️ |
09 - Classe Monster | ✔️ |
10 - Classe PVP | ✔️ |
11 - Classe PVE | ✔️ |
12 - Classe Dragon | ✔️ |
13 - Arquivo index | ✔️ |