k19 k11 orientacao a objetos em java

Upload: silvio-lima

Post on 15-Jul-2015

123 views

Category:

Documents


8 download

TRANSCRIPT

TREINAMENTOS

Orientao a Objetos em Java

Orientao a Objetos em Java

5 de janeiro de 2012

Sumrio Sobre a K19 Seguro Treinamento Termo de Uso Cursos 1 Introduo 1.1 Objetivo . . . . . . . . . . . . . . . . . . . . 1.2 Orientao a Objetos . . . . . . . . . . . . 1.3 Plataforma Java . . . . . . . . . . . . . . . 1.4 Plataforma Java VS Orientao a Objetos Lgica 2.1 O que um Programa? . . . . . . 2.2 Linguagem de Mquina . . . . . 2.3 Linguagem de Programao . . . 2.4 Compilador . . . . . . . . . . . . . 2.5 Mquinas Virtuais . . . . . . . . . 2.6 Exemplo de programa Java . . . . 2.7 Mtodo Main - Ponto de Entrada 2.8 Exerccios de Fixao . . . . . . . 2.9 Variveis . . . . . . . . . . . . . . 2.10 Operadores . . . . . . . . . . . . . 2.11 IF-ELSE . . . . . . . . . . . . . . . 2.12 WHILE . . . . . . . . . . . . . . . . 2.13 FOR . . . . . . . . . . . . . . . . . 2.14 Exerccios de Fixao . . . . . . . 2.15 Exerccios Complementares . . . Orientao a Objetoswww.k19.com.br

i 1 2 3 4 1 1 1 2 2 3 3 3 4 4 4 7 8 9 9 12 15 15 16 16 18 21i

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

2

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

3

S UMRIO

ii

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 4

Domnio e Aplicao . . . . . . . . . . . . . . . . . . . . . Objetos, Atributos e Mtodos . . . . . . . . . . . . . . . . Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Referncias . . . . . . . . . . . . . . . . . . . . . . . . . . . Manipulando Atributos . . . . . . . . . . . . . . . . . . . . Valores Padro . . . . . . . . . . . . . . . . . . . . . . . . . Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . Exerccios Complementares . . . . . . . . . . . . . . . . . Relacionamentos: Associao, Agregao e Composio Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . Exerccios Complementares . . . . . . . . . . . . . . . . . Mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . Exerccios Complementares . . . . . . . . . . . . . . . . . Sobrecarga (Overloading) . . . . . . . . . . . . . . . . . . Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . Construtores . . . . . . . . . . . . . . . . . . . . . . . . . . Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . Referncias como parmetro . . . . . . . . . . . . . . . . Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . Exerccios Complementares . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

21 22 24 27 28 28 29 32 33 34 36 36 38 39 39 40 41 44 46 47 47 49 49 50 50 51 51 52 53 54 55 55 56 56 57 58 59 61 62 62 63 63 64

Arrays 4.1 Criando um array . . . . . . . . . . . . 4.2 Modicando o contedo de um array 4.3 Acessando o contedo de um array . . 4.4 Percorrendo um Array . . . . . . . . . 4.5 foreach . . . . . . . . . . . . . . . . . . 4.6 Operaes . . . . . . . . . . . . . . . . 4.7 Exerccios de Fixao . . . . . . . . . . 4.8 Exerccios Complementares . . . . . . Eclipse 5.1 workspace . . . . . . . . 5.2 welcome . . . . . . . . . 5.3 perspectives . . . . . . . 5.4 views . . . . . . . . . . . . 5.5 Criando um projeto java 5.6 Criando uma classe . . . 5.7 Gerando o mtodo main 5.8 Executando uma classe . 5.9 Corrigindo erros . . . . . 5.10 Atalhos teis . . . . . . . 5.11 Save Actions . . . . . . . 5.12 Refatorao . . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

5

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

6

Atributos e Mtodos de Classe 67 6.1 Atributos Estticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.2 Mtodos Estticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 6.3 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69www.k19.com.br

ii

iii

S UMRIO

6.4 7

Exerccios Complementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

71 73 73 73 74 75 75 75 76 77 78 78 79 81 83 83 83 84 85 87 87 88 89 90 92 93 93 94 95 95 96 97

Encapsulamento 7.1 Atributos Privados . . . . . . . . . . . . . . . . . . . 7.2 Mtodos Privados . . . . . . . . . . . . . . . . . . . 7.3 Mtodos Pblicos . . . . . . . . . . . . . . . . . . . 7.4 Implementao e Interface de Uso . . . . . . . . . 7.5 Por qu encapsular? . . . . . . . . . . . . . . . . . . 7.6 Celular - Escondendo a complexidade . . . . . . . 7.7 Carro - Evitando efeitos colateiras . . . . . . . . . 7.8 Mquinas de Porcarias - Aumentando o controle . 7.9 Acessando ou modicando atributos . . . . . . . . 7.10 Getters e Setters . . . . . . . . . . . . . . . . . . . . 7.11 Exerccios de Fixao . . . . . . . . . . . . . . . . . 7.12 Exerccios Complementares . . . . . . . . . . . . . Herana 8.1 Reutilizao de Cdigo . . . . . . . . . . 8.2 Uma classe para todos os servios . . . 8.3 Uma classe para cada servio . . . . . . 8.4 Uma classe genrica e vrias especcas 8.5 Preo Fixo . . . . . . . . . . . . . . . . . . 8.6 Reescrita de Mtodo . . . . . . . . . . . 8.7 Fixo + Especco . . . . . . . . . . . . . . 8.8 Construtores e Herana . . . . . . . . . . 8.9 Exerccios de Fixao . . . . . . . . . . . 8.10 Exerccios Complementares . . . . . . . Polimorsmo 9.1 Controle de Ponto . . . . . . . . . 9.2 Modelagem dos funcionrios . . 9.3 UM (extends) . . . . . . . . . . . 9.4 Melhorando o controle de ponto 9.5 Exerccios de Fixao . . . . . . . 9.6 Exerccios Complementares . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

