Coder Social home page Coder Social logo

pabloflps / provatecnica-processo-seletivo2021.1 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from commitjr/provatecnica-processo-seletivo2021.1

1.0 1.0 0.0 37 KB

Projeto "forked" do GitHub da Commit Jr. para realização do processo seletivo 2021.1, possibilitar e concluir a "viagem no tempo".

TypeScript 100.00%
typescript backend solid solid-principles

provatecnica-processo-seletivo2021.1's Introduction

Introdução

No último processo seletivo, os nobres guerreiros da Commit Jr sofreram um revés ao ajudarem Emiyepfsi e Qoissi e perderam-se no espaço-tempo e estão presos na pré-história. Porém, estão cercados de criaturas muito estranhas e hostis, que querem devorá-los. Por sorte, um dos membros havia baixado um repositório do GitHub que se tratava de uma tentativa de construção de uma máquina do tempo.

Todavia, o código está longe de ficar pronto e está com um problema no cálculo do endereço cósmico da Terra. Sua tarefa é completar o código utilizando os princípios do SOLID para evitar uma catástrofe maior. Para isso considere as fórmulas abaixo para o cálculo do endereço cósmico da Terra:

Dica

Todos os metodos que devem ser alterados tem o comentario com palavra CALC.

  • Dentro da pasta helpers tem 4 arquivos, todos tem 1 função que deve ser alterada
  • Dentro da paste service tem a pasta implementations, dentro dela tem uma classe com 3 métodos para serem preenchidos

TimeBalance:

img-SpaceTime

Formulas importantes para implementação:

img-TimeDifferential

img-SpaceTime

img-SynchronizePulsars

SolarSystemPosition:

se( timeDifferential < 0 ) {

img-SynchronizePulsars

}se não {

img-SynchronizePulsars

}

GalaxyPosition:

img-SynchronizePulsars

UniversePosition:

img-SynchronizePulsars

O que é o SOLID?

O SOLID é um acrônimo para 5 princípios utilizados na programação orientada a objetos apresentado inicialmente pelo Robert “Uncle Bob” Martin em um artigo publicado no ano 2000. Dito isso, segue abaixo a lista dos princípios:

  • Single-responsibility principle (Princípio de única responsabilidade);
  • Open–closed principle (Princípio de aberto/fechado);
  • Liskov substitution principle (Princípio da substituição de Liskov);
  • Interface segregation principle (Princípio da segregação de Interface);
  • Dependency inversion principle (Princípio da inversão de dependência).

Single-responsibility principle (Princípio de única responsabilidade)

Basicamente, esse princípio diz que uma classe, componente, entidade ou funções devem ter uma única responsabilidade no código. A violação deste princípio aumenta a possibilidade de bugs por que mudar uma das responsabilidades pode afetar o todo.

Single-responsibility principle

Open–closed principle (Princípio de aberto/fechado)

Este princípio é um pouquinho mais polêmico que o anterior pois se mal interpretado pode parecer contradizê-lo. O princípio aberto/fechado diz que, uma classe, entidade, componente ou função deve estar aberta para extensões, porém fechadas para modificações.

Open–closed principle

Liskov substitution principle (Princípio da substituição de Liskov)

Trata-se de um princípio introduzido por Barbara Liskov que diz que: se tivermos uma classe e se dela criarmos uma subclasse por herança, o objeto desta subclasse deve ser capaz de substituir a classe pai.

Este princípio sugere, basicamente, que não se deve fazer subclasses que gerem uma exceção na medida em que, um método definido na parte superior da árvore de herança deve ser funcional numa classe mais abaixo.

Liskov substitution principle

Interface segregation principle (Princípio da segregação de Interface)

Este princípio diz que uma classe não deve implementar interfaces ou métodos que não serão utilizados.

Interface segregation principle

Dependency inversion principle (Princípio da inversão de dependência)

Este princípio diz que uma classe não deve ser presa com a “ferramenta” que ela usa. Ao invés disso, ela deve usar uma interface que permita conectar a ferramenta à classe.

Dependency inversion principle

Referências:

provatecnica-processo-seletivo2021.1's People

Contributors

leonardoleitemeira avatar lucascdornelas avatar pabloflps avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.