Histórico Et Estrutura t de um programa Java Sintaxe básica de Java. Reinaldo Gomes O que é a linguagem Java? - PDF
Histórico Et Estrutura t de um programa Java Sintaxe básica de Java. Reinaldo Gomes O que é a linguagem Java?
Download "Histórico Et Estrutura t de um programa Java Sintaxe básica de Java. Reinaldo Gomes reinaldo@cefet-al.br. O que é a linguagem Java?"
Maria do Carmo Gesser Azenha
1 Programação Orientada a Objetos Elementos Básicos da Linguagem Java Histórico Et Estrutura t de um programa Java Sintaxe básica de Java Reinaldo Gomes Definição O que é a linguagem Java? Linguagem de programação orientada a objetos,, de propósito geral, com suporte nativo à programação concorrente, programação distribuída e à programação para web. Principal fonte de referência: 2 1
2 Histórico Um pouco de história... Janeiro de 1991: A Sun cria o projeto Green; Objetivo do projeto Green: definir uma linguagem portável para programação de aparelhos eletroeletrônicos de consumo geral surge Oak ; Parceria com a Time Warner é desfeita e o projeto Green é quase que totalmente desativado; Em 1993: explosão da Internet e da Web faz os remanescentes do projeto Green direcionarem Oak para aplicações na Internet; Em : Oak torna-se Java; 3 Histórico Um pouco de história... Maio de 1995: Sun anuncia oficialmente Java na SunWorld Expo 95 Dezembro de 1995: a Microsoft assinou um acordo de intenções com a Sun para licenciamento da tecnologia Java; Fevereiro de 1996: Netscape Communications (Navigator) incorporou Java em seu browser Navigator 2.0: surgem os applets; Novembro de 1998: Sun lança plataforma Java
3 Histórico Autores... James Gosling 5 Estrutura do código fonte Java Escrever sistemas em Java consiste em: Escrever classes que implementem partes específicas da funcionalidade do sistema, de acordo com a modelagem feita para o problema A classe é a unidade básica de modularização, compilação e execução Modularização: é a menor unidade idd fíi física de código Compilação: compilam-se classes, não arquivos Execução: a execução de um sistema Java é a execução de sua classe de aplicação 6 3
4 Estrutura do código fonte Java Arquivo: menor unidade compilável de Java Estrutura: Zero ou uma diretiva package Zero ou mais diretivas import Uma ou mais definições de classe (uma é o padrão!) Todo comando Java deve estar contido dentro dos métodos das classes Todo método deve aparecer dentro de alguma classe. 7 Estrutura do código fonte Java Todo arquivo Java deve conter no máximo uma classe com acesso public. O nome do arquivo deve ser o mesmo de sua classe public com a extensão.java. É boa prática de programação declarar apenas uma classe por arquivo, mesmo quando estas pertencerem a um mesmo pacote. 8 4
5 Estrutura do código fonte Java Um sistema em Java: CLASSE COMANDO ARQUIVO MÉTODO PACOTE/DIRETÓRIO 9 Estrutura do código fonte Java Esqueleto de um arquivo com uma classe: [package NomeDoPacote] ] {[import * ou Classe]} public class NomeDaClasse [extends Superclasse] { } <corpo da classe> [ ] indicam opcionalidade { } indicam repetição 10 5
6 Estrutura de uma aplicação Em Java: Desenvolver uma aplicação consiste em escrever classes de objetos As classes podem representar objetos reais do domínio da aplicação ou estruturas abstratas Uma aplicação em execução consiste num conjunto de objetos, criados a partir das classes, trocando mensagens entre si Saber como fatorar a solução do problema em classes requer experiência e prática 11 Estrutura de um código fonte Java Exemplo de um pequeno sistema em Java: Escrever um sistema que leia nome, matrícula e as 3 notas de vários alunos de uma turma e informa suas respectivas médias Quais as entidades do domínio do problema? Aluno Mti Matricula Nome Notas Turma Aluno Matrícula Nome Notas 12 6
7 Estrutura de um código fonte Java Exemplo de uma classe Aluno: public class Aluno { private String nome; private String matricula; private double nota1; private double nota2; private double nota3; } Aluno.java 13 Estrutura de um código fonte Java Adicionando comportamento à classe: public class Aluno { private String nome; private String matricula; private double nota1; private double nota2; private double nota3; métodos de acesso public void setnome(string novo){ nome = novo; } } public String getnome() { return nome; } Um par de métodos getxxx() e setxxx() para cada propriedade 14 7
8 Estrutura de um código fonte Java Adicionando comportamento à classe: public class Aluno { private String nome; private String matricula; private double nota1; private double nota2; private double nota3; //métodos anteriores... método que informa a média do aluno public double getmedia() { return (nota1+nota2+nota3) / 3.0; } } 15 Estrutura de um código fonte Java Exemplo de uma classe de aplicação: public class AppNotas { public static void main (String[] args) { Aluno a = new Aluno(); } a.setnome("joao"); a.setmatricula(" "); a.setnota1(7.0); a.setnota2(8.0); a.setnota3(9.0); t System.out.println("Nome = " + a.getnome()); System.out.println("Media = " + a.getmedia()); AppNotas.java 16 8
9 Estrutura de um código fonte Java Compilando e executando: W:\projetos> javac Aluno.java W:\projetos> javac AppNotas.java W:\projetos> java AppNota Nome = Joao Media = 8.0 Y:\projetos> _ Compilador Java Produz arquivos.class chamados bytecodes 17 Estrutura de um código fonte Java Colaboração entre os objetos AppNotas Aluno main() new setnome("bart") setmatricula(" ") setnota1(7.0)
10 A portabilidade de Java Portabilidade Uso de uma linguagem de máquina virtual (bytecode) Interpreter java Compiler javac Não permite tamanhos diferentes para tipos fundamentais de dados em máquinas diferentes. 19 A portabilidade de Java Portabilidade Write once, run anywhere! Java pode ser executada em qualquer máquina que possua o interpretador Java portado para ela; 20 10
11 Plataformas Java Java atualmente é distribuída em 3 plataformas: Java 2 Enterprise Edition (J2EE): para desenvolvimento de aplicações coorporativas distribuídas Java 2 Standard Edition (J2SE): para desenvolvimento de aplicações desktop comuns Java 2 Micro Edition (J2ME): para desenvolvimento de aplicações embarcadas em equipamentos eletrônicos de baixo consumo (PDAs, celulares, etc.) 21 Plataformas Java Plataformas para diferentes requisitos: 22 11
12 Plataformas Java Pequeno Glossário de Java API Aplication Program Interface ou interface para programação de aplicações (as bibliotecas de Java! É a alma de Java!) JDK Nome antigo do SDK (obsoleto, mas ainda muito usado!) SDK ou J2SDK Software Development Kit: nome do kit da Sun com ferramentas e APIs da linguagem para desenvolvimento Ferramentas do kit: javac, java, jar, javadoc, jdb, etc. JRE Java Runtime Environment: É um pedaço do JDK consistindo apenas do interpretador e algumas poucas ferramentas. É para quem usa e não programa. 23 Elementos Básicos da Linguagem Elementos da linguagem, em ordem crescente de complexidade: Caracteres Tipos de dados, valores literais, identificadores Operadores e expressões Comandos Métodos Classes Pacotes 24 12
13 Caracteres Uso do padrão Unicode: conjunto de caracteres de 16 bits caracteres distintos! Caracteres Unicode são gravados em arquivos usando um formato chamado UTF-8 Inserção de caracteres Unicode no código fonte: \uxxxx \u3c00 = π 25 Comentários Três tipos de comentários: // comentário de linha /* comentário de bloco */ /** Classe <b>cliente</b> Comentário de bloco para o Nome do autor */ 26 13
14 Identificadores Identificadores nomeiam variáveis (membro, locais, parâmetros, etc), métodos e classes Apenas os caracteres especiais "_" e "$" são permitidos, além de letras e números unicode Devem iniciar por uma letra ou pelos símbolos _ ou $ (evite-os, pois o compilador os utiliza) MAIÚSCULAS minúsculas 27 Identificadores (estilo a ser adotado) Classes: Primeira letra de cada palavra maiúscula Ex: MinhaClasse, Pilha Membros de uma classe e variáveis locais: Primeira letra minúscula Ex: idade, marcamodelo, getcor(), getsalariofinal(), i, cont, somatotal Constantes de classe (static final): Todas as letras maiúsculas Ex: PI, MAX_ALUNOS, MEDIA 28 14
15 Palavras reservadas abstract boolean break byte case catch char class const continue default do double else extends false final finally float for goto assert if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while 29 Tipos de Dados em Java Java possui duas categorias de tipos de dados: Tipos primitivos: possuem representações definidas em termos de bytes As variáveis destes tipos guardam valores dentro da faixa definida pelo tipo Tipos referenciáveis: contêm uma referência para os dados na memória, cujas representações são definidas pela classe do objeto As variáveis destes tipos contém um ponteiro p/ objeto 30 15
16 Tipos primitivos Tipo Default Tamanho Domínio boolean false 1bit NA char \u bits \u0000 a \uffff byte 0 8bits -128 a 127 short 0 16bits a int 0 32bits a long 0 64bits a float 0.0f 32bits ±1.4E-45 a ± E+38 double bits ± 4.9E-324 a ± E Tipos primitivos Tipo boolean Dois valores: true e false Tipo char Valores delimitados por apóstrofos: char c = 'c' Uso de literais unicode: char c = \u0041 Caracteres especiais: \b (backspace) \t (tabulação) \n (nova linha) \r (return) \' (apóstrofos) \" (aspas) 32 16
17 Tipos primitivos Tipos inteiros (byte, short, int, long) Literais na base decimal: 0, 1, 123, Literais nas bases hexadecimal e octal: 0xcafe 0377 //51966 em hexa //255 em octal Inteiros(32 bits) x inteiros longos (64bits) L 0xF34L //long //long em hexa 33 Tipos primitivos Tipos de ponto flutuante (float e double) Literais: 0.0, 1.0,.01, -3.5 Notação científica: E02 // x e-6 //1 x 10-6 Literais ponto-flutuante são sempre double! f 6.02e23F //double //float //float 34 17
18 Conversão de tipos Java permite conversões entre inteiros (byte, short,, int,, long), caractere (char)( ) e pontos flutuantes (float e double) O tipo boolean é o único primitivo que não é convertido em nenhum outro Tipos de conversão Conversões ampliadoras (widening conversions) Conversões redutoras (narrowing conversions) 35 Conversões ampliadoras Um valor de um tipo é convertido para um tipo maior, isto é, um representado por mais bits São realizadas automaticamente Exemplos: int i = 20; float f = i; //20 convertido para float int i = A ; Math.sqrt(4); //65 convertido para int //4 convertido para double 36 18
19 Conversões redutoras Um valor é convertido para um tipo com menos bits Não são realizadas automaticamente O programador deve confirmar a redução com um cast, do contrário o código não é compilado Exemplos: cast int i = 13; byte b = i; //Erro de compilação! b = (byte) i; //Ok! i = (int) ; //i recebe Operadores Operadores aritméticos Resultam num valor numérico (inteiro ou ponto flutuante) Operadores de incremento e decremento Resultam num valor numérico (inteiro ou ponto flutuante) Operadores relacionais Resultam num valor booleano (true ou false) Operadores lógicos Produzem um valor booleano 38 19
20 Operadores Operadores de atribuição Executam uma operação seguida de uma atribuição Operador condicional (?:) Condiciona seu valor de retorno a uma expressão lógica Operador instaceof: verifica se um objeto é instância de uma classe Resulta num valor boolean Operador new: instancia uma classe Produz um objeto da classe 39 Operadores aritméticos Símbolos: Adição: + Subtração: - Multiplicação: * Divisão: / Resto da divisão inteira: % Exemplos: c = 7 % 3; //c receberá 1 x = / 2; //x receberá
21 Operadores incremento/decremento Símbolos: Incremento: ++ Decremento: -- O comportamento deste operador depende da posição relativa ao operando Exemplos: c = 10; c++; //c 11 y=1; x=0; z=0; x = y++; //x 1 e y 2 z = ++x; //z 2 e x 2 41 Operadores relacionais Símbolos: Maior que, maior ou igual a: >, >= Menor que, menor ou igual a: <, <= Igual a: == Diferente de:!= Exemplos: if ( c == 10 )... return x!= null; 42 21
22 Operadores lógicos ou booleanos Símbolos: AND: && ou & OR: ou NOT:! XOR: ^ Exemplos: (c!= 0) && (a > (x/c)) //ok (c!= 0) & (a > (x/c)) //erro se c==0!(a > b) 43 Operadores de atribuição Símbolos: Aritméticos+atribuição: +=, -=, *-, /= e %= Equivalem a uma soma entre o operando da direita e o operando da esquerda seguida por uma atribuição Forma geral: var op= valor var = var op valor Exemplos: c += 5; //c = c + 5 a -= b; //a = a b f %= (c+a); //f = f % (c+a) e += 1; // e++ ou e = e
23 Operador condicional Símbolo: Operador ternário:?: Equivale a um comando de decisão que resulta num valor Sintaxe: expr_booleana? expressaov : expressãof Exemplos: j = (a>b)?a:b; a = (a!= null)? a : "<vazio>"; v = r>0? 10 : 10.5; //erro! a = (x<y)&&(z<y)? y : ((x<z)? z : x); 45 Operador instanceof Sintaxe: (objeto j ou array) instanceof nomedaclasse Retorna true se o objeto for instância da classe Exemplos: "string" instanceof String //true "" instanceof Object //true null instanceof Object //false 46 23
24 Operador new Sintaxe: new construtor_da_classe Cria um objeto da classe especificada no construtor Exemplos: c = new Cliente("Bart", "Springfield"); linguagem = new String("Java"); venda.adicioneproduto(new di i d Produto()); faixa = new int[] {1,2,3,4,5}; 47 Operadores (P)recedência e (A)ssociatividade P A Operador 15 E. [ ] ( params ) D + -! 13 D new ( tipo ) 12 E * / % 11 E (concatenação de strings) 10 E << >> <<< 9 E < <= > >= instanceof 48 24
25 Operadores P A Operador 8 E p == p p!= p r == r r!= r (p=primitivo, r=referência) 7 E & 6 E ^ 5 E 4 E && 3 E 2 D?: 1 D = *= /= %= += -= <<= >>= >>>= &= ^= = 49 Comandos Estruturas de decisão: if-else e switch-case case Estruturas de repetição: for, while e do-while Tratamento de exceções: throw e try-catch-finally y Desvio de fluxo: break, continue e return 50 25
26 Comando simples x bloco de comandos Um comando em Java pode ser um comando simples ou um bloco de comandos Um comando simples pode ser: uma expressão, um dos comandos anteriores ou uma ativação de método; Um bloco de comandos é um conjunto de um ou mais comandos simples delimitados por "{" e "}" e separados entre si por ";". 51 Comando if-else Sintaxe: if ( expr_booleana ) comando simples ou bloco; else comando simples ou bloco; Exemplo: if (a>b) maior = a; else maior = b; if (n!= 0){ c += n; n = 0; } else c++; 52 26
27 Comando switch-case Sintaxe: switch ( var_inteira ) { } Exemplo: [case val: comando ou bloco; break;] 1-n [default: comando ou bloco; break;] 0-1 (char byte short int) switch (mes) { case 1: nome = "Janeiro"; break; case 2: nome = "Fevereiro"; break; case 3: nome = "Março"; break; case 4: nome = "Abril"; break; default: nome = "Mês inválido"; break; } 53 Comando for Sintaxe: for ( inic; teste; inc ) comando simples ou bloco; Onde: inic: inicialização da variável contadora. A variável também pode ser declarada aqui. teste: expressão booleana que determina a parada ou continuação do laço inc: incremento da variável contadora Interessante todas as três cláusulas são opcionais! 54 27
28 Comando for Exemplos: int i; for (i=0 ; i<10 ; i++) x += 5; //outra forma for (int i=0 ; i<10 ; i++) x += a[i]; i só pode ser usada no corpo do laço for //laço infinito i for( ;; ) { if (x!= null) break; else {... } } 55 Comando for Exemplos: //mais de uma variável declaradas for (int i=0, j=10 ; i<10 ; i++, j--) soma += i*j; ; //não precisa ser uma contagem for (Node n = cabeca ; n!=null ; n=n.next()) System.out.println(n); //laço vazio (e possível erro de compilação) for (int i=0 ; i<10 ; i++); soma += i; 56 28
29 Comando while Sintaxe: while ( expressão ) comando ou bloco; Onde: expressão: expressão que retorne um booleano Se o valor for true, o corpo do laço é executado Se for false, o laço é encerrado Pode ser análogo a um for, desde que se acrescente uma operação de inicialização antes do comando 57 Comando while Exemplos: int c=0; while (c < 10) { System.out.println(c); c++; } //equivale a for (int c=0; c<10 ;c++) System.out.println(c); c só pode ser usada no corpo do laço for 58 29
30 Comando do-while Sintaxe: do comando ou bloco; while (expressão); Onde: expressão: expressão que retorne um booleano O laço do-while é executado pelo menos uma vez Só pára se a expressão for false (cuidado para não confundi-lo como repeat-until do Pascal) 59 Comando do-while Exemplos: //equivalente ao laço while do exemplo int c=0; do { System.out.println(c); c++; } while (c < 10); 60 30
31 Comando break Sintaxe: break; Objetivo: Faz a execução saltar para o final de um dos comandos: while, do-while, for ou switchcase No comando switch-case seu uso é necessário para evitar que a execução de uma cláusula case continue na seguinte 61 Comando break Exemplo:... for (int i=0; i<dados.length ;i++) { if (dados[i] == procurado) { posicao = i; break; } } //a execução continua daqui
32 Comando continue Sintaxe: continue; Objetivo: Interrompe a iteração atual do laço e inicia a próxima Só pode ser usado dentro de laços while, dowhile e for while: volta para o início do laço e testa a condição de parada para decidir se entra no laço ou não do-while: vai para o final do laço, onde a condição de parada é testada para decidir se entra no laço ou não for: volta para o início, executa o incremento e depois o teste 63 Comando continue Exemplo:... for (int i=0; i<dados.length ;i++) { if (dados[i] == VAZIO) continue; processe(dados[i]); }
33 Comando return Sintaxe: return; ou return expressão; Objetivo: Pára a execução do método corrente Métodos com tipo de retorno void pedem a primeira sintaxe do return Métodos que retornam dados d pedem a segunda 65 Comando return Exemplos: String informenome() { return this.nome; } public void insereproduto(produto item) { if (item == null) return; itens.add(item); } 66 33
34 Objetivos: Implementar classes simples Testar classes implementadas Executar uma classe de aplicação Aula Prática 2 67 Bibliografia [1] Booch, G. Object Oriented Design [2] Campione, M. Walrath, K. The Java Tutorial. Disponível em [3] Flanagan, D. Java in a Nutshell. O'Reilly
35 Programação Orientada a Objetos Elementos Básicos da Linguagem Java Histórico Et Estrutura t de um programa Java Sintaxe básica de Java Reinaldo Gomes Operadores P A Operador 8 E p == p p!= p r == r r!= r (p=primitivo, r=referência) 7 E & (bitwise) & (lógico) 6 E ^ (bitwise) ^ (lógico) 5 E (bitwise) (lógico) 4 E && 3 E 2 D?: 1 D = *= /= %= += -= <<= >>= >>>= &= ^= = 70 35
Java: Sintaxe slides: jfsintaxe Tipos, variáveis, operadores e comandos Métodos e classes Arranjos, Strings e outras classes Frederico Costa Guedes Pereira 2000 Em Java: Desenvolver uma aplicação consiste