8

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

9

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

10 Classes Abstratas 10.1 Classes Abstratas . . . . . . . 10.2 Mtodos Abstratos . . . . . . 10.3 Exerccios de Fixao . . . . 10.4 Exerccios Complementares 11 Interfaces 11.1 Padronizao . . . . . 11.2 Contratos . . . . . . . 11.3 Exemplo . . . . . . . . 11.4 Polimorsmo . . . . . 11.5 Interface e Herana . 11.6 Exerccios de Fixaowww.k19.com.br

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

99 . 99 . 100 . 101 . 103 105 105 105 106 107 107 109iii

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

S UMRIO

iv

12 Pacotes 12.1 Organizao . . . . . . . . . . . . . . . . . . 12.2 O comando package . . . . . . . . . . . . . . 12.3 sub-pacotes . . . . . . . . . . . . . . . . . . . 12.4 Unqualied Name vs Fully Qualied Name 12.5 Classes ou Interfaces pblicas . . . . . . . . 12.6 Import . . . . . . . . . . . . . . . . . . . . . . 12.7 Conito de nomes . . . . . . . . . . . . . . . 12.8 Nveis de visibilidade . . . . . . . . . . . . . 12.9 Exerccios de Fixao . . . . . . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

113 113 113 113 114 114 115 116 116 117

13 Documentao 119 13.1 A ferramenta javadoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 13.2 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 14 Exceptions 14.1 Errors vs Exceptions . . . . . . . . . . . 14.2 Checked e Unchecked . . . . . . . . . 14.3 Lanando uma unchecked exception . 14.4 Lanando uma checked exception . . 14.5 Capturando exceptions . . . . . . . . . 14.6 Exerccios de Fixao . . . . . . . . . . 15 Object 15.1 Polimorsmo . . . . . 15.2 O mtodo toString() . 15.3 O mtodo equals() . . 15.4 Exerccios de Fixao 16 String 16.1 Pool de Strings . . . . 16.2 Imutabilidade . . . . 16.3 Mtodos principais . 16.4 Exerccios de Fixao 127 127 128 128 129 129 130 131 131 132 134 136 141 141 142 142 144 147 147 148 148 149 150 151 151 155 156 157 157 158 158

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

17 Entrada e Sada 17.1 Byte a Byte . . . . . . . . . . 17.2 Scanner . . . . . . . . . . . . 17.3 PrintStream . . . . . . . . . . 17.4 Exerccios de Fixao . . . . 17.5 Exerccios Complementares 18 Collections 18.1 Listas . . . . . . . . . 18.2 Exerccios de Fixao 18.3 Conjuntos . . . . . . . 18.4 Colees . . . . . . . 18.5 Exerccios de Fixao 18.6 Lao foreach . . . . . 18.7 Generics . . . . . . . .iv

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

www.k19.com.br

v

S UMRIO

18.8 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 A Swing A.1 Componentes . . . . . . . A.2 Layout Manager . . . . . . A.3 Events, Listeners e Sources A.4 Exerccios de Fixao . . . 161 161 165 166 167 169 169 169 169 171 171 172 172 173 174 177 177 177 178 181 181 181 182 183 189

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

B Empacotamento B.1 Empacotando uma biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.2 Empacotando uma applicao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B.3 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C Threads C.1 Denindo Tarefas - (Runnables) . . . C.2 Executando Tarefas . . . . . . . . . . C.3 Exerccios de Fixao . . . . . . . . . C.4 Controlando a Execuo das Tarefas C.5 Exerccios de Fixao . . . . . . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

D Socket D.1 Socket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.2 ServerSocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.3 Exerccios de Fixao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E Chat K19 E.1 Arquitetura do Sistema E.2 Aplicao servidora . . E.3 Aplicao cliente . . . . E.4 Exerccios de Fixao . Respostas

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

F

www.k19.com.br

v

S UMRIO

vi

vi

www.k19.com.br

1

S UMRIO

Sobre a K19A K19 uma empresa especializada na capacitao de desenvolvedores de software. Sua equipe composta por prossionais formados em Cincia da Computao pela Universidade de So Paulo (USP) e que possuem vasta experincia em treinamento de prossionais para rea de TI. O principal objetivo da K19 oferecer treinamentos de mxima qualidade que relacionados s principais tecnologias utilizadas pelas empresas. Atravs desses treinamentos, seus alunos se tornam capacitados para atuar no mercado de trabalho. Visando a mxima qualidade, a K19 mantm as suas apostilas em constante renovao e melhoria, oferece instalaes fsicas apropriadas para o ensino e seus instrutores esto sempre atualizados didtica e tecnicamente.

