/trybe-project-trybers-and-dragons

Projeto prático com typescript usando POO e SOLID.

Primary LanguageTypeScript

Sobre

Seção: Introdução à Orientação a Objetos (POO) e SOLID

  • 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:
  • Single Responsability
  • Open/Closed
  • Liskov Substitution
  • Interface segregation
  • Dependency Inversion

Imagens ilutrstativas acesse Fonte clicando na imagem

Projeto: Trybers and Dragons

  • 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.

Tecnologias e ferramentas usadas 🛠

Docker TypeScript

Desafios

  • Criar classes usando dos pilares de POO.
  • Criar interfaces.
  • Implementar em Typescript, classes, Instâncias, atributos, métodos e objetos.
  • Aplicar princípios SOLID.

Conclusão

  • 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:
  1. 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.
  2. 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.
  3. 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.
  4. 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

Requisitos

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 ✔️
📝 Todo list
  • - Criar aplicação com base nos requisitos da trybe. data