Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes [email protected] Aula 02 - Ambiente Java e Delphi http://www.ufpa.br/sampaio/bd2003/lpoo Prof. Marco Fagundes 1 de 38 Roteiro Por que Java e Delphi? Histório e Características (Java e Delphi) Ambiente Java e Delphi Básico da Linguagem Object Pascal Básico da Linguagem Java Passos para Criar uma Aplicação Tratamento Simples de Entrada e Saída 2 de 38 Ambiente Java 9 de 38 Ambiente Java Preparando o Ambiente Java da Sun A configuração mínima necessária para a confecção, compilação e execução de programas Java consta do seguinte [herder2]: Java Development Kit (JDK), obtido gratuitamente do site da Sun (http://java.sun.com) e um editor de textos (e.g., Notepad ou Vi); ou Um Ambiente Integrado de Desenvolvimento (IDE) para a linguagem Java (e.g., JBuilder, Forte for Java, Visual Café) O JDK consiste basicamente do seguinte: API Java: todas as classes e interfaces organizadas em pacotes As fontes classes, interfaces e métodos da API Applets demonstrativos com exemplos de utilização Máquina Virtual Java (java) Visualizador de Applets (appetviewer) Ferramentas de desenvolvimento: compilador Java (javac), gerador de métodos nativos C (javah), gerador de documentação (javadoc), jar e etc 10 de 38 Ambiente Java Preparando o Ambiente Java da Sun De posse do JDK deve-se efetuar sua instalação e em seguida configurar a variável de ambiente CLASSPATH, para indicar o caminho para as classes da API. Por exemplo, CLASSPATH=C:\Java\lib\tools.jar;. Incluir na variável PATH o caminho “java\bin\” 11 de 38 Ambiente de Desenvolvimento Delphi Terminologia Design vs Run time; Formulários; Propriedades; Métodos; Componentes 12 de 38 Ambiente de Desenvolvimento Delphi Terminologia Design vs Run time; Formulários; Propriedades; Métodos; Componentes 13 de 38 Ambiente de Desenvolvimento Delphi Convenção de Nomes para Componentes Uma propriedade que é comum a todos os componentes, é a propriedade NAME. O Delphi sugere nomes para os componentes baseado em seu tipo, inserindo um quantitativo no final. Alterar o nome do componente torna seu código muito mais legível. Utilize seguintes as regras: • Mantenha sempre o mnemônico do tipo como primeira parte do nome do componente • Após o nome mnemônico, adicione um nome descritivo indicando o uso do componente • Crie mnemônico do componente removendo suas vogais(exceto quando o componente começar com uma vogal ou se esta auxiliar na expressão do seu significado) • Retire consoantes duplicadas subsequentemente • Caso o nome do componente conflite com outro criado através destas regras, comece adicionando vogais da esquerda para a direita 14 de 38 Ambiente de Desenvolvimento Delphi Manipulando Componentes Inserindo/Excluindo Movendo (ctrl+seta mov.cursor) Redimensionando (shift+seta mov.cursor) 15 de 38 Ambiente de Desenvolvimento Delphi Projetos Units (Arquivos .pas) Forms (Arquivos .dfm) obs: Convenção de nomes 16 de 38 Básico da Linguagem Object Pascal Arquivo de Projeto program <nome do programa>; uses <nome das units>; const <nome da constante>=<valor da constante>; type <identificador do tipo>=<definição do tipo>; var <nome da variável> : <tipo da variável>; <definição de procedures e functions> begin <instruções>; ... end. 17 de 38 Básico da Linguagem Object Pascal Arquivo de Unit interface uses <nome das units>; const <nome da constante>=<valor da constante>; type <identificador do tipo>=<definição do tipo>; var <nome da variável> : <tipo da variável>; <declaração de procedures e functions> implementation uses <nome das units>; const <nome da constante>=<valor da constante>; type <identificador do tipo>=<definição do tipo>; var <nome da variável> : <tipo da variável>; <declaração de procedures e functions> initialization <instruções>; finalization <instruções>; end. 18 de 38 Básico da Linguagem Object Pascal Relação Projeto/Unit Program Uses ... Unit A Unit D Unit B Unit E Unit C 19 de 38 Básico da Linguagem Object Pascal Procedure procedure <nome>(<nomeParam>: <tipoParam>, <nomeParam>: <tipoParam>); const <nome da constante> = <valor literal>; var <nome da variável> : <tipo da variável> begin <instruções>; ... end; Function function <nome>(<nomeParam>:<tipoParam>,<nomeParam>:<tipoParam>):<tipoRetorno>; const <nome da constante> = <valor literal>; var <nome da variável> : <tipo da variável> begin <instruções>; ... end; 20 de 38 Básico da Linguagem Object Pascal Básico da Linguagem Object Pascal Identificadores: Utilizados para identificar units, procedimento e variáveis (utilizar padrão de codificação) Literais: Valores utilizados em atribuição, passagem de parâmetro Variáveis: Posição de memória (utilizar padrão de codificação) • Sintaxe declaração: var nome_variável: tipo; Escopo O escopo de uma variável se refere à visibilidade e tempo de vida. A visibilidade é determinada pelo local onde a variável pode ser acessada(public, private, protected e published). O tempo de vida especifica por quanto tempo ela manterá seu valor e permanecerá acessível Comentários (*texto*) { texto} //texto Instruções Simples(;) e Compostas (begin...end;) 21 de 38 Básico da Linguagem Object Pascal Tipos Primitivos de Dados • Delphi é uma linguagem fortemente tipada • • • • Numéricos (Integer ,Longint,Byte, Real, Double) Boolean (true e false) Char(‘.’) e String (‘...’) Operações: Length(String); Copy(String,IndiceInicial,Quantidade); UpperCase(String); LowerCase(String); Pos(String,SubString); S1 + S2 ou concat(S1,S2); Estrutura de Dados Array • Type TintList = array[1..100] of integer; • Para utilizar o array declara-se uma variável=> var arList: TintList; 22 de 38 Básico da Linguagem Object Pascal Estruturas de Controle Estruturas de Decisão • if(condição) then...else • case<variável> of valores:<instrução>; else <instrução>; end; Estruturas de Repetição • while(condição) do • repeat...until(condição) • for <var controle> := <valor inicial> to <valor final> do Break e Continue 23 de 38 Básico da Linguagem Object Pascal Atribuição (‘:=’) versus Igualdade(‘=’) Operadores Ariméticos 24 de 38 Básico da Linguagem Object Pascal Operadores Relacionais 25 de 38 Básico da Linguagem Java 26 de 38 Básico da Linguagem Java Estrutura mínima de um Programa em Java class <nome> { public static void main (<parametro>) { <declarações> <comandos> } } Obs: sensitividade no Java Básico da Linguagem Java Identificadores: Utilizados para identificar classes, métodos e atributos (utilizar padrão de codificação) Literais: Valores utilizados em atribuição, passagem de parâmetro Variáveis: Posição de memória (utilizar padrão de codificação) • Sintaxe declaração: tipo_retorno nome_variável 27 de 38 Básico da Linguagem Java Escopo O escopo de uma variável se refere à visibilidade e tempo de vida. A visibilidade é determinada pelo local onde a variável pode ser acessada(public, private, protected e de pacote). O tempo de vida especifica por quanto tempo ela manterá seu valor e permanecerá acessível Comentários /*texto*/ /** texto*/ //texto Instruções Simples(;) e Compostas ({...}) 28 de 38 Básico da Linguagem Java Tipos Primitivos de Dados • Java é uma linguagem fortemente tipada • Numéricos (byte, short, int, long, double e float) – obs: Não confundir com as Classes Integer, Double... • Boolean (true e false) • Char (Unicode - 2Bytes - 32.768 caracteres diferentes - ‘’ ) Caracteres sem representação visual (‘\’) • Ex: \n \t \’ \” \\ 29 de 38 Básico da Linguagem Java String • Sequência de caracter tratada como unidade única. • Java fornece a classe String • Exemplo: String s1 • Inicialização de String: s = “Bem vindo!!”; ou s = new String(“Bem vindo!!”) • s.length(); s.charAt(Indice); s.getChars(IndiceInicial, IndiceFinal, ArrayRetorno, IndiceInicialArray); s1.equals(s2); s1.equalsIgnoreCase(s2); s1.substring(IndiceInicial, IndiceFinal); • Concatenando Strings: s1 + s2 ou s1.concat(s2) • Métodos diversos: s1.toUpperCase(); s1.toLowerCase(); s1.trim() 30 de 38 Básico da Linguagem Java Estrutura de Dados • Array: – Ex: int a[ ] • Vector: – Ex: Vector v = new Vector (1) • Métodos Principais: v.addElement (el); v.removeElement(el); v.firstElement(); v.lastElement(); v.isEmpty(); v.contains(key) 31 de 38 Básico da Linguagem Java Estruturas de Controle Estruturas de Decisão • if if/else • switch(variável)...case(valor) Estruturas de Repetição • while(condição) • do...while(condição) • for (tipo_variável nome_variável_controle = valor_inicial; condição_de_continuação_laço; incremento da variável) Break e Continue 32 de 38 Básico da Linguagem Java Atribuição (‘=’) versus Igualdade(‘==’) Operadores Ariméticos Operadores Relacionais 33 de 38 Básico da Linguagem Java Operadores Lógicos 34 de 38 Passos para Criar uma Aplicação Criar a estrutura de diretórios do projeto Crie a interface de usuário Ajuste as propriedades dos objetos da interface Escreva código para os eventos Salve o projeto (convenção de nomes) Teste e depure a aplicação Crie o programa de instalação da sua aplicação 35 de 38 Java e Delphi (Prática) 36 de 38 Entrada e Saída de Dados Exibindo Mensagem para o Usuário • Em Delphi Application.MessageBox(<mensagem>,<título >,<ícone a ser exibido>); Ex:Application.MessageBox(‘Registro Encontrado.’,’Informação’,MB_ICONINFORMATION); • Em Java JOptionPane.showMessageDialog(null,<mensagem>,<título >,<ícone a ser exibido>); Ex: JOptionPane.showMessageDialog (null,”Registro Encontrado”,”Informação”,JOptionPane.INFORMATION_MESSAGE); obs: Atentar para sensitividade do Java Delphi Java 37 de 38 Entrada e Saída de Dados Recebendo Entrada de Dados • Em Delphi inMsg:= InputBox(<título da janela>,<dado solicitado>,<conteúdo padão>); Ex: inMsg:= InputBox(‘Entrada de Dados’,’Digite Código:’,’-1’); • Em Java inMsg = JOptionPane.showInputDialog(<mensagem>); Ex: inMsg:= JOptionPane.showInputDialog(“Digite Código”); obs: Atentar para sensitividade do Java 38 de 38