www.k19.com.br

1

S UMRIO

2

Seguro TreinamentoNa K19 o aluno faz o curso quantas vezes quiser! Comprometida com o aprendizado e com a satisfao dos seus alunos, a K19 a nica que possui o Seguro Treinamento. Ao contratar um curso, o aluno poder refaz-lo quantas vezes desejar mediante a disponibilidade de vagas e pagamento da franquia do Seguro Treinamento. As vagas no preenchidas at um dia antes do incio de uma turma da K19 sero destinadas ao alunos que desejam utilizar o Seguro Treinamento. O valor da franquia para utilizar o Seguro Treinamento 10% do valor total do curso.

2

www.k19.com.br

3

S UMRIO

Termo de UsoTermo de UsoTodo o contedo desta apostila propriedade da K19 Treinamentos. A apostila pode ser utilizada livremente para estudo pessoal . Alm disso, este material didtico pode ser utilizado como material de apoio em cursos de ensino superior desde que a instituio correspondente seja reconhecida pelo MEC (Ministrio da Educao) e que a K19 seja citada explicitamente como proprietria do material. proibida qualquer utilizao desse material que no se enquadre nas condies acima sem o prvio consentimento formal, por escrito, da K19 Treinamentos. O uso indevido est sujeito s medidas legais cabveis.

www.k19.com.br

3

S UMRIO

4

TR

S TO EN AM EIN TREINAMENTOS TR EIN AM EN TO S

Conhea os nossos cursosK01- Lgica de Programao

K11 - Orientao a Objetos em Java

K12 - Desenvolvimento Web com JSF2 e JPA2

K21 - Persistncia com JPA2 e Hibernate

K22 - Desenvolvimento Web Avanado com JFS2, EJB3.1 e CDI

K23 - Integrao de Sistemas com Webservices, JMS e EJB

K31 - C# e Orientao a Objetos

K32 - Desenvolvimento Web com ASP.NET MVC

www.k19.com.br/cursos

4

www.k19.com.br

CAPTULOIGLUFigura 1.1: Moradias

I NTRODUO

1

ObjetivoO objetivo fundamental dos treinamentos da K19 transmitir os conhecimentos necessrios para que os seus alunos possam atuar no mercado de trabalho na rea de desenvolvimento de software. As plataformas Java e .NET so as mais utilizadas no desenvolvimento de software. Para utilizar os recursos oferecidos por essas plataformas de forma eciente, necessrio possuir conhecimento slido em orientao a objetos.

Orientao a ObjetosUm modelo de programao ou paradigma de programao um conjunto de princpios, ideias, conceitos e abstraes utilizado para o desenvolvimento de uma aplicao.

AnalogiaPara entender melhor o que so os modelos de programao, podemos compar-los com padres arquiteturais utilizados por diferentes povos para construo de casas. As caractersticas ambientais denem quais tcnicas devem ser adotadas para a construo das moradias. Analogamente, devemos escolher o modelo de programao mais adequado s necessidades da aplicao que queremos desenvolver.M A D K P B 0O K X E 8 T 80 E 1 B Y K 19

CABANA DE NDIO

CASA OCIDENTAL

O modelo de programao mais adotado no desenvolvimento de sistemas corporativos o modelo orientado a objetos. Esse modelo utilizado com o intuito de obter alguns benefcios especcos. Normalmente, o principal benefcio desejado facilitar a manuteno das aplicaes.www.k19.com.br

1

I NTRODUO

2

Em geral, os conceitos do modelo de programao orientado a objetos diminuem a complexidade do desenvolvimento de sistemas que possuem as seguintes caractersticas: Sistemas com grande quantidade de funcionalidades desenvolvidos por uma equipe. Sistemas que sero utilizados por um longo perodo de tempo e sofrero alteraes constantes.

Plataforma JavaA plataforma Java ser objeto de estudo desse treinamento. Mas, devemos salientar que os conceitos de orientao a objetos que sero vistos podero ser aplicados tambm na plataforma .NET. No primeiro momento, os dois elementos mais importantes da plataforma Java so: A linguagem de programao Java. O ambiente de execuo Java. A linguagem de programao Java permite que os conceitos de orientao a objetos sejam utilizados no desenvolvimento de uma aplicao. O ambiente de execuo Java permite que uma aplicao Java seja executada em sistemas operacionais diferentes.

PLATAFORMA JAVALINGUAGEM DE PROGRAMAO ORIENTADA A OBJETOS AMBIENTE DE EXECUO MULTIPLATAFORMA

Figura 1.2: Plataforma Java

Plataforma Java VS Orientao a ObjetosDo ponto de vista do aprendizado, interessante tentar denir o que mais importante: a plataforma Java ou a orientao a objetos. Consideramos que a orientao a objetos mais importante pois ela aplicada em muitas outras plataformas.

2

www.k19.com.br

