Desafio da escola Vai na Web: Criar uma biblioteca (lib) em Java sem instanciar objetos, utilizando apenas a classe para realizar operações matemáticas diversas. O objetivo é empacotar o código realizado em um arquivo JAR para facilitar a reutilização.
A biblioteca CalculationUtils
oferece uma variedade de operações matemáticas básicas e avançadas em Java. Ela foi projetada para ser fácil de usar, permitindo que os usuários realizem cálculos sem a necessidade de instanciar objetos.
-
Permitir que o usuário some, subtraia, multiplique e divida quantos números desejar.
-
Para lidar com a necessidade de permitir que o usuário realize operações com quantos números desejar, busquei pelas melhores práticas em Java. Com conhecimento prévio em JavaScript, pesquisei pela existência do recurso de parâmetros rest, que permite representar um número indefinido de argumentos como um array no parametro, no Java. Pesquisando, encontrei a solução utilizando parâmetros varargs (variadic arguments). Os parâmetros varargs também são usados para definir um parâmetro que pode receber um número indefinido de argumentos. Com o uso de um loop
for
efor-each
, consegui iterar sobre os argumentos e realizar as operações desejadas.// Exemplo de uso: double soma = Calculadora.somar(1, 2, 3, 4, 5); System.out.println(soma); // Saída: 15
-
-
Trazer um pouco mais de carinho e personalização para a biblioteca ao considerar erros simples e comuns ao fazer o cálculo de alguns métodos, como passar apenas um argumento para a divisão ou tentar dividir por zero.
-
Para tornar a biblioteca mais amigável e evitar erros comuns, implementei verificações e mensagens descritivas de erro. Utilizei estruturas condicionais para identificar situações como passar apenas um argumento para a divisão (que requer no mínimo dois números) e tentar dividir por zero (que é indefinido). Além disso, lancei exceções com mensagens informativas para indicar claramente quando ocorre um erro.
// Exemplo de uso: try { double divisao = Calculadora.dividir(10, 0, 2); System.out.println(divisao); } catch (IllegalArgumentException e | ArithmeticException e) { System.err.println("Erro: " + e.getMessage()); // Saída: Erro: Não é possível dividir por zero. }
-
A biblioteca inclui as seguintes funcionalidades:
- Soma
- Subtração
- Multiplicação
- Divisão
- Potenciação
- Radiciação
- Seno
- Cosseno
- Tangente
- Logaritmo Natural
- Logaritmo na Base 10
- Área do Retângulo, Triângulo, etc.
- Perímetro do Retângulo, Triângulo, etc.
- Volume do Cubo, Pirâmide, etc.
- Juros Simples
- Juros Compostos
Aqui estão alguns exemplos básicos de como usar a biblioteca:
import br.com.vainaweb.lib.Calculadora;
public class Main {
public static void main(String[] args) {
// Operações Básicas
double soma = Calculadora.somar(1, 2, 3, 4, 5);
System.out.println("Soma: " + soma); // Soma: 15.0
// Potenciação
double potencia = Calculadora.potencia(2, 3);
System.out.println("Potência: " + potencia); // Potência: 8.0
// Trigonometria
double seno = Calculadora.seno(30);
System.out.println("Seno: " + seno); // Seno: 0.49999999999999994
}
}
Para mais detalhes e exemplos, consulte a Documentação.
- Implementar outras operações aritméticas.
- Refatorar e organizar métodos em diferentes classes. Exemplos de classes: Financas, CalculosGeometricos, OperacoesBasicas, etc.
- Adicionar mais validações de entrada e mensagens de erro.
Tecnologia | Versão |
---|---|
Java SE | JDK 17.0.9 |
Samuel Silvério 🧑🏫 |
Leno Rafael 🧑🏫 |
- Faça um fork do projeto.
- Crie uma nova branch com as suas alterações:
git checkout -b my-feature
- Salve as alterações e crie uma mensagem de commit contanto o que você fez:
git commit -m "feature: My new feature"
- Envie as alterações:
git push origin my-feature
Referências, fontes, ferramentas e recursos utilizados não só na biblioteca, mas também na Documentação do desafio.
Hamom Silva 👨💻 |
Esse projeto esta sob a licença MIT.