visual basic e java - t2tit2ti.com/erp/pdf/j2vbd.pdf · 2017. 11. 10. · o vb é baseado em...

29
www.t2ti.com Visual Basic e Java 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.

Upload: others

Post on 02-Feb-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • www.t2ti.com

    Visual Basic e JavaVisual Basic e Java

    À primeira vista o Java é completamente diferente do Visual Basic.

    Realmente as duas linguagens pertencem a mundosdistintos.

    No entanto, elas compartilham uma série de funcionalidades.

    Vejamos as diferenças e similaridades entre elas.

  • www.t2ti.com

    OrientadoOrientado ouou BaseadoBaseado emem ObjetosObjetos

    O Java é orientado a objetos. O VB é baseado em objetos.

    As linguagens procedurais foram evoluindo para as lingua gemorientadas a objetos. No “meio do caminho” ficaram as linguagens baseadas em objetos, como é o caso do VB. Clar oque o VB.Net já é orientado a objetos, mas não é dele queestamos falando aqui.

  • www.t2ti.com

    OrientadoOrientado ouou BaseadoBaseado emem ObjetosObjetosAs linguagens orientadas a objetos permitem que o programado r crie objetosde programação que podem ser reutilizados. No Java é possív el fazer issoatravés da criação de classes, que serão instanciadas como ob jetos.

    Cada classe possui atributos e métodos. Algumas pessoas pr eferem chamaros 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

    OrientadoOrientado ouou BaseadoBaseado emem ObjetosObjetosNo caso do VB, o programador pode criar objetos que mist uram 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 V B é baseado em objetos e não procedural.

    Para que uma linguagem seja orientada a objetos ela p recisa ter as seguintes características primárias:

    �Encapsulamento�Herança�Polimorfismo

  • www.t2ti.com

    Orientado ou Baseado em ObjetosOrientado ou Baseado em Objetos�Encapsulamento

    Toda a informação sobre o objeto e a forma de manipu lar essa informação estão armazenados dentro da definição do objeto. Os d etalhes 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 se ja, não podemos criar uma nova classe baseada na definição de outra c lasse.

    �Polimorfismo

    É o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma ide ntificação (assinatura) mas comportamentos distintos, especiali zados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse

  • www.t2ti.com

    ComentComent ááriosrios

    O VB possui apenas um tipo de comentário. O Java possu i trêstipos de comentários. Observe:

    VB:

    Java:

    O VB possui apenas esse comentário de linha. Não possui comentário de bloco.

    ObjetivoFimInício

    Comentário de uma linha só do C e C++.//

    Comentário de bloco. É usado pelo JavaDoc para gerar documentação de forma automática.

    *//**

    Comentário de bloco. Igual no C e C++.*//*

    ObjetivoFimInício

  • www.t2ti.com

    AberturaAbertura e e FechamentoFechamento de de BlocosBlocosIsso funciona de forma bem distinta nas duas linguag ens. Observe:

    No VB isso vai depender do tipo de bloco que você es tá construindo. No Java você inicia e finaliza blocos com as chaves: { }, ass im como no C.

    No Java, se um bloco tem apenas uma linha de comand o, não é obrigatório a abertura do mesmo. No VB sempre é necessário fechar o bl oco. Exemplos:

    For i = 10 To 19// do something

    Next

    if (x == y) {// do something

    Do While Not .EOF// do something

    Loop

    if (x == y) {// do something// do something else

    }

    if x = y then begin

    // do somethingend if

    JavaVB

  • www.t2ti.com

    DeclaraDeclara ççãoão de de VariVari ááveisveisDeclarar 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á sen do criada através da palavra-chave “dim”. O VB permite a cria ção de variáveis globais, o Java não.

    Observe a tabela:

    public void testando() {String teste1 = "www.t2ti.com" , teste2;int numero;numero = 1;double dinheiro;dinheiro = 1.25;float nota;nota = 5.75f;

    }

    Sub teste()Dim variavel as Stringvariavel = "a"If variavel = "a" Then

    MsgBox ("testando")End If

    End Sub

    JavaVB

  • www.t2ti.com

    TiposTipos de Dados de Dados –– JavaJavaO Java tem 8 tipos primitivos de dados.

    Observe na tabela abaixo:

    Os tipos primitivos recebem um tratamento especial e são mais eficientes que os tipos de referências.

    '\uffff''\u0000'2char (unicode)

    ±±±± 1.7 E 308 (14-15 dígitos de exatidão)

    ±±±± 1.7 E 308 (14-15 dígitos de exatidão)

    8double

    ±±±± 3.4 E 38 (6-7 dígitos de exatidão)±±±± 3.4 E 38 (6-7 dígitos de exatidão)

    4float

    9223372036854775808-92233720368547758088long

    2147483647-21474836484int

    32767-327682short

    127-1281byte

    -

    Bytes-

    Valor Mínimotrue/falseboolean

    Valor MáximoTipo

  • www.t2ti.com

    TiposTipos de Dados de Dados -- VBVBBasicamente o VB tem os mesmos tipos primitivos do Java. Possui tipos inteiros, de ponto flutuante e booleano.

    Observe a tabela abaixo:

    Não existe2Variant

    Parecido com o char. No Java o char usa Unicode enqua nto o VB usa ASCII.

    1String

    Não existe1Byte

    Não existe64Currency

    int4Long

    float4Single

    double8Double

    boolean2Boolean

    Não existe8Date

    2

    Bytesshort

    Equivalente JavaInteger

    Tipo

  • www.t2ti.com

    ConversãoConversão entreentre TiposTiposTanto 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 p ermitidas entre os tipos de dados do VB:

    StringString

    DoubleDouble

    Single, DoubleSingle

    Long, Single, DoubleLong

    Integer, Long, Single, DoubleInteger

    Short, Integer, Long, Single, DoubleShort

    Byte, Short, Integer, Long, Single, Double

    Pode ser convertido paraByte

    Tipo

  • www.t2ti.com

    ConversãoConversão –– VBVBAbaixo seguem algumas funções de conversão do VB e o tipo de dado resultante:

    StringCStr

    SingleCSng

    ShortCShort

    LongCLng

    IntegerCInt

    DoubleCDbl

    DateCDate

    CharCChar

    ByteCByte

    Boolean

    Tipo de dado resultanteCBool

    Função

  • www.t2ti.com

    ConversãoConversão ––JavaJavaO Java possui alguns tipos primitivos e o resto são o bjetos.

    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ãoConversão –– JavaJavaCaso deseje realizar uma conversão de um tipo maior para um menor, o programador deverá fazer isso de forma explícita da segu inte 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ãoConversão –– JavaJavaMuito bem. Para continuarmos a aprender sobre casting em Java, primeiro devemos saber o que são classes Wrapper. Cada tipo p rimitivo possui uma classe associada a ele. Veja a tabela abaixo:

    E qual seria então a vantagem de se utilizar tipos pri mitivos? A explicação reside no fato de como o Java aloca a memória. Os tipo s 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 m ais rápidos, eficientes em laços e expressões e permitem operações mais comple xas.

    Doubledouble

    FloatfloatPonto Flutuante

    Longlong

    int

    short

    byte

    char

    boolean

    Tipo Primitivo

    Integer

    Short

    Byte

    Character

    Boolean

    Classe Wrapper

    NumberIntegral

    Caractere

    Object

    SubclasseLógico

  • www.t2ti.com

    ConversãoConversão –– JavaJavaEm contrapartida, quais as vantagens de se utilizar as classes wrapper? O fato de realizar operações que são permitidas apenas a objet os, como mudança de bases decimais e trabalhar com conjuntos.

    Veja os seguintes exemplos de instanciação de variáv eis utilizando as classes wrapper:

    Integer a = new Integer("10");Integer b = new Integer(10);

    Float f1 = new Float("14.0f");Float f2 = new Float(14.0f);Boolean b1 = new Boolean("true");Boolean b2 = new Boolean(true);

  • www.t2ti.com

    ConversãoConversão –– JavaJavaMétodos importantes: valueOf(); xxxValue(); parseXx x(); 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); //a=25System. out .println( "b=" +b); //b=36System. out .println( "c=" +c); //c=0System. out .println( "d=" +d); //c=0

    //atribuindo b para c (Objeto para Primitivo)//intValue() retorna um primitivoc = b.intValue(); System. out .println( "c=" +c); //c=36

    //atribuindo a para d (Primitivo para Objeto)//valueOf() retorna um objetod = 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 escolhe r a basea = 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ãoConversão –– JavaJavaAgora vem a parte engraçada. Você poderia fazer simples mente assim:

    //atribuindo b para c (Objeto para Primitivo)//intValue() retorna um primitivoc = b; System. out.println( "c=" +c); //c=36

    //atribuindo a para d (Primitivo para Objeto)//valueOf() retorna um objetod = a;System. out.println( "d=" +d); //d=25

    Isso mesmo! Para tipos de dados iguais, a partir da v ersão 5 do Java, não precisa mais fazer conversão explícita, o próprio compi lador se vira pra fazer isso pra você. Isso é conhecido como Autoboxing, ou E ncaixotamento. Na verdade o compilador está fazendo todo o “boxing” e “un boxing”.

    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ãoConversão –– JavaJavapublic 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 objetoDouble 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.11System. out.println( "Float f=" +f); //Float f=222.22System. out.println( "Integer i=" +i); //Integer i=333System. out.println( "Boolean b=" +b); //Boolean b=true

    //retorna primitivodouble 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.11System. out.println( "float ff=" +ff); //float ff=222.22System. out.println( "int ii=" +ii); //int ii=333System. out.println( "boolean bb=" +bb); //boolean bb=true

    //de outros tipos para StringString umDouble = String. valueOf(ds);String umint = String. valueOf(is);String umFloat = fs.toString();System. out.println( "umDouble=" +umDouble); //umDouble=444.0System. out.println( "umint=" +umint); //umint=555System. out.println( "umFloat=" +umFloat); //umFloat=666.0

    }

  • www.t2ti.com

    ConversãoConversão –– JavaJavaDica:

    Quando estiver convertendo para String, prefira o método Objeto.toString() ao invés de String.valueOf(). Internamente o método valu eOf() chama o método toString();

  • www.t2ti.com

    OperadoresOperadoresD

    !

    --

    ++

    -

    +

    /

    %

    /

    *

    -

    +

    =

    Java

    Not

    -

    +

    \

    Mod

    /

    *

    -

    +

    =

    VB

    Inverte o valor de um booleano. Operador de negativ idade.

    decrementa um valor em 1.

    Incrementa um valor em 1.

    Torna um valor negativo.

    Torna um valor positivo.Unário

    No VB retorna apenas a parte inteira da divisão. No Java, utiliza-se o mesmo sinal de divisão.

    Resto da divisão.

    Divisão.

    Multiplicação.

    Subtração.

    Soma. Também concatena Strings.Aritmético

    Operador de atribuição.

    FunçãoAtribuição

    Tipo

  • www.t2ti.com

    OperadoresOperadoresD

    OR bit a bit entre x e y.|OrXOR bit a bit entre x e y.^XorAND bit a bit entre x e y.&AndPreenche zero a esquerda de x, y vezes.>>>Deslocamento a direita dos bits de x, y vezes.>>Deslocamento a esquerda dos bits de x, y vezes.=

    <!===

    Java

    XorOrAndNot>=

    <

    =

    VB

    Condicional OU Exclusivo.Condicional OU.Condicional E.Operador de negação.Condicionais

    (booleanos)

    Maior ou igual a.Menor ou igual a.Maior que.Menor que.Teste de desigualdade.Teste de igualdade.

    FunçãoRelacionais

    Tipo

  • www.t2ti.com

    OperadoresOperadores JavaJavaD

    %=/=*=- =+=

    Java

    Tira o resto e atribui.Divide e atribui.Multiplica e atribui.Subtrai e atribui.Soma e atribui.

    FunçãoAtribuição

    Tipo

    O Java possui alguns operadores exclusivos, conforme p odemos observar logo abaixo:

  • www.t2ti.com

    ArraysArraysDA declaração de um array no VB é diferente da declaração feita em Java. No VB utiliza-se parêntesis, enquanto o Java usa colchete s ([ ]). Abaixo vemos duas diferenças entre declarações de arrays em VB e Java:

    �A sintaxe para declarar um array em Java é menos detalha da e não inclui o uso da palavra chave Dim.

    �Todos os arrays em Java começam no elemento zero (obs erve a imagem), ao contrário do VB onde o intervalo pode ser especificado .

  • www.t2ti.com

    Arrays Arrays -- VBVBDVejamos alguns exemplos em VB.

    Definiremos um array de 7 posições. Os elementos do arra y 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 exemp lo o primeiro índicecomeç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 toda s as horas de uma semana (24 * 7 = 168).

  • www.t2ti.com

    Arrays Arrays -- VBVBDPara preencher os elementos do array anterior (DiaHora), po demos 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 Arrays -- JavaJavaDVamos criar um array de inteiros em Java e inicializar os seus elementos:

    int[] umArray; //declara o array de inteirosumArray = new int[2]; //aloca a memoria para dois eleme ntosumArray[0] = 100; //inicializa o primeiro elemen toumArray[1] = 200; //inicializa o segundo element o

    É possível colocar os colchetes após o nome da variáve l:

    int umArray[];

    No entanto, isso é desencorajado pela convenção, pois os c olchetes devemencorajar o tipo de dado do array. É possível criar e já inic ializar um array daseguinte forma:

    int[] umArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};

    O tamanho do array foi definido pelo número de elementos. N o exemploanterior o tamanho do array é 10.

  • www.t2ti.com

    Arrays Arrays -- JavaJavaDTambé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 . SmithSystem.out.println(names[0][2] + names[1][1]); //Ms . Jones

    }}

  • www.t2ti.com

    ConclusãoConclusãoDNessa apresentação vimos algumas características do J ava do ponto de vista de um desenvolvedor VB.

    Existem diversas outras que não foram mencionadas.

    Abordaremos na prática o desenvolvimento de aplicaçõe s VB e Java apontando as semelhanças e diferenças entre as duas l inguagens e suas IDEs.

    Essa prática será gravada em vídeo aulas.