Visual Basic e Java

Propaganda
Visual Basic e Java
À primeira vista o Java é completamente diferente do
Visual Basic.
Realmente as duas linguagens pertencem a mundos
distintos.
No entanto, elas compartilham uma série de
funcionalidades.
Vejamos as diferenças e similaridades entre elas.
www.t2ti.com
Orientado ou Baseado em Objetos
O Java é orientado a objetos. O VB é baseado em objetos.
As linguagens procedurais foram evoluindo para as linguagem
orientadas a objetos. No “meio do caminho” ficaram as
linguagens baseadas em objetos, como é o caso do VB. Claro
que o VB.Net já é orientado a objetos, mas não é dele que
estamos falando aqui.
www.t2ti.com
Orientado ou Baseado em Objetos
As linguagens orientadas a objetos permitem que o programador crie objetos
de programação que podem ser reutilizados. No Java é possível fazer isso
através da criação de classes, que serão instanciadas como objetos.
Cada classe possui atributos e métodos. Algumas pessoas preferem chamar
os atributos de “substantivos” e os métodos de “verbos”.
Vejamos a estrutura de uma classe feita em Java:
class Carro
{
int qtdePortas;
int qtdeAssentos;
boolean som;
int ano;
String modelo;
void acelerar();
void parar();
}
www.t2ti.com
Orientado ou Baseado em Objetos
No caso do VB, o programador pode criar objetos que misturam atributos e
funções.
Por exemplo, ao criar um formulário com um botão e uma caixa de texto no V,
já temos um objeto. Este objeto pode ser referenciado por outros objetos e
reutilizados em vários aplicativos. Por essa razão o VB é baseado em objetos e
não procedural.
Para que uma linguagem seja orientada a objetos ela precisa ter as seguintes
características primárias:
Encapsulamento
Herança
Polimorfismo
www.t2ti.com
Orientado ou Baseado em Objetos
Encapsulamento
Toda a informação sobre o objeto e a forma de manipular essa informação
estão armazenados dentro da definição do objeto. Os detalhes sobre como o
objeto funciona são invisíveis fora dele.
Herança
Um novo objeto pode ser criado a partir de um objeto já existente e herda as
propriedades e métodos. O VB não suporta herança , ou seja, não podemos
criar uma nova classe baseada na definição de outra classe.
Polimorfismo
É o princípio pelo qual duas ou mais classes derivadas de uma mesma
superclasse podem invocar métodos que têm a mesma identificação
(assinatura) mas comportamentos distintos, especializados para cada classe
derivada, usando para tanto uma referência a um objeto do tipo da superclasse
www.t2ti.com
Comentários
O VB possui apenas um tipo de comentário. O Java possui três
tipos de comentários. Observe:
VB:
Início
Fim
‘
Objetivo
O VB possui apenas esse comentário de linha. Não possui
comentário de bloco.
Java:
Início
Fim
Objetivo
/*
*/
Comentário de bloco. Igual no C e C++.
/**
*/
Comentário de bloco. É usado pelo JavaDoc para gerar
documentação de forma automática.
//
Comentário de uma linha só do C e C++.
www.t2ti.com
Abertura e Fechamento de Blocos
Isso funciona de forma bem distinta nas duas linguagens. Observe:
No VB isso vai depender do tipo de bloco que você está construindo. No Java
você inicia e finaliza blocos com as chaves: { }, assim como no C.
No Java, se um bloco tem apenas uma linha de comando, não é obrigatório a
abertura do mesmo. No VB sempre é necessário fechar o bloco. Exemplos:
VB
Java
if x = y then
begin
// do something
end if
if (x == y) {
// do something
// do something else
}
Do While Not .EOF
// do something
Loop
For i = 10 To 19
// do something
Next
if (x == y) {
// do something
www.t2ti.com
Declaração de Variáveis
Declarar variáveis no Java é completamente diferente da declaração
feita no VB.
Nas duas linguagens é possível declarar variáveis em qualquer lugar.
No VB é necessário informar que uma variável está sendo criada
através da palavra-chave “dim”. O VB permite a criação de variáveis
globais, o Java não.
Observe a tabela:
VB
Java
Sub teste()
Dim variavel as String
variavel = "a"
If variavel = "a" Then
MsgBox ("testando")
End If
End Sub
public void testando() {
String teste1 = "www.t2ti.com", teste2;
int numero;
numero = 1;
double dinheiro;
dinheiro = 1.25;
float nota;
nota = 5.75f;
}
www.t2ti.com
Tipos de Dados – Java
O Java tem 8 tipos primitivos de dados.
Observe na tabela abaixo:
Tipo
Bytes
Valor Mínimo
Valor Máximo
boolean
-
-
true/false
byte
1
-128
127
short
2
-32768
32767
int
4
-2147483648
2147483647
long
8
-9223372036854775808
9223372036854775808
float
4
± 3.4 E 38 (6-7 dígitos de exatidão)
double
8
char (unicode)
2
± 3.4 E 38 (6-7 dígitos de
exatidão)
± 1.7 E 308 (14-15 dígitos de
exatidão)
'\u0000'
± 1.7 E 308 (14-15 dígitos de
exatidão)
'\uffff'
Os tipos primitivos recebem um tratamento especial e são mais
eficientes que os tipos de referências.
www.t2ti.com
Tipos de Dados - VB
Basicamente o VB tem os mesmos tipos primitivos do Java. Possui
tipos inteiros, de ponto flutuante e booleano.
Observe a tabela abaixo:
Tipo
Bytes
Equivalente Java
Integer
2
short
Long
4
int
Single
4
float
Double
8
double
Currency
64
Não existe
String
1
Byte
1
Parecido com o char. No Java o char usa Unicode enquanto o
VB usa ASCII.
Não existe
Boolean
2
boolean
Date
8
Não existe
Variant
2
Não existe
www.t2ti.com
Conversão entre Tipos
Tanto no VB quanto no Java é possível fazer conversão de variáveis de um
tipo para outro.
Na tabela abaixo podemos observar algumas conversões permitidas entre os
tipos de dados do VB:
Tipo
Pode ser convertido para
Byte
Byte, Short, Integer, Long, Single, Double
Short
Short, Integer, Long, Single, Double
Integer
Integer, Long, Single, Double
Long
Long, Single, Double
Single
Single, Double
Double
Double
String
String
www.t2ti.com
Conversão – VB
Abaixo seguem algumas funções de conversão do VB e o tipo de dado
resultante:
Função
Tipo de dado resultante
CBool
Boolean
CByte
Byte
CChar
Char
CDate
Date
CDbl
Double
CInt
Integer
CLng
Long
CShort
Short
CSng
Single
CStr
String
www.t2ti.com
Conversão –Java
O Java possui alguns tipos primitivos e o resto são objetos.
Dessa forma, o próprio compilador Java já faz conversões automáticas,
quando se deseja converter de tipos menores para tipos maiores, seguindo a
regra:
www.t2ti.com
Conversão – Java
Caso deseje realizar uma conversão de um tipo maior para um menor, o
programador deverá fazer isso de forma explícita da seguinte forma:
(tipo) dado
Exemplo:
public class Convertendo {
public static void main(String[] args) {
int x = (int) 2.5;
System.out.println("x="+x);
}
}
www.t2ti.com
Conversão – Java
Muito bem. Para continuarmos a aprender sobre casting em Java, primeiro
devemos saber o que são classes Wrapper. Cada tipo primitivo possui uma
classe associada a ele. Veja a tabela abaixo:
Tipo Primitivo
Classe Wrapper
Lógico
boolean
Boolean
Caractere
char
Character
Integral
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
Ponto Flutuante
Subclasse
Object
Number
E qual seria então a vantagem de se utilizar tipos primitivos? A explicação
reside no fato de como o Java aloca a memória. Os tipos primitivos ficam num
espaço de memória chamado Stack e os objetos ficam em outro espaço
chamado Heap. Assim sendo, os tipos primitivos são mais rápidos, eficientes
em laços e expressões e permitem operações mais complexas.
www.t2ti.com
Conversão – Java
Em contrapartida, quais as vantagens de se utilizar as classes wrapper? O fato
de realizar operações que são permitidas apenas a objetos, como mudança de
bases decimais e trabalhar com conjuntos.
Veja os seguintes exemplos de instanciação de variáveis utilizando as classes
wrapper:
Integer a = new Integer("10");
Integer b = new Integer(10);
Float f1 =
Float f2 =
Boolean b1
Boolean b2
new Float("14.0f");
new Float(14.0f);
= new Boolean("true");
= new Boolean(true);
www.t2ti.com
Conversão – Java
Métodos importantes: valueOf(); xxxValue(); parseXxx(); Para exemplificar o uso de
cada um deles vamos fazer alguns exemplos:
public static void main(String[] args) {
int a = 25;
Integer b = 36;
int c = 0;
Integer d = new Integer(0);
String e = "10";
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
System.out.println("d="+d);
//a=25
//b=36
//c=0
//c=0
//atribuindo b para c (Objeto para Primitivo)
//intValue() retorna um primitivo
c = b.intValue();
System.out.println("c="+c); //c=36
//atribuindo a para d (Primitivo para Objeto)
//valueOf() retorna um objeto
d = Integer.valueOf(a);
System.out.println("d="+d);//d=25
//atribuindo de e para a (String para int primitivo)
//parseInt() retorna um objeto, mas permite escolher a base
a = Integer.parseInt(e);
System.out.println("a="+a);//a=125
//mesmo método, mas selecionando a base 2
a = Integer.parseInt(e,2);
System.out.println("a="+a);//a=2
}
www.t2ti.com
Conversão – Java
Agora vem a parte engraçada. Você poderia fazer simplesmente assim:
//atribuindo b para c (Objeto para Primitivo)
//intValue() retorna um primitivo
c = b;
System.out.println("c="+c); //c=36
//atribuindo a para d (Primitivo para Objeto)
//valueOf() retorna um objeto
d = a;
System.out.println("d="+d);//d=25
Isso mesmo! Para tipos de dados iguais, a partir da versão 5 do Java, não
precisa mais fazer conversão explícita, o próprio compilador se vira pra fazer
isso pra você. Isso é conhecido como Autoboxing, ou Encaixotamento. Na
verdade o compilador está fazendo todo o “boxing” e “unboxing”.
E para tipos de dados diferentes? Já vimos como passar um valor String para
um int. Como fazer para passar de String para os outros primitivos? Como
fazer para converter entre os wrappers?
Vejamos:
www.t2ti.com
Conversão – Java
public static void main(String[] args) {
String sd = "111.11";
String sf = "222.22";
String si = "333";
String sb = "true";
Double ds = Double.valueOf(444);
int is = 555;
Float fs = 666f;
//retorna objeto
Double d = Double.valueOf(sd);
Float f = Float.valueOf(sf);
Integer i = Integer.valueOf(si);
Boolean b = Boolean.valueOf(sb);
System.out.println("Double d="+d);//Double d=111.11
System.out.println("Float f="+f);//Float f=222.22
System.out.println("Integer i="+i);//Integer i=333
System.out.println("Boolean b="+b);//Boolean b=true
//retorna primitivo
double dd = Double.parseDouble(sd);
float ff = Float.parseFloat(sf);
int ii = Integer.parseInt(si);
boolean bb = Boolean.parseBoolean(sb);
System.out.println("double dd="+dd);//double dd=111.11
System.out.println("float ff="+ff);//float ff=222.22
System.out.println("int ii="+ii);//int ii=333
System.out.println("boolean bb="+bb);//boolean bb=true
//de outros tipos para String
String umDouble = String.valueOf(ds);
String umint = String.valueOf(is);
String umFloat = fs.toString();
System.out.println("umDouble="+umDouble);//umDouble=444.0
System.out.println("umint="+umint);//umint=555
System.out.println("umFloat="+umFloat);//umFloat=666.0
}
www.t2ti.com
Conversão – Java
Dica:
Quando estiver convertendo para String, prefira o método Objeto.toString() ao
invés de String.valueOf(). Internamente o método valueOf() chama o método
toString();
www.t2ti.com
Operadores
D
Tipo
VB
Java
Função
Atribuição
=
=
Operador de atribuição.
Aritmético
+
+
Soma. Também concatena Strings.
-
-
Subtração.
*
*
Multiplicação.
/
/
Divisão.
Mod
%
Resto da divisão.
\
/
+
+
No VB retorna apenas a parte inteira da divisão. No Java,
utiliza-se o mesmo sinal de divisão.
Torna um valor positivo.
-
-
Torna um valor negativo.
++
Incrementa um valor em 1.
--
decrementa um valor em 1.
!
Inverte o valor de um booleano. Operador de negatividade.
Unário
Not
www.t2ti.com
Operadores
D Tipo
Relacionais
Condicionais
(booleanos)
Bitwise
VB
Java Função
=
<>
<
>
<=
>=
Not
And
Or
Xor
==
!=
<
>
<=
>=
!
&&
||
Not
And
Xor
Or
?:
~
<<
>>
>>>
&
^
|
Teste de igualdade.
Teste de desigualdade.
Menor que.
Maior que.
Menor ou igual a.
Maior ou igual a.
Operador de negação.
Condicional E.
Condicional OU.
Condicional OU Exclusivo.
Operador Ternário.
Inversão dos bits de X
Deslocamento a esquerda dos bits de x, y vezes.
Deslocamento a direita dos bits de x, y vezes.
Preenche zero a esquerda de x, y vezes.
AND bit a bit entre x e y.
XOR bit a bit entre x e y.
OR bit a bit entre x e y.
www.t2ti.com
Operadores Java
O
D Java possui alguns operadores exclusivos, conforme podemos observar
logo abaixo:
Tipo
Java Função
Atribuição
+=
-=
*=
/=
%=
Soma e atribui.
Subtrai e atribui.
Multiplica e atribui.
Divide e atribui.
Tira o resto e atribui.
www.t2ti.com
Arrays
A
D declaração de um array no VB é diferente da declaração feita em Java. No VB
utiliza-se parêntesis, enquanto o Java usa colchetes ([ ]). Abaixo vemos duas
diferenças entre declarações de arrays em VB e Java:
A sintaxe para declarar um array em Java é menos detalhada e não inclui o
uso da palavra chave Dim.
Todos os arrays em Java começam no elemento zero (observe a imagem), ao
contrário do VB onde o intervalo pode ser especificado.
www.t2ti.com
Arrays - VB
V
Dejamos alguns exemplos em VB.
Definiremos um array de 7 posições. Os elementos do array serão do tipo
inteiro.
Dim numbers (1 To 6 ) As Integer
Poderíamos ter feito o seguinte:
Dim numbers(5) As Integer
Ambos tem seis posições. No entanto, no segundo exemplo o primeiro índice
começa na posição zero.
Podemos criar arrays multidimencionais da seguinte forma:
dim DiaHora (1 to 7, 1 to 24) as Single;
No array acima temos 168 elementos, que representarão todas as horas de
uma semana (24 * 7 = 168).
www.t2ti.com
Arrays - VB
P
Dara preencher os elementos do array anterior (DiaHora), podemos utilizar o
seguinte laço (todos os elementos serão preenchidos com o número zero):
for i = 1 to 7
for j = 1 to 24
DiaHora[i,j] = 0;
next
next
www.t2ti.com
Arrays - Java
V
Damos criar um array de inteiros em Java e inicializar os seus elementos:
int[] umArray;
umArray = new int[2];
umArray[0] = 100;
umArray[1] = 200;
//declara o array de inteiros
//aloca a memoria para dois elementos
//inicializa o primeiro elemento
//inicializa o segundo elemento
É possível colocar os colchetes após o nome da variável:
int umArray[];
No entanto, isso é desencorajado pela convenção, pois os colchetes devem
encorajar o tipo de dado do array. É possível criar e já inicializar um array da
seguinte forma:
int[] umArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};
O tamanho do array foi definido pelo número de elementos. No exemplo
anterior o tamanho do array é 10.
www.t2ti.com
Arrays - Java
T
Dambém é possível criar arrays multidimencionais no Java. Observamos isso
no exemplo abaixo:
class MultiDimArrayDemo {
public static void main(String[] args) {
String[][] names = {{"Mr. ", "Mrs. ", "Ms. "},
{"Smith", "Jones"}};
System.out.println(names[0][0] + names[1][0]); //Mr. Smith
System.out.println(names[0][2] + names[1][1]); //Ms. Jones
}
}
www.t2ti.com
Conclusão
N
Dessa apresentação vimos algumas características do Java do ponto de vista
de um desenvolvedor VB.
Existem diversas outras que não foram mencionadas.
Abordaremos na prática o desenvolvimento de aplicações VB e Java
apontando as semelhanças e diferenças entre as duas linguagens e suas IDEs.
Essa prática será gravada em vídeo aulas.
www.t2ti.com
Download