PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software...
Transcript of PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software...
![Page 1: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/1.jpg)
PRDS - Programa de Residência em Desenvolvimento de Software
Laboratório de Engenharia de Software (LES) da PUC-Rio
Carlos [email protected]
Rodrigo [email protected]
Gustavo [email protected]
Cidiane [email protected]
![Page 2: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/2.jpg)
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
![Page 3: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/3.jpg)
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
![Page 4: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/4.jpg)
Visão Geral de Java
Linguagem e Plataforma
HelloWorldApp
![Page 5: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/5.jpg)
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
![Page 6: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/6.jpg)
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.
![Page 7: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/7.jpg)
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.
![Page 8: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/8.jpg)
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!");
}
}
![Page 9: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/9.jpg)
9 © LES/PUC-Rio
Visão Geral: HelloWorldApp (Edição)
![Page 10: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/10.jpg)
10 © LES/PUC-Rio
Visão Geral: HelloWorldApp (Comando)
![Page 11: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/11.jpg)
11 © LES/PUC-Rio
Visão Geral: HelloWorldApp (Comando)
![Page 12: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/12.jpg)
12 © LES/PUC-Rio
Visão Geral: HelloWorldApp (Compilação)
• Para compilar a aplicação, execute o comando “javac HelloWorldApp.java”.
![Page 13: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/13.jpg)
13 © LES/PUC-Rio
Visão Geral: HelloWorldApp (Compilação)
• O compilador gera o arquivo “HelloWorldApp.class”.
![Page 14: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/14.jpg)
14 © LES/PUC-Rio
Visão Geral: HelloWorldApp (Execução)
• Para executar a aplicação, execute o comando “java HelloWorldApp”.
![Page 15: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/15.jpg)
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
![Page 16: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/16.jpg)
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 */.
![Page 17: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/17.jpg)
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”.
![Page 18: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/18.jpg)
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.
![Page 19: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/19.jpg)
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.
![Page 20: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/20.jpg)
Sintaxe da Linguagem Java
![Page 21: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/21.jpg)
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)
![Page 22: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/22.jpg)
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.
![Page 23: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/23.jpg)
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 + "."); //...
![Page 24: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/24.jpg)
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 + ".");
}
}
![Page 25: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/25.jpg)
25 © LES/PUC-Rio
Variáveis: Exemplo
• Saída do programa MaxVariablesDemo:
The largest byte is 127.
The largest short is 32767.
The largest integer is 2147483647.
The largest long is 9223372036854775807.
The largest float is 3.4028235E38.
The largest double is 1.7976931348623157E308.
The character S is uppercase.
The value of aBoolean is true.
![Page 26: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/26.jpg)
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.
![Page 27: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/27.jpg)
27 © LES/PUC-Rio
Variáveis: Tipos Primitivos
Data Type Description Size/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 754
64-bit IEEE 754
Other types
char
boolean
A single character
A boolean value (true or false)
16-bit Unicode character
true or false
![Page 28: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/28.jpg)
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.
![Page 29: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/29.jpg)
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.
![Page 30: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/30.jpg)
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.
![Page 31: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/31.jpg)
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.
![Page 32: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/32.jpg)
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.
![Page 33: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/33.jpg)
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;
![Page 34: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/34.jpg)
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;
![Page 35: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/35.jpg)
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.
![Page 36: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/36.jpg)
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.
![Page 37: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/37.jpg)
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.
![Page 38: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/38.jpg)
38 © LES/PUC-Rio
Operadores Aritméticos
Operador Uso Descrição
+ op1 + op2 Adiciona op1 e op2; também usado para concatenação de strings
- op1 - op2 Substrai op2 de op1
* op1 * op2 Multiplica op1 por op2
/ op1 / op2 Divide op1 por op2
% op1 % op2 Calcula resto da divisão de op1 por op2
![Page 39: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/39.jpg)
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 = 27.475;
double y = 7.22;
//adding numbers
System.out.println("Adding...");
System.out.println(" i + j = " + (i + j));
System.out.println(" x + y = " + (x + y));
![Page 40: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/40.jpg)
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)); //...
![Page 41: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/41.jpg)
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));
}
}
![Page 42: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/42.jpg)
42 © LES/PUC-Rio
Operadores Aritméticos: Exemplo (Saída)
Variable values...
i = 37
j = 42
x = 27.475
y = 7.22
Adding...
i + j = 79
x + y = 34.695
Subtracting...
i - j = -5
x - y = 20.255
Multiplying...
i * j = 1554
x * y = 198.37 Dividing...
i / j = 0
x / y = 3.8054 Computing the remainder...
i % j = 37
x % y = 5.815 Mixing types...
j + y = 49.22
i * x = 1016.58
![Page 43: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/43.jpg)
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”.
int Nenhum operando é “float”, “double” ou “long”.
double Pelo menos um operando é “double”.
float Pelo 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.
![Page 44: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/44.jpg)
44 © LES/PUC-Rio
Operadores Aritméticos
Operador Uso Descrição
++ op++ Incremento de 1; avalia o valor de op antes do incremento
++ ++op Incremento de 1; avalia o valor de op depois do incremento
-- op-- Decremento de 1; avalia o valor de op antes do incremento
-- --op Decremento de 1; avalia o valor de op depois do decremento
![Page 45: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/45.jpg)
45 © LES/PUC-Rio
Operadores Relacionais
Operador Uso Descrição
> op1 > op2 Retorna true se op1 é maior que op2
>= op1 >= op2 Retorna true se op1 é maior/igual a op2
< op1 < op2 Retorna true se op1 é menor que op2
<= op1 <= op2 Retorna true se op1 is menor que ou igual a op2
== op1 == op2 Retorna true se op1 e op2 são iguais
!= op1 != op2 Retorna true se op1 e op2 não são iguais
![Page 46: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/46.jpg)
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);
//...
![Page 47: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/47.jpg)
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
//...
![Page 48: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/48.jpg)
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
//...
![Page 49: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/49.jpg)
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
}
}
![Page 50: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/50.jpg)
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
![Page 51: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/51.jpg)
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) && (...)
Operador Uso Descrição
&& op1 && op2
Retorna true se op1 e op2 são ambos verdadeiros; condicionalmente avalia op2
|| op1 || op2 Retorna true se op1 ou op2 é verdadeiro; condicionalmente avalia op2
! !op Retorna true se op é false
![Page 52: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/52.jpg)
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.
![Page 53: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/53.jpg)
53 © LES/PUC-Rio
Operadores de Atribuição
Operador Uso Descrição
= op1 = op2 Atribui o valor da direita à esquerda
+= op1 += op2 Equivalente a op1 = op1 + op2
-= op1 -= op2 Equivalente a op1 = op1 - op2
*= op1 *= op2 Equivalente a op1 = op1 * op2
/= op1 /= op2 Equivalente a op1 = op1 / op2
%= op1 %= op2 Equivalente a op1 = op1 % op2
&= op1 &= op2 Equivalente a op1 = op1 & op2
|= op1 |= op2 Equivalente a op1 = op1 | op2
^= op1 ^= op2 Equivalente a op1 = op1 ^ op2
![Page 54: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/54.jpg)
54 © LES/PUC-Rio
Outros Operadores
Operador Uso Descrição
?: op1 ? op2 : op3 Se 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) op Converte op para o tipo especificado; uma exceção é levantada se o tipo de op é incompatível com type
new Objetos e Vetores Cria um novo objeto ou vetor
instanceof op1 instanceof op2 Retorna true se op1 é uma instância de op2
![Page 55: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/55.jpg)
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.
![Page 56: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/56.jpg)
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õesComandos
Bloco
![Page 57: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/57.jpg)
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.
![Page 58: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/58.jpg)
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.");
}
![Page 59: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/59.jpg)
59 © LES/PUC-Rio
Comandos de Fluxo de Controle
Tipo de Comando Palavra-reservada
Repetição while, do-while, for
Decisão if-else, switch-case
Tratamento de Exceção try-catch-finally, throw
Quebra de Fluxo break, continue, label:, return
![Page 60: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/60.jpg)
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.
![Page 61: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/61.jpg)
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);
}
}
}
![Page 62: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/62.jpg)
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.
![Page 63: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/63.jpg)
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<Integer> lista;
• O segundo passo é criar um objeto Vector que armazene apenas objetos do tipo Integer:
lista=new Vector<Integer>();
![Page 64: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/64.jpg)
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étodofor(int i=0;i<lista.size();i++){ p=lista.get(i); System.out.println(p);}
![Page 65: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/65.jpg)
65 © LES/PUC-Rio
Exemplo Completo
import java.util.*;public class ClasseX{ private Vector<Integer> 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<Integer>(); lista.add(s); }}
![Page 66: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/66.jpg)
Projeto Java no Eclipse
![Page 67: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/67.jpg)
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.
![Page 68: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/68.jpg)
68 © LES/PUC-Rio
Criando Projeto: New Project
![Page 69: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/69.jpg)
69 © LES/PUC-Rio
Criando Projeto: Java Project
![Page 70: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/70.jpg)
70 © LES/PUC-Rio
Criando Projeto: Nome, Localização e Layout
![Page 71: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/71.jpg)
71 © LES/PUC-Rio
Visualizando Projeto: Open Perspective
![Page 72: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/72.jpg)
72 © LES/PUC-Rio
Configurando Projeto: Properties
![Page 73: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/73.jpg)
73 © LES/PUC-Rio
Configurando Projeto: Java Build Path
![Page 74: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/74.jpg)
74 © LES/PUC-Rio
Configurando Projeto: Add Library
![Page 75: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/75.jpg)
75 © LES/PUC-Rio
Configurando Projeto: JRE System Library
![Page 76: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/76.jpg)
76 © LES/PUC-Rio
Configurando Projeto: Installed JRE Environments
![Page 77: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/77.jpg)
77 © LES/PUC-Rio
Configurando Projeto: Add JRE
![Page 78: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/78.jpg)
78 © LES/PUC-Rio
Configurando Projeto: Select JRE
![Page 79: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/79.jpg)
79 © LES/PUC-Rio
Configurando Projeto: JRE Libraries
![Page 80: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/80.jpg)
80 © LES/PUC-Rio
Configurando Projeto: JRE Name
![Page 81: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/81.jpg)
81 © LES/PUC-Rio
Configurando Projeto: Alternate JRE
![Page 82: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/82.jpg)
82 © LES/PUC-Rio
Configurando Projeto: JRE 1.5.0_03
![Page 83: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/83.jpg)
83 © LES/PUC-Rio
Configurando Projeto: Libraries
![Page 84: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/84.jpg)
84 © LES/PUC-Rio
Criando Pastas: Pasta Existentes
![Page 85: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/85.jpg)
85 © LES/PUC-Rio
Criando Pastas: New Folder
![Page 86: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/86.jpg)
86 © LES/PUC-Rio
Criando Pastas: Pasta “test”
![Page 87: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/87.jpg)
87 © LES/PUC-Rio
Criando Pastas: Pastas do Projeto
![Page 88: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/88.jpg)
88 © LES/PUC-Rio
Criando Pacotes
![Page 89: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/89.jpg)
89 © LES/PUC-Rio
Criando Pacotes: Pacote “br.pucrio.inf.les.prds”
![Page 90: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/90.jpg)
90 © LES/PUC-Rio
Criando Pacotes: Pacotes
![Page 91: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/91.jpg)
91 © LES/PUC-Rio
Criando Classes
![Page 92: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/92.jpg)
92 © LES/PUC-Rio
Criando Classes: Classe “Main”
![Page 93: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/93.jpg)
93 © LES/PUC-Rio
Criando Classes: Código da Classe “HelloWorld”
![Page 94: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/94.jpg)
94 © LES/PUC-Rio
Compilando e Executando o Projeto
![Page 95: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/95.jpg)
95 © LES/PUC-Rio
Outline do Projeto
![Page 96: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/96.jpg)
Exercícios
![Page 97: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/97.jpg)
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/2006
...
Sáb, 30/12/2006
Dom, 31/12/2006
![Page 98: PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena lucena@inf.puc-rio.br.](https://reader036.fdocument.pub/reader036/viewer/2022081518/552fc105497959413d8c01a4/html5/thumbnails/98.jpg)
98 © LES/PUC-Rio
Webliografia
[1] Tutorial da Sun Microsystems. http://java.sun.com/docs/books/tutorial/java/TOC.html
[2] Pllu, M. Developing open source Java applications with java.net and Eclipse. Available in: https://eclipse-tutorial.dev.java.net/eclipse-tutorial/part1.html
[3] Eclipse@Rio: web.teccomm.les.inf.puc-rio.br/eclipse
[4] Eclipse: www.eclipse.org