CAPTULOFigura 2.1: Cdigo de Mquina.

L GICA

2

O que um Programa?Um dos maiores benefcios da utilizao de computadores a automatizao de processos realizados manualmente por pessoas. Vejamos um exemplo prtico: Quando as apuraes dos votos das eleies no Brasil eram realizadas manualmente, o tempo para obter os resultados era alto e havia alta probabilidade de uma falha humana. Esse processo foi automatizado e hoje realizado por computadores. O tempo para obter os resultados e a chance de ocorrer uma falha humana diminuram drasticamente. Basicamente, os computadores so capazes de executar instrues matemticas mais rapidamente do que o homem. Essa simples capacidade permite que eles resolvam problemas complexos de maneira mais eciente. Porm, eles no possuem a inteligncia necessria para denir quais instrues devem ser executadas para resolver uma determinada tarefa. Por outro lado, os seres humano possuem essa inteligncia. Dessa forma, uma pessoa precisa denir um roteiro com a sequncia de comandos necessrios para realizar uma determinada tarefa e depois passar para um computador executar esse roteiro. Formalmente, esses roteiros so chamados de programas. Os programas devem ser colocados em arquivos no disco rgido dos computadores. Assim, quando as tarefas precisam ser realizadas, os computadores podem ler esses arquivos para saber quais instrues devem ser executadas.

Linguagem de MquinaOs computadores s sabem ler instrues escritas em linguagem de mquina. Uma instruo escrita em linguagem de mquina uma sequncia formada por 0s e 1s que representa a ao que um computador deve executar.

000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000010000000000100000000 000000000000111000011111101110100000111000000000101101000000100 111001101001000011011100000000001010011001100110100100001010101 000110100001101001011100110010000001110000011100100110111101100 111011100100110000101101101001000000110001101100001011011100110 111001101111011101000010000001100010011001010010000001110010011

Teoricamente, as pessoas poderiam escrever os programas diretamente em linguagem de mquina. Na prtica, ningum faz isso pois uma tarefa muito complicada e demorada.www.k19.com.br

3

L GICA

4

Um arquivo contendo as instrues de um programa em Linguagem de Mquina chamado de executvel.

Linguagem de ProgramaoComo vimos anteriormente, escrever um programa em linguagem de mquina totalmente invivel para uma pessoa. Para resolver esse problema, surgiram as linguagens de programao, que tentam se aproximar das linguagens humanas. Conra um trecho de um cdigo escrito com a linguagem de programao Java:1 2 3 4 5 class OlaMundo { public static void main ( String [] args ) { System . out . println ( " Ol Mundo " ) ; } }Cdigo Java 2.1: OlaMundo.java

Por enquanto voc pode no entender muito do que est escrito, porm ca bem claro que um programa escrito dessa forma ca bem mais fcil de ser lido. Um arquivo contendo as instrues de um programa em linguagem de programao chamado de arquivo fonte.

CompiladorPor um lado, os computadores processam apenas instrues em linguagem de mquina. Por outro lado, as pessoas denem as instrues em linguagem de programao. Dessa forma, necessrio traduzir o cdigo escrito em linguagem de programao por uma pessoa para um cdigo em linguagem de mquina para que um computador possa processar. Essa traduo realizada por programas especiais chamados compiladores.while(true){ if(x < 1){ return 0; } return 1; }

CDIGO FONTE

PROCESSADOR

NO EXECUTA

while(true){ if(x < 1){ return 0; } return 1; }

CDIGO FONTE

COMPILADOR

CDIGO DE MQUINA

PROCESSADOR

EXECUTA

Figura 2.2: Processo de compilao e execuo de um programa.

Mquinas Virtuais4www.k19.com.br

5

L GICA

Assim como as pessoas podem se comunicar atravs de lnguas diferentes, os computadores podem se comunicar atravs de linguagens de mquina diferentes. A linguagem de mquina de um computador denida pela arquitetura do processador desse computador. H diversas arquiteturas diferentes (Intel, ARM, PowerPC, etc) e cada uma delas dene uma linguagem de mquina diferente. Em outras palavras, um programa pode no executar em computadores com processadores de arquiteturas diferentes. Os computadores so controlados por um sistema operacional que oferece diversas bibliotecas necessrias para o desenvolvimento das aplicaes que podem ser executadas atravs dele. Sistemas operacionais diferentes (Windows, Linux, Mac OS X, etc) possuem bibliotecas diferentes. Em outras palavras, um programa pode no executar em computadores com sistemas operacionais diferentes. Portanto, para determinar se um cdigo em linguagem de mquina pode ou no ser executada por um computador, devemos considerar a arquitetura do processador e o sistema operacional desse computador. Algumas bibliotecas especcas de sistema operacional so chamadas diretamente pelas instrues em linguagem de programao. Dessa forma, geralmente, o cdigo fonte est amarrado a uma plataforma (sistema operacional + arquitetura de processador).PROGRAMA 1 PLATAFORMA 1 EXECUTA

PROGRAMA 2

PLATAFORMA 2

EXECUTA

PROGRAMA 2

PLATAFORMA 3

NO EXECUTA

Figura 2.3: Ilustrao mostrando que cada plataforma necessita de um executvel especco.

Uma empresa que deseja ter a sua aplicao disponvel para diversos sistemas operacionais (Windows, Linux, Mac OS X, etc), e diversas arquiteturas de processador (Intel, ARM, PowerPC, etc), ter que desenvolver verses diferentes do cdigo fonte para cada plataforma (sistema operacional + arquitetura de processador). Isso pode causar um impacto nanceiro nessa empresa que inviabiliza o negcio.www.k19.com.br

5

L GICA

6

Para tentar resolver o problema do desenvolvimento de aplicaes multiplataforma, surgiu o conceito de mquina virtual. Uma mquina virtual funciona como uma camada a mais entre o cdigo compilado e a plataforma. Quando compilamos um cdigo fonte, estamos criando um executvel que a mquina virtual saber interpretar e ela quem dever traduzir as instrues do seu programa para a plataforma.MQUINA VIRTUAL 1 PLATAFORMA 1 EXECUTA

PROGRAMA

MQUINA VIRTUAL 2

PLATAFORMA 2

EXECUTA

MQUINA VIRTUAL 3

PLATAFORMA 3

EXECUTA

Figura 2.4: Ilustrao do funcionamento da mquina virtual.

Tudo parece estar perfeito agora. Porm, olhando atentamente a gura acima, percebemos que existe a necessidade de uma mquina virtual para cada plataforma. Algum poderia dizer que, de fato, o problema no foi resolvido, apenas mudou de lugar. A diferena que implementar a mquina virtual no tarefa do programador que desenvolve as aplicaes que sero executadas nela. A implementao da mquina virtual responsabilidade de terceiros, que geralmente so empresas bem conceituadas ou projetos de cdigo aberto que envolvem programadores do mundo inteiro. Como maiores exemplos podemos citar a Oracle JVM (Java Virtual Machine) e OpenJDK JVM. Uma desvantagem em utilizar uma mquina virtual para executar um programa a diminuio de performance, j que a prpria mquina virtual consome recursos do computador. Alm disso, as instrues do programa so processadas primeiro pela mquina virtual e depois pelo computador. Por outro lado, as mquinas virtuais podem aplicar otimizaes que aumentam a performance da execuo de um programa. Inclusive, essas otimizaes podem considerar informaes geradas durante a execuo. So exemplos de informaes geradas durante a execuo: a quantidade de uso da memria RAM e do processador do computador, a quantidade de acessos ao disco rgido, a quantidade de chamadas de rede e a frequncia de execuo de um determinado trecho do programa. Algumas mquinas virtuais identicam os trechos do programa que esto sendo mais chamados6www.k19.com.br

7

L GICA

em um determinado momento da execuo para traduzi-los para a linguagem de mquina do computador. A partir da, esses trechos podem ser executados diretamente no processador sem passar pela mquina virtual. Essa anlise da mquina virtual realizada durante toda a execuo. Com essas otimizaes que consideram vrias informaes geradas durante a execuo, um programa executado com mquina virtual pode at ser mais eciente em alguns casos do que um programa executado diretamente no sistema operacional.

Mais SobreGeralmente, as mquinas virtuais utilizam uma estratgia de compilao chamada Just-in-time compilation (JIT). Nessa abordagem, o cdigo de mquina pode ser gerado diversas vezes durante o processamento de um programa com o intuito de melhorar a utilizao dos recursos disponveis em um determinado instante da execuo.

Exemplo de programa JavaVamos criar um simples programa para entendermos como funciona o processo de compilao e execuo. Utilizaremos a linguagem Java, que amplamente adotada nas empresas. Observe o cdigo do exemplo de um programa escrito em Java que imprime uma mensagem na tela:1 2 3 4 5 class OlaMundo { public static void main ( String [] args ) { System . out . println ( " Ol Mundo " ) ; } }Cdigo Java 2.2: OlaMundo.java

O cdigo fonte Java deve ser colocado em arquivos com a extenso .java. Agora, no necessrio entender todo o cdigo do exemplo. Basta saber que toda aplicao Java precisa ter um mtodo especial chamado main para executar. O prximo passo compilar o cdigo fonte, para gerar um executvel que possa ser processado pela mquina virtual do Java. O compilador padro da plataforma Java (javac) pode ser utilizado para compilar esse arquivo. O compilador pode ser executado pelo terminal.K19$ ls OlaMundo . java K19$ javac OlaMundo . java K19$ ls OlaMundo . class OlaMundo . java

Terminal 2.1: Compilando

O cdigo gerado pelo compilador Java armazenado em arquivos com a extenso .class. No exemplo, o programa gerado pelo compilador colocado em um arquivo chamado OlaMundo.class e ele pode ser executado atravs de um terminal.K19$ ls OlaMundo . class OlaMundo . java K19$ java OlaMundo Ol Mundo

www.k19.com.br

7

L GICA

8

Terminal 2.2: Executando

ImportanteAntes de compilar e executar um programa escrito em Java, necessrio que voc tenha instalado e congurado em seu computador o JDK (Java Development Kit). Consulte o artigo da K19, http://www.k19.com.br/artigos/ instalando-o-jdk-java-development-kit/.

Mais SobreQuando uma aplicao ou biblioteca Java composta por diversos arquivos .class, podemos empacot-los em um nico arquivo com a extenso .jar com o intuito de facilitar a distribuio da aplicao ou da biblioteca.

Mtodo Main - Ponto de EntradaPara um programa Java executar, necessrio denir um mtodo especial para ser o ponto de entrada do programa, ou seja, para ser o primeiro mtodo a ser chamado quando o programa for executado. O mtodo main precisa ser public, static, void e receber um array de strings como argumento. Algumas das possveis variaes da assinatura do mtodo main:1 2 3 4 static public public public public static static static void void void void main ( String [] args ) main ( String [] args ) main ( String args []) main ( String [] parametros )Cdigo Java 2.3: Variaes da Assinatura do Mtodo Main

Os parmetros do mtodo main so passados pela linha de comando e podem ser manipulados dentro do programa. O cdigo abaixo imprime cada parmetro recebido em uma linha diferente.1 2 3 4 5 6 7 class Programa { public static void main ( String [] args ) { for ( int i = ; i < args . length ; i ++) { System . out . println ( args [ i ]) ; } } }Cdigo Java 2.4: Imprimindo os parmetros da linha de comando

Os parmetros devem ser passados imediatamente aps o nome do programa. A execuo do programa mostrada na gura abaixo.K19$ ls Programa . class Programa . java K19$ java Programa K19 Java Rafael Cosentino K19

8

www.k19.com.br

9Java Rafael Cosentino

L GICA

Terminal 2.3: Imprimindo os parmetros da linha de comando

Exerccios de FixaoAbra um terminal e crie uma pasta com o seu nome. Voc deve salvar os seus exerccios nessa pasta.1K19$ mkdir Rafael K19$ cd Rafael K19 / Rafael$

Terminal 2.4: Criando a pasta de exerccios

2 Dentro da sua pasta de exerccios, crie uma pasta para os arquivos desenvolvidos nesse captulo chamada logica.K19 / Rafael$ mkdir logica K19 / Rafael$ ls logica

Terminal 2.5: Criando a pasta dos exerccios desse captulo

3 Crie um programa que imprima uma mensagem na tela. Adicione o seguinte arquivo na pasta logica.

1 2 3 4 5

class OlaMundo { public static void main ( String [] args ) { System . out . println ( " Ol Mundo " ) ; } }Cdigo Java 2.5: OlaMundo.java

Compile e execute a classe OlaMundo.

VariveisBasicamente, o que um programa faz manipular dados. Em geral, esses dados so armazenados em variveis localizadas na memria RAM do computador. Uma varivel pode guardar dados de vrios tipos: nmeros, textos, booleanos (verdadeiro ou falso), referncias de objetos. Alm disso, toda varivel possui um nome que utilizado quando a informao dentro da varivel precisa ser manipulada pelo programa.numeroDaConta numeroDaConta

numeroDaConta = 4823 MEMRIA RAM

4823

MEMRIA RAM

Figura 2.5: Processo de atribuio do valor numrico 4823 varivel numeroDaConta.

www.k19.com.br

9

L GICA

10

DeclaraoNa linguagem de programao Java, as variveis devem ser declaradas para que possam ser utilizadas. A declarao de uma varivel envolve denir um nome nico (identicador) dentro de um escopo e um tipo de valor. As variveis so acessadas pelos nomes e armazenam valores compatveis com o seu tipo.1 2 3 4 5 // Uma varivel do tipo int chamada numeroDaConta . int numeroDaConta ; // Uma varivel do tipo double chamada precoDoProduto . double precoDoProduto ;Cdigo Java 2.6: Declarao de Variveis

Mais SobreUma linguagem de programao dita estaticamente tipada quando ela exige que os tipos das variveis sejam denidos antes da compilao. A linguagem Java uma linguagem estaticamente tipada. Uma linguagem de programao dita fortemente tipada quando ela exige que os valores armazenados em uma varivel sejam compatveis com o tipo da varivel. A linguagem Java uma linguagem fortemente tipada.

Mais SobreEm geral, as linguagens de programao possuem convenes para denir os nomes das variveis. Essas convenes ajudam o desenvolvimento de um cdigo mais legvel. Na conveno de nomes da linguagem Java, os nomes das variveis devem seguir o padro camel case com a primeira letra minscula (lower camel case). Veja alguns exemplos:

nomeDoCliente numeroDeAprovadosA conveno de nomes da linguagem Java pode ser consultada na seguinte url: http://www.

oracle.com/technetwork/java/codeconv-138413.html

A declarao de uma varivel pode ser realizada em qualquer linha de um bloco. No necessrio declarar todas as variveis no comeo do bloco como acontece em algumas linguagens de programao.1 2 3 4 5 6 7 8 // Declarao com Inicializao int numero = 1 ; // Uso da varivel System . out . println ( numero ) ; // Outra Declarao com Inicializao double preco = 137.6;

10

www.k19.com.br

119 1 11

L GICA

// Uso da varivel System . out . println ( preco ) ;Cdigo Java 2.7: Declarando em qualquer linha de um bloco.

