Mostrando postagens com marcador understand. Mostrar todas as postagens
Mostrando postagens com marcador understand. Mostrar todas as postagens

quarta-feira, 16 de maio de 2012

Manipulando BigDecimal

Introdução


Um problema que encontrei quando comecei a utilizar BigDecimal foi exatamente o fato de conseguir manipular
os números quando utiliza essa tipagem.
Abaixo explico de maneira simples como manipular valores em BigDecimal. Vale salientar que x e y são valores do tipo BigDecimal.

Arredondamento de casas decimais


Para realizar o arredondamento utilizaremos o método x.setScale(int,int). Onde o primeiro parametro é
a quantidade de casas decimais e a segunda o tipo de arrendamento.







Código utilizado:

package com.blogspot.maguscode;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class TesteBigDecimal {

   
    public static void main(String args[])
    {
        BigDecimal numero = new BigDecimal(20.005);
        //Especificar arredondamento de casas decimais
        System.out.println("Visualização do número(20.005) arredondado(duas casas decimais):");
   
        //Só será arrendodado para o número maior se  a difernça for maior que 0.5
        System.out.println("(Arredondamento para baixo): "+numero.setScale(2,RoundingMode.DOWN));
       
        //Só será arrendodado para o número maior se  a diferença for maior ou igual a 0.5
        System.out.println("(Arredondamento para cima): "+numero.setScale(2,RoundingMode.UP));
       
       
    }
   
   
}




No primeiro caso o número é arredondado para cima ou seja o número 20.005 passa a ser 20.01.
No segundo caso o número é arredondado para baixo ou seja o número 20.005 passa a ser 20.00.


Operações de comparação


Para fazer operações de comparação não é possível usar (>,<,==) como no caso dos números primitivos (int,double,float,long) é necessário utilizar a anotação x.compareTo(y).
Por padrão o retorno desta função será:

-1 - para x menor que y.
0 - para x igual a y.
1 - para x maior que y.

Abaixo é possível visualizar alguns exemplos:



Código utilizado:

package com.blogspot.maguscode;

import java.math.BigDecimal;

public class TesteBigDecimal {

   
    public static void main(String args[])
    {
        BigDecimal numero = new BigDecimal(20.005);
        int valorRetorno;
       
       
        //Repostas x.compareTo(y):
        //1  x maior que y
        //0  x igual a y
        //-1 x menor que y
       
        System.out.println("\n\n");       
        System.out.println("Comparações");
       
        valorRetorno = numero.compareTo(new BigDecimal(20.001));
        System.out.println("Caso 1 (MaiorQue): " + valorRetorno);

        valorRetorno = numero.compareTo(new BigDecimal(20.006));
        System.out.println("Caso 1 (MenorQue): " + valorRetorno);
       
        valorRetorno = numero.compareTo(numero);
        System.out.println("Caso 1 (Igual):" + valorRetorno);
       
       
    }
   
   
}








 

Operação matemáticas simples.


Quando se utiliza números do tipo BigDecimal não é possível realizar operações basicas entre ele como se fossem números primitivos, para resolver tal problema é necessário utilizar:

x.substrac(y) equivale a x-y.
x.add(y) equivale a x+y.
x.div(y) equivale a x/y.
x.mult(y) equivale a x*y.


Código utilizado:

package com.blogspot.maguscode;

import java.math.BigDecimal;

public class TesteBigDecimal {

   
    public static void main(String args[])
    {
       
        System.out.println("Operações básicas:");
        BigDecimal numeroParaOperacoes= new BigDecimal(20);
       
        //Operação de soma x.add(y)
        System.out.println("Soma: "+ numeroParaOperacoes.add(BigDecimal.TEN));

        //Operação de soma x.substract(y)
        System.out.println("Subtração: "+numeroParaOperacoes.subtract(BigDecimal.TEN));
       
        //Operacao de divisao x.divide(y)
        System.out.println("Divisão: "+numeroParaOperacoes.divide(BigDecimal.TEN));
       
        //Opeação de multiplicação x
        System.out.println("Multiplicao: "+numeroParaOperacoes.multiply(BigDecimal.TEN));
    }
   
   
}







sexta-feira, 25 de novembro de 2011

Herança e Composição

Java

Muitas pessoas ao iniciarem os estudos programação orienta-a-objeto se confundem com alguns paradigmas clássicos, ao longo desta página estarei explicando alguns paradigmas atrávez do Java.


Herança e Composição
 
Resumo:
             Herança - A classe A é uma classe B.
             Composição - A classe A tem uma classe B.

De maneira simples herança e composição seria:

Herança - "Quando uma determinada classe herda atributos de outra".



Mas o que isso que dizer a final ?

De modo simplicado, herança é "uma classes(classe filha) que tem os mesmos atributos de uma outra (classe mãe), mais alguns atributos destintos".

Um bom exemplo de herança seria:

Uma classe mãe chamada Automovel e outras filhas; CarrosCorrida, CarrosAntigos e CarrosEsportivos:
Ambas as classes filhas podem ser vistas como um atomovel, diferenciando umas das outras por penas por alguns atributos, mas sempre com algo em comum, as duas sempre serão um Automovel.

A pergunta básica para verificar se a relação da classe A com a classe B e uma herança é simples, basta fazer a seguinte pergunta a si mesmo:
"A classe A é uma classe B."

Exemplo:
              Um carro antigo é um automovel ? SIM - Logo pode usar Herança.
              Uma casa é um automovel ? NÃO - Logo não se pode usar Herança.


Composição - "Composição acontece quando uma classes está contida em outra".

Exemplo de Composição


De maneira simples a composição é bem mais simples de enteder que a Herança, na composição sempre se usa a seguinte pergunta:

A classe A está tem a classe B.

Exemplo:
 Neste exemplo livro e autor são duas classes distintas;

               Um livro tem autor ?  - SIM - Logo se usar a composição.
          Um Automovel tem carroAntigo ? - NÂO - Logo não se usa a composição
               Um Automovel tem porta ? - SIM - Logo pode se usar a composição.