Slide 1 - LES - PUC-Rio

Propaganda
PRDS - Programa de Residência em
Desenvolvimento de Software
Laboratório de Engenharia de Software (LES) da PUC-Rio
Carlos Lucena
[email protected]
Rodrigo Paes
[email protected]
Gustavo Carvalho
[email protected]
Cidiane Lobato
[email protected]
Conteúdo
• Módulo 1: Java I – 4 horas
• Módulo 4: UML – 4 horas
– Sintaxe [1]
– Casos de Uso
– IDE Eclipse [2]
– Seqüência
– Colaboração
– Classes
• Módulo 2: Orientação a
Objetos com Java I – 8 horas
• Módulo 5: Qualidade de
Software I – 4 horas
– Herança
– Polimorfismo
– Associação
– Teste
– Delegação
– Assertiva de execução
– Collections
• Módulo 3: Java II – 12 horas
• Módulo 6: Orientação a
objetos com Java II – 8 horas
– Manipulação de arquivos
– Padrões de projeto
– Frameworks
– Persistência JDBC
– Sockets
© LES/PUC-Rio
2
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
© LES/PUC-Rio
3
Visão Geral de Java
Linguagem e Plataforma
HelloWorldApp
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:
java
javac
© LES/PUC-Rio
5
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.
© LES/PUC-Rio
6
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.
© LES/PUC-Rio
7
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!");
}
}
© LES/PUC-Rio
8
Visão Geral: HelloWorldApp (Edição)
© LES/PUC-Rio
9
Visão Geral: HelloWorldApp (Comando)
© LES/PUC-Rio
10
Visão Geral: HelloWorldApp (Comando)
© LES/PUC-Rio
11
Visão Geral: HelloWorldApp (Compilação)
• Para compilar a aplicação, execute o comando
“javac HelloWorldApp.java”.
© LES/PUC-Rio
12
Visão Geral: HelloWorldApp (Compilação)
• O compilador gera o arquivo “HelloWorldApp.class”.
© LES/PUC-Rio
13
Visão Geral: HelloWorldApp (Execução)
• Para executar a aplicação, execute o comando
“java HelloWorldApp”.
© LES/PUC-Rio
14
Visão Geral: HelloWorldApp (Código)
/**
* The HelloWorldApp class implements an application that
* simply displays "Hello World!" to the standard output.
*/
class HelloWorldApp {
Classe
public static void main(String[] args) {
Método main
//Display "Hello World!"
Comentários
System.out.println("Hello World!");
Variáveis
e métodos
de classe e
de instância
}
}
© LES/PUC-Rio
15
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 */.
© LES/PUC-Rio
16
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”.
© LES/PUC-Rio
17
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.
© LES/PUC-Rio
18
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.
© LES/PUC-Rio
19
Sintaxe da Linguagem Java
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?
args, sum, current
• Operadores?
=, <=, ++, +=, +
; (seqüência), for (repetição)
• Comandos, blocos?
© LES/PUC-Rio
21
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.
© LES/PUC-Rio
22
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 + ".");
© LES/PUC-Rio
//...
23
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 + ".");
}
}
© LES/PUC-Rio
24
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.
© LES/PUC-Rio
25
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.
© LES/PUC-Rio
26
Variáveis: Tipos Primitivos
Data Type
Description
Size/Format
byte
Byte-length integer
8-bit two's complement
short
Short integer
16-bit two's complement
int
Integer
32-bit two's complement
long
Long integer
64-bit two's complement
float
Single-precision floating point
32-bit IEEE 754
double
Double-precision floating point 64-bit IEEE 754
Integers
Real numbers
Other types
char
A single character
16-bit Unicode character
boolean
A boolean value (true or false)
true or false
© LES/PUC-Rio
27
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.
© LES/PUC-Rio
28
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.
© LES/PUC-Rio
29
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.
© LES/PUC-Rio
30
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.
© LES/PUC-Rio
31
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.
© LES/PUC-Rio
32
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;
© LES/PUC-Rio
33
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;
© LES/PUC-Rio
34
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.
© LES/PUC-Rio
35
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.
© LES/PUC-Rio
36
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.
© LES/PUC-Rio
37
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
© LES/PUC-Rio
38
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));
© LES/PUC-Rio
39
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)); //...
© LES/PUC-Rio
40
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));
}
}
© LES/PUC-Rio
41
Operadores Aritméticos: Exemplo (Saída)
Variable values...
Multiplying...
i = 37
i * j = 1554
j = 42
x * y = 198.37
x = 27.475
Dividing...
y = 7.22
i/j=0
Adding...
x / y = 3.8054
i + j = 79
Computing the remainder...
x + y = 34.695
Subtracting...
i - j = -5
x - y = 20.255
i % j = 37
x % y = 5.815
Mixing types...
j + y = 49.22
i * x = 1016.58
© LES/PUC-Rio
42
Operadores Aritméticos
Tipo do
Resultado
Tipos dos
Operandos
long
Nenhum operando é “float” ou “double”
(aritmética de inteiros); pelo menos um é “long”.
int
double
float
Nenhum operando é “float”, “double” ou “long”.
Pelo menos um operando é “double”.
Pelo menos um operando é “float”; nenhum
operando é “double”.
Quando
inteiro e um real
são usados
operandos
em
O inteiroum
é implicitamente
convertido
em como
um real
antes que
uma mesma operação
aritmética,
o resultado é um real.
a operação
seja efetivada.
© LES/PUC-Rio
43
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
© LES/PUC-Rio
44
Operadores Relacionais
Operador
Uso
>
op1 > op2
>=
<
Descrição
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
© LES/PUC-Rio
45
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);
//...
© LES/PUC-Rio
46
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
//...
© LES/PUC-Rio
47
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
//...
© LES/PUC-Rio
48
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
}
}
© LES/PUC-Rio
49
Operadores Relacionais: Exemplo (Saída)
Variable values...
i < j = true
i = 37
j < i = false
j = 42
k < j = false
k = 42
Less than or equal to...
Greater than...
i <= j = true
i > j = false
j <= i = false
j > i = true
k <= j = true
k > j = false
Equal to...
Greater than or equal to...
i == j = false
i >= j = false
k == j = true
j >= i = true
Not equal to...
k >= j = true
i != j = true
Less than...
k != j = false
© LES/PUC-Rio
50
Operadores Condicionais
Operador
Uso
Descrição
&&
op1 && op Retorna true se op1 e op2 são ambos
2
verdadeiros; condicionalmente avalia op2
||
op1 || op2 Retorna true se op1 ou op2 é verdadeiro;
condicionalmente avalia op2
!
!op
Retorna true se op é false
• Por exemplo, no caso de &&, o segundo operando pode não
ser avaliado. Avalie a expressão a seguir:
(numChars < LIMIT) && (...)
© LES/PUC-Rio
51
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.
© LES/PUC-Rio
52
Operadores de Atribuição
Operador
Uso
Descrição
=
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
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
© LES/PUC-Rio
53
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
© LES/PUC-Rio
54
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.
© LES/PUC-Rio
55
Expressões, Comandos e Blocos
class MaxVariablesDemo {
//...
//other primitive types
char
Expressões
Comandos
aChar = 'S' ;
boolean aBoolean = true;
//display them all
System.out.println("The largest byte value is " + largestByte);
//...
if (Character.isUpperCase(aChar)) { ... }
Bloco
//...
}
© LES/PUC-Rio
56
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-evírgula (;).
• Mesmo não sendo necessário, recomenda-se o uso de { e }
quando um bloco possui somente um comando.
© LES/PUC-Rio
57
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.");
}
© LES/PUC-Rio
58
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
© LES/PUC-Rio
59
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.
© LES/PUC-Rio
60
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);
}
}
}
© LES/PUC-Rio
61
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.
© LES/PUC-Rio
62
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>();
© LES/PUC-Rio
63
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);
}
© LES/PUC-Rio
64
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);
}
}
© LES/PUC-Rio
65
Projeto Java no Eclipse
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.
© LES/PUC-Rio
67
Criando Projeto: New Project
© LES/PUC-Rio
68
Criando Projeto: Java Project
© LES/PUC-Rio
69
Criando Projeto: Nome, Localização e Layout
© LES/PUC-Rio
70
Visualizando Projeto: Open Perspective
© LES/PUC-Rio
71
Configurando Projeto: Properties
© LES/PUC-Rio
72
Configurando Projeto: Java Build Path
© LES/PUC-Rio
73
Configurando Projeto: Add Library
© LES/PUC-Rio
74
Configurando Projeto: JRE System Library
© LES/PUC-Rio
75
Configurando Projeto: Installed JRE Environments
© LES/PUC-Rio
76
Configurando Projeto: Add JRE
© LES/PUC-Rio
77
Configurando Projeto: Select JRE
© LES/PUC-Rio
78
Configurando Projeto: JRE Libraries
© LES/PUC-Rio
79
Configurando Projeto: JRE Name
© LES/PUC-Rio
80
Configurando Projeto: Alternate JRE
© LES/PUC-Rio
81
Configurando Projeto: JRE 1.5.0_03
© LES/PUC-Rio
82
Configurando Projeto: Libraries
© LES/PUC-Rio
83
Criando Pastas: Pasta Existentes
© LES/PUC-Rio
84
Criando Pastas: New Folder
© LES/PUC-Rio
85
Criando Pastas: Pasta “test”
© LES/PUC-Rio
86
Criando Pastas: Pastas do Projeto
© LES/PUC-Rio
87
Criando Pacotes
© LES/PUC-Rio
88
Criando Pacotes: Pacote “br.pucrio.inf.les.prds”
© LES/PUC-Rio
89
Criando Pacotes: Pacotes
© LES/PUC-Rio
90
Criando Classes
© LES/PUC-Rio
91
Criando Classes: Classe “Main”
© LES/PUC-Rio
92
Criando Classes: Código da Classe “HelloWorld”
© LES/PUC-Rio
93
Compilando e Executando o Projeto
© LES/PUC-Rio
94
Outline do Projeto
© LES/PUC-Rio
95
Exercícios
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
© LES/PUC-Rio
97
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://eclipsetutorial.dev.java.net/eclipse-tutorial/part1.html
[3] Eclipse@Rio: web.teccomm.les.inf.puc-rio.br/eclipse
[4] Eclipse: www.eclipse.org
© LES/PUC-Rio
98
Download