No podemos declarar duas variveis com o mesmo nome em um nico bloco ou escopo pois ocorrer um erro de compilao.1 2 3 4 5 // Declarao int numero = 1 ; // Erro de Compilao int numero = 1 ;Cdigo Java 2.8: Duas variveis com o mesmo nome no mesmo bloco.

InicializaoToda varivel deve ser inicializada antes de ser utilizada pela primeira vez. Se isso no for realizado, ocorrer um erro de compilao. A inicializao realizada atravs do operador de atribuio =. Esse operador guarda um valor em uma varivel.1 2 3 4 5 6 7 8 9 1 11 12 // Declaraes int numero ; double preco ; // Inicializao numero = 1 ; // Uso Correto System . out . println ( numero ) ; // Erro de compilao System . out . println ( preco ) ;Cdigo Java 2.9: Inicializao

Tipos PrimitivosA linguagem Java dene um conjunto de tipos bsicos de dados que so chamados tipos primitivos. A tabela abaixo mostra os oito tipos primitivos da linguagem Java e os valores compatveis. Tipo byte short int long oat Descrio Valor inteiro entre -128 e 127 (inclusivo) Valor inteiro entre -32.768 e 32.767 (inclusivo) Valor inteiro entre -2.147.483.648 e 2.147.483.647 (inclusivo) Valor inteiro entre -9.223.372.036.854.775.808 e 9.223.372.036.854.775.807 (inclusivo) Valor com ponto utuante entre 1, 40129846432481707 1045 e 3, 40282346638528860 1038 (positivo ou negativo)www.k19.com.br

Tamanho (peso) 1 byte 2 bytes 4 bytes 8 bytes 4 bytes

11

L GICA

12

Tipo double boolean char

Descrio Valor com ponto utuante entre 4, 94065645841246544 10324 e 1, 79769313486231570 10308 (positivo ou negativo) true ou false Um nico caractere Unicode de 16 bits. Valor inteiro e positivo entre 0 (ou \u0000) e 65.535 (ou \uffff)Tabela 2.1: Tipos primitivos de dados em Java.

Tamanho (peso) 8 bytes 1 bit 2 bytes

ImportanteNenhum tipo primitivo da linguagem Java permite o armazenamento de texto. O tipo primitivo char armazena apenas um caractere. Quando necessrio armazenar um texto, devemos utilizar o tipo String. Contudo, importante salientar que o tipo String no um tipo primitivo.

OperadoresPara manipular os valores das variveis de um programa, devemos utilizar os operadores oferecidos pela linguagem de programao adotada. A linguagem Java possui diversos operadores e os principais so categorizados da seguinte forma: Aritmtico (+, -, *, /, %) Atribuio (=, +=, -=, *=, /=, %=) Relacional (==, !=, =) Lgico (&&, ||)

AritmticoOs operadores aritmticos funcionam de forma muito semelhante aos operadores na matemtica. Os operadores aritmticos so: Soma + Subtrao Multiplicao * Diviso / Mdulo %1 2 3 4 5 6 7 int int int int int x = x = umMaisUm = 1 + 1; // umMaisUm = 2 tresVezesDois = 3 * 2; // tresVezesDois = 6 quatroDivididoPor2 = 4 / 2; // quatroDivididoPor2 = 2 seisModuloCinco = 6 % 5; // seisModuloCinco = 1 x = 7; x + 1 * 2; // x = 14 x - 4; // x = 1

12

www.k19.com.br

138 x = x / (6 - 2 + (3*5) /(16 -1) ) ; // x = 2Cdigo Java 2.10: Exemplo de uso dos operadores aritmticos.

L GICA

ImportanteO mdulo de um nmero x , na matemtica, o valor numrico de x desconsiderando o seu sinal (valor absoluto). Na matemtica expressamos o mdulo da seguinte forma: | 2| = 2. Em linguagens de programao, o mdulo de um nmero o resto da diviso desse nmero por outro. No exemplo acima, o resto da diviso de 6 por 5 igual a 1. Alm disso, lemos a expresso 6%5 da seguinte forma: seis mdulo cinco.

ImportanteAs operaes aritmticas em Java obedecem as mesmas regras da matemtica com relao precedncia dos operadores e parnteses. Portanto, as operaes so resolvidas a partir dos parnteses mais internos at os mais externos, primeiro resolvemos as multiplicaes, divises e os mdulos. Em seguida, resolvemos as adies e subtraes.

AtribuioNas sees anteriores, j vimos um dos operadores de atribuio, o operador = (igual). Os operadores de atribuio so: Simples = Incremental += Decremental -= Multiplicativa *= Divisria /= Modular %=1 2 3 4 5 6 int valor = 1; valor += 2; valor -= 1; valor *= 6; valor /= 3; valor %= 3; // // // // // // valor valor valor valor valor valor = = = = = = 1 3 2 12 4 1

Cdigo Java 2.11: Exemplo de uso dos operadores de atribuio.

As instrues acima poderiam ser escritas de outra forma:1 2 3 4 5 6 int valor = 1; valor = valor + valor = valor valor = valor * valor = valor / valor = valor % 2; 1; 6; 3; 3; // // // // // // valor valor valor valor valor valor = = = = = = 1 3 2 12 4 1

www.k19.com.br

