PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena

Slides:



Advertisements
Apresentações semelhantes
Programação orientada a objetos
Advertisements

Programação em Java Prof. Maurício Braga
Soluções Iterativas com Laços
Capítulo 1 Introdução.
Introdução a Linguagem Java
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
Histórico do Java 1990 James Gosling (Sun Microsystems)
Recursividade Inhaúma Neves Ferraz
Projeto de Software Orientado a Objetos
Rebeca Schroeder Linguagem Java Rebeca Schroeder
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Membros estáticos.
Capítulo 1 Conceitos Gerais.
Treinamento no GRADEp HelloWorld Args. Slide 2 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - julho 2005 HelloWorld e Args Autoria Autora.
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Programação orientada a objetos com Java
Laboratório de Programação de Computadores I
Documentando con Javadoc
Roteiro Para o Trabalho do Módulo
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Introdução a Programação JAVA
Estrutura de Dados em Java
DIAGRAMA DE COMPONENTES
Desenvolvimento de Projetos e Aplicações Web
Linguagem de Programação JAVA
JAVA: Conceitos Iniciais
Concorrência em Java Threads em Java.
Unidade I: “Dê um mergulho rápido”
Programação Orientada a Objetos com Java
Capítulo 2 Java Servlets.
JAVA Linguagem Ambiente de Desenvolvimento
Introdução a Java: Classes, métodos e variáveis Eduardo Figueiredo 24 de Março de 2010 POOAula 05.
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Programação I Aula 2 (Métodos)
Entendendo as definições de classe
OPERADORESOPERADORES SCJP – Otimize-TI. Operadores Java Resultado: Maioria das operações é um booleano ou numérico. Não podem ser sobrecarregados (Existem.
Linguagem de Programação JAVA
Introdução a aplicativos Java
Configuração do Ambiente de Desenvolvimento
Introdução à Linguagem Java
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Programação I Laboratório I
By Ducheno Kelly Centro de Formação São Domingos.
Programação Orientada a Objetos Curso de Engenharia da Computação Parte 03 – Conceitos Básicos III Prof. Fabricio Mota Oliveira
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
3/4/2015 Prof. Msc George Cabral Bacharelado em Sistema de Informação Ambientes de Desenvolvimento de Software.
Wagner Santos C. de Jesus
Abr-17 Atividades, Artefatos e Responsáveis da Disciplina de Análise e Projeto Fluxo de análise e projeto.
Laboratório I Mateus Raeder Material baseado nos originais da Profa. Denise Bandeira.
Programação Orientada a Objetos - Java
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Utilizando UML e Padrões Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Março de 2010.
Java Básico Instrutor: Davi Pires
JAVA Sintaxe.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Introdução JAVA Faculdade Mauricio de Nassau
Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas.
Introdução a Programação Orientada a Objetos
Java Disciplina: Programação II Professora: Mai-Ly Vanessa.
Igor Steinmacher, MSc. Java!!!!
Introdução Sintaxe Básica da Linguagem JAVA
Ferramentas para desenvolvimento Java
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Eclipse Hello World.
Laboratório de Programação II Método main Dados e Métodos de Classes.
Prof. Cristian Rodrigo Dalcico. Linguagem de Programação Java Aula 1.
Introdução à plataforma Java. 2 A tecnologia Java Java: linguagem de programação e plataforma de desenvolvimento Criada pela Sun Microsystems Apoiada.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Transcrição da apresentação:

PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena Rodrigo Paes Gustavo Carvalho Cidiane Lobato

2 © LES/PUC-Rio Conteúdo Módulo 1: Java I – 4 horas –Sintaxe [1] –IDE Eclipse [2] Módulo 2: Orientação a Objetos com Java I – 8 horas –Herança –Polimorfismo –Associação –Delegação –Collections Módulo 3: Java II – 12 horas –Manipulação de arquivos –Persistência JDBC –Sockets Módulo 4: UML – 4 horas –Casos de Uso –Seqüência –Colaboração –Classes Módulo 5: Qualidade de Software I – 4 horas –Teste –Assertiva de execução Módulo 6: Orientação a objetos com Java II – 8 horas –Padrões de projeto –Frameworks

3 © LES/PUC-Rio Conteúdo Módulo 7: Java III – 12 horas –Mapeamento OO --> ER –Persistência Hibernate Módulo 8: Desenvolvimento WEB I – 16 horas –Servlets, JSP, Desenvolvimento de taglibs –Arquitetura 3 camadas –MVC básico Módulo 9: Desenvolvimento WEB II – 20 horas –MVC Struts –Internacionalização Módulo 10: Desenvolvimento WEB III – 28 horas –MVC Spring –Testes na camada WEB –Appfuse

Visão Geral de Java Linguagem e Plataforma HelloWorldApp

5 © LES/PUC-Rio Visão Geral: Linguagem e Plataforma Basicamente formada por uma linguagem de programação e uma plataforma, ambas denominadas Java. Como uma linguagem de programação: javac java

6 © LES/PUC-Rio Visão Geral: Linguagem e Plataforma Como plataforma, possui dois componentes: Java Virtual Machine (JVM) e Application Programming Interface (API). A plataforma disponibiliza as seguintes características: –Ferramentas de Desenvolvimento: compilação, execução, monitoração, depuração e documentação de aplicações. As principais são o compilador (javac), o interpretador (java) e a ferramenta de documentação (javadoc). –API: funcionalidades de Java prontas para uso em aplicações: GUIs, sockets, RMI, segurança, XML e banco de dados.

7 © LES/PUC-Rio Visão Geral: HelloWorldApp (Requisitos) Para escrever uma aplicação Hello World no Windows: –J2SE TM Development Kit 5.0 (JDK 5.0, não JRE 5.0); –um editor de textos, como o NotePad; –em vez de um editor, é possível também utilizar um Integrated Development Environment (IDE): NetBeans, Eclipse, etc. Passos para criar a aplicação HelloWorldApp: –criar o código fonte: texto na linguagem Java escrito no editor de textos ou no IDE; –compilar o código fonte: o compilador javac traduz o código fonte para bytecodes; –executar a aplicação: o interpretador java usa o JVM para executar os bytecodes.

8 © LES/PUC-Rio Visão Geral: HelloWorldApp (Edição) /** * The HelloWorldApp class implements an application that * simply displays "Hello World!" to the standard output. */ class HelloWorldApp { public static void main(String[] args) { //Display "Hello World!" System.out.println("Hello World!"); }

9 © LES/PUC-Rio Visão Geral: HelloWorldApp (Edição)

10 © LES/PUC-Rio Visão Geral: HelloWorldApp (Comando)

11 © LES/PUC-Rio Visão Geral: HelloWorldApp (Comando)

12 © LES/PUC-Rio Visão Geral: HelloWorldApp (Compilação) Para compilar a aplicação, execute o comando javac HelloWorldApp.java.

13 © LES/PUC-Rio Visão Geral: HelloWorldApp (Compilação) O compilador gera o arquivo HelloWorldApp.class.

14 © LES/PUC-Rio Visão Geral: HelloWorldApp (Execução) Para executar a aplicação, execute o comando java HelloWorldApp.

15 © LES/PUC-Rio Visão Geral: HelloWorldApp (Código) /** * The HelloWorldApp class implements an application that * simply displays "Hello World!" to the standard output. */ class HelloWorldApp { public static void main(String[] args) { //Display "Hello World!" System.out.println("Hello World!"); } Comentários Classe Método main Variáveis e métodos de classe e de instância

16 © LES/PUC-Rio Visão Geral: HelloWorldApp (Comentários) Comentários utilizados são de dois tipos: –/** documentation */ Comentário de documentação, usado pela ferramenta javadoc na geração automática de documentação. –// text O compilador ignora tudo a partir de // até o final da linha. Existe ainda o /* text */, significando que o compilador deve ignorar o texto em uma ou mais linhas entre /* e */.

17 © LES/PUC-Rio Visão Geral: HelloWorldApp (Classe) Uma classe é um template de dados e comportamento associado com instâncias da classe, chamadas objetos. Os dados são guardados em variáveis. O comportamento é implementado por métodos, similares a funções C. Por exemplo, a classe Rectangle: –Instâncias : piso de um escritório, página de um caderno, etc. –Variáveis: origem, largura e altura de um retângulo. –Métodos: cálculo e retorno da área de um retângulo. Em Java, a definição começa pela palavra class e é delimitada por { e }. "Hello WorldApp" não possui variáveis e possui um único método denominado main.

18 © LES/PUC-Rio Visão Geral: HelloWorldApp (Main) Toda aplicação (não toda classe!) deve possuir um método public static void main(String[] args) {...}. O argumento pode ter qualquer nome, mas "args" é padrão. Os modificadores public e static podem ser escritos em qualquer ordem, mas public static é padrão. A assinatura do método contém três modificadores: –public, pode ser invocado por qualquer objeto; –static, método de classe (oposto a método de instância); –void, o método não retorna valor. Quando o interpretador executa a aplicação, começa por chamar o método main; este chama os outros métodos.

19 © LES/PUC-Rio Visão Geral: HelloWorldApp (System) HelloWorldApp usa System, classe Java que fornece funcionalidades independentes de sistema às aplicações. Em HelloWorldApp, a linha System.out.println() ilustra o uso de uma variável de classe e de um método de instância de System (out e println, respectivamente). Variáveis ou métodos de classe possuem (API) ou devem possuir (aplicações de usuário) static em sua definição. out é uma variável de classe que se refere a uma instância de PrintStream, classe Java que implementa a saída padrão. out é instanciada por System.

Sintaxe da Linguagem Java

21 © LES/PUC-Rio Elementos Básicos da Sintaxe de Java BasicsDemo soma os números de 1 a 10 e mostra a soma: public class BasicsDemo { public static void main(String[] args) { int sum = 0; for (int current = 1; current <= 10; current++) { sum += current; } System.out.println("Sum = " + sum); } } Variáveis? Operadores? Comandos, blocos? =, <=, ++, +=, + args, sum, current ; (seqüência), for (repetição)

22 © LES/PUC-Rio Variáveis: Definições Variável: é um item de dado identificado em um escopo. Identificador: é uma seqüência de tamanho não-limitado de caracteres Unicode começando por uma letra. Para cada variável, nome e tipo devem ser especificados: –nome: referência ao dado que uma variável armazena; –tipo: determina quais valores podem ser armazenados e quais operações podem ser executadas sobre eles; –forma geral de declaração: tipo nome. Escopo: seção de código onde uma variável pode ser referenciada, determinado implicitamente pelo local de declaração da variável.

23 © LES/PUC-Rio Variáveis: Exemplo public class MaxVariablesDemo { public static void main(String args[]) { //integers byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE; int largestInteger = Integer.MAX_VALUE; long largestLong = Long.MAX_VALUE; //real numbers float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; //other primitive types char aChar = 'S'; boolean aBoolean = true; //Display them all. System.out.println("The largest byte is " + largestByte + "."); //...

24 © LES/PUC-Rio Variáveis: Exemplo System.out.println("The largest short is " + largestShort + "."); System.out.println("The largest integer is " + largestInteger + "."); System.out.println("The largest long is " + largestLong + "."); System.out.println("The largest float is " + largestFloat + "."); System.out.println("The largest double is " + largestDouble + "."); if (Character.isUpperCase(aChar)) { System.out.println("The character " + aChar + " is uppercase."); } else { System.out.println("The character " + aChar + " is lowercase."); } System.out.println("The value of aBoolean is " + aBoolean + "."); }

25 © LES/PUC-Rio Variáveis: Exemplo Saída do programa MaxVariablesDemo: The largest byte is 127. The largest short is The largest integer is The largest long is The largest float is E38. The largest double is E308. The character S is uppercase. The value of aBoolean is true.

26 © LES/PUC-Rio Variáveis: Tipos Tipo: determina quais valores podem ser armazenados e quais operações podem ser executadas sobre eles. Por exemplo, em MaxVariablesDemo, int largestInteger declara que largestInteger possui um tipo inteiro (int): –inteiros podem conter somente valores integrais positivos ou negativos; –e ser manipulados em operações aritméticas. Existem duas categorias de tipos de dados: –primitivo: contém um único valor de tamanho e formato especificado pela linguagem; –referência: um elemento de dado cujo valor é um endereço.

27 © LES/PUC-Rio Variáveis: Tipos Primitivos Data TypeDescriptionSize/Format Integers byte short int long Byte-length integer Short integer Integer Long integer 8-bit two's complement 16-bit two's complement 32-bit two's complement 64-bit two's complement Real numbers float double Single-precision floating point Double-precision floating point 32-bit IEEE bit IEEE 754 Other types char boolean A single character A boolean value (true or false) 16-bit Unicode character true or false

28 © LES/PUC-Rio Variáveis: Referências Ex.: collections, classes e interfaces são referências. Variável-referência: é uma referência a (um endereço de) um conjunto de valores representados pela variável. Uma referência é chamada de ponteiro ou endereço de memória em outras linguagens. Java não dá suporte explícito ao uso de ponteiros; em vez disso, é necessário utilizar o nome de uma variável.

29 © LES/PUC-Rio Variáveis: Nomes Nome: referência ao valor que uma variável armazena. Por exemplo, para se referir ao valor de largestByte, MaxVariablesDemo usa o nome largestByte. Regras para o nome de uma variável: –deve ser um identificador legal, isto é, uma seqüência de caracteres Unicode começando por uma letra; –não deve ser uma palavra reservada (true, false, null, etc.); –deve ser única dentro de um escopo. Convenções: –nomes de variáveis começam com letra minúscula e nomes de classes começam com letra maiúscula; –se o nome de uma variável possui mais de uma palavra, cada uma deve começar por uma letra maiúscula, menos a primeira.

30 © LES/PUC-Rio Variáveis: Escopos Escopo é a seção de código onde uma variável pode ser referenciada pelo seu nome: –determina os instantes em que o sistema cria e destrói memória para a variável; –difere de visibilidade, que é aplicada somente a uma variável de membro a fim de determinar se tal variável pode ser usada fora da classe onde é declarada. A localização da declaração da variável define o escopo: –variável de membro; –variável local; –parâmetro de método ou construtor; –parâmetro de tratador de exceção.

31 © LES/PUC-Rio Variáveis: Escopos Variável de Membro: –declarada em uma classe, mas fora de qualquer método ou construtor; –o escopo é toda a classe, mas a declaração deve aparecer antes da inicialização da variável. Variável Local: –declarada dentro de um bloco de código; –o escopo se estende desde a declaração até o final do bloco; Parâmetro de método ou construtor: –usado para passagem de valor a um método ou construtor; –o escopo é todo o método ou construtor onde o parâmetro é declarado. Parâmetro de tratador de exceção: –similar ao anterior, mas o valor é passado a um tratador de exceções; –o escopo é o bloco de código entre { e } que segue um comando catch.

32 © LES/PUC-Rio Variáveis: Escopos Considere a porção de código seguinte: 1: if (...) { 2:int i = 17; 3:... 4: } 5: System.out.println("The value of i = " + i); Erro de compilação: a variável local i está sendo usada fora de seu escopo na linha 5! Soluções possíveis: ou a declaração da variável deve ser realizada fora do bloco if, ou a chamada ao método println deve ser movida para dentro deste bloco.

33 © LES/PUC-Rio Variáveis: Inicialização Variáveis locais e de membro podem ser inicializadas através de uma atribuição onde são declaradas. Parâmetros de método, construtor e tratador devem ser inicializados pelo chamador. Abaixo, o código de inicialização está em negrito: byte largestByte = Byte.MAX_VALUE; short largestShort = Short.MAX_VALUE;... float largestFloat = Float.MAX_VALUE; double largestDouble = Double.MAX_VALUE; char aChar = 'S'; boolean aBoolean = true;

34 © LES/PUC-Rio Variáveis: Modificador final Uma variável é dita final quando seu valor não pode ser alterado após sua inicialização (conceito de constantes). Tentativas de modificação do valor de uma variável final resultam em erro de compilação. Na declaração de uma variável final, a palavra final vem antes antes do tipo: final int aFinalVar = 0; É possível postergar a inicialização de uma variável final: final int blankfinal;... blankfinal = 0;

35 © LES/PUC-Rio Variáveis: Sumário A declaração geral de uma variável em Java é tipo name. Uma variável pode ser um tipo primitivo ou uma referência: –um tipo primitivo contém um valor único com tamanho e formato pré-definido e uma referência contém um ponteiro para um valor; –collections, classes e interfaces são variáveis-referências. A localização da declaração de uma variável define seu escopo: (i) de membro, (ii) local, (iii) de parâmetro de método ou construtor, e (iv) de parâmetro de tratador. A inicialização de uma variável é feita através de atribuição. O valor de uma variável final não pode ser modificado após a inicialização da variável.

36 © LES/PUC-Rio Operadores Operador: função de um, dois ou três operandos. –++ é um operador unário que incrementa o operando em 1. –= é um operador binário que atribui o valor do operando do lado direito no operando do lado esquerdo; –?: é um operador ternário equivalente ao comando if-else. Operadores unários suportam notação prefixa ou posfixa: –prefixa: operador aparece antes do operando. Ex: ++cont; –posfixa: operador aparece após o operando. Ex: cont ++. Operadores binários utilizam notação infixa, isto é, o operador aparece entre os operandos. Ex: cont1 + cont2. O operador ternário também é infixo: op1 ? op2 : op3.

37 © LES/PUC-Rio Operadores Como uma função, um operador retorna um valor. O valor retornado depende do operador e do tipo dos operandos. –Por exemplo: operadores aritméticos, como os de adição e substração, retornam números (não letras!); –se a adição é de inteiros, retorna um número inteiro; se é de reais, retorna um real, e assim por diante. Operadores são classificados em: –aritméticos; –relacionais; –condicionais; –atribuição; –outros.

38 © LES/PUC-Rio Operadores Aritméticos OperadorUsoDescrição +op1 + op2Adiciona op1 e op2; também usado para concatenação de strings -op1 - op2Substrai op2 de op1 *op1 * op2Multiplica op1 por op2 /op1 / op2Divide op1 por op2 %op1 % op2Calcula resto da divisão de op1 por op2

39 © LES/PUC-Rio Operadores Aritméticos: Exemplo (Código) public class ArithmeticDemo { public static void main(String[] args) { //a few numbers int i = 37; int j = 42; double x = ; double y = 7.22; //adding numbers System.out.println("Adding..."); System.out.println(" i + j = " + (i + j)); System.out.println(" x + y = " + (x + y));

40 © LES/PUC-Rio Operadores Aritméticos: Exemplo (Código) //subtracting numbers System.out.println("Subtracting..."); System.out.println(" i - j = " + (i - j)); System.out.println(" x - y = " + (x - y)); //multiplying numbers System.out.println("Multiplying..."); System.out.println(" i * j = " + (i * j)); System.out.println(" x * y = " + (x * y)); //dividing numbers System.out.println("Dividing..."); System.out.println(" i / j = " + (i / j)); System.out.println(" x / y = " + (x / y)); //...

41 © LES/PUC-Rio Operadores Aritméticos: Exemplo (Código) //computing the remainder resulting //from dividing numbers System.out.println("Computing the remainder..."); System.out.println(" i % j = " + (i % j)); System.out.println(" x % y = " + (x % y)); //mixing types System.out.println("Mixing types..."); System.out.println(" j + y = " + (j + y)); System.out.println(" i * x = " + (i * x)); }

42 © LES/PUC-Rio Operadores Aritméticos: Exemplo (Saída) Variable values... i = 37 j = 42 x = y = 7.22 Adding... i + j = 79 x + y = Subtracting... i - j = -5 x - y = Multiplying... i * j = 1554 x * y = Dividing... i / j = 0 x / y = Computing the remainder... i % j = 37 x % y = Mixing types... j + y = i * x =

43 © LES/PUC-Rio Operadores Aritméticos Tipo do Resultado Tipos dos Operandos long Nenhum operando é float ou double (aritmética de inteiros); pelo menos um é long. intNenhum operando é float, double ou long. doublePelo menos um operando é double. floatPelo menos um operando é float; nenhum operando é double. Quando um inteiro e um real são usados como operandos em uma mesma operação aritmética, o resultado é um real. O inteiro é implicitamente convertido em um real antes que a operação seja efetivada.

44 © LES/PUC-Rio Operadores Aritméticos OperadorUsoDescrição ++op++Incremento de 1; avalia o valor de op antes do incremento ++++opIncremento de 1; avalia o valor de op depois do incremento --op-- Decremento de 1; avalia o valor de op antes do incremento ----opDecremento de 1; avalia o valor de op depois do decremento

45 © LES/PUC-Rio Operadores Relacionais OperadorUsoDescrição >op1 > op2Retorna true se op1 é maior que op2 >=op1 >= op2Retorna true se op1 é maior/igual a op2 <op1 < op2Retorna true se op1 é menor que op2 <=op1 <= op2 Retorna true se op1 is menor que ou igual a op2 ==op1 == op2Retorna true se op1 e op2 são iguais !=op1 != op2Retorna true se op1 e op2 não são iguais

46 © LES/PUC-Rio Operadores Relacionais: Exemplo (Código) public class RelationalDemo { public static void main(String[] args) { //a few numbers int i = 37; int j = 42; int k = 42; System.out.println("Variable values..."); System.out.println(" i = " + i); System.out.println(" j = " + j); System.out.println(" k = " + k); //...

47 © LES/PUC-Rio Operadores Relacionais: Exemplo (Código) //greater than System.out.println("Greater than..."); System.out.println(" i > j = " + (i > j)); //false System.out.println(" j > i = " + (j > i)); //true System.out.println(" k > j = " + (k > j)); //false // they are equal //greater than or equal to System.out.println("Greater than or equal to..."); System.out.println(" i >= j = " + (i >= j)); //false System.out.println(" j >= i = " + (j >= i)); //true System.out.println(" k >= j = " + (k >= j)); //true //...

48 © LES/PUC-Rio Operadores Relacionais: Exemplo (Código) //less than System.out.println("Less than..."); System.out.println(" i < j = " + (i < j)); //true System.out.println(" j < i = " + (j < i)); //false System.out.println(" k < j = " + (k < j)); //false //less than or equal to System.out.println("Less than or equal to..."); System.out.println(" i <= j = " + (i <= j)); //true System.out.println(" j <= i = " + (j <= i)); //false System.out.println(" k <= j = " + (k <= j)); //true //...

49 © LES/PUC-Rio Operadores Relacionais: Exemplo (Código) //equal to System.out.println("Equal to..."); System.out.println(" i == j = " + (i == j)); //false System.out.println(" k == j = " + (k == j)); //true //not equal to System.out.println("Not equal to..."); System.out.println(" i != j = " + (i != j)); //true System.out.println(" k != j = " + (k != j)); //false }

50 © LES/PUC-Rio Operadores Relacionais: Exemplo (Saída) Variable values... i = 37 j = 42 k = 42 Greater than... i > j = false j > i = true k > j = false Greater than or equal to... i >= j = false j >= i = true k >= j = true Less than... i < j = true j < i = false k < j = false Less than or equal to... i <= j = true j <= i = false k <= j = true Equal to... i == j = false k == j = true Not equal to... i != j = true k != j = false

51 © LES/PUC-Rio Operadores Condicionais Por exemplo, no caso de &&, o segundo operando pode não ser avaliado. Avalie a expressão a seguir: (numChars < LIMIT) && (...) OperadorUsoDescrição && op1 && op 2 Retorna true se op1 e op2 são ambos verdadeiros; condicionalmente avalia op2 ||op1 || op2Retorna true se op1 ou op2 é verdadeiro; condicionalmente avalia op2 !!opRetorna true se op é false

52 © LES/PUC-Rio Operadores Condicionais Se numChars é maior que ou igual a LIMIT, o operando da esquerda é false, e então o retorno de && pode ser determinado sem avaliação do operando da direita. Isto tem importantes implicações no caso de operandos da direita com efeitos colaterais, tais como leitura de arquivo, atualização de um valor, ou cálculo de uma expressão.

53 © LES/PUC-Rio Operadores de Atribuição OperadorUsoDescrição =op1 = op2Atribui o valor da direita à esquerda +=op1 += op2Equivalente a op1 = op1 + op2 -=op1 -= op2Equivalente a op1 = op1 - op2 *=op1 *= op2Equivalente a op1 = op1 * op2 /=op1 /= op2Equivalente a op1 = op1 / op2 %=op1 %= op2Equivalente a op1 = op1 % op2 &=op1 &= op2Equivalente a op1 = op1 & op2 |=op1 |= op2Equivalente a op1 = op1 | op2 ^=op1 ^= op2Equivalente a op1 = op1 ^ op2

54 © LES/PUC-Rio Outros Operadores OperadorUsoDescrição ?: op1 ? op2 : op3Se op1 é true, retorna op2; se não, retorna op3 [] Vetores Usado para criar vetores, bem como acessar seus elementos (params)Métodos Delimita um lista de parâmetros separados por vírgula (type) (type) opConverte op para o tipo especificado; uma exceção é levantada se o tipo de op é incompatível com type newObjetos e VetoresCria um novo objeto ou vetor instanceofop1 instanceof op2Retorna true se op1 é uma instância de op2

55 © LES/PUC-Rio Expressões, Comandos e Blocos Literais, variáveis e operadores podem ser combinados para formar expressões. Expressões são segmentos de código que executam operações e retornam valores. As expressões são invocadas dentro de comandos unidades completas de execução. Pelo agrupamento de comandos entre { e }, são criados blocos de código.

56 © LES/PUC-Rio Expressões, Comandos e Blocos class MaxVariablesDemo { //... //other primitive types char aChar = 'S' ; boolean aBoolean = true; //display them all System.out.println("The largest byte value is " + largestByte); //... if (Character.isUpperCase(aChar)) {... } //... } Expressões Comandos Bloco

57 © LES/PUC-Rio Expressões, Comandos e Blocos Em expressões compostas, parênteses devem ser utilizados para indicar qual expressão deve ser avaliada primeiro. Sem o uso de parênteses, Java avalia a expressão composta de acordo com sua própria ordem de precedência. Um comando deve terminar sempre com um ponto-e- vírgula (;). Mesmo não sendo necessário, recomenda-se o uso de { e } quando um bloco possui somente um comando.

58 © LES/PUC-Rio Comandos de Fluxo de Controle Sem comandos de fluxo, as instruções são executadas: –na ordem em que aparecem no código, –da esquerda para a direita, –de cima para baixo. Comandos de fluxo de controle são usados para especificar: –que alguns comandos são executados apenas quando certas condições são verdadeiras; –a repetição da execução de um bloco de comandos; –a mudança do fluxo de controle seqüencial. char aChar;... if (Character.isUpperCase(aChar)) { System.out.println("The character " + aChar + " is uppercase."); }

59 © LES/PUC-Rio Comandos de Fluxo de Controle Tipo de ComandoPalavra-reservada Repetiçãowhile, do-while, for Decisãoif-else, switch-case Tratamento de Exceçãotry-catch-finally, throw Quebra de Fluxobreak, continue, label:, return

60 © LES/PUC-Rio Generics - Introdução Até a versão 1.4 do Java (JDK 1.4) as classes de coleção (Vector, List, ArrayList e etc) guardavam objetos do tipo Object. Objetos de quaisquer classes podiam ser inseridos em uma coleção uma vez que todas as classes são descendentes de Object. Quando um objeto era retirado da coleção era necessário descobrir o seu tipo e, então, realizar um cast.

61 © LES/PUC-Rio Cast de Um Elemento de Uma Coleção import java.util.*; public class ClasseX { private Vector lista=new Vector(); public void op1() { String p; // código do método for(int i=0;i<lista.size();i++) { p=(String) lista.get(i); }

62 © LES/PUC-Rio Generics - Motivação Este tipo de programação não é segura, pois apenas em tempo de execução é possível saber o tipo de um elemento de uma coleção. No exemplo anterior, se lista.get(i) não for um objeto do tipo String ocorrerá uma exceção. Para tornar a programação mais segura, a Sun introduziu o conceito de generics a partir da versão 1.5 do Java. Com o uso dos generics é possível definir que uma coleção armazene um tipo específico de objetos. Dessa forma, não será necessário realizar um cast quando se retirar um elemento de uma coleção, permitido assim que verificação de tipos seja feita em tempo de compilação.

63 © LES/PUC-Rio Declaração O primeiro passo para criar uma coleção de um determinado tipo é declarar a coleção e o tipo desejado entre chaves angulares: private Vector lista; O segundo passo é criar um objeto Vector que armazene apenas objetos do tipo Integer: lista=new Vector ();

64 © LES/PUC-Rio Iteração Veja que agora para iterar sobre uma coleção e obter os elementos armazenados na mesma, não é mais necessário realizar um cast: Integer p; // código do método for(int i=0;i<lista.size();i++) { p=lista.get(i); System.out.println(p); }

65 © LES/PUC-Rio Exemplo Completo import java.util.*; public class ClasseX { private Vector lista; public void op1() { Integer p; // código do método for(int i=0;i<lista.size();i++) { p=lista.get(i); System.out.println(p); } ClasseX(Integer s) { lista=new Vector (); lista.add(s); }

Projeto Java no Eclipse

67 © LES/PUC-Rio Características Gerais do Eclipse Eclipse é um software livre em código aberto desenvolvido pela Eclipse Foundation, com recursos provenientes de empresas como IBM Rational e Borland. Eclipse é um IDE com arquitetura baseada em plugins: –o IDE Java é apenas um dos plugins; –é possível desenvolver plugins para uso proprietário.

68 © LES/PUC-Rio Criando Projeto: New Project

69 © LES/PUC-Rio Criando Projeto: Java Project

70 © LES/PUC-Rio Criando Projeto: Nome, Localização e Layout

71 © LES/PUC-Rio Visualizando Projeto: Open Perspective

72 © LES/PUC-Rio Configurando Projeto: Properties

73 © LES/PUC-Rio Configurando Projeto: Java Build Path

74 © LES/PUC-Rio Configurando Projeto: Add Library

75 © LES/PUC-Rio Configurando Projeto: JRE System Library

76 © LES/PUC-Rio Configurando Projeto: Installed JRE Environments

77 © LES/PUC-Rio Configurando Projeto: Add JRE

78 © LES/PUC-Rio Configurando Projeto: Select JRE

79 © LES/PUC-Rio Configurando Projeto: JRE Libraries

80 © LES/PUC-Rio Configurando Projeto: JRE Name

81 © LES/PUC-Rio Configurando Projeto: Alternate JRE

82 © LES/PUC-Rio Configurando Projeto: JRE 1.5.0_03

83 © LES/PUC-Rio Configurando Projeto: Libraries

84 © LES/PUC-Rio Criando Pastas: Pasta Existentes

85 © LES/PUC-Rio Criando Pastas: New Folder

86 © LES/PUC-Rio Criando Pastas: Pasta test

87 © LES/PUC-Rio Criando Pastas: Pastas do Projeto

88 © LES/PUC-Rio Criando Pacotes

89 © LES/PUC-Rio Criando Pacotes: Pacote br.pucrio.inf.les.prds

90 © LES/PUC-Rio Criando Pacotes: Pacotes

91 © LES/PUC-Rio Criando Classes

92 © LES/PUC-Rio Criando Classes: Classe Main

93 © LES/PUC-Rio Criando Classes: Código da Classe HelloWorld

94 © LES/PUC-Rio Compilando e Executando o Projeto

95 © LES/PUC-Rio Outline do Projeto

Exercícios

97 © LES/PUC-Rio Exercício: Sintaxe e IDE Eclipse Escreva um programa que receba um ano no formato yyyy (ex: 1998, 2006,...) e imprima na tela o calendário daquele ano no seguinte formato: Dia da Semana, dia/mês/ano. Exemplo: –Entrada: 2006 –Saída: Dom, 01/01/2006 Seg, 02/01/2006 Ter, 03/01/ Sáb, 30/12/2006 Dom, 31/12/2006

98 © LES/PUC-Rio Webliografia [1] Tutorial da Sun Microsystems. [2] Pllu, M. Developing open source Java applications with java.net and Eclipse. Available in: tutorial.dev.java.net/eclipse-tutorial/part1.htmlhttps://eclipse- tutorial.dev.java.net/eclipse-tutorial/part1.html [3] web.teccomm.les.inf.puc-rio.br/eclipse [4] Eclipse: