[Curso POO01 - Aula 06] - Conhecendo a Linguagem - Casting e classes Wrapper

1. Introdução
Nas aulas anteriores, aprendemos que algumas linguagens de programação de alto nível possuem tipos de dados diferentes. Porém, os tipos de dados podem não ser muito amigáveis se não compreendermos como funciona o Casting.
O casting é a operação realizada pela linguagem quando o programador deseja realizar a conversão de tipos de dados. Veremos neste artigo que existem dois tipos de conversão de dados, são elas: implícita e explicita. Compreender os dois tipos de conversão são essenciais para a compreensão da linguagem.




2. Casting

As variáveis quando são armazenadas em memória são na verdade apenas bits. A característica que diferencia uma variável da outra é o tamanho que ela ocupa. Por exemplo, se quisermos armazenar o número 1 na memória principal, será necessário apenas 1 bit. Porém, se o programador deseja armazenar o número 200 na memória, quando convertido para a base binária ele é representado pelo conjunto 11001000. Assim serão necessários 8 bits de memória para armazenar o número 200.
A representação de uma variável do tipo 'int', por exemplo, armazena 32 bits, ou qualquer inteiro entre -2.147.483.648 e 2.147.483.647. Sendo assim, percebemos que para cada tipo existe um limite de dados armazenados.

2.1.       Casting implícito
Ao pensar na teoria de conjuntos numéricos proposta na matemática (Figura 1) fica fácil compreender que os conjuntos estão contidos uns nos outros.



Figura 1 - Conjuntos numéricos

Os números naturais, por exemplo, estão compreendidos por números não negativos, incluindo o zero. Ainda é possível perceber que os números inteiros também são compreendidos pelos números naturais, no entanto incluindo os números negativos.
Esta regra pode ser aplicada para os demais conjuntos numéricos, assim podemos por exemplo, dizer que números como, por exemplo, o 15 também está dentro dos números racionais, inteiros e naturais.
Na programação de alto nível, a preocupação deve ser qual espaço de armazenamento da variável que está  sendo utilizada. Acompanhe na Tabela 1:

Tabela 1 - Tamanhos de tipos primitivos
 

Caso a variável criada tenha a capacidade de armazenar informações maiores do que o dado que você deseja guardar, denominamos esta operação de cast implícito.


Figura 2 - representação de tipos de dados e suas capacidades de armazenamento

Observando a Figura 2 é possível perceber que se quisermos armazenar a quantidade de líquido em um copo denominado Byte em um copo long. Este armazenamento será feito sem nenhum problema. Porém, também é possível perceber que ao tentar armazenar a quantidade de líquido de um copo long em um copo byte. A agua irá transbordar e se perderá.
Em Java esta conversão pode ser representada da seguinte forma:

Int i = 5;
Double d = 0;
d = i; \\ O código compila sem problemas

i = d; \\ O código não compila


2.2. Casting explicito
O casting  explícito acontece quando o programador “assume” o risco da conversão e realiza o cast ignorando os riscos de perca de dados. É claro que ao realizar esta operação o programador através de sua lógica implementada deve assegurar que o dado convertido não será convertido erroneamente.
Em Java esta conversão é representada da seguinte forma:

Int i = 5;
Double d = 0;
i = d; \\ O código não compila
i = (int)d  \\ O código compila

* Cuidado, utilizar o casting de forma errada pode trazer muitos erros e dores de cabeça

3.  Classes Wrapper

As classes Wrapper foram criadas dentro do pacote Java.lang e seu objetivo é auxiliar a manipulação de tipos primitivos. Nestas classes podemos invocar alguns métodos capazes de realizar conversão de dados assegurando que não haverá erros.
Para cada tipo primitivo existe uma classe Wrapper com mesmo nome correspondente. Por exemplo, o tipo int possui a classe Integer, já o double possui a classe Double e assim por diante.
Para convertermos um dado do tipo double em inteiro usando a classe Wrapper é bastante simples, observe o exemplo:

int resultado;
double d = 5.5;
resultado = Integer.parseInt(d);

O método parse.int() pode ser invocado diretamente da classe Integer sem a necessidade de criar uma Instância desta classe. É interessante lembrar que este método de parse está presente em todas as classes Wrapper, ex: Double, Float, Integer, etc.
Mas calma, os conceitos de acesso a métodos e o que são classes estão dentro da programação orientada a objetos. Assim, este curso discutirá estes conceitos detalhadamente na próxima aula.

Quer fazer Download desta aula?





[Curso POO01 - Aula 06] - Conhecendo a Linguagem - Casting e classes Wrapper [Curso POO01 - Aula 06] - Conhecendo a Linguagem - Casting e classes Wrapper Reviewed by Vinicius dos Santos on 11:28:00 Rating: 5

Nenhum comentário

Escreve ai sua opinião!