13

L GICA

14

Cdigo Java 2.12: O mesmo exemplo anterior, usando os operadores aritmticos.

Como podemos observar, os operadores de atribuio, com exceo do simples (=), reduzem a quantidade de cdigo escrito. Podemos dizer que esses operadores funcionam como atalhos para as operaes que utilizam os operadores aritmticos.

RelacionalMuitas vezes precisamos determinar a relao entre uma varivel ou valor e outra outra varivel ou valor. Nessas situaes, utilizamos os operadores relacionais. As operaes realizadas com os operadores relacionais devolvem valores do tipo primitivo boolean. Os operadores relacionais so: Igualdade == Diferena != Menor < Menor ou igual Maior ou igual >=1 2 3 4 5 6 7 8 int valor = 2; boolean t = false ; t = ( valor == 2) ; t = ( valor != 2) ; t = ( valor < 2) ; t = ( valor 1) ; t = ( valor >= 1) ;

// // // // // //

t t t t t t

= = = = = =

true false false true true true

Cdigo Java 2.13: Exemplo de uso dos operadores relacionais em Java.

LgicoA linguagem Java permite vericar duas ou mais condies atravs de operadores lgicos. Os operadores lgicos devolvem valores do tipo primitivo boolean. Os operadores lgicos so: E lgico && OU lgico ||1 2 3 4 5 6 7 int valor = 3 boolean teste teste = valor teste = valor teste = valor teste = valor teste = valor ; = < < > > 2 ; > 3 ; > 2 ; < 2 ; == 3 ;

// // // // //

teste teste teste teste teste

= = = = =

true false true false true

Cdigo Java 2.14: Exemplo de uso dos operadores lgicos em Java.

14

www.k19.com.br

15

L GICA

IF-ELSEO comportamento de uma aplicao pode ser inuenciado por valores denidos pelos usurios. Por exemplo, considere um sistema de cadastro de produtos. Se um usurio tenta adicionar um produto com preo negativo, a aplicao no deve cadastrar esse produto. Caso contrrio, se o preo no for negativo, o cadastro pode ser realizado normalmente. Outro exemplo, quando o pagamento de um boleto realizado em uma agncia bancria, o sistema do banco deve vericar a data de vencimento do boleto para aplicar ou no uma multa por atraso. Para vericar uma determinada condio e decidir qual bloco de instrues deve ser executado, devemos aplicar o comando if.1 2 3 4 5 if ( preco < ) { System . out . println ( " O preo do produto no pode ser negativo " ) ; } else { System . out . println ( " Produto cadastrado com sucesso " ) ; }Cdigo Java 2.15: Comando if

O comando if permite que valores booleanos sejam testados. Se o valor passado como parmetro para o comando if for true, o bloco do if executado. Caso contrrio, o bloco do else executado. O parmetro passado para o comando if deve ser um valor booleano, caso contrrio o cdigo no compila. O comando else e o seu bloco so opcionais.

WHILEEm alguns casos, necessrio repetir um trecho de cdigo diversas vezes. Suponha que seja necessrio imprimir 10 vezes na tela a mensagem: Bom Dia. Isso poderia ser realizado colocando 10 linhas iguais a essa no cdigo fonte:1 System . out . println ( " Bom Dia " ) ;Cdigo Java 2.16: Bom Dia

Se ao invs de 10 vezes fosse necessrio imprimir 100 vezes, j seriam 100 linhas iguais no cdigo fonte. muito trabalhoso utilizar essa abordagem para solucionar esse problema. Atravs do comando while, possvel denir quantas vezes um determinado trecho de cdigo deve ser executado pelo computador.1 2 3 4 5 6 int contador = ;

while ( contador < 1 ) { System . out . println ( " Bom Dia " ) ; contador ++; }

www.k19.com.br

15

L GICA

16

Cdigo Java 2.17: Comando while

A varivel contador indica o nmero de vezes que a mensagem Bom Dia foi impressa na tela. O operador ++ incrementa a varivel contador a cada rodada. O parmetro do comando while tem que ser um valor booleano. Caso contrrio, ocorrer um erro de compilao.

FORO comando for anlogo ao while. A diferena entre esses dois comandos que o for recebe trs argumentos.1 2 3 for ( int contador = ; contador < 1 System . out . println ( " Bom Dia " ) ; } ; contador ++) {

Cdigo Java 2.18: Comando for

Exerccios de Fixao4

Imprima na tela o seu nome 100 vezes. Adicione na pasta logica o seguinte arquivo.class ImprimeNome { public static void main ( String [] args ) { for ( int contador = ; contador < 1 ; contador ++) { System . out . println ( " Rafael Cosentino " ) ; } } }Cdigo Java 2.19: ImprimeNome.java

1 2 3 4 5 6 7

Compile e execute a classe ImprimeNome.K19 / Rafael / logica$ javac ImprimeNome . java K19 / Rafael / logica$ java ImprimeNome

Terminal 2.6: Imprimindo 100 vezes um nome

5

Imprima na tela os nmeros de 1 at 100. Adicione na pasta logica o seguinte arquivo.class ImprimeAte1 { public static void main ( String [] args ) { for ( int contador = 1; contador