Você está na página 1de 154

H

a
b
i
l
i
t
a

o

t

c
n
i
c
a

e
m
Programao
de Computadores 4
Volume 4
Informtica
Programao de
computadores
Ralfe Della Croce Filho
Carlos Eduardo Ribeiro
So Paulo
2010
Informtica
Dados Internacionais de Catalogao na Publicao (CIP)
D357
Della Croce Filho, Ralfe
Informtica, programao de computadores / Ralfe Della Croce
Filho, Carlos Eduardo Ribeiro ; revisor Srgio Furgeri ; coordenador
Luis Eduardo Fernandes Gonzalez. -- So Paulo : Fundao Padre Anchieta, 2010
(Manual de Informtica Centro Paula Souza, v. 4)
ISBN 978-85-61143-46-6
1. Sistemas operacionais (Computadores) 2. Softwares de aplicao
I. Ribeiro, Carlos Eduardo II. Furgeri, Srgio, revisor III.
Gonzalez, Luis Eduardo Fernandes, coord. IV. Ttulo
CDD 005.43
Vice-Diretor Superintendente
Csar Silva
Chefe de Gabinete da Superintendncia
Elenice Belmonte R. de Castro
Coordenadora da Ps-Graduao, Extenso e
Pesquisa
Helena Gemignani Peterossi
Coordenador do Ensino Superior de Graduao
Angelo Luiz Cortelazzo
Coordenador de Ensino Mdio e Tcnico
Almrio Melquades de Arajo
Coordenador de Formao Inicial e Educao
Continuada
Celso Antonio Gaiote
Coordenador de Infraestrutura
Rubens Goldman
Coordenador de Gesto Administrativa e
Financeira
Armando Natal Maurcio
Coordenador de Recursos Humanos
Elio Loureno Bolzani
Assessora de Avaliao Institucional
Roberta Froncillo
Assessora de Comunicao
Gleise Santa Clara
Procurador Jurdico Chefe
Benedito Librio Bergamo
GovernaDor
Jos Serra

vICe-GovernaDor
Alberto Goldman
SeCretrIo De DeSenvolvImento
Geraldo Alckmin
Presidente do Conselho Deliberativo
Yolanda Silvestre
Diretora Superintendente
Laura Lagan
ncleo Cultura educao
Coordenador: Fernando Jos de Almeida
Gerente: Monica Gardelli Franco
Equipe de autoria Centro Paula Souza
Coordenao geral: Ivone Marchi Lainetti Ramos
Coordenao da srie Informtica: Luis Eduardo
Fernandes Gonzalez
Autores: Carlos Eduardo Ribeiro, Evaldo Fernandes
Ru Jnior, Gustavo Dibbern Piva, Joo Paulo Lemos
Escola, Luciene Cavalcanti Rodrigues, Ralfe Della
Croce Filho, Wilson Jos de Oliveira
Reviso tcnica: Anderson Wilker Sanfins, Luis
Claudinei de Moraes, Humberto Celeste Innarelli,
Srgio Furgeri
equipe de edio
Coordenao geral
Alfredo Nastari
Coordenao editorial
Mirian Ibaez
Consultor tcnico
Victor Emmanuel J. S. Vicente
Presidente
Paulo Markun
vice-Presidente
Fernando Jos de Almeida
Edio de texto: Marlene Jaggi
Editores assistentes: Celia Demarchi
e Wagner Donizeti Roque
Secretrio editorial: Antonio Mello
Revisores: Antonio Carlos Marques, Fabiana Lopes
Bernardino, Jos Batista de Carvalho, Lieka Felso
e Miguel Facchini
Direo de arte: Deise Bitinas
Edio de arte: Ana Onofri
Editoras assistentes: Nane Carvalho, Nicia Cecilia
Lombardi e Roberta Moreira
Assistentes: Ana Silvia Carvalho, Claudia Camargo
e Felipe Lamas
Ilustraes: Carlos Grillo
Pesquisa iconogrfica: Completo Iconografia,
Maria Magalhes e Priscila Garofalo
Fotografia: Carlos Piratininga, Eduardo Pozella (fotgrafos)
e Daniela Mller (produtora)
Tratamento de imagens: Sidnei Testa
Impresso em Vitopaper 76g, papel
sinttico de plstico reciclado, da Vitopel,
pela Grfica Ideal.
3.3. Formatao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.4. Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
3.5. Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.6. Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.7. Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.8. Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.9. Formulrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.10. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Captulo 4
lgica de programao aplicada
linguagem Java
4.1. A plataforma de desenvolvimento . . . . . . . . . . . . . . . . . . . . . 96
4.1.1. JRE (Java Runtime Environment) . . . . . . . . . . . . . . . . . 97
4.1.1.1. JVM (Java Virtual Machine) . . . . . . . . . . . . . . 97
4.1.1.2. API (Application Programming
Interface) . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.1.2. Ambientes de desenvolvimento . . . . . . . . . . . . . . . . . 98
4.1.2.1. JSE (Java Standard Edition) . . . . . . . . . . . . . . 98
4.1.2.2. JEE (Java Enterprise Edition) . . . . . . . . . . . 98
4.1.2.3. JME (Java Micro Edition) . . . . . . . . . . . . . . . . 98
4.1.2.4. JDK (Java Development Kit) . . . . . . . . . . . 99
4.1.2.5. JSE: nosso foco . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.1.3. A portabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Captulo 1
lgica de programao
1.1. Fluxograma e pseudocdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
1.2. Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.3. Constantes e variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.4. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.5. Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.6. Vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.7. Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.8. Programao modular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Captulo 2
estrutura de dados
2.1. Lista encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.2. Lista circular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.3. Lista duplamente encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.4. Pilhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.5. Filas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
2.6. rvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Captulo 3
Criao de pginas Web
3.1. Identificao do documento . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.2. Estrutura do documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Capa: Luiz Felipe do
Nascimento, aluno de uma
Etec do Centro Paula Souza.
Foto: Eduardo Pozella
Edio: Deise Bitinas
21
49
57
93
Incio
Fim
nome como caractere
idade como inteiro
salrio como utuante
nome Joozinho
idade 15
salrio 1500
nome
S
e
t
t
e
r
s
a
p
r
e
s
e
n
t
a
r
P
e
s
s
o
a
(
)
G
e
t
t
e
r
s
endereco
telefone
Sumrio
4.5.6.1.1. Mtodo get . . . . . . . . . . . . . . . . . . 114
4.5.6.1.2. Mtodo set . . . . . . . . . . . . . . . . . . 115
4.5.7. Representao do encapsulamento
em objeto do tipo Pessoa . . . . . . . . . . . . . . . . . . . . . . 115
4.5.8. Viso geral da classe
Pessoa e sua estrutura . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.6. Entrada e sada de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.6.1. Declarao import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.6.2. Apresentao de dados (sada) . . . . . . . . . . . . . . . . . 117
4.6.3. Leitura de dados (entrada) . . . . . . . . . . . . . . . . . . . . . 119
4.7. Assinatura de mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.7.1. Retorno de valor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.7.2. Passagem de parmetro . . . . . . . . . . . . . . . . . . . . . . . . 121
4.7.3. Retorno de valor
e passagem de parmetro . . . . . . . . . . . . . . . . . . . . . . 121
4.8. Estruturas e recursos da linguagem Java . . . . . . . . . . . . . . 122
4.8.1. Palavras reservadas do Java . . . . . . . . . . . . . . . . . . . . 122
4.8.2. Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.8.3. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.8.4. Variveis e constantes . . . . . . . . . . . . . . . . . . . . . . . . . . 125
4.8.5. Converses de tipos de dados . . . . . . . . . . . . . . . . . 126
4.8.5.1. Converso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.8.5.2. Cast (matriz) . . . . . . . . . . . . . . . . . . . . . . . . . . 127
4.8.5.3. Promoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
4.2. Origem da orientao a objetos . . . . . . . . . . . . . . . . . . . . . .100
4.2.1. Abstrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.3. UML (Unified Modeling Language) . . . . . . . . . . . . . . . . . . . . 101
4.4. Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.5. Orientao a objetos (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.5.1. Componentes elementares . . . . . . . . . . . . . . . . . . . . .104
4.5.1.1. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104
4.5.1.1.1. Atributos . . . . . . . . . . . . . . . . . . . . . 105
4.5.1.1.2. Mtodos . . . . . . . . . . . . . . . . . . . . . . 105
4.5.1.1.3. Detalhando o
diagrama de classe . . . . . . . . . . . 105
4.5.1.1.4. Codificao da
classe Pessoa . . . . . . . . . . . . . . . . .106
4.5.1.1.5. Comentrios . . . . . . . . . . . . . . . . . 109
4.5.1.2. Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4.5.2. Modificadores de acesso . . . . . . . . . . . . . . . . . . . . . . . 111
4.5.2.1. Private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4.5.2.2. Public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.5.2.3. Protected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.5.3. Mtodos construtores . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.5.4. Garbage collector (coletor de lixo) . . . . . . . . . . . . 113
4.5.5. O comando this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.5.6. Encapsulamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.5.6.1. Mtodos de acesso . . . . . . . . . . . . . . . . . . . . 114
Sumrio
4.10.3. Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.11. Interfaces grficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
4.11.1. AWT (Abstract Window Toolkit) . . . . . . . . . . . . . 156
4.11.2. Interfaces listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
4.11.3. Swing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
4.12. Tratamento de excees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.12.1. Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
4.12.2. Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
4.12.2.1. Unchecked Exception . . . . . . . . . . . . . . . . 167
4.12.2.2. Checked Exception . . . . . . . . . . . . . . . . . . 167
4.12.2.3. Throws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
4.12.2.4. Try-catch-finally . . . . . . . . . . . . . . . . . . . . . . 167
4.13. Conexo com banco de dados . . . . . . . . . . . . . . . . . . . . . . . 172
4.13.1. JDBC (Java Database Connectivity) . . . . . . . . . . . 172
4.13.2. Implementao do acesso a dados . . . . . . . . . . . . 174
4.13.2.1. Classe java.sql.Statement . . . . . . . . . . . . . 176
4.13.2.2. A classe PreparedStatement . . . . . . . . . 176
4.13.2.3. A classe CallableStatement . . . . . . . . . . 176
4.13.3. Incluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
4.13.4. Alterao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
4.13.5. Excluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
4.13.6. Listagem geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180
4.13.7. Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
4.8.6. Desvios condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.8.6.1. If-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.8.6.2. Switch-case . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.8.7. Laos de repetio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.8.7.1. While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.8.7.2. Do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.8.7.3. For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.8.8. Array (Vetor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.8.8.1. Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . 131
4.8.8.2. Bidimensional (Matrizes) . . . . . . . . . . . . . . 133
4.8.9. Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
4.8.9.1. ArrayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
4.9. Orientao a objetos (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.9.1. Herana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.9.2. Sobrecarga de mtodo (overload) . . . . . . . . . . . . . 142
4.9.3. Sobrescrita de mtodo (override). . . . . . . . . . . . . . 145
4.9.4. Classes e mtodos abstratos . . . . . . . . . . . . . . . . . . . 147
4.9.5. Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.9.6. Polimorfismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.9.6.1. De mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.9.6.2. De classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.9.6.3. De interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
4.10. Padres de desenvolvimento de sistemas . . . . . . . . . . . 154
4.10.1. Programao em trs camadas . . . . . . . . . . . . . . . . 154
4.10.2. MVC (Model, View, Controller) . . . . . . . . . . . . . . 154
0 1 2 3 4
matrizInteiros
12
4
32
8
17
1
36
67
6
62
74
23
47
25
41
9
49
85
3
0
1
2
3
4
ndices
ndices
nome
valores
Sumrio
6.3.4. Operadores de incremento e decremento . . . .203
6.3.5. Operadores lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
6.3.6. Converses C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
6.3.7. Parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
6.3.8. Convert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
6.4. Estrutura de deciso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205
6.4.1. Condio verdadeiro if . . . . . . . . . . . . . . . . . . . . . . .205
6.4.2. Condio verdadeiro ou falso ifelse . . . . . . .205
6.4.3. Condies mltiplas
if...elseif...elseif....else . . . . . . . . . . . . . . . . . . . . . . . . . . . .206
6.4.4. Mltiplos testes Switch() . . . . . . . . . . . . . . . . . . . .206
6.5. Estruturas de repetio usadas na linguagem . . . . . . . .207
6.5.1. While() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
6.5.2. Do While() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
6.5.3. For() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
6.5.4. Break e continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
6.6. Tratamento de erros / excees . . . . . . . . . . . . . . . . . . . . . .210
6.6.1. Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
6.7. Vetores e matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
6.8. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
6.9. Windows Form
Application componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
6.9.1. Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
6.9.2. Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
6.9.3. TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
6.9.4. Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Captulo 5
visual Studio 2008
5.1. .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
5.1.1. Mquina virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.1.2. Garbage collector (coletor de lixo) . . . . . . . . . . . .188
5.2. Solues e projetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188
5.2.1. Iniciando o Visual Studio Solution . . . . . . . . . . . . 189
5.2.2. Conhecendo o Visual Studio . . . . . . . . . . . . . . . . . . . 190
5.2.3. Gerenciador de janelas . . . . . . . . . . . . . . . . . . . . . . . . . 192
5.2.4. Nomenclatura de componentes . . . . . . . . . . . . . . . 193
5.2.5. IntelliSense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
5.2.6. Executando a aplicao . . . . . . . . . . . . . . . . . . . . . . . . . 194
5.2.7. Identificao de erros . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Captulo 6
C Sharp
6.1. Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
6.1.1. Console Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
6.1.2. Windows Form Application . . . . . . . . . . . . . . . . . . . . 198
6.2. Tipos de dados e variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
6.2.1. Alocao de memria . . . . . . . . . . . . . . . . . . . . . . . . . . 201
6.3. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202
6.3.1. Operadores aritmticos . . . . . . . . . . . . . . . . . . . . . . . .202
6.3.2. Operadores relacionais . . . . . . . . . . . . . . . . . . . . . . . .202
6.3.3. Operadores aritmticos
de atribuio reduzida . . . . . . . . . . . . . . . . . . . . . . . . . . .202
185
197
Sumrio
)


C
on
sole.R
ead
K
ey()

E
nd Sub
Sub M
ain()


D
im
x A
s Integer = 3


If x = 1
If If
T en



C
on
sole.W
riteL
ine(A
varivel X
U
M
)


E
lseIf x = 2
E
lseIf
E
lseIf
T en



C
on
sole.W
riteL
ine(A
varivel X
D
O
IS)


E
lseIf x = 3
E
lseIf
E
lseIf
T en



C
on
sole.W
riteL
ine(A
varivel X
T
R

S)


E
lse



C
on
sole.W
riteL
ine(Q
u
alquer outro valor)


E
nd If
E
nd
E
nd


C
on
sole.R
ead
K
ey()

E
nd Sub
6.9.5. ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
6.9.6. ListBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
6.9.7. CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
6.9.8. RadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
6.9.8.1. Agrupamento . . . . . . . . . . . . . . . . . . . . . . . . . .222
6.10. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223
Captulo 7
visual Basic.net
7.1. Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226
7.1.1. Console Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226
7.1.2. Windows Form Application . . . . . . . . . . . . . . . . . . . .226
7.2. Tipos de dados e variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
7.2.1. Atribuio DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228
7.2.2. Variveis globais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228
7.3. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229
7.3.1. Operadores aritmticos . . . . . . . . . . . . . . . . . . . . . . . .229
7.3.2. Operadores relacionais . . . . . . . . . . . . . . . . . . . . . . . . .229
7.3.3. Operadores aritmticos de atribuio reduzida . .230
7.3.4. Operadores lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230
7.3.5. Converses em VB.NET . . . . . . . . . . . . . . . . . . . . . . .230
7.4. Estrutura de deciso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
7.4.1. Condio Verdadeiro if . . . . . . . . . . . . . . . . . . . . . . . 231
7.4.2. Condio Verdadeiro ou Falso ifelse . . . . . . 231
225
Sumrio
7.4.3. Condies Mltiplas
if...elseif...elseif....else . . . . . . . . . . . . . . . . . . . . . . . . . . 231
7.4.4. Mltiplos testes Select Case() . . . . . . . . . . . . . . . .232
7.5. Estrutura de repetio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232
7.5.1. While() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232
7.5.2. Do While()...Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233
7.5.3. Do...Loop Until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233
7.5.4. For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233
7.5.5. For...Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .233
7.6. Tratamento de erros e excees . . . . . . . . . . . . . . . . . . . . .234
7.7. Vetores e matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235
7.8. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
7.9. Windows form application componentes . . . . . . . . . . .236
7.9.1. Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
7.9.2. Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236
7.9.3. TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
7.9.4. Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
7.9.5. ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
7.9.6. ListBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
7.9.7. CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
7.9.8. RadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
7.9.8.1. Agrupamento . . . . . . . . . . . . . . . . . . . . . . . . . .240
7.10. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
CaPtUlo 9
aDo.net
9.1. DataSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
9.2. DataReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
9.3. Objetos para banco de dados . . . . . . . . . . . . . . . . . . . . . . . . .265
9.3.1. Objeto DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .265
9.3.2. Objeto DataView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
9.4. Mtodos de conexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
9.4.1. Objeto Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
9.4.2. Exemplo genrico de conexo . . . . . . . . . . . . . . . . . 267
9.4.2.1. Implementando a leitura de dados . . . .268
9.4.3. Conexo com VB.NET . . . . . . . . . . . . . . . . . . . . . . . . . 269
9.4.3.1. Base de dados . . . . . . . . . . . . . . . . . . . . . . . . . . 269
9.4.3.2. Criando o Form . . . . . . . . . . . . . . . . . . . . . . . 270
9.4.3.3. Inserindo o cdigo . . . . . . . . . . . . . . . . . . . . . 270
9.4.3.4. Utilizando uma DataTable . . . . . . . . . . . . . 271
9.4.3.4.1. Visual do DataGrid . . . . . . . . . . 274
9.4.3.5. Travando colunas . . . . . . . . . . . . . . . . . . . . . . 274
9.4.4. Utilizando um DataView . . . . . . . . . . . . . . . . . . . . . . . . 275
9.4.5. Conectando com ASP.NET . . . . . . . . . . . . . . . . . . . .277
Consideraes finais
referncias bibliogrficas
Glossrio
Captulo 8
aSP.net
8.1. Aplicao ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244
8.1.2. Web Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
8.1.3. Projeto Web Application (Aplicao Web) . . 245
8.1.4. Ciclo de vida da Aplicao . . . . . . . . . . . . . . . . . . . . . .246
8.1.5. Executando uma Application Service
(Servio de Aplicao) . . . . . . . . . . . . . . . . . . . . . . . . . .246
8.1.6. Escrevendo a Aplicao . . . . . . . . . . . . . . . . . . . . . . . . . 247
8.1.7. Estruturando uma pgina ASP.NET . . . . . . . . . . . .248
8.1.7.1. HTML Server Controls . . . . . . . . . . . . . . . .248
8.1.7.2. Web Server Controls . . . . . . . . . . . . . . . . . 249
8.1.7.3. Validation Server Controls . . . . . . . . . . . . 249
8.2. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
8.3. HTML Server Controls e Web Server Controls . . . . .250
8.3.1. HTML Server Controls . . . . . . . . . . . . . . . . . . . . . . . . .250
8.3.2. Web Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . 251
8.4. Sesses em ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
8.4.1. Recuperando sesso em outra pgina
por meio de um evento . . . . . . . . . . . . . . . . . . . . . . . .254
8.4.2. Recuperando sesso em outra pgina
automaticamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256
8.5. Dados via URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257
243 261
282
283
285
Sumrio
Captulo 1

Fluxograma e pseudocdigo


Tipos de dados

Constantes e variveis

Operadores

Comandos

Vetor

Matriz

Programao modular
Lgica de
programao
A
lgica computacional um dos primeiros passos para quem
pretende entrar no mundo da computao. Normalmente,
no percebemos sua aplicao para resolver diferentes nveis
de problemas nem sua relao com outras reas da cincia. Isso porque,
em geral, a lgica computacional est associada lgica matemtica
(FORBELONE, 2005). um recurso que permite a criao de alter-
nativas viveis e tecnicamente corretas, eficientes e rpidas. Antes de
resolver um problema, no entanto, temos de saber interpret-lo. Assim,
evitam-se resultados indesejveis ou desvios de percurso, da mesma ma-
neira que surge a oportunidade de eliminar eventuais dvidas, definin-
do o melhor algoritmo, que pode ser o pseudocdigo ou o f luxograma.
A maioria das atividades que executamos resultado de uma sequncia de pas-
sos lgicos. Por exemplo, amarrar o cadaro de um tnis, abrir uma porta,
trocar uma lmpada ou fazer aquele delicioso bolo de chocolate. A sequncia
das etapas, ou melhor, das operaes a executar, determinada pelo algoritmo
de forma lgica. Uma maneira mais simples de dizer isso que a sucesso de
aes faz todo o sentido. Usando o mesmo exemplo do bolo, o comeo de tudo
reunir os ingredientes e us-los na sequncia certa. assim tambm com as
operaes de clculos, representadas pelo pseudocdigo a partir de comandos
no formato de texto (exatamente como uma receita) ou pelo fuxograma de
forma grfca. E o fato de ser constitudo por smbolos geomtricos facilita o
processo de visualizao das operaes.
1.1. Fluxograma e pseudocdigo
Para entender melhor o conceito, vamos elaborar, resumidamente, um al-
goritmo que represente os passos necessrios para que algum tome um
refrigerante em uma lata: 1. pegar o recipiente; 2. abrir a tampa; 3. tomar
o contedo (veja quadro Algortimo com os passos necessrios da latinha). A
partir dessa mesma situao, possvel inserir mais operaes em nosso
algoritmo, deixando-o mais detalhado (observe o quadro Algoritmo deta-
lhado da latinha).
1 - Pegar o recipiente.
1 - Pegar o refrigerante
com a mo esquerda.
4 Eliminar o lacre.
7 - Ingerir o lquido. 8 - Voltar a lata na
posio original.
3 - Remover o lacre.
6 - Inclinar a lata.
2 - Abrir a tampa. 3 - Tomar o contedo.
2 - Segurar o lacre com
a mo direita.
5 Posicionar a lata
corretamente na boca.
Quadro
Algoritmo
detalhado
da latinha.
Quadro
Algoritmo
com os passos
necessrios
da latinha.
I nFoRmtI Ca 4
22
CaPtulo 1
23
Entre os diferentes smbolos que constituem a estrutura de um fuxograma, os
mais comuns esto includos na tabela 1.
Aproveitando o mesmo exemplo da latinha de refrigerante, vamos reescre-
ver os passos lgicos por meio de um f luxograma (figura 1).
Figura 1
Fluxograma
dos passos
lgicos.
Programa nome_do_programa
Declare
{declarao de variveis}
Incio
{instrues e comandos}
Fim
Comandos e
instrues ordenados
de forma lgica
Declaraes de
variveis
Ttulo do Algoritmo
Existem muitos softwares destinados construo de fuxogramas, mas poss-
vel faz-los tambm com o uso do Microsoft Word. Os exemplos desse material
foram elaborados pelo Microsoft Visio.
Pseudocdigo
Os algoritmos so desenvolvidos em uma linguagem denominada pseudoc-
digo ou, como preferem alguns autores, portugus estruturado. Podem ser
criados sem o formalismo das linguagens de programao, mas obedecem a
uma regra bsica de estruturao: cabealho, declarao e instrues, confor-
me o seguinte modelo:
Incio Fim
Pegar a
latinha
Remover o
lacre
Eliminar o
lacre
Abrir a
tampa
Segurar o
lacre
Posicionar a
lata na boca
Voltar a lata
na posio
original
Tomar o
refrigerante
Pegar o
refrigerante
Inclinar a
lata
Ingerir o
lquido
tabela 1
NOME = TERMINAL
FUNO = Indica INCIO ou FIM
de um processamento
NOME = PROCESSAMENTO
FUNO = Denio de variveis ou
processamentos em geral (Clculos)
NOME = ENTRADA MANUAL
FUNO = Entrada de dados via
teclado, idntico ao comando LEIA
NOME = DISPLAY
FUNO = Sada de Dados, mostra
um texto e/ou varivel na tela,
idntico ao comando ESCREVA
NOME = DOCUMENTO
FUNO = Sada de Dados, envia
um texto e/ou varivel para a impressora,
usado em relatrios. Idntico ao
comando IMPRIMA
NOME = DECISO
FUNO = Deciso a ser tomada,
retornando verdadeiro ou falso,
idntico ao comando SE
NOME = CONECTOR
FUNO = Desvia o uxo para uma outra
pgina, sendo interligados pelo conector
NOME = ENTRADA/SADA
FUNO = Leitura de gravao
de arquivos
NOME = SETA
FUNO = Indica a direo do uxo
NOME = LOOP
FUNO = Realiza o controle de loop
SIMBOLOGIA DO FLUXOGRAMA
SMBOLO NOME E FUNO
Incio
I nFoRmtI Ca 4
24
CaPtulo 1
25
de sua varivel ou constante e no utilize espao em branco ou caracteres especiais,
com exceo do underline (_). Exemplos:
nome Joozinho
idade 0
minha_idade 15
pag_fnal R$ 1.479,00
Um algoritmo deve ter como caracterstica um nmero fnito de passos, des-
critos de forma precisa e que possam ser executados em um determinado tem-
po. Pode permitir zero ou mais entradas de dados e gerar sadas de dados
refnados. Para construir um algoritmo, preciso usar informaes claras e
objetivas, geralmente compostas de um verbo ou de uma frase direta.
1.2. tipos de dados
A manipulao de dados em um algoritmo ou at mesmo nas linguagens
de programao s possvel com base em algumas regras fundamentais
para a definio dos tipos de dados. preciso diferenciar um dado com
nmeros ou outros tipos de caracteres.
numricos inteiros
Esse tipo de dado representado por nmeros no fracionados positivos ou ne-
gativos, como: 10, 50, -56, -1.000 etc.
numricos utuantes
So representados por nmeros fracionados positivos ou negativos, por exemplo:
10.5, -45.78, 178.67 etc.
Caracteres ou literais
o maior conjunto de dados. So representados por letras, nmeros, sm-
bolos e espao em branco, sempre entre aspas. Exemplo: cadeira, 100,
R$ 10.00, 11h00 etc.
1.3. Constantes e variveis
As constantes so expresses que recebem um valor qualquer que no ser
modificado durante o processo de execuo do algoritmo. J as variveis
tero um valor passvel de modificao a qualquer momento. Um exemplo
de constante o valor de Pi (3,14). E uma varivel que todos conhecemos
bem pode ser a temperatura do dia, registrada de hora em hora.
atribuio e declarao
Atribuir um valor qualquer para uma constante ou uma varivel requer
o uso do sinal de ou =. Isso quer dizer que o valor na frente do si-
nal ser armazenado no elemento anterior ao sinal de atribuio. Veja:

nome Joozinho idade 10 pi 3.14
Independentemente do tipo de dado adotado caracteres variados (Joozinho),
nmeros inteiros (10) ou futuantes (3.14) , o processo de atribuio o mesmo.
Mas a declarao requer cuidado. Por isso, procure escolher o nome da varivel de
acordo com o tipo de dado que ser recepcionado, inicie sempre com letras o nome
1.4. operadores
Os operadores so utilizados pelos pseudocdigos. O mesmo acontece com as
linguagens de programao, cuja funo realizar as diferentes operaes de
aritmtica e de lgica em um ambiente computacional.
aritmticos
Esse grupo tem como responsabilidade realizar as operaes aritmticas
(tabela 2) de um pseudocdigo. As operaes sero realizadas de acordo
com a prioridade, ou seja, parnteses, potncia, multiplicao, diviso e,
por ltimo, soma e subtrao.
Programa variveis
Declare
nome como caractere
idade como inteiro
salrio como futuante
Incio
nome Joozinho
idade 15
salrio 1.500,00
Fim
Figura 2
Estrutura de
pseudocdigo.
Incio
Fim
nome como caractere
idade como inteiro
salrio como utuante
nome Joozinho
idade 15
salrio 1500
No pseudocdigo (fgura 2), as constantes ou variveis devero estar relaciona-
das com os seus respectivos tipos de dados:
I nFoRmtI Ca 4
26
CaPtulo 1
27
Para compreender o processo lgico de dados, observe as tabelas abaixo, mos-
trando os valores originais e os resultados adquiridos a partir dos operadores
lgicos. Esse tipo de quadro conhecido como Tabela Verdade (tabela 5).
Relacionais
Os operadores relacionais (tabela 3) permitem a execuo de testes entre cons-
tantes e variveis.
lgicos e tabela Verdade
Os operadores lgicos (tabela 4 ) executam funes especiais dentro dos pseudo-
cdigos, quando relacionados aos testes condicionais ou a outros valores lgicos.
1.5. Comandos
Uma ao para o computador defnida com um comando que executa deter-
minada operao (mostrar os dados e realizar um clculo, por exemplo). Essas
aes sero representadas nos pseudocdigos por meio de expresses predefni-
das na lgica computacional.
Comando Escreva()
utilizado para mostrar a sada de dados (fgura 3), ou seja, quando uma men-
sagem ou resultado de uma operao dever ser exibida ao usurio. Para que
seja possvel a visualizao do dado, alguns cuidados so fundamentais: as ex-
presses devem aparecer entre aspas, exceto as variveis e valores (inteiros ou
futuantes).
Escreva(bom dia)
valor 10
Escreva(valor)
Escreva(56)
Figura 3
Comando Escreva().
Simulao dos operadores
E e OU
tabela 2
tabela 3
tabela 5
tabela 4
Mensagem ou
varivel
OPERADORES ARITMTICOS
+ adio de nmeros utuantes ou inteiros
+ Concatenao de valores literais (caracteres)
- Subtrao de nmeros utuantes ou inteiros
* multiplicao de nmeros utuantes ou inteiros
/ Diviso de nmeros utuantes e inteiros
** Potncia de nmeros utuantes e inteiros
NO // NOT
Valor Entrada 01 Resultado
Verdadeiro Falso
Falso Verdadeiro
E // AND
Valor Entrada 01 Valor Entrada 02 Resultado
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Falso
Falso Verdadeiro Falso
Falso Falso Falso
OU // OR
Valor Entrada 01 Valor Entrada 02 Resultado
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Verdadeiro
Falso Verdadeiro Verdadeiro
Falso Falso Falso
OPERADORES RELACIONAIS
= Igual
<> Diferente
> maior
< menor
<= menor igual
>= maior igual
OPERADORES LGICOS
no / not Inverte o resultado de uma expresso
E / and Retorna verdadeiro caso todas as
condies retornem verdadeiro
ou / or Retorna verdadeiro quando uma das
condies retorna verdadeiro
chave 1 chave 2
Lgica E lmpada
bateria
lgica ou
I nFoRmtI Ca 4
28
CaPtulo 1
29
Comando leia()
Ao contrrio do comando Escreva(), o Leia() permite a insero de dados pela
interao com o usurio. Eles sero armazenados em variveis devidamente de-
fnidas (fgura 5).
Leia(nome)
Leia(nota1)
Leia(nota2)
Leia(temp)
Ao realizar uma entrada de dados, o ideal que o usurio seja notifcado sobre
o tipo de informao que dever ser inserida. Veja como:
Programa exemplo_leia
Declare
nome como caractere
mdia, nota1, nota2 como futuante
Incio
Escreva(calculando a mdia)
Escreva(Qual o seu nome?)
Leia(nome)
Escreva(Qual a sua nota 1?)
Leia(nota1)
Escreva(Qual a sua nota 2?)
Leia(nota2)
media (nota1 + nota2)/2
Escreva(Sua mdia fnal :)
Escreva(media)
Fim
O pseudocdigo a seguir representa um exemplo mais completo, assim como o
fuxograma, na sequncia (fgura 4):
Programa exemplo_escreva
Declare
nome como caractere
mdia, nota1, nota2 como futuante
Inicio
nome Fulaninho
nota1 10.0
nota2 2.0
media (nota1 + nota2)/2
Escreva(Sua nota fnal :)
Escreva(mdia)
Fim
Figura 4
Fluxograma Escreva.
Figura 5
Entrada de Dados.
Entrada de dados
Fim
nome Fulaninho
nota1 10.0
nota2 2.0
mdia (nota1+nota2)/2
Incio
nome como caractere
mdia, nota1, nota2 como
utuante
Sua nota
nal
mdia
I nFoRmtI Ca 4
30
CaPtulo 1
31
Estrutura de deciso Se...Seno...Fim-Se
Podemos organizar o comando Se(), para criar desvios condicionais de verdadei-
ro ou falso no mesmo teste (fgura 8):
Observe na fgura 6, a mesma representao, no formato de fuxograma:
Figura 6
Fluxograma Leia.
Estrutura de deciso Se...Fim-Se
Os algoritmos, assim como as linguagens de programao, executam as ativi-
dades de forma sequencial. Mas, s vezes, devemos defnir alguns desvios de
acordo com as condies estabelecidas no processo de execuo do algoritmo
conforme a interferncia do usurio. Para que isso ocorra, preciso executar
o comando Se(), que permite realizar desvios condicionais com base em testes
lgicos. A estrutura dos algoritmos composta por um teste condicional e por
um comando ou conjunto de comandos a serem executados a partir desse teste,
mas somente quando o resultado for verdadeiro (fgura 7).
Figura 8
Se...Seno...Fim-Se.
Como fcaria a repetio do teste com a varivel mdia.
Se (media >= 7.00) Ento
Escreva(Voc est aprovado!!!! )
Seno
Escreva(Voc est reprovado!!!! )
Fim-Se
Se (condio) Ento
{comando(s)}
Fim-Se
No prximo exemplo, para estabelecer a condio vamos utilizar os operadores
lgicos j vistos.
Se (mdia >= 7.00) Ento
Escreva(Voc est aprovado!!!! )
Fim-Se
Figura 7
Se...Fim-Se.
Se (condio) Ento
{comando(s) condio verdadeira}
Seno
{comando(s) condio falsa}
Fim-Se
Sim
Sim No
Incio
nome como caractere
mdia, nota1, nota2
como utuante
nome Fim
nota1 Qual a sua
nota 1
Calculando a
mdia
Qual o seu
nome?
mdia =
(nota1+nota2)/2
nota2
Qual a sua
nota 2
Sua mdia
nal
mdia
I nFoRmtI Ca 4
32
CaPtulo 1
33
Estrutura de deciso
Selecione Caso...Seno...Fim-Selecione
Em alguns momentos, haver necessidade de testar a mesma varivel diversas
vezes, como acontece no menu de opes. Para isso, utilizamos o comando Se-
lecione Caso da seguinte forma (fgura 10):
Vamos organizar todo o pseudocdigo, apresentando-o, tambm, no formato
de fuxograma (fgura 9).
Figura 9
Exemplo de teste.
Programa exemplo_teste
Declare
nome como caractere
media, nota1, nota2 como futuante
Incio
Escreva(calculando a mdia)
Escreva(Digite o seu primeiro nome.)
Leia(nome)
Escreva(Qual a sua nota 01?)
Leia(nota1)
Escreva(Qual a sua nota 02?)
Leia(nota2)
mdia (nota1 + nota2)/2
Escreva(Sua nota fnal :)
Escreva(mdia)
Se (media >= 7.00) Ento
Escreva(Aprovado)
Seno
Escreva(Reprovado)
Fim-Se
Escreva(Fim de programa)
Fim
Selecione Caso {varivel}
Caso condio 01
{comando(s)}
Caso condio 02
{comando(s)}
Caso condio 03
{comando(s)}
Seno
{comando(s)}
Fim-Selecione
Figura 10
Selecione Caso.
Sim
Sim
No
Sim
No
Fim
nota2
Aprovado
Reprovado
mdia >=7.00
Incio
nota1 nome
mdia
Qual a sua
nota 02?
Qual a sua
nota 01?
Sua mdia
fnal
Fimdo
programa
mdia =
(nota1 + nota2)/2
Qual o seu
nome?
Calculando
a mdia
nome como caractere
mdia, nota1, nota2
como futuante
I nFoRmtI Ca 4
34
CaPtulo 1
35
Estrutura de repetio Para...Fim-Para
Alm dos desvios sequenciais, possvel criar desvios em loop, ou seja, repetir
trechos do algoritmo sobre determinada condio e controlar a forma com que
os loops sero executados. O comando Para...Fim-Para permite que uma varivel
realize a contagem do nmero de loops a executar, conforme a indicao inicial
e fnal dessa contagem (fgura 12), e tambm identifque o formato em que essa
tarefa ser realizada.
preciso descobrir, em determinada situao, se o usurio escolheu os nmeros
1, 2 ou 3. Qualquer outro diferente, dever gerar a mensagem nmero invli-
do (fgura 11):
Figura 11
Selecione caso.
Alguns exemplos:
Para x = 1 At 5 Faa
Escreva(x) // Sero visualizados os nmeros: 1,2,3,4 e 5.
Fim-Para
Para num = 3 At 6 Faa
Escreva(num) // Sero visualizados os nmeros: 3,4,5 e 6.
Fim-Para
Para vlr = 0 At 10 Passo 2 Faa
Escreva(vlr) // Sero visualizados os nmeros: 0,2,4,6,8 e10.
Fim-Para
Para cont = 3 At 0 Passo -1 Faa
Escreva(cont) // Sero visualizados os nmeros: 3,2,1 e 0.
Fim-Para
Figura 12
Para...Fim-Para.
Leia(nmero)
Selecione Caso nmero
Caso 1
Escreva(Voc escolheu o nmero 01)
Caso 2
Escreva(Voc escolheu o nmero 02)
Caso 3
Escreva(Voc escolheu o nmero 03)
Seno
Escreva(Nmero invlido)
Fim-Selecione
Para <varivel> = <vlr.inicial> At <vlr.fnal> Passo <arg> Faa
{comando(s)}
Fim-Para
Cont = Inicial at
Final
Comando(s)
No
Sim
No
Sim
No
Sim
03 02 01
Voc escolheu
o nmero 01
Voc escolheu
o nmero 02
Voc escolheu
o nmero 03
Nmero
invlido
nmero
I nFoRmtI Ca 4
36
CaPtulo 1
37
Estrutura de repetio Repita...at que
O comando Repita tem a mesma fnalidade do comando Enquanto, quando
o assunto funcionalidade. A nica diferena a localizao da condio de
teste, que ocorre no fnal da cadeia de loop (fgura 14), garantindo a execuo
dos comandos no mnimo uma vez.
Repita
{comando(s)}
At que (condio)
Estrutura de repetio Enquanto...Fim-Enquanto
Assim como o comando Para...Fim-Para permite realizar loop, a instruo En-
quanto...Fim-Enquanto executa o mesmo processo (fgura 13). Mas preciso
lembrar que esse comando no realiza a contagem automaticamente. Por isso,
necessrio implementar um contador de passos.
Figura 13
Enquanto...
Fim-Enquanto.
Figura 14
Repita...Fim-Repita.
Vamos repetir os exemplos da instruo Para...Fim-Para, mas agora com o
comando Enquanto.
x 1
Repita
Escreva(x) // Sero visualizados os nmeros: 1,2,3,4 e 5.
x x + 1
At que (x<=5)
num 3
Repita
Escreva(num) // Sero visualizados os nmeros: 3,4,5 e 6.
num num + 1
At que (x<=6)
vlr 0
Repita
Escreva(vlr) // Sero visualizados os nmeros: 0,2,4,6,8 e 10.
vlr = vlr + 2
At que (vlr <=10)
cont 3
Repita
Escreva(cont) // Sero visualizados os nmeros: 3,2,1 e 0.
cont cont -1
At que (cont >=0)
Enquanto (condio) Faa
{comando(s)}
Fim-Enquanto
x 1
Enquanto (x<=5) Faa
Escreva(x) // Sero visualizados os nmeros: 1,2,3,4 e 5.
x x + 1
Fim-Enquanto
num 3
Enquanto (num <=6) Faa
Escreva(num) // Sero visualizados os nmeros: 3,4,5 e 6.
num num + 1
Fim-Enquanto
vlr 0
Enquanto (vlr <=10) Faa
Escreva(vlr) // Sero visualizados os nmeros: 0,2,4,6,8 e 10.
vlr vlr + 2
Fim-Enquanto
cont 3
Enquanto (cont >=0) Faa
Escreva(cont) // Sero visualizados os nmeros: 3,2,1 e 0.
cont cont -1
Fim-Enquanto
comando(s)
Repita (condio)
Condio
Comando(s)
I nFoRmtI Ca 4
38
CaPtulo 1
39
Programa vetores
Declare
vet como conjunto[1..5] de inteiro
Incio
vet[1] 90
vet[2] 1
vet[3] 100
vet[4] 4 - 1
vet[5] 21
Fim
1.6. Vetor
Defnido tambm como matriz unidimensional, um vetor (tabelas 6 e 7) uma
varivel que possui vrios dados, acessados por meio de uma posio relativa,
seguindo a mesma regra da concepo e atribuio das variveis.
No exemplo anterior, podemos verifcar que cada elemento de um vetor carac-
terizado por uma posio relativa. Observando o vetor de letras, teremos:
Posio 1 valor A
Posio 5 valor R
Posio 8 valor Q
Em um pseudocdigo, realizamos a declarao de um vetor da seguinte forma:
tabela 6
Vetor de Letras.
tabela 7
Vetor de Nmeros.
Programa vetores
Declare
vet como conjunto[n..n1] de <tipo>
Incio
{comandos ou bloco de comandos}
Fim
A H M B R J G Q S P
1 2 3 4 5 6 7 8 9 10
10 56 -4 60 2 6 99 3 1 -10
1 2 3 4 5 6 7 8 9 10
O nome do vetor representado pela expresso vet, cujo conjunto de infor-
maes identifcado por n, posio inicial, e n1, posio fnal, ou seja,
um vetor de 10 posies poder ser representado como [1..10]. E o tipo de
informao que este vetor dever receber.
Para realizar o acesso posio de um vetor, preciso identifcar a posio que
est entre os sinais de [], logo aps o nome do vetor:
Escreva(vet[3])
Leia(vet[2])
trabalhando com vetor
A entrada de dados em um vetor realizada por intermdio de seu identifca-
dor. Para isso, utiliza-se um contador crescente ou decrescente, de acordo com
a necessidade. Vamos carregar 10 informaes numricas dentro de um vetor.
vet como conjunto[1..10] de inteiro
Para i = 1 At 10 Faa
Escreva(Digite um valor na posio, i, do vetor)
Leia(vet[i])
Fim-Para
Seguindo a mesma lgica, podemos realizar a impresso do contedo desse vetor.
Para i = 1 At 10 Faa
Escreva(Valor da posio:, i, do vetor , vet[i])
Fim-Para
Vamos reunir os conceitos de leitura e impresso no mesmo algoritmo.
Programa vetor_dados
Declare
vet como conjunto[1..10] de inteiro
i como inteiro
Incio
Para i = 1 At 10 Faa
Escreva(Digite um valor na posio, i, do vetor)
I nFoRmtI Ca 4
40
CaPtulo 1
41
mat como conjunto[1..5][1..3] de inteiro
Incio
{comando ou bloco de comandos}
Fim
Leia(vet[i])
Fim-Para
Para I = 1 At 10 Faa
Escreva(Valor da posio:, i, do vetor , vet[i])
Fim-Para
Fim
Assim como os vetores, para a atribuio de valores em uma matriz, devemos
identifcar a linha e a coluna.
Programa matriz
Declare
mat como conjunto[1..2][1..2] de inteiro
Incio
mat[1,1] 19
mat[1,2] 2
mat[2,1] 77
mat[2,2] 16
Fim
Outro exemplo para analisar:
Programa mdia
Declare
vetor como conjunto[1..8] de inteiro
soma, mdia como futuante
ct como inteiro
Incio
soma = 0
Para ct = 1 At 8 Faa
Escreva(Digite um valor na posio, ct, do vetor)
Leia(vetor[ct])
soma soma + vetor[ct]
Fim-Para
mdia soma / 8 ---- ou ---- mdia soma / ct
Escreva(A mdia fnal :, mdia)
Fim
1.7. matriz
A matriz, ao contrrio do vetor, multidimensional. Nesse caso, os dados so
armazenados ou lidos de acordo com a relao entre os eixos, e seu ndice re-
presentado por dois ou mais valores. Uma matriz 3x2, por exemplo, possui trs
linhas por duas colunas. Portanto, qualquer referncia aos dados dever apontar
para ambas as posies da forma matriz[2,1], indicando que a informao refe-
renciada est na linha 2 e na coluna 1 da matriz. Grafcamente, tem-se:
Para implementao, realizamos a declarao da matriz da seguinte forma:
Programa matriz
Declare
trabalhando com matriz
A leitura e a impresso das matrizes seguem o mesmo esquema dos vetores. Mas
ser necessrio utilizar dois contadores: um para identifcar a linha e outro, para
coluna. Vejamos o exemplo de uma matriz 2x2.
Programa matriz
Declare
matriz como conjunto[1..2][1..2] de futuante
lin, col como inteiro
Incio
Para lin = 1 At 2 Faa
Para col = 1 At 2 Faa
Escreva(Linha, lin, da matriz)
Escreva(Coluna, col, da matriz)
Escreva(Qual o valor?)
Leia(matriz[lin,col])
Fim-Para
Fim-Para
Escreva(Visualizando os dados da matriz:)
Para lin = 1 At 2 Faa
Para col = 1 At 2 Faa
Escreva(Linha, lin, da matriz)
Escreva(Coluna, col, da matriz)
Escreva(O valor :)
Escreva(matriz[lin, col])
Fim-para
Fim-para
Fim
1 2
1 9 20
2 10 6
3 2 11
matriz[2,1]
matriz 3x2
I nFoRmtI Ca 4
42
CaPtulo 1
43
Programa procedimento
Declare
op como caractere
Procedimento bomdia
Escreva(Bom dia!!!!!)
Fim-procedimento
Incio
Escreva(Deseja ver nossa mensagem? (S/N))
Leia(op)
Se op = S Ou op = s Ento
bomdia // chamada ou procedimento
Fim-Se
Fim
Outro exemplo:
Programa soma
Declare
a,b,c como conjunto[1..8][1..4] de futuante
ln, cl como inteiro
Incio
Para ln = 1 At 8 Faa
Para cl = 1 At 4 Faa
Escreva(Digite o valor para a Matriz A:)
Leia(a[ln, cl])
Escreva(Digite o valor para a Matriz B:)
Leia(b[ln, cl])
Escreva(Valores somados para a Matriz C:)
c[ln, cl] = a[ln, cl] + b[ln, cl]
Escreva(c[ln, cl])
Fim-Para
Fim-Para
Fim
1.8. Programao modular
Uma das tcnicas bem empregadas para o desenvolvimento de programas a
modulao de parte do cdigo. Isso signifca que o programa principal que-
brado em partes menores. E cada parte representa uma unidade funcional. Essas
sub-rotinas so identifcadas como procedimentos ou funes. Permitem que
parte do cdigo seja reaproveitada em outra parte do cdigo principal ou, at
mesmo, em projetos diferentes, por outros programadores.
Procedimento
Um procedimento, assim como o programa principal, formado por toda a es-
trutura lgica (incio-fm, variveis e instrues). Pode ser utilizado em qualquer
parte de um programa que seja referenciado. Dessa forma, ao ser acionado, o
procedimento assume o controle da execuo. E, quando fnalizado, o controle
retorna ao programa principal.
Procedimento nome-do-procedimento ( parmetro:tipo )
Declare {variveis}
{comando ou bloco de comando
Fim-Procedimento
O nome-do-procedimento faz a identifcao do programa e por essa ex-
presso que ele ser referenciado. Logo aps essa etapa, encontramos os par-
metros e a defnio de seu tipo, os quais representam variveis que recebero
valores no momento da chamada. Assim como o cdigo principal, o proce-
dimento possui as variveis locais de manipulao de dados e os comandos
necessrios para a sua execuo.
Variveis locais ou globais
As variveis locais so consideradas apenas em uma sub-rotina (procedimento
ou funo). Dessa forma, so desconhecidas pelo algoritmo principal, ao contr-
rio das globais, que so consideradas por todo o algoritmo.
Programa tipos_variveis
Declare
a, b como INTEIRO // so variveis do tipo global
Procedimento teste
Declare
x, y como inteiro // so variveis locais
// esta rea reconhece (a),(b),(x) e (y)
Fim-procedimento
Incio
// esta rea reconhece (a) e (b).
Fim
O quadro em seguida mostra o campo de visualizaes das variveis, conforme
o pseudocdigo apresentado anteriormente.
Acompanhe um exemplo para o clculo da rea do quadrado usando o procedimento.
Programa tipos_variaveis
Visualizao das variveis
(a) e (b)
Procedimento teste
Visualizao das variveis (a),(b),(x) e (y)
I nFoRmtI Ca 4
44
CaPtulo 1
45
Programa quadrado
Declare
op como caracter
lado como inteiro
Procedimento quadrado (ld como inteiro)
Declare
area como inteiro
rea ld * ld
Escreva(A rea do quadrado :, area)
Fim-Procedimento
Incio
Escreva(Gostaria de saber a rea de um quadrado (S/N)?)
Leia(op)
Se op = S Ou op = s Ento
Escreva(Digite o valor:)
Leia(lado)
quadrado(lado)
Fim-Se
Fim
Funo
Uma funo tem as mesmas caractersticas estruturais de um procedimento, no
que diz respeito a fatores como funcionalidade, visualizao de variveis e cha-
madas. Mas a sua principal vantagem a possibilidade de retorno de valores em
tempo real. Isso quer dizer que, quando chamamos determinada funo, pode-
mos receber valores em tempo real, armazenando o resultado em uma varivel.
Programa quadrado
Declare
op como caractere
Procedimento quadrado
Declare
lado, rea como inteiro
Escreva(Digite um nmero inteiro:)
Leia(lado)
rea lado * lado
Escreva(A rea do quadrado :, rea)
Fim-Procedimento
Incio
Escreva(Gostaria de saber a rea de um quadrado (S/N)?)
Leia(op)
Se op = S Ou op = s Ento
quadrado
Fim-Se
Fim
Passagem de parmetro
A passagem de parmetros por valor utilizada para que as sub-rotinas possam
receber informaes e realizar qualquer tipo de manipulao fora do pseudoc-
digo principal.
Funo nome-da-funo ( parmetros:tipo ) : <tipo-de-retorno>
Declare {variveis}
{comando ou bloco de comandos}
Fim-Funo
Diferentemente do procedimento, preciso fazer a identifcao do tipo de valor
a ser retornado.
Programa quadrado
Declare
op como caractere
lado como inteiro
Funo quadrado (ld como inteiro): inteiro
Declare
rea como inteiro
rea ld * ld
Fim-Funo
Incio
Escreva(Gostaria de saber a rea de um quadrado (S/N)?)
Leia(op)
Se op = S Ou op = s Ento
Escreva(Digite o valor:)
Leia(lado)
Escreva(A rea do quadrado :)
Escreva(quadrado(lado))
Fim-Se
Fim
I nFoRmtI Ca 4
46
CaPtulo 1
47

Lista encadeada


Lista circular

Lista duplamente encadeada

Pilhas

Filas

rvores
Estrutura de dados
Captulo 2
estrutura de dados defne de que maneira os tipos primitivos
sero organizados (FORBELLONE, 2005): por meio de lista,
pilhas, flas ou rvores. Essas opes representam os conjuntos a
serem manipulados por logartmos, de diferentes formas. Esse tipo de estrutura
pode sofrer alteraes (MARCONDES, 2002). Na teoria, refere-se identifca-
o e ao desenvolvimento de modelos para a resoluo de problemas. Na prtica,
signifca criar representaes concretas que podem atuar sobre modelos.
2.1. lista encadeada
Um espao de memria reservado para os dados, quando so inseridos em uma
lista encadeada. Ento, o espao ocupado por uma lista, na memria, expresso
pela quantidade de elementos contidos ali dentro. Para que se possa percorrer
todos os elementos, deve-se armazenar junto a cada um deles um ponteiro
que indique o elemento seguinte (fgura 15).
A Cada elemento da lista identifcado como um n. Utilizam-se os ponteiros para
percorrer todos os ns da lista. O ltimo elemento dever apontar para NULL
(em linguagem de programao de computador, a palavra usada para se referir
a um dispositivo nulo). Para a criao de uma lista, considera-se o primeiro pon-
teiro existente. Uma lista vazia deve ser criada com o ponteiro indicando NULL,
permitindo inseres no fnal. Essa lista deve ser alocada em uma posio de
memria, com encadeamento para o prximo elemento (fgura 16).
Retirar um elemento da lista um processo um pouco mais complexo, pois
podemos encontrar diferentes situaes, como eliminar o primeiro elemento da
lista ou um elemento intermedirio (fgura 17).
Outras funes agregadas s listas so: busca de elementos e verifcao para
saber se ela est vazia ou no.
Figura 15
Lista encadeada.
Figura 17
Eliminao de um elemento.
Figura 16
Insero de elemento.
incio
INFO 001 II posio 01
INFO 002 II posio 02
INFO 003 II posio 03
incio vazio II NULL
incio INFO 001 II posio 01
vazio II NULL
incio
INFO 001 II posio 01
INFO 002 II posio 02
INFO 003 II posio 03
incio
INFO 001 II posio 01
INFO 002 II posio 02
INFO 003 II posio 03
I nFoRmtI Ca 4
50
CaPtulo 2
51
2.4. Pilhas
A pilha uma estrutura bem simples, muitas vezes encontrada dentro do hard-
ware. A ideia acessar o primeiro elemento a partir do topo da pilha. Assim, um
novo elemento inserido na pilha vai direto para o topo e, logicamente, o nico
que pode ser retirado. Portanto, o primeiro que sai o ltimo que entrou. Te-
mos, nesse caso, o LIFO (do ingls last in, frst out, ou ltimo dentro, primeiro
fora). H duas operaes bsicas, para trabalhar com as pilhas: push (empilhar)
e pop (desempilhar) (tabela 8).
2.5. Filas
Outra estrutura a fla, que apresenta a ordem de sada dos elementos de
forma diferente do que acontece em uma pilha. Na fla, o primeiro elemento
que entra o primeiro a sair: FIFO (frst in, frst out, ou seja, primeiro dentro,
primeiro fora). possvel inserir um novo elemento no fnal da fla e retirar o
primeiro (tabela 9).
2.2. lista circular
Em uma lista circular o ltimo elemento dever apontar para o primeiro (fgura
18). Para percorrer a lista preciso visitar todos os seus elementos, a partir de um
ponteiro inicial, at chegar a ele novamente. Caso o ponteiro inicial seja NULL,
a lista ser considerada vazia.
2.3. lista duplamente encadeada
Na lista encadeada h um ponteiro indicando o prximo elemento. J na du-
plamente encadeada so dois ponteiros: um mostrando o elemento seguinte e
outro, o anterior. A partir de um elemento podemos acessar ambos os lados
(fgura 19).
Figura 18
Lista circular.
tabela 8
Push e pop
em uma pilha.
Figura 19
Lista duplamente
encadeada.
tabela 9
Entrada e sada
de uma fla.
INFO 001 II posio 01
INFO 002 II posio 02
INFO 003 II posio 03
INFO 001 II posio 01
II posio 02
INFO 001 II posio 01
II posio 02
INFO 001 II posio 01
II posio 02
I nFoRmtI Ca 4
52
CaPtulo 2
53
Na rvore binria cada n tem zero, um ou, no mximo, dois flhos. Ento,
possvel defnir uma rvore binria como vazia ou um n raiz com duas subr-
vores uma na direita (sad) e outra na esquerda (sae) (fgura 22).
rvore genrica
Na rvore binria h restrio quanto ao nmero de ns: no mximo dois. Esse
limite no acontece nas rvores genricas (fgura 23).
2.6. rvores
Os tpicos anteriores representam a disposio de dados lineares. As rvores,
por sua vez, permitem que os dados sejam dispostos de forma hierrquica, como
uma estrutura de diretrios. Toda rvore possui um n r, denominado raiz.
Os demais ns so identifcados como internos ou flhos (fgura 20).
rvores binrias
Um bom exemplo de rvore binria so as expresses matemticas, as quais nos
permitem distribuir os operadores e os operandos. Por exemplo, a expresso
((1+2)*(5*3))-2 (fgura 21).
Figura 20
rvore e
seus ns.
Figura 22
Esquema da
rvore Binria.
Figura 21
rvore binria.
Figura 23
rvore genrica.
R
A C B D E
raiz
sae sad
+
1 2
*
5 3
-
* 2
I nFoRmtI Ca 4
54
CaPtulo 2
55

Identicao do documento

Estrutura do documento

Formatao

Texto

Cores

Tabelas

Imagens

Links
Formulrios

XML
Criao de
pginas Web
Captulo 3
HTML (iniciais da expresso em ingls HyperText Markup
Language ou Linguagem de Marcao de Hipertexto) vem
sendo utilizado para o desenvolvimento de pginas da internet
desde a sua concepo no Conselho Europeu de Pesquisas Nucleares, o CERN
(em ingls, European Council for Nuclear Research), em 1991. Divulgada em
dezembro de 1999, a ltima especifcao do W3C (Word Wide Web Con-
sortium ou Consrcio da Rede de Alcance Mundial) recomenda a verso 4.01
como padro de desenvolvimento do HTML, que sofreu nova reformulao
com base na estrutura de documentos XML (Extensible Markup Language).
Surgiu, assim, o XHTML (eXtensible HyperText Markup Language ou Lin-
guagem de Marcao de Texto Extensvel), considerada o novo padro de de-
senvolvimento web.
3.1. Identifcao do documento
Para a criao de documentos HTML, devemos identifcar o padro daquele
que est sendo criado, o DOCTYPE. Ele especifca o DTD (Document Type
Defnition ou Defnio do Tipo de Documento) a ser utilizado, com as respec-
tivas regras, conforme se pode observar na sequncia:
HTML 4.01 Transacional: possui toda a qualidade do HTML 4.01. Porm
usa elementos desaprovados ou obsoletos.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//
ENhttp://www.w3.org/TR/html4/loose.dtd>

HTML 4.01 Frameset: utiliza molduras (FRAMES) e tambm transitrio.

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Frameset//
ENhttp://www.w3.org/TR/html4/frameset.dtd>
HTML 4.01 Strict: segue padres exigidos pelo W3C, portanto, cumprindo
as especifcaes.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN
http://www.w3.org/TR/html4/strict.dtd>

Da mesma maneira como acontece com o HTML, existem tambm especifca-
es DOCTYPE para os documentos XHTML.
XHTML 1.0 Transacional: utiliza recursos obsoletos.
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//
ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>

XHTML 1.0 Frameset: usa molduras (FRAMES) e tambm transitrio.
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Frameset//
ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd>

XHTML 1.0 Strict: segue padres exigidos pelo W3C, ou seja, cumpre as es-
pecifcaes.
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>

O documento HTML ou XHTML recebe as extenses .htm ou .html, associa-
das aos navegadores.
Pgina de HTML do
Centro Paula Souza.
O
DICA
Para validar o tipo de
documento que est
sendo desenvolvido,
utilize o validador do
W3C no link: http://
validator.w3.org/.
O W3C
Fundado em 1994,
o W3C (World Wide
Web Consortium)
ou Consrcio da
Rede Mundial de
Computadores)
formado por empresas
de tecnologia
de diferentes partes
do mundo
que trabalham
para criar padres
e diretrizes para
a interpretao de
contedos da web.
O grupo desenvolve
protocolos, promove
fruns abertos, entre
outras aes. Mais
informaes podem
ser obtidas no site
http://www w3c.br.
I nFoRmtI Ca 4
58
CaPtulo 3
59
utilizar o CSS (Cascading Style Sheet ou Estilo Pginas em Cascata), para fazer
a formatao correta do documento. A insero dessa formatao realizada por
meio da tag <style> e poder ser aplicada em trs nveis diferentes:
Nvel Local quando h necessidade de formatar uma tag especial.
Nvel Geral quando as formataes sero usadas em todo o documento.
Nvel Global quando possvel associar os estilos de formatao com
outros documentos ou projetos.
Todas as aplicaes so corretas e nada impede o uso dos trs mtodos no mes-
mo documento.
Regras
Tag uma palavra-chave (relevante) associada a uma informao, que mui-
to comum na linguagem de programao de computador. possvel atribuir
propriedades de formatao s tags, que devero estar entre {}, observando
{propriedade:valor}. Se houver mais de uma declarao, deve-se separ-las por ;

<style type=text/css>
body {background:blue;
color:yellow}
</style>



No estilo determinado para a tag <body>, duas propriedades foram seleciona-
das: a cor de fundo estilo skyblue e a cor amarela das letras (fgura 25).
Formatao de nvel local
Para a formatao diretamente na tag, devemos utilizar a tag <style> e os par-
metros de formatao entre aspas. O resultado pode ser observado na fgura 26.

<body style=background:skyblue>
3.2. Estrutura do documento
Para indicar as marcaes do documento, denominadas tag, devemos utilizar os
sinais de < e >. Para que ele seja validado, deve ter a seguinte estrutura bsica:
Escreva todas
as tags e atributos
em letras minsculas
e os atributos
entre aspas.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
<title>Ttulo do Documento</title>
</head>
<body>
</body>
</html>
DOCTYPE: identifca o tipo de documento (HTML 4.01 Transitional).
HTML: o elemento raiz do documento. Identifca e informa ao navegador o
tipo de documento; utilizado no incio e fm do arquivo.
HEAD: nessa tag, sero inseridas informaes como ttulo, palavra-chave, tipo
de caractere etc.
META: defne informaes complementares, tais como: o tipo de documento e
da verso de caracteres utilizada. No Brasil, devemos adotar o cdigo iso-8859-
1, que representa o conjunto de caracteres dos pases latinos.
TITLE: a informao que aparece na aba do navegador (fgura 24).
BODY: o corpo da pgina, onde sero inseridas as demais tags de marcao.
O importante para os padres XHTML no deixar nenhuma tag aberta. Ou
seja, <body> abre e </body> fecha, assim como as tag isoladas. Por exemplo, o
<br> para o HTML e <br/> para o XHTML.
3.3. Formatao
As pginas devem ser criadas conforme as recomendaes do W3C, evitando,
principalmente na formatao, o uso de tags desaprovadas. Portanto, deve-se
Figura 24
Ttulo do
documento.
Figura 25
Regras de formatao.
I nFoRmtI Ca 4
60
CaPtulo 3
61
Formatao de nvel geral
A tag <style> deve fcar no incio do documento e conter todos os parmetros
de formatao.
No exemplo anterior, a tag <link> identifca o documento a ser adicionado ao
documento principal, no caso, o estilo.css. Veja o cdigo a seguir:
Figura 26
Formatao na tag.
Para a tag <p>, foram aplicados dois tipos diferentes de formatao apenas
com a troca do nome da classe (um e dois). Veja o resultado na fgura 27.
Usamos os identifcadores quando no queremos vincular a formatao a
uma determinada tag. Os identifcadores so nomes defnidos pelos pro-
gramadores, geralmente associados ao estilo de formatao a ser utilizada.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=utf-8>
<title>Formao No Documento</title>
<style type=text/css>
body {background:skyblue}
</style>
</head>
<body>
Minha Primeira Pgina em HTML
</body>
</html>
Formatao de nvel global
Nesse caso, devemos criar dentro do documento HTML um link (cdigo abai-
xo) para identifcar um documento de formatao CSS.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=utf-8>
<title>Formatao com Arquivo Externo</title>
<link href=estilo.css rel=stylesheet type=text/css>
</head>
<body>
Minha Primeira Pgina em HTML
</body>
</html>
/* CSS Document */
body {background:skyblue}
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
<title>Utilizao de Classes</title>
<style type=text/css>
p.um {background:blue;
color:yellow}
p.dois {background:yellow;
color:blue}
</style>
</head>
<body>
<p class=um> Minha pgina, usando a classe um </p>
<p class=dois> Minha pgina, usando a classe dois </p>
</body>
</html>
Classes e identifcadores
As classes permitem que vrios estilos sejam aplicados na mesma tag. Dessa
forma, devemos colocar o class junto tag.
Figura 27
Classes em CSS.
I nFoRmtI Ca 4
62
CaPtulo 3
63
Se no tivermos a formatao de texto includa, o resultado ser o texto padro
do navegador (fgura 29).
Foram criados dois estilos para o texto: um na cor vermelha e outro na cor azul.
Para acionar os identifcadores foi utilizada a tag <div> e, na sequncia, o nome
do identifcador. O resultado pode ser conferido na fgura 28.
O programador pode utilizar classe ou identifcador. No h restries. O im-
portante seguir as especifcaes corretas para o desenvolvimento de um docu-
mento padronizado e validado pelo W3C.
Figura 28
Identifcador.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
<title>Utilizao de Identifcador</title>
<style type=text/css>
#titulo {color:red}
#texto {color:blue}
</style>
</head>
<body>
<div id=titulo> HTML </div>
<div id=texto> Minha Primeira Pgina em HTML</div>
</body>
</html>
<p> Minha Primeira Pgina HTML </p>
Outra tag que dever ser levada em considerao a <br>, que realiza a quebra
automtica do texto para outra linha.
<p> Minha Primeira pgina HTML <br> Na Linha de Baixo </p>
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=utf-8>
<title>Formatao de Texto</title>
<style type=text/css>
#titulo {font-size:12pt}
#texto1 {font-size:12px}
#texto2 {font-size:10px}
</style>
</head>
<body>
<div id=titulo>Formatando Fontes </div>
<div id=texto1>Texto usando a primeira formatao </div>
<div id=texto2>Texto usando a segunda formatao </div>
</body>
</html>
Figura 29
Texto padro.
Fonte
Uma fonte de letra poder ser modifcada conforme a sua famlia (Verdana,
Arial, Times etc.), tamanho, estilo (itlico, regular, etc.) e peso (negrito).
Font-Size
Este tpico indica o tamanho da fonte, defnido com base em determinada
unidade de medida. As unidades mais comuns para os padres web so pontos
(pt) e pixel (px).
3.4. texto
A insero de texto realizada diretamente no corpo do documento, geralmente
utilizando a tag <p> </p> para identifcar o incio e o fm do pargrafo respec-
tivamente. Por exemplo:
I nFoRmtI Ca 4
64
CaPtulo 3
65
Font-Family
preciso escolher com cuidado o tipo de letra a ser utilizado. As fontes menos co-
muns podem at ser bonitas, mas tambm so as que mais tm chance de provocar
a desconfgurao visual de um projeto. Portanto, procure utilizar fontes-padro
e, de preferncia, de boa visualizao, seguindo as normas de acessibilidade.
Um recurso interessante para a defnio das fontes a criao de uma lista. Se
no acharmos a primeira fonte listada, partimos para a segunda, e assim suces-
sivamente. Se no encontrarmos nenhuma fonte, a alternativa recorrer fonte-
padro do navegador. Nesse caso, o resultado ser outro (fgura 31).
Para o identifcador ttulo, a referncia est em pontos. E para os demais, em
pixel. Observe que os dois primeiros identifcadores tm o mesmo tamanho,
mas o resultado fnal mostra diferenas (fgura 30).
Figura 30
Font-Size.
A fgura 32 mostra o resultado fnal.
A expresso acessibilidade
refere-se possibilidade
de qualquer pessoa,
independentemente de suas
capacidades fsico-motoras
e perceptivas, culturais
ou sociais, usufruir dos
benefcios de uma vida em
sociedade. Acessibilidade
na web, ou e-acessibilidade,
refere-se especifcamente
ao direito de ingressar na
rede sem qualquer tipo
de barreira arquitetnica,
seja na arquitetura dos
equipamentos e programas,
na linguagem adotada ou
no visual das informaes.
Dentro desse conceito surgiu
o WAI (Web Accessibility
Initiative ou Iniciativa para
Acessibilidade na Rede),
um projeto internacional
criado por grupos de pessoas
dedicadas a desenvolver
condies especfcas para
que todos tenham acesso
internet (ambiente,
equipamento, navegador,
ferramentas etc.).
Figura 31
Font-Family.
<style type=text/css>
#titulo {font-size:12pt;
font-family:Geneva, Arial, Helvetica, sans-serif}
#texto1 {font-size:12px;
font-family:Arial, Helvetica, sans-serif}
#texto2 {font-size:10px;
font-family:Times New Roman, Times, serif}
</style>

Font-Style
Um dos estilos mais usados o itlico. Aqui, vamos usar uma classe na tag
<span> para a ativao.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
<title>Formatao de Texto</title>
<style type=text/css>
#titulo {font-size:12pt;
font-family:Geneva, Arial, Helvetica, sans-serif}
#texto1 {font-size:12px;
font-family:Arial, Helvetica, sans-serif}
#texto2 {font-size:10px;
font-family:Times New Roman, Times, serif}
.estilo {font-style: italic;
font-size:20px}
</style>
</head>
<body>
<div id=titulo>Formatando <span class=estilo>Fontes </span></div>
<div id=texto1>Texto usando a primeira formatao </div>
<div id=texto2>Texto usando a segunda formatao </div>
</body>
</html>
Figura 32
Font-Style.
DICA
Utilize a tag
<div> quando for
trabalhar com os
identifcadores
e a tag<span>
para as classes.
Font-Weight
A expresso identifca o peso da fonte e notado quando utilizamos determi-
nada fonte em negrito. Para efeito de comparao, uma fonte normal tem valor
400 e seu negrito, 700. Mas esses valores podem sofrer mudanas conforme as
famlias de fontes escolhidas. Os valores mais comuns so 100, 200, 300, 400,
500, 600, 700, 800 e 900. Fazendo algumas modifcaes no exemplo anterior,
podemos obter outro resultado (fgura 33).
I nFoRmtI Ca 4
66
CaPtulo 3
67
O resultado fnal pode ser conferido na fgura 34.
Figura 33
Font-Weight.
Figura 34
Text-Decoration.
text-Decoration
O Text-Decoration, ou decorao de texto, representado por uma linha junto ao
texto. O mais comum o sublinhado, usado em palavras que indicam um link.
Nesse exemplo, vamos incorporar uma facilidade do CSS, que a formatao de
vrios identifcadores em uma nica linha, e depois formataes especfcas.
#texto2 {font-size:10px;
font-family:Times New Roman, Times, serif;
font-weight:700}
.estilo {font-style: italic;
font-size:20px;
font-weight:900}
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN

http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Formatao de Texto</title>
<style type=text/css>
#estilo1, #estilo2, #estilo3, #estilo4 {font-size:15pt}
#estilo1 {text-decoration: line-through}
#estilo2 {text-decoration: none}
#estilo3 {text-decoration: overline}
#estilo4 {text-decoration: underline}
</style>
</head>
<body>
<div id=estilo1>Texto Decorado - Estilo 01</div>
<div id=estilo2>Texto Decorado - Estilo 02</div>
<div id=estilo3>Texto Decorado - Estilo 03</div>
<div id=estilo4>Texto Decorado - Estilo 04</div>
</body>
</html>
text-transform
Modifca a confgurao da letra diferenciando caracteres maisculos de minsculos.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Formatao de Texto</title>
<style type=text/css>
#estilo1, #estilo2, #estilo3, #estilo4 {font-size:15pt}
#estilo1 {text-transform: capitalize}
#estilo2 {text-transform: lowercase}
#estilo3 {text-transform: none}
#estilo4 {text-transform: uppercase}
</style>
</head>
<body>
<div id=estilo1>Preste Muita Ateno nas Letras da Frase - Estilo 01</div>
<div id=estilo2>Preste Muita Ateno nas Letras da Frase - Estilo 02</div>
<div id=estilo3>Preste Muita Ateno nas Letras da Frase - Estilo 03</div>
<div id=estilo4>Preste Muita Ateno nas Letras da Frase - Estilo 04</div>
</body>
</html>
O resultado fnal (fgura 35) mostra o efeito de capitalize para a primeira letra
de cada palavra em maiscula, lowercase para todas as minsculas, none para o
original e uppercase para todas as maisculas.
I nFoRmtI Ca 4
68
CaPtulo 3
69
Figura 35
Text-Transform.
Existe outra opo chamada vertical-align, que faz o alinhamento no topo,
no meio e na parte de baixo da pgina. Pode ser adotada quando o texto
estiver dentro de uma tabela. Os parmetros so, respectivamente: top,
middle e bottom.
3.5. Cores
A utilizao de cores essencial para a criao de uma boa pgina na web.
Mas preciso ter cuidado para no exagerar. O importante adotar o con-
ceito de harmonia das tonalidades, que podem ser identifcadas por meio das
palavras em ingls: black, blue, red, skyblue, green, etc.
Figura 36
Text-Align.
text-align
Esta opo permite que se faa o alinhamento de texto na forma desejada no
contexto de sua aplicao: em uma pgina, em uma tabela etc.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Formatao de Texto</title>
<style type=text/css>
#estilo1, #estilo2, #estilo3 {font-size:15pt}
#estilo1 {text-align: center}
#estilo2 {text-align: left}
#estilo3 {text-align: right}
</style>
</head>
<body>
<div id=estilo1>Alinhado no Centro da Pgina - Estilo 01</div>
<div id=estilo2>Alinhado Esquerda da Pgina - Estilo 02</div>
<div id=estilo3>Alinhado Direita da Pgina - Estilo 03</div>
</body>
</html>
Nesse exemplo, o alinhamento serve de referncia para uma pgina da web (fgura 36).
#texto {color:blue}
Para obter mais opes de cores, podemos utilizar as referncias em hexa-
decimal, cujos valores representam o sistema RGB (do ingls Red, Green e
Blue, ou seja, vermelho, verde e azul). Cada par de valores em hexadecimal
representa a fora de um elemento no sistema RGB (tabela 10).
CONHECIMENTO
DAS CORES
A representao
hexadecimal das cores
foi adotada porque
a decimal fca muito
extensa. Se 0 igual
a 0 em hexadecimal,
10 equivale a A, 125 a 7D
e 255 a FF. A cor, assim,
pode variar de 00 a FF,
que so combinados para
se obter intensidade,
tonalidades. Como
o branco a mistura
de todas as cores,
representado por seis
F. J o preto, que
ausncia de cor (na
verdade, de refexo de
luz), representa-se com
seis 0. bom lembrar
que o conhecimento das
cores remete a 1665. Foi
quando Isaac Newton,
aos 23 anos e de frias
foradas no campo
para fugir da peste
que assolava a Europa,
conseguiu separar as
cores da luz branca do
Sol por meio de um
prisma e algumas lentes.
r G B Cor DeSCrIo
00 00 00 #000000 preto
FF FF FF #FFFFFF branco
FF 00 00 #FF0000 vermelho
CF CF CF #CFCFCF tonalidade de cinza
tabela 10 Hexadecimal.
A variao entre os valores de cada elemento em hexadecimal ir produzir
uma tonalidade de cor diferente.
Dica: procure na internet a expresso tabela de cores HTML,
acessando qualquer um dos sites de busca.
I nFoRmtI Ca 4
70
CaPtulo 3
71
3.6. tabelas
A tabela um dos recursos mais usados para organizar as informaes em uma
pgina. Mas para mont-la precisamos de uma srie de marcaes que nos per-
mitiro organizar a sua estrutura.
TABLE Identifca o incio e o fm da tabela.
TR Linhas da tabela.
TD Colunas da tabela.
TH Representa a coluna da tabela para ttulos, formatando o texto em
negrito.
A estrutura da tabela dever obedecer composio de suas linhas e colunas. O
exemplo da fgura 37 mostra uma tabela 2x2.
Figura 37
Tabela 2x2.
Outro efeito interessante pode ser obtido pela incluso de uma tabela dentro da
outra. Porm preciso observar a estrutura de cada uma delas para que no falte
nenhuma tag (palavra-chave) (fgura 38).
<table border=1px>
<tr> <td>
<table border=1px>
<tr> <td> linha 01 - coluna 01 </td> </tr>
<tr> <td> linha 02 - coluna 01 </td> </tr>
</table>
</td>
<td>
<table border=1px>
<tr> <td> linha 01 - coluna 02 </td> </tr>
<tr> <td> linha 02 - coluna 02 </td> </tr>
</table>
</td></tr>
<tr> <td> coluna 01 </td>
<td> coluna 02 </td> </tr>
</table>
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Tabela</title>
</head>
<body>
<table border=1px>
<tr> <td> linha 01 - coluna 01 </td>
<td> linha 01 - coluna 02 </td> </tr>
<tr> <td> linha 02 - coluna 01 </td>
<td> linha 02 - coluna 02 </td> </tr>
</table>
</body>
</html>
Nesse primeiro momento de desenvolvimento interessante manter a borda da
tabela, porque facilita a verifcao de sua estrutura (fgura 37).

Vamos associar a tabela aos recursos do CSS (Cascading Style Sheets ou Estilo Pginas
em Cascata), por meio das classes e dos identifcadores, para formatao e alinhamen-
to do texto, alm de aplicao de cores utilizando o exemplo anterior (fgura 39).
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Tabela</title>
<style type=text/css>
table {color: #0033CC}
td { text-align:center}
.coluna1 {background:#FF3300;
color:#FFFF00}
Figura 38
Tabelas internas.
I nFoRmtI Ca 4
72
CaPtulo 3
73
Figura 39
Tabela formatada.
#coluna2 {background: #33FF33;
color: #6633FF}
</style>
</head>
<body>
<table border=1px>
<tr> <td>
<table border=1px>
<tr> <td> linha 01 - coluna 01 </td> </tr>
<tr> <td class=coluna1> linha 02 - coluna 01 </td> </tr>
</table>
</td>
<td>
<table border=1px>
<tr> <td id=coluna2> linha 01 - coluna 02 </td> </tr>
<tr> <td> linha 02 - coluna 02 </td> </tr>
</table>
</td></tr>
<tr> <td style=font-size:24px> coluna 01 </td>
<td style=font-size: 8px> coluna 02 </td> </tr>
</table>
</body>
</html>
<style type=text/css>
td {width:350px}
</style>
</head>
<body>
<table border=1 width=400px >
<tr> <td> linha 01 - coluna 01 </td> <td> linha 01 - coluna 02 </td> </tr>
<tr> <td> linha 02 - coluna 01 </td> <td> linha 02 - coluna 02 </td> </tr>
</table>
tamanho da tabela, linha e coluna
A identifcao de medidas para a tabela pode ser feita a partir dela mesma, da
linha ou da coluna. preciso ter cuidado, no entanto, para que uma medida
obtida no anule a outra. Veja o seguinte cdigo:
No <style>, a coluna (TD) est defna como 350px. Se analisarmos a estrutura
da tabela, veremos que ela constituda por duas colunas. Portanto, a tabela ter
700px (2 x 350px de cada coluna) de comprimento. Mas, se verifcarmos sua
defnio, teremos 400px. O resultado fnal ser, ento, uma tabela de 400px.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Tabela</title>
<style type=text/css>
table {text-align:center}
.coluna1 {width:200px}
coluna2 {width:400px}
tr {height:60px}
</style>
</head>
<body>
<table border=1 width=600px>
<tr> <td class=coluna1> linha 01 - coluna 01 </td>
<td class=coluna2> linha 01 - coluna 02 </td> </tr>
<tr> <td> linha 02 - coluna 01 </td> <td> linha 02 -
coluna 02 </td> </tr>
</table>
</body>
</html>
Nesse exemplo, se somarmos as colunas, obteremos valores coerentes em relao
ao tamanho da tabela (200+400=600px). Outro ponto importante a formata-
o do tamanho da coluna, que deve ser feita somente na primeira linha, pois as
demais seguiro essa defnio (fgura 40).
Figura 40
Tabela tamanho.
I nFoRmtI Ca 4
74
CaPtulo 3
75
Estilo de bordas
Ao utilizar o CSS, poderemos realizar diferentes aplicaes nas bordas das ta-
belas. Os exemplos abaixo mostram os diferentes efeitos em um nico cdigo.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Tabela</title>
<style type=text/css>
table {background-color: #FFCC66;
width:500px;
border-style:solid;
border-top-width: 15px;
border-bottom-width: 5px;
border-left-width: 5px;
border-right-width: 10px;
border-top-color: #00CC00;
border-bottom-color: #3333FF;
border-left-color: #FFFF00;
border-right-color: #FF0000}
</style>
</head>
<body>
<table>
<tr> <td> linha 01 - coluna 01 </td> <td> linha 01 - coluna 02 </td> </tr>
<tr> <td> linha 02 - coluna 01 </td> <td> linha 02 - coluna 02 </td> </tr>
</table>
</body>
</html>

O resultado (fgura 41) no est seguindo nenhum padro de design.
Dica: substitua o termo solid (slido) de border-style (estilo da
borda), pelas palavras: none (nenhuma), dotted (pontilhada), dashed
(tracejada), double (dupla), groove (encaixe ou ranhura), ridge
(serrilhado), inset (insero) ou outset (incio).
Figura 41
Formatao de borda.
3.7. Imagens
Os navegadores esto habilitados para abrir diferentes tipos de imagens
(BMP, JPG, GIF, entre outros), alm de contar com os GIFs para pequenas
animaes existentes no site. Essas imagens podero ser inseridas pela tag
<img>, que, alm da incluso da imagem, oferece outros parmetros de for-
matao, como altura, largura e texto explicativo.
<img src=programador.jpg width=100px height=100px
alt=Programador> </img>
SRC: Indica o arquivo para visualizao (caminho do arquivo, nome completo
e extenso).
Width e Height: largura e altura da imagem.
ALT: permite incluir um texto alternativo caso a imagem no aparea no site.
Geralmente, as imagens so redimensionadas para um site, ou seja, raramente
elas aparecem em seu tamanho natural. Portanto, os valores de largura e altura
devero ser bem analisados para que no ocorra distoro na imagem.
Vamos utilizar o cdigo a seguir para reproduzir uma imagem correta e outras
duas com distoro (largura e altura).
BMP a
terminao usada
para a unidade
Bitmap, que
signifca mapa de
bits. Nesse tipo de
representao, cada
ponto da imagem
associado a
um valor (no caso, o
bit). JPG (ou JPEG):
Joint Photographic
Experts Group
ou Grupo Reunido
de Especialistas
em Imagem.
GIF: Graphics
Interchange Format
ou Formato de
Intercmbio de
Grfcos.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Imagem</title>
</head>
<body>
<img src=programador.jpg width=100px height=100px
alt=Programador>
<img src=programador.jpg width=100px height=50px
alt=Programador>
<img src=programador.jpg width=50px height=100px
alt=Programador>
</body>
</html>
Na fgura 42, podemos verifcar as trs imagens e, de acordo com os valores da
altura e largura, conseguiremos visualizar a distoro nas duas ltimas.
I nFoRmtI Ca 4
76
CaPtulo 3
77
Na fgura 43, podemos ver o Alt em ao, pois a primeira imagem no apareceu.
Figura 43
Utilizao do Alt.
Bordas na imagem
A aplicao de bordas na imagem ser feita pelo CSS diretamente na tag (fgura 44).
Figura 42
Imagem distorcida.
Organizar os documentos que seguiro para um servidor da web para ser pu-
blicados exige que as imagens sejam alocadas em uma nica pasta, que dever
ser referenciada na tag <img>. No exemplo, a pasta especifcada Imagens.
<img src=../Imagens/programador.jpg width=50px
height=100px alt=Programador>
<img src=../Imagens/programador.jpg width=100px
height=100px alt=Programador style=border:solid; border-
width:10px>
Figura 44
Imagem com borda.
3.8. links
Os links so responsveis pela navegabilidade entre as pginas da web. Per-
mitem acesso dentro do prprio documento ou a documentos externos. Para
isso, utiliza-se a tag <a>, que signifca ncora no existe um nome mais
sugestivo para navegao.
<a href=destino name=nome do link> imagem ou texto </a>
links para outros sites
Para acessar links de outros sites, devemos informar toda a URL (Uniform Re-
source Locator ou Localizador de Recursos Universal), para que a pgina seja
localizada (fgura 45).
Figura 45
Link para o
Centro Paula Souza.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Link</title>
</head>
<body>
<a href=http://www.centropaulasouza.sp.gov.br/>
Centro Paula Souza </a>
</body>
</html>
links entre documentos
A boa navegabilidade no site determinada pelos links e pelas opes de retorno
ao ponto inicial. Esse caminho de volta pode ser feito pelo prprio navegador
ou por outros links.
Programador
I nFoRmtI Ca 4
78
CaPtulo 3
79
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Link</title>
</head>
<body>
<p>Menu de opes</p>
<a href=pag_um.html> Pgina 01 </a> <br>
<a href=pag_dois.html> Pgina 02 </a>
</body>
</html>
O cdigo acima cria um menu de opes para o usurio, que poder escolher
entre duas pginas (fgura 46).
Figura 46
Menu de usurio.
As pginas pag_um.html e pag_dois.html devero ser elaboradas de forma que
os links funcionem e sejam de fcil acesso. Por isso, devem fcar no mesmo di-
retrio do arquivo principal (menu.html) (fgura 47).
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Link</title>
</head>
<body>
<p>Voc est na Pgina 01</p>
<a href=menu.html> Voltar </a>
</body>
</html>
Figura 47
Pgina 01.
links para outros tipos de documentos
So utilizados, tambm, os links para indicar documentos para download, os
quais fcam automticos, caso o padro no seja web (fgura 48).
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Link</title>
</head>
<body>
<p>Lista de exerccio em HTML para prxima aula<p>
<a href=html.doc> Baixar </a>
</body>
</html>
Figura 48
Download.
I nFoRmtI Ca 4
80
CaPtulo 3
81
links com imagens
Podemos inserir imagens associadas aos links, deixando a navegao mais in-
tuitiva. H, porm, problemas recorrentes, como a eliminao das marcaes
do tipo ativo e visitado, normalmente representadas pela mudana de cores.
Outro obstculo enfrentado pelo internauta so as bordas das imagens acessadas
por meio de links. O cdigo a seguir apresenta uma soluo para esses proble-
mas (fgura 49).
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Link</title>
<style type=text/css>
a:link {text-decoration:none}
a:visited {text-decoration:none}
a:active {text-decoration:none}
a:hover {text-decoration:none}
a img {border-width:0}
.texto {color:#33CC33}
</style>
</head>
<body>
<p>Lista de exerccio em HTML para prxima aula<p>
<a href=html.doc> <img src=../Imagens/down.png width=40px
height=35px alt=down></a> <br>
<a href=http://www.centropaulasouza.sp.gov.br/>
<span class=texto>Centro Paula Souza </span></a>
</body>
</html>
Figura 49
Link e imagem com
formatao CSS.
3.9. Formulrios
Um formulrio usado para receber informaes do usurio. Esses dados, que
depois podero ser tratados por outra aplicao, como ASP, PHP ou Java, so
enviados por meio de dois mtodos:
GET: as informaes seguem via URL ao servidor e fcam visveis ao usurio.
Exemplo, a pesquisa realizada no Google para encontrar a expresso Centro
Paula Souza:
http://www.google.com.br/search?hl=pt-BR&source=hp&q=centro&meta=&aq=f&oq=
POST: as informaes so enviadas depois que a URL for ativada. Isso signifca
que o servidor sabe que, depois de receber uma ativao de URL, deve aguar-
dar a entrada de novos dados, os quais, portanto, no so visualizados na web
(MARCONDES, 2002).
Todo formulrio tem a tag <form>, que identifca o incio, e </form>, para si-
nalizar o fm. Somente o que est entre essas tags ser considerado dado vlido
para envio.
<form action= method=post name=cadastro></form>
</form>
O formulrio pode receber uma identifcao feita por name (nome). Isso aju-
dar no tratamento dos dados, futuramente. Temos ainda a action (ao) do
formulrio, que indica a aplicao servidora que receber os dados. Por exemplo:
<form action=verifca.aspx method=post name=cadastro>
<form action=cadastro.php method=post name=cadastro>
Entrada de texto
A forma mais simples de entrada de dados a do tipo text (texto), que permite
a abertura da caixa de entrada para que o usurio possa digitar as suas infor-
maes. Alm disso, admite um valor padro j includo pelo value (valor),
limita a quantidade de caracteres a serem digitados maxlength (comprimento
mximo) e o tamanho da janela de entrada size.
<input type=text value=seu nome aqui size=40 maxlength=35> </p>
Na entrada, vemos que a expresso seu nome aqui j est na caixa de texto,
que, apesar de ter tamanho 40, aceita somente 35 caracteres (fgura 50).
I nFoRmtI Ca 4
82
CaPtulo 3
83
Login <input type=text value= size=20 maxlength=20>
Senha <input type=password value= size=8 maxlength=8> </p>
Entrada de password
A entrada do tipo password esconde os caracteres digitados pelo usurio. Assim como
a entrada tipo text, os dados podem ser limitados e a janela, ajustada (fgura 51).
Figura 50
Entrada tipo texto.
Figura 51
Entrada de
login e senha.
Comentrio
Para entrada de textos maiores, utilizamos a tag <textarea>, que permite criar
uma janela com especifcaes de linha e coluna.
Figura 52
Textarea -
Comentrio.
<p> Descrio da Funo:<br>
<textarea name=func rows=5 cols=40></textarea> </p>
Podemos observar que a janela foi defnida para 5 linhas e 40 colunas (fgura
52). Ateno: o texto inserido na fgura apenas ilustrativo.
opo select
Representa as caixas tipo combos, presentes na maioria das aplicaes, nas quais
uma srie de opes fca disponvel para o usurio.
<p> Estado: <select name=cidade>
<option>So Paulo</option>
<option>Rio de Janeiro</option>
<option>Distrito Federal</option>
</select> </p>
Figura 53
Caixa select.
Figura 54
Opo pr-selecionada.
As informaes da caixa select so carregadas diretamente no formulrio.
Com a utilizao, posterior, de linguagens de programao como ASP, PHP ou
Java, certamente isso acontecer dinmicamente (fgura 53).
Outro recurso a opo pr-selecionada, acessada por meio da expresso selec-
ted (selecionada) em um dos itens defnidos por option.
<p> Estado: <select name=cidade>
<option selected> - - Cidade - - </option>
<option>So Paulo</option>
<option>Rio de Janeiro</option>
<option>Distrito Federal</option>
</select> </p>
A opo indicada j aparece selecionada (fgura 54).
Botes checkbox
Os botes checkbox (que signifca verifcao da caixa) permitem que o usu-
rio escolha entre sim ou no. So usados normalmente para perguntas sim-
ples que oferecem apenas essas duas alternativas como resposta. Em proprieda-
des, podemos indicar a palavra name, que ser fundamental para o controle
dos dados para validao, assim como o checked (controlado) para opes j
selecionadas.
<p> Possui carteira de Trabalho:
<input type=checkbox name=carteira></p>
<p> Possui meio de conduo prpria:
<input type=checkbox name=conduzir></p>
<p> Deseja receber nossas informaes por e-mail?:
<input type=checkbox name=conduzir checked> Sim, desejo.</p>
I nFoRmtI Ca 4
84
CaPtulo 3
85
Na opo referente recepo de e-mails, o boto checkbox foi previamente
assinalado (fgura 55).
Figura 55
Botes checkbox.
Figura 56
Botes de Radio.
Figura 57
Botes Reset
e Submit.
Botes de Radio
Os botes de Radio so semelhantes ao checkbox, porm permitem que mais de
uma opo seja fornecida ao usurio e apenas uma selecionada. O mais impor-
tante manter o mesmo name nos controles, para que possa ser criado vnculo
entre eles.
<p>Estado Civil:<br>
<input type=radio name=civil> Solteiro
<input type=radio name=civil> Casado
<input type=radio name=civil> Outros </p>
<p>Jornada de Trabalho:<br>
<input type=radio name=trab checked> Manh
<input type=radio name=trab> Tarde
<input type=radio name= trab> Noite </p>
Na opo referente jornada de trabalho, assim como no checkbox, uma opo
foi pr-selecionada (fgura 56).
Botes
Utilizamos os botes para indicar o tipo de ao a ser realizada com os dados do
formulrio. Existem trs tipos de botes com funes especfcas:
RESET (restabelecer): limpa todas as informaes do formulrio e no envia
mais nada.
SUBMIT (envio): manda as informaes de acordo com as condies do me-
thod (mtodo) e do action do formulrio.
<input type=reset value=Limpar>
<input type=submit value=Enviar>
O layout dos botes est na fgura 57.
Formulrio
At aqui apresentamos os elementos comuns para a elaborao de um formulrio.
Agora, o momento de colocar todos os recursos em um nico documento.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Cadastro de Cliente</title>
<style type=text/css>
.titulo {color:#33CC33;
font-size:24px}
p {font-family:Verdana, Arial, Helvetica, sans-serif;
font-weight:600;
font-size:10px}
</style>
</head>
<body>
<span class=titulo>Cadastro de Cliente</span>
<form action= method=post name=cadastro></form>

<p> Nome completo
<input type=text value=seu nome aqui size=40 maxlength=35> </p>
<p> Login <input type=text value= size=20 maxlength=20>
Senha <input type=password value= size=8 maxlength=8> </p>
BUTTON (boto): no executa funo nenhuma, exceto quando programado.
Signifca que preciso desenvolver um cdigo a ser relacionado com o boto.
No caso dos formulrios, os mais importante so os Reset e Submit, que sero
responsveis, respectivamente, pela eliminao das informaes e pelo envio de
dados. Mas preciso que o value (valor), seja informado, para que ocorra a
emisso da identifcao padro.
I nFoRmtI Ca 4
86
CaPtulo 3
87
<p> Descrio da Funo:<br>
<textarea name=func rows=5 cols=40></textarea> </p>
<p> Estado: <select name=cidade>
<option selected> - - Cidade - - </option>
<option>So Paulo</option>
<option>Rio de Janeiro</option>
<option>Distrito Federal</option>
</select> </p>
<p> Possui carteira de Trabalho:
<input type=checkbox name=carteira></p>
<p> Possui meio de conduo prprio:
<input type=checkbox name=conduzir></p>
<p> Deseja receber nossas informaes por e-mail?:
<input type=checkbox name=conduzir checked> Sim, desejo.</p>
<p>Estado Civil:<br>
<input type=radio name=civil> Solteiro
<input type=radio name=civil> Casado
<input type=radio name=civil> Outros </p>
<p>Jornada de Trabalho:<br>
<input type=radio name=trab checked> Manh
<input type=radio name=trab> Tarde
<input type=radio name=trab> Noite </p>
<input type=reset value=Limpar>
<input type=submit value=Enviar>
</form>
</body>
</html>
Figura 58
Formatao
de borda.
3.10. Xml
A XML (eXtensible Markup Language ou Linguagem de Marcao Extensiva),
assim como o HTML, uma linguagem de marcao que permite a manipu-
lao dos dados de forma mais precisa. Isso assegura informaes uniformes
e independentes de aplicao ou de fornecedor que, dessa forma, podem ser
utilizadas em diferentes nveis de aplicao. J a XML, dependendo do nvel de
anlise (RAY, 2001), considerada um modelo de gerenciamento de informa-
es e ainda pode ser formatada ou fltrada.
A XML no apenas mais uma linguagem de marcao como a HTML, que
especifca a formatao de uma palavra ou um trecho de texto. A XML permite
a defnio de tags personalizadas. Isso ajuda a tornar o documento mais inteli-
gente, j que o texto armazenado entre as tags ganha um signifcado especfco
(FURGERI, 2001). Possibilita, tambm, que o documento seja criado com uma
estrutura facilmente compreendida por seres humanos e mquinas. A afrmao
fca bem clara no exemplo seguinte, no qual fcil reconhecer que 5,20 se
refere ao preo do produto.
<pedido>
<produto>
<codigo>MF45-KJ90</codigo>
<descritivo>Parafuso de 15mm</descritivo >
<valor>5,20</valor>
</produto>
<pedido>
As tags so representadas em formato de rvore, semelhante disposio de
pastas nos diretrios (fgura 59).
O resultado um formulrio com todos os recursos (fgura 58).
Figura 59
Estrutura XML.
I nFoRmtI Ca 4
88
CaPtulo 3
89
Verifcao
A maioria dos editores que atuam na web pode criar documentos XML. Uma
maneira rpida para verifcar se a estrutura do documento est correta abri-lo
por meio de um navegador web. Se o contedo no estiver totalmente visvel,
signifca que h um erro que dever ser apontado pelo navegador. Se estiver tudo
certo, ser possvel visualizar claramente o contedo (fgura 60).
No navegador Internet Explorer, vemos os sinais de + e -, que permitem a
expanso ou contrao do nvel de detalhamento das informaes. Mas no
podemos esquecer que o documento XML deve, obrigatoriamente, levar em
conta que:
Precisa de uma tag raiz, denominada root.
As tags so case sensitive (elementos sensveis).
Deve evitar acentos ou caracteres especiais para a construo de tags.
Um documento XML bem formado (HOLZNER, 2001) deve atender a to-
das as especifcaes do W3C. Alm disso, esse tipo de documento possui tags
distribudas corretamente. Isto , para toda tag de abertura existe a sua corres-
pondente de encerramento. H, no entanto, uma tag mais externa (a raiz de
todo o documento), na qual todas as outras tags e dados esto cuidadosamente
includos. Um documento ser bem formado quando um software XML (como
um browser programa de navegao) puder interpret-lo como uma estrutura
hierrquica (em forma de rvore).
Figura 60
Verifcao de
documento.
<?xml version=1.0 ?>
Essa linha deve ser a primeira do documento. Se houver informaes (dados)
que utilizem caracteres especiais (RAY, 2001), a defnio de cdigo tem de ser
informada.
<?xml version=1.0 encoding=iso-8859-1 ?>
O cdigo a seguir um exemplo de documento que traz na sua primeira linha
de identifcao a tag <produto> como tag raiz. E os demais dados tambm
esto devidamente organizados em tags.
<?xml version=1.0 encoding=iso-8859-1?>
<pedido>
<produto>
<codigo>MF45-KJ90</codigo>
<descritivo>Parafuso de 15mm</descritivo >
<valor>5,20</valor>
</produto>
<produto>
<codigo>KJ-25489-B</codigo>
<descritivo>Prego de 10mm</descritivo >
<valor>1,40</valor>
</produto>
<produto>
<codigo>MMZ-1010-GR</codigo>
<descritivo>Pito de 18mm</descritivo >
<valor>2,60</valor>
</produto>
</pedido>
Diretivas
A identifcao do documento deve aparecer logo no incio, o que facilitar a
leitura por parte de outros aplicativos. Pode ser da seguinte forma:
I nFoRmtI Ca 4
90
CaPtulo 3
91
Captulo 4
Lgica de programao
aplicada linguagem Java


A Plataforma de desenvolvimento

Origem da orientao a objetos

UML (Unied Modeling Language)

Eclipse

Orientao a objetos (1)

Entrada e sada de dados

Assinatura de mtodos

Estruturas e recursos da linguagem Java

Orientao a objetos (2)

Padres de desenvolvimento de sistemas

Interfaces grcas

Tratamento de excees

Conexo com bancos de dados


ava uma linguagem de programao desenvolvida nos anos 1990 por
uma equipe de programadores chefada por James Gosling, na Sun
Microsystems, conglomerado norte-americano da rea de informtica
(leia o quadro Quem quem no mundo Java). Para conhec-la mais profundamen-
te, preciso voltar um pouco no tempo e saber quais foram suas antecessoras: a
BCPL e B, a C e a C++ (confra no quadro A evoluo da linguagem de programa-
o). Por trs de todo o sucesso do Java est um projeto de pesquisa corporativa
batizado de Green, fnanciado em 1991 pela norte-americana Sun Microsystems.
A Sun, cujo nome faz referncia Standford University, fabrica computadores,
semicondutores e softwares. Tem sede no Silicon Valley (Vale do Silcio), em Santa
Clara, Califrnia (EUA) e subsidirias em Hillsboro, no estado do Oregon (EUA),
e em Linlithgow, na Esccia. Gosling e a equipe que tocou o projeto para a Sun
apostavam na convergncia dos computadores com outros equipamentos e eletro-
domsticos e produziram um controle remoto com interface grfca touchscreen
(toque na tela) batizado de *7 (Star Seven) (fgura 61). Para o desenvolvimento de
parte do sistema operacional e dos aplicativos do *7, foi criada uma linguagem de
programao baseada no C++ e no smalltalk, chamada de Oak (carvalho, em
ingls), em homenagem a uma rvore que podia ser vista da janela da sede da Sun.
Descobriu-se mais tarde que j havia uma linguagem de programao chamada
Oak, o que implicava a necessidade de se buscar outro nome para a desenvolvida
na empresa e assim nasceu o nome Java. H, porm, outras verses para a origem
do nome. Uma delas diz que foi escolhido quando a equipe visitou uma cafeteria
local que tinha o nome Java, em referncia cidade de origem de um tipo de caf
importado pelo estabelecimento. Essa verso explica a xcara estilizada estampada
no logo do Java (fgura 62).
O projeto Green passou por algumas difculdades. O mercado de dispositivos ele-
trnicos inteligentes, voltado para o consumo popular, no incio da dcada de 1990,
no se desenvolvia to rpido como a Sun havia previsto. Por isso, corria o risco de
ser cancelado. Por uma feliz coincidncia, a www (World Wide Web, rede mundial
Figura 61
( esquerda)
*7 StarSeven,
o ponto de partida.
Figura 62
Logotipo do Java, com
a xcara estilizada.
Smalltalk-80,
ou simplesmente
Smalltalk, uma
linguagem de
programao
puramente orientada
objetos. Isso signifca
que em Smalltalk tudo
objeto: os nmeros,
as classes, os mtodos,
os blocos de cdigo
etc. Tecnicamente,
todo elemento
um objeto de
primeira ordem.
J
Quem quem no mundo Java
James Gosling
Programador canadense conhecido
como o pai da linguagem Java.
Em 1977, tornou-se bacharel em
Cincia da Computao pela
Universidade de
Calgary, no Canad,
e em 1983, PhD
em Cincia da
Computao
pela Universidade
Carnegie Mellon,
nos Estados
Unidos.
Kenneth Thompson
(ou Ken Thompson) - cientista
computacional conhecido por sua
inuncia no sistema operacional
UNIX. Nasceu em 1943 em Nova
Orleans, Louisiana, EUA, e tem
mestrado pela UC Berkeley. Foi o
criador da linguagem B, em 1969, no
centro de pesquisas da AT&T Bell
Labs, onde nasceram tecnologias
consideradas revolucionrias (desde cabos de telefone, transistores,
LEDs e lasers at linguagem de programao C e o sistema
operativo Unix, que hoje de propriedade do The Open Group,
consrcio formado por empresas de informtica).
Dennis MacAlistair Ritchie
um cientista da computao notvel por sua
participao no desenvolvimento de linguagens
e sistemas. Nascido em Bronxville, Nova
Yorque (EUA), formou-se em Fsica
e Matemtica Aplicada pela
Universidade de Harvard.
Em 1983, Richie e Ken
Thompson receberam
o prmio Turing pelo
desenvolvimento da teoria
de sistemas operacionais
genricos e, especialmente, pela
implementao do sistema UNIX.
Bjarne
Stroustrup
Cientista da
computao
dinamarqus e
professor catedrtico
da Universidade
do Texas, EUA.
Conhecido como o
pai da linguagem de
programao C++.
F
O
T
O
S
: D
IV
U
L
G
A

O
I nFoRmtI Ca 4
94
CaPtulo 4
95
de computadores) se popularizou em 1993 e a Sun viu o Java ser utilizado para
adicionar contedo dinmico s pginas da web, como interatividade e animaes.
Alm de salvar o projeto Green, a expanso da World Wide Web deu incio
ao desenvolvimento do Java como uma linguagem comercial. Essa mudana j
trazia a ideia de estimular a interatividade entre os ambientes computacionais
(mainframes, PCs etc.), os eletrodomsticos (que cada vez mais tm programa-
o embarcada), equipamentos eletrnicos (que evoluiriam para os dispositivos
mveis) e a ento recm-nascida internet.
A Sun anunciou o Java formalmente durante uma conferncia, em maio de
1995. A linguagem chamou a ateno da comunidade de negcios, devido ao
enorme interesse que a web despertava na poca. Alm disso, tambm tinha o
grande apelo da portabilidade: Write once, Run anywhere.
Por isso, o Java passou a ser utilizado para desenvolver aplicativos corporativos
de grande porte e aprimorar a funcionalidade de servidores web (os computado-
res que fornecem o contedo http://www.sis.pitt.edu/~mbsclass/hall_of_fame/
images/thompson.jpg que vemos em nossos navegadores da internet). Essa lin-
guagem tambm passou a ser usada no desenvolvimento de aplicativos para
dispositivos mveis (telefones celulares, pagers e PDAs, por exemplo).
4.1. a plataforma de desenvolvimento
O Java e as tecnologias envolvidas na orientao a objetos tm uma caracterstica
peculiar que provoca confuso e dvidas entre a maioria das pessoas que come-
am a estudar o assunto. H um universo de siglas e acrnimos que permeiam
todas as fases do desenvolvimento e tambm formam uma verdadeira sopa de le-
trinhas. Mas vamos nos ater ao ambiente de desenvolvimento JSE. O Java come-
ou na verso 1.0 (parece bvio, mas nesse caso a sequncia de verses no to
previsvel assim). Na verso 1.2, houve uma grande quantidade de atualizaes e
correes e um signifcativo aumento nas APIs (banco de recursos da linguagem,
que ser descrito mais adiante). Nessa etapa, a Sun resolveu trocar a nomenclatu-
ra de Java para Java2, para diminuir a confuso entre Java e Javascript e divulgar
as melhorias trazidas pela nova verso. Mas que fque bem claro: no h verso
do Java 2.0. O 2 foi incorporado ao nome (exemplo: Java2 1.2). Depois, vieram
o Java2 1.3 e 1.4. No Java 1.5, a Sun alterou novamente o nome para Java 5. At
a verso 1.4, existia uma terceira numerao (1.3.1, 1.4.1, 1.4.2 etc.), indicando
correes de erros e melhorias. A partir do Java 5, comearam a surgir diversas
atualizaes, como Java 5 update 7, e Java6 1.6 update 16.
4.1.1. JRE (Java Runtime Environment)
Os ambientes de desenvolvimento Java contm um pacote (conjunto de softwa-
res que se complementam e interagem para determinada fnalidade) chamado JRE
(Java Runtime Environment). Ele executado como um aplicativo do sistema ope-
racional e interpreta a execuo de programas Java de forma performtica, segura
e em escalas. A JRE composta pela JVM (Java Virtual Machine, ou mquina
virtual Java), por um conjunto de APIs (Application Programming Interface ou
interface de programao de aplicaes) e por alguns pacotes de desenvolvimento.
4.1.1.1. JVm (Java Virtual machine)
A mquina virtual Java, traduo literal da sigla em ingls JVM, um programa
que carrega e executa os programas desenvolvidos em Java, convertendo os byte-
codes (cdigo fonte pr-compilado)em cdigo executvel de mquina.
A evoluo da linguagem de programao
BCPL
Acrnimo para Basic Combined
Programming Language (Linguagem
de Programao Bsica Combinada),
a BCPL uma linguagem de
programao voltada para o
desenvolvimento de softwares
para sistemas operacionais e
compiladores. Foi criada por Martin
Richards em 1966 e utilizada, anos
depois, por Ken Thompson para
desenvolver a B e, depois, a C.
B
Sucessora da BCPL, a B foi
desenvolvida no famoso centro de
pesquisas da AT&T Bell Labs em
1969 um trabalho capitaneado por
Ken Thompson com contribuies de
Dennis Ritchie. Ken Thompson utilizou
a linguagem B para criar as primeiras
verses do sistema operacional UNIX.
Hoje obsoleta, mas seu valor
incontestvel por ter sido a precursora
da C. Por isso, uma das mais
populares no mundo.
C
uma linguagem de programao compilada,
estruturada, imperativa, processual, de alto
nvel e padronizada. Foi criada em 1972,
por Dennis Ritchie, tambm no AT&T Bell
Labs, como base para o desenvolvimento
do sistema operacional UNIX (escrito em
Assembly originalmente). A maior parte do
cdigo empregado na criao dos sistemas
operacionais de equipamentos, como
desktops, laptops, estaes de trabalho e
pequenos servidores, escrita em C ou C+ +.
C++
De alto nvel, com facilidades para o uso em baixo nvel, uma
liguagem comercial multiparadigma e de uso geral. Muito popular,
desde os anos 1990, tambm est entre as preferidas nos meios
universitrios em virtude de seu grande desempenho e enorme
base de usurios. Foi desenvolvida por Bjarne Stroustrup
(primeiramente, com o nome C with Classes, que signifca C
com classes em portugus), em 1983, no Bell Labs, como um
elemento adicional linguagem C. A linguagem C++ oferece
vrios recursos que complementam e aprimoram a linguagem
C. Sua principal caracterstica, no entanto, est na adoo da
programao orientada a objetos, tcnica de programao que
abordada em todo este captulo.
I nFoRmtI Ca 4
96
CaPtulo 4
97
A JVM responsvel pelo gerenciamento dos programas Java, medida
que so executados, simulam uma CPU e a memria (da o nome mquina
virtual). Graas JVM, os programas escritos em Java podem funcionar
em qualquer plataforma de hardware e software que possua uma verso da
JVM. Ou seja, cada sistema operacional compatvel com o Java possui sua
prpria verso de JVM, tornando os programas desenvolvidos em Java inde-
pendentes em relao plataforma (hardware e software) onde esto sendo
executados. Confgura-se, assim, uma das principais caractersticas da lin-
guagem Java: a portabilidade.
4.1.1.2. aPI (application Programming Interface)
A interface de programao de aplicao, traduo literal da sigla em ingls API,
um conjunto de recursos (classes e interfaces) com funcionalidades padro, j
implementados, e que possuem ampla documentao. Assim, os programadores
podem utilizar esses recursos sem precisar saber como foram desenvolvidos.
4.1.2. ambientes de desenvolvimento
4.1.2.1. JSE (Java Standard Edition)
Em portugus, a edio Java padro. Contm todo o ambiente necessrio para
a criao e execuo de aplicaes Java, incluindo a mquina virtual Java (JVM),
ocompilador Java (JRE), um conjunto de APIs e outras ferramentas utilitrias.
voltada para o desenvolvimento de aplicaes desktop e web de pequeno porte, exe-
cutadas em PCs e em servidores. O JSE considerado o ambiente principal, j que
serviu de base para o desenvolvimento do JEE (Java Enterprise Edition ou edio Java
corporativa) e do JME (Java Micro Edition ou edio Java micro, voltada para micro-
dispositivos). Por ser a plataforma mais abrangente do Java, a JSE a mais indicada
para quem quer aprender a linguagem.
4.1.2.2. JEE (Java Enterprise Edition)
A plataforma JEE (sigla em ingls, que literalmente signifca edio empresa-
rial Java) contm bibliotecas que oferecem facilidades para a implementao
de softwares Java distribudos, tolerantes a falhas. Voltada para aplicaes mul-
ticamadas baseadas em componentes que so executados em um servidor de
aplicaes, a JEE considerada, mais do que uma linguagem, um padro de
desenvolvimento. Nela, o desenvolvedor de software segue obrigatoriamente
determinadas regras para que seu sistema possa se comunicar com outros de
maneira automtica. Destina-se a aplicaes corporativas de grande porte e que
usam frequentemente o EJB (Enterprise Java Beans, um padro com estrutura
de aplicaes distribudas) e servidores de aplicao. Outro recurso desse am-
biente so as aplicaes que rodam no lado servidor em uma arquitetura cliente/
servidor, conhecidas como servlets.
4.1.2.3. JmE (Java micro Edition)
A plataforma Java Micro Edition (literalmente, edio Java micro, voltada para
microdispositivos) permite o desenvolvimento de softwares para sistemas e apli-
Servidores de
aplicao so
programas que
fornecem uma
srie de recursos
para suporte
de aplicaes
corporativas,
na web, de
forma segura e
consistente.
caes embarcadas, ou seja, aquelas que rodam em um dispositivo especfco.
bastante indicada para aparelhos compactos, como telefone celular, PDA
(Personal Digital Assistant ou assistente digital pessoal), controles remotos etc.
Contm confguraes e bibliotecas desenvolvidas especialmente para os port-
teis. Com esse instrumento, o desenvolvedor tem mais facilidade para lidar com
as limitaes de processamento e memria do equipamento.
4.1.2.4. JDK (Java Development Kit)
A JDK (ou JSDK Java Software Development Kit, kit de desenvolvimento de
programas Java) o ambiente completo de desenvolvimento Java. Existe um
JDK para cada ambiente (JSE, JEE e JME). Esse kit deve ser instalado na m-
quina para possibilitar a criao de aplicaes Java.
4.1.2.5. JSE: nosso foco
O JSE o mais indicado para os programadores iniciantes (ou mesmo veteranos
de outras linguagens) e ser o foco de todos os exemplos deste captulo. Mas,
apesar dos diferentes ambientes de desenvolvimento, trata-se da mesma lingua-
gem de programao. Portanto, a maioria dos recursos que sero abordados
comum e perfeitamente aplicvel a outros ambientes, principalmente no que diz
respeito orientao a objetos.
4.1.3. a portabilidade
Em primeiro lugar, preciso entender o que um programa compilado e um
programa interpretado. Compilao o processo de converso do cdigo fonte
(texto escrito segundo as regras de determinada linguagem de programao)
para a linguagem de mquina (programa pronto para ser executado). Nesse pro-
cesso, so feitas vrias referncias (e consequentemente suas dependncias) em
A plataforma
Java Micro Editon
indicada para
aparelhos como
o Personal Digital
Assistant.
D
I V
U
L
G
A

O
I nFoRmtI Ca 4
98
CaPtulo 4
99
relao ao sistema operacional no qual o programa gerado. J em um progra-
ma interpretado a execuo ocorre por meio da leitura, interpretao e execuo
direta do cdigo fonte (no existe o processo de compilao).
Na comparao entre esses dois modelos de desenvolvimento, possvel perce-
ber que os programas compilados oferecem melhor desempenho (velocidade de
execuo), enquanto os interpretados so bem mais lentos. Em contrapartida, os
compilados so totalmente dependentes da plataforma e do sistema operacional
em que foram gerados, ao contrrio dos interpretados.
O Java se aproveita do que h de bom nos dois modelos e descarta os pontos ne-
gativos de cada um, por meio da JVM. Um cdigo fonte Java pr-compilado e
convertido em bytecode pela JRE (e no pelo sistema operacional). O bytecode
gerado por meio de recursos da JRE e executado sobre a JVM, ou seja, sem
interao direta com o sistema operacional da mquina em que foi desenvolvido.
No entanto, a JVM precisa interagir com o sistema operacional e, por isso, tem
verses para diferentes sistemas operacionais.
Como tudo passa pela JVM, essa plataforma pode tirar mtricas, decidir qual
o melhor lugar para alocar ou suprimir memria, entre outras funes que antes
fcavam sob a responsabilidade do sistema operacional. A fgura 63 mostra como a
portabilidade em aplicaes Java alcanada e qual o papel da JVM nesse contexto.
4.2. origem da orientao a objetos
No mundo em que vivemos, de constante utilizao e atualizao de recursos
tecnolgicos, os softwares ganharam um espao que vem aumentando vertigi-
nosamente e em diversos setores da sociedade. Existem programas especfcos
para uso comercial, industrial, administrativo, fnanceiro, governamental, mi-
litar, cientfco, de entretenimento etc. Para atender a essa demanda cada vez
maior e mais exigente, as reas de desenvolvimento e manuteno de softwares
precisam criar aplicaes cada vez mais complexas.
Figura 63
Portabilidade Java.
A orientao a objetos surgiu da necessidade de elaborar programas mais indepen-
dentes, de forma gil, segura e descentralizada, permitindo que equipes de programa-
dores localizadas em qualquer parte do mundo trabalhem no mesmo projeto. Essa
tcnica de desenvolvimento de softwares, mais prxima do ponto de vista humano,
torna mais simples e natural o processo de anlise de problemas cotidianos e a cons-
truo de aplicaes para solucion-los. Para que isso seja possvel, preciso quebrar
paradigmas em relao ao modelo procedural, que tem como base a execuo de
rotinas ou funes sequenciadas e ordenadas para atender aos requisitos funcionais de
uma aplicao. Nele, as regras (codifcao) fcam separadas dos dados (informaes
processadas). Por isso, o programador passou a estruturar a aplicao para que, alm
de resolver problemas para os quais foi desenvolvido, o software possa interligar ele-
mentos como programao, banco de dados, conectividade em rede, gerenciamento
de memria, segurana etc. Isso aumenta signifcativamente a complexidade na ela-
borao e expanso desses softwares.
O modelo orientado a objetos tem como base a execuo de mtodos (pequenas fun-
es) que atuam diretamente sobre os dados de um objeto, levando em conta o modo
como o usurio enxerga os elementos tratados no mundo real. Nessa tcnica, o desen-
volvedor cria uma representao do que se pretende gerenciar no sistema (um cliente,
um produto, um funcionrio, por exemplo) exatamente como acontece no mundo
real. Assim, esses elementos podem interagir, trocando informaes e adotando aes
que defnem os processos a serem gerenciados pelo sistema. Por exemplo, no processo
de venda de uma empresa podem ocorrer os seguintes passos: um cliente compra
um ou vrios produtos; o cliente atendido por um vendedor; o vendedor tem
direito a comisso.
Ao analisarmos esses processos no mundo real, destacamos como entidades envol-
vidas os seguintes elementos: cliente, vendedor e produto, assim como a venda e o
clculo e comisso. A partir da anlise orientada a objetos, representamos essas enti-
dades dentro da nossa aplicao com as mesmas caractersticas adotadas no mundo
real (nome, endereo e telefone de um cliente, etc. alm de suas atitudes tpicas numa
transao comercial (cotao, compra, pagamento etc.).
4.2.1. abstrao
Abstrao a capacidade do ser humano de se concentrar nos aspectos essenciais
de um contexto qualquer, ignorando caractersticas menos importantes ou aciden-
tais. Outra defnio: habilidade mental que permite visualizar os problemas do
mundo real com vrios graus de detalhe, dependendo do contexto do problema.
Para o programador que utiliza orientao a objetos, a abstrao a habilida-
de de extrair do mundo real os elementos (entidades, caractersticas, comporta-
mentos, procedimentos) que realmente interessam para a aplicao desenvolvida.
Por exemplo, as informaes relevantes a respeito de um CD para uma aplicao
usada no gerenciamento de uma loja que vende CDs, so diferentes das de uma
aplicao para o gerenciamento de uma fbrica, que produz CDs.
4.3. uml (unifed modeling language)
A UML, sigla em ingls de linguagem modular unifcada, dedicada especi-
fcao, visualizao, construo e documentao que usa notao grfca para
Cdigo fonte Java
um arquivo de texto
escrito de acordo
com as regras da
linguagem Java
e salvo com a
extenso .java. J a
expresso bytecode
se refere a um
arquivo convertido
em linguagem de
mquina e salvo
com o mesmo nome
do cdigo fonte,
porm com
a extenso.class.
Cdigo fonte
Java (.java)
JVM
Windows
Windows
Linux
Solaris
Bytecodes
(.class)
JVM
Linux
JVM
Solaris
I nFoRmtI Ca 4
100
CaPtulo 4
101
modelar softwares. Muito utilizada em empresas que desenvolvem aplicaes
orientadas a objetos, tambm est presente em vrias publicaes relacionadas
com a linguagem Java (alm de ser um instrumento interessante para elaborao
de exerccios em aula). Por isso, escolhemos um de seus diagramas (de clas-
ses) para ilustrar nossos exemplos. bom frisar, no entanto, que os recursos da
UML vo muito alm desses diagramas.
4.4. Eclipse
IDE (Integrated Development Environment, ou ambiente integrado de desen-
volvimento) um programa de computador que rene recursos e ferramentas
de apoio para agilizar o desenvolvimento de softwares. Aqui, trataremos da IDE
Eclipse Classic 3.5.0, comumente conhecida por Galileo (as verses mais recentes
fcam disponveis para download no site htpp://www.eclipse.org/downloads/.)
O Eclipse mantido pela Eclipse Foundation, que possui projetos que se con-
centram na criao de uma plataforma de desenvolvimento composta por qua-
dros extensveis e ferramentas para construo, implantao e gerenciamento de
softwares em todo o seu ciclo de vida.
4.5. orientao a objetos (1)
Uma vez familiarizados com uma parte do universo das siglas e com os am-
bientes de desenvolvimento relacionados linguagem Java, o momento de
aprofundar o conhecimento do tema e das boas prticas de programao, na
construo de softwares orientados a objetos. Para isso, nosso foco de estudo
ser a construo de um projeto. Para comear, importante entender diversos
conceitos que ajudaro a estruturar e a padronizar os programas desenvolvidos
com essa tcnica. A construo de softwares independentes, de fcil expanso,
de alto nvel de reusabilidade (a possibilidade de reutilizar trechos de um pro-
grama) e que viabilizam a interao entre programas e plataformas diferentes,
depende dessa padronizao, graas adoo dos conceitos da orientao a ob-
jetos. Deixar de usar esses conceitos no gera, necessariamente, erros de compi-
lao, de lgica ou de execuo. Porm, faz com que os softwares gerados no
apresentem as vantagens inerentes orientao a objetos, como, justamente, o
aumento da reusabilidade e a facilidade de manuteno e de expanso.
Outro termo comumente usado conveno (de nomenclatura). H alguns
anos, cada programador escrevia seus cdigos de uma maneira bem particular,
criando seus prprios estilos e manias. Isso no atrapalhava a execuo dos pro-
gramas (desde que fosse utilizada uma boa lgica, alm de adequados recursos
das linguagens). Porm, com o passar dos anos e a evoluo dos sistemas, o
trabalho em equipe se tornou inevitvel e vrios programadores (muitas vezes
distantes entre si, fsicamente), passaram a dar manuteno em cdigos comuns.
A partir da, surgiu a necessidade de adotar determinados padres de escrita de
cdigos. H algumas convenes de nomenclatura bem antigas e consolidadas,
como a notao hngara, amplamente utilizada em C e C++. Mas, na prtica, as
linguagens e at mesmo as empresas acabam criando suas prprias convenes.
No caso do Java, existe uma documentao especfca (disponvel no site http://
A Eclipse Foundation
uma organizao
sem fns lucrativos que
hospeda os projetos
Eclipse e ajuda a manter
tanto uma comunidade
de openSource (grupo
que desenvolve
softwares com cdigo
de fonte aberto)
como um conjunto de
produtos e servios
complementares. O
projeto Eclipse foi
originalmente criado
pela IBM em novembro
de 2001 e apoiado
por um consrcio
de fornecedores de
software. (Para mais
informaes
sobre o Eclipse, acesse:
htpp://www.eclipse.org).
www.java.sun.com/docs/codeconv/) que defne sua prpria conveno de nomen-
clatura, cuja utilizao ser destacada durante a elaborao dos cdigos fonte.
Tal como ocorre com os conceitos, deixar de us-la no gera erros de lgica, de
compilao ou de execuo. Seguiremos, entretanto, risca as recomendaes de
conceitos e convenes, para que sejam conhecidas em profundidade e tambm
em nome da implantao de boas prticas de programao.
o projeto da livraria Duke
A partir desse ponto, vamos
desenvolver um controle de estoque e
movimentao para uma livraria fctcia,
chamada Duke. Todos os exemplos
criados a seguir sero reaproveitados
para a construo desse projeto.
Para o software da empresa, temos a
manuteno dos dados (em banco) e o
levantamento dos seguintes requisitos:
Controle de clientes: vendas.
Controle de funcionrios: clculo de salrios.
Controle de produtos: compras, vendas e estoques disponveis.
Controle de fornecedores: compras realizadas de cada fornecedor.
Controle de compra e venda: o sistema manter um registro de todas.
as movimentaes realizadas de acordo com as regras da livraria.
I nFoRmtI Ca 4
102
CaPtulo 4
103
4.5.1. Componentes elementares
4.5.1.1. Classes
Em Java, tudo defnido e organizado em classes (a prpria linguagem estru-
turada dessa forma). Inclusive, existem autores que defendem ser correto chamar
a orientao a objeto de orientao a classes. As classes exercem diversos papis
em programas Java, a princpo vamos nos ater a duas abordagens:
Classes de modelagem: so as que daro origem a objetos. Ou, ainda,
so as que defnem novos (e personalizados) tipos de dados.
Classe Principal: ter, por enquanto, a fnalidade de implementar o m-
todo main (principal). Poderia ter qualquer nome, desde que respeitadas
as regras de nomenclatura de classes. Ser chamada, ento, de Princi-
pal, como referncia ao mtodo main.
Nossa primeira classe ser a representao de uma pessoa segundo os critrios da
orientao a objetos. Para isso, utilizaremos um diagrama de classe (UML), um
critrio que valer para os demais exemplos desse captulo (fgura 64).
As classes de modelagem podem ser comparadas a moldes ou formas que def-
nem as caractersticas e os comportamentos dos objetos criados a partir delas.
Vale traar um paralelo com o projeto de um automvel. Os engenheiros def-
nem as medidas, a quantidade de portas, a potncia do motor, a capacidade em
relao ao nmero de passageiros, a localizao do estepe, dentre outras descri-
es necessrias para a fabricao de um veculo.
Durante a elaborao do projeto, bvio que o automvel ainda no existe. Po-
rm, quando for fabricado, todas as especifcaes previamente defnidas no dese-
nho tero de ser seguidas risca. Os diferentes modelos desse mesmo veculo tero
detalhes diferenciais, como cor da lataria, tipo das rodas, material do banco, aces-
srios etc. Nada, entretanto, que altere as caractersticas originais, como um todo.
Sero informaes acrescentadas aos elementos j defnidos no projeto (atributos).
O funcionamento bsico do automvel tambm foi defnido no projeto. O mo-
torista poder acelerar, frear, trocar marchas, manobrar etc. Essas aes, assim
como a respectiva resposta do carro (mtodos), permitem uma outra analogia
com nosso assunto. O motorista (que seria no nosso caso o programador) no
precisa ter conhecimentos profundos sobre mecnica para, por exemplo, acele-
rar o automvel. Internamente, o veculo possui um complexo mecanismo que
aciona as partes responsveis pela injeo e pela combusto. Esta, por sua vez,
gera uma presso sobre outras engrenagens do motor, impulsionando as rodas e
fazendo o carro se deslocar processos tambm especifcados no projeto. Para
o motorista, quando o objetivo velocidade, basta saber que preciso pisar
no pedal do acelerador e que quanto mais presso for feita mais rpido anda-
r o veculo. Resumindo: para uso dirio do automvel (objeto) no preciso
conhecer detalhes de como o funcionamento dos mecanismos foi defnido no
projeto (classe). Basta oper-los (chamar os mtodos, obedecendo sua assinatu-
ra como veremos, em seguida). Da mesma forma, o programador no precisa
saber, em detalhes, como a classe System, por exemplo, foi desenvolvida, mas
sim saber como utiliz-la para apresentar uma informao na tela.
4.5.1.1.1. atributos
As informaes (dados) que defnem as caractersticas e os valores pertinentes
classe e que sero armazenados nos (futuros) objetos so chamadas de atributos.
Tambm so conhecidos como variveis de instncia. Para no confundir com
variveis comuns, vamos cham-los sempre de atributos.
4.5.1.1.2. mtodos
Mtodos so blocos de cdigo que pertencem a uma classe e tm por fnalidade
realizar tarefas. Geralmente, correspondem a uma ao do objeto. Consideran-
do-se o exemplo do automvel, os mtodos poderiam defnir processos como
ligar, acelerar, frear etc.
4.5.1.1.3. Detalhando o diagrama de classe
Na descrio das informaes contidas no diagrama de classe, novos termos
aparecero. Nesse momento, porm, o importante perceber que o diagra-
Do projeto ao
automvel, assim
como da classe
ao objeto.
E
q
U
IP
E
E
E
S
C
-U
S
P
B
A
JA
S
A
E
I nFoRmtI Ca 4
104
CaPtulo 4
105
ma traz detalhes dos atributos e mtodos que compem a classe. A tabela
11 descreve os detalhes contidos nos trs compartimentos (nome, atributos
e mtodos) do diagrama de classe.
4.5.1.1.4. Codifcao da classe Pessoa
A abertura de uma classe definida com seu modificador de acesso (de-
talhado a seguir), que, por sua vez, d a visibilidade (nesse caso, pblica),
alm do comando class e do nome da classe. A definio da classe fica de-
limitada entre as chaves { }, que estabelecem o incio e o fim de um bloco
de cdigo da linha 1 a 57. Observe, na figura 65, a codificao da classe
Pessoa. Perceba que parte do cdigo foi suprimida, mais precisamente a co-
dificao dos mtodos (ficando visvel somente a assinatura ou abertura
dos mtodos), os quais sero detalhados mais adiante. possvel perceber
as partes ocultas no cdigo por meio de um sinal de + na frente do nmero
da linha. tabela 11 Detalhes dos trs compartimentos do diagrama de classe.
Por conveno, todo nome de classe
comea com letra maiscula.
O sinal de menos - indica a visibilidade do
atributo. Nesse caso, privado (private em
ingls).
Por conveno, todos os nomes de atributos
so escritos com letras minsculas.
Depois especicado o tipo de dado que
ser armazenado no atributo
O sinal de mais + indica a visibilidade
do mtodo, nesse caso, pblico (public em
ingls).
Por conveno, o nome dos mtodos
escrito com letras minsculas.
Os nicos mtodos que tm exatamente o
mesmo nome da classe so os construtores.
Tambm iniciam com letras maisculas.
Nomes compostos por vrias palavras
comeam com letra minscula e tm
a primeira letra das demais palavras
maiscula, sem espao, trao, underline,
ou qualquer outro separador. Por exemplo,
apresentar Pessoa.
Todo mtodo tem parnteses na frente
do nome. Servem para denir os seus
parmetros. Um mtodo pode ou no ter
parmetros.
Por ltimo, a denio do retorno. Se o
mtodo tiver retorno, especicado o
tipo, por exemplo, String e se no tiver
colocada a palavra void (vazio).
Nome da classe
Atributos
Mtodos
Pessoa
- nome : String
- endereco : String
- telefone : String
+ Pessoa() : void
+ Pessoa(nome : String, endereco : String, telefone : String) : void
+ getNome() : String
+ setNome(nome : String) : void
+ getEndereco() : String
+ setEndereco(endereco : String) : void
+ getTelefone() : String
+ setTelefone(telefone : String) : void
+ inserirDadosPessoa() : void
+ apresentarPessoa() : void
Figura 64
Diagrama de classe
(UML) da
classe Pessoa.
Pessoa
- nome : String
- endereco : String
- telefone : String
+ Pessoa() : void
+ Pessoa(nome : String, endereco : String, telefone : String) : void
+ getNome() : String
+ setNome(nome : String) : void
+ getEndereco() : String
+ setEndereco(endereco : String) : void
+ getTelefone() : String
+ setTelefone(telefone : String) : void
+ inserirDadosPessoa() : void
+ apresentarPessoa() : void
Principal
+ main(args[ ] : String) : void
I nFoRmtI Ca 4
106
CaPtulo 4
107
Quando analisamos a codifcao da classe, percebemos que ali est tudo o
que foi defnido no diagrama de classe. Depois da abertura da classe, vem a
declarao dos atributos (da linha 4 a 6), composta pelo modifcador de acesso
(private), pela defnio do tipo de dado a ser armazenado (String) e pelo nome
do atributo (por exemplo nome). Em comparao com o diagrama de bloco, a
sequncia muda (no diagrama vem o modifcador de acesso, o nome e o tipo
conforme o padro da UML). Mas as informaes so as mesmas.
Como defnio de um comportamento especfco da classe, temos o mtodo
apresentarPessoa, que mostrar o contedo dos atributos em prompt (simulado no
eclipse pelo painel console). Conforme defnido no diagrama, o mtodo pblico
(public), no retorna valor (void), possui o nome apresentarPessoa e no recebe pa-
Figura 65
Codifcao da
classe Pessoa.
Figura 67
Insero de
comentrios
no cdigo.
Figura 66
Codifcago
do mtodo
apresentarPessoa.
rmetros ( ). Essas especifcaes, mais precisamente o nome e os parmetros (a
quantidade e o tipo), defnem a assinatura do mtodo. Isso ser detalhado depois,
assim como as linhas de cdigo que fazem a apresentao dos dados. No trecho
ilustrado pela fgura 66, observamos a codifcao do mtodo apresentarPessoa.
Perceba que toda a linha de instruo termina com ponto-e-vrgula.
4.5.1.1.5. Comentrios
Existem algumas formas de inserir comentrios no cdigo, como ilustra a fgura
67. Essa prtica aconselhvel para a futura gerao de documentao do sistema
e tambm possibilita o esclarecimento do cdigo em pontos especfcos. Isso pode
ser muito til para voc e outros programadores que trabalhem no mesmo cdigo.
4.5.1.2. objetos
A partir do momento em que a classe de modelagem est completa, possvel
criar um objeto e manipul-lo. Outra vez, surgiro termos novos, explicados mais
adiante. O importante, agora, perceber que essa a classe Principal (salva em um
arquivo separado da classe Pessoa). Nela est defnido o mtodo main (principal),
dentro do qual esto as linhas de cdigo que criam e acessam o objeto.
Todo projeto Java possui, obrigatoriamente, um mtodo main. esse que
a JRE procura para ser executado primeiro. A partir dele, o restante do
I nFoRmtI Ca 4
108
CaPtulo 4
109
sistema acessado e executado. A assinatura do mtodo main ser sempre
feita dessa forma.
Observe a fgura 68. Vamos linha 09, na qual realizada a criao (instancia-
o) do objeto p do tipo Pessoa. Veja como isso ocorre:
Primeiro houve a abstrao da entidade do mundo real a ser representada
em nosso programa (no caso, uma pessoa). Isso aconteceu na defnio
das informaes que deveramos armazenar (atributos) e nas aes que
deveramos programar (mtodos).
Depois, desenhamos essa entidade (Pessoa), utilizando um diagrama de
classe (pertencente especifcao da UML) e defnimos a classe.
Ao defnirmos a classe, detalhamos todos os atributos (dados) e mtodos
(aes) pertencentes a essa classe.
Uma vez defnida a classe (o novo tipo), podemos criar (instanciar) um
objeto para ser utilizado. Lembre-se: na classe so feitas as especifcaes
do objeto, assim como o projeto do automvel. Ns no manipulamos a
classe, da mesma forma que no dirigimos o projeto do automvel. De-
vemos instanciar (criar um objeto) a partir da classe criada, assim como o
carro deve ser fabricado a partir do projeto. Da, poderemos manipular as
informaes sobre o cliente dentro do programa, o que equivale a dirigir
o carro no mundo real.
Figura 68
Codifcao da
classe Principal.
Existe a possibilidade de acessar atributos e mtodos de uma classe por
meio de outra, sem a necessidade de instanciar um objeto. Isso pode ser
feito com ajuda do modifcador static (esttico), na classe Math do Java,
por exemplo.
Para a criao do objeto na linha 09, primeiramente, informado o tipo
(Pessoa), depois o nome do novo objeto (nesse caso, p), = new (novo
- comando que cria uma instncia da classe que chamamos de objeto).
Depois, utilizado um mtodo construtor (o nico tipo de mtodo que
tem o mesmo nome da classe, inclusive com letra maiscula), que permite
a insero de dados (informaes) nos atributos j no momento de sua
criao. O objeto p do tipo Pessoa foi criado e contm os valores Bart
no atributo nome, Rua: 01, n 123 no atributo endereo e (19) 1234-
5678 no atributo telefone.
Em seguida, com o objeto j criado, seu mtodo apresentarPessoa ser
chamado e as mensagens, apresentadas conforme a fgura 69.
Figura 69
Sada do mtodo
apresentarPessoa().
Classe
Objeto Construtor
Mtodo Objeto
Comando
4.5.2. modifcadores de acesso
Tanto os atributos quanto os mtodos devem (por clareza de cdigo) ter sua
visibilidade defnida na declarao (para atributos) e na assinatura (para os m-
todos). Visibilidade, no caso, signifca deix-los ou no disponveis para uso em
outras classes da aplicao. Nas de modelagem, a visibilidade defne se deter-
minado atributo ou mtodo fcar acessvel por intermdio do objeto depois de
instanciado. Por exemplo, o mtodo apresentarPessoa foi chamado (acessado) a
partir do objeto p (p.apresentarPessoa()) na classe Principal, graas ao fato de ter
sido defnido como public na classe Pessoa. Se tentarmos acessar, por exemplo,
o atributo email do objeto, no ser possvel. Na verdade, esse atributo no fca
visvel na classe Principal, porque foi defnido como private na classe Pessoa.
O uso de modifcadores de acesso no obrigatrio. Se forem omitidos, a vi-
sibilidade default (padro) adotada a protected (protegido) visvel dentro do
mesmo pacote. Porm, seu uso deixa o cdigo mais claro em relao ao que est
acessvel ou no por intermdio dos futuros objetos.
4.5.2.1. Private
Os atributos e mtodos defnidos por esse modifcador somente so visveis (po-
dem ser acessados) dentro da classe em que foram codifcados. Por exemplo, o
atributo e-mail defnido na classe Pessoa. Dentro dela (normalmente nos m-
todos da classe) esse atributo pode ser manuseado (seu valor lido ou alterado).
I nFoRmtI Ca 4
110
CaPtulo 4
111
Porm, a partir de uma instncia da classe Pessoa, isto , de um objeto do tipo
Pessoa, o atributo fca inacessvel.
4.5.2.2. Public
Os atributos e mtodos defnidos com o modifcador public so visveis em qual-
quer lugar dentro da classe e podem ser acessados sem nenhuma restrio a
partir de um objeto instanciado.
4.5.2.3. Protected
Um terceiro tipo, o protected (protegido, em portugus), defne que um atributo
ou mtodo pode ser visto dentro da prpria classe e em objetos instanciados a
partir de classes que pertenam ao mesmo pacote (package em ingls).
O uso de packages ser detalhado mais adiante.
4.5.3. mtodos construtores
Outra defnio que busca maior clareza de cdigo a implementao do
construtor, um mtodo especial responsvel pela inicializao dos atributos
de um objeto no momento de sua criao (instanciao). Se sua codifcao
for omitida, acionado o construtor default (padro), que inicializa os atri-
butos sem nenhum contedo. Em nossos exemplos, adotaremos a prtica
de defnir pelo menos dois construtores por classe: um que inicializar os
atributos vazios e outro que possibilitar a passagem de valores a serem ar-
mazenados nos atributos.
Uma classe pode ter quantos construtores forem necessrios para aplicao. E
todos eles tero sempre o mesmo nome da classe (inclusive com a primeira letra
maiscula). Porm, com a passagem de parmetros diferentes. Os construtores
esto diretamente relacionados aos atributos. Portanto, se uma classe no tiver
atributos, os construtores sero desnecessrios. A codifcao dos construtores
na classe Pessoa fcar como ilustra a fgura 70.
O primeiro construtor, sem parmetros (nada entre os parnteses), adiciona va-
zio em cada um dos atributos (porque os trs atributos so String). J o segundo
est preparado para receber trs parmetros, que so os valores do tipo String,
identifcados como nome, endereco e telefone (lembre-se de que a referncia
aos valores dentro dos parnteses). Esses valores sero atribudos (armazenados)
na sequncia em que esto escritos (o primeiro parmetro no primeiro atributo,
o segundo parmetro no segundo atributo e o terceiro parmetro no terceiro
atributo). O mesmo acontece no mtodo this(), no qual os valores entre parn-
teses referem-se aos atributos na mesma sequncia.
4.5.4. Garbage Colletor (Coletor de lixo)
Em um sistema orientado a objetos, vrios deles so instanciados (criados
durante sua execuo). Para que se possa utilizar esse objeto, criada uma
referncia a esse endereo de memria onde ele est armazenado. Toda vez
que fazemos uma referncia a um objeto, a JVM (mais precisamente um
recurso dela) registra essa informao em uma espcie de contador. Assim,
feito o controle de quantas referncias esto apontando para aquele
espao da memria (objeto). Quando o contador est em zero, ou seja, no
h referncia, o objeto se torna um candidato a ser removido da memria.
Periodicamente, em intervalos calculados pela JVM, esses objetos sem refe-
rncias so retirados da memria e o espao alocado volta a ficar disponvel,
dando lugar a novos. O recurso responsvel por essa limpeza da memria
chamado de Garbage Collector (coletor de lixo). Tem como responsa-
bilidade rastrear a memria, identificar quantas referncias existem para
cada objeto e executar um processo que elimine os objetos sem referncias.
Substitui, ento, os mtodos destrutores e o gerenciamento de ponteiros
(referncias a espaos de memria) existentes em outras linguagens.
4.5.5. o comando this
O this utilizado como uma referncia ao prprio objeto que est chaman-
do um mtodo. O uso desse comando tambm deixa claro quando estamos
nos referindo a um atributo ou mtodo da mesma classe na qual estamos
programando. No obrigatrio, porm, dentro do construtor que recebe
parmetros, por exemplo, possvel visualizar o que parmetro e o que
atributo. Isso acontece, apesar de os dois terem exatamente os mesmos
nomes (os atributos vm precedidos do this). Adotaremos o uso do this em
todos os nossos exemplos.
4.5.6. Encapsulamento
No exemplo da classe Pessoa, utilizamos mais um conceito da programao
orientada a objetos. Quando definimos que um atributo (ou mtodo) tem a
visibilidade privada (modificador de acesso private), limitamos o acesso so-
mente sua classe. Podemos imaginar que, depois de instanciado o objeto,
esse atributo fica protegido (encapsulado) dentro desse objeto. Assim, no
possvel acess-lo de nenhuma outra classe ou objeto. Tal caracterstica
extremamente importante para proteger atributos que no devem ter seus
contedos vulnerveis a acessos indevidos.
Imagine que o valor mximo que um cliente pode comprar em uma loja est
defnido em um atributo limiteDeCredito em uma classe Cliente (que d ori-
Figura 70
Codifcao dos
construtores na
classe Pessoa.
Instanciar um objeto
alocar (reservar) um
espao em memria
(RAM - Random Access
Memory ou memria
de acesso randmico).
I nFoRmtI Ca 4
112
CaPtulo 4
113
gem aos clientes do sistema). Seja por descuido ou por m f, se o valor desse
atributo for alterado para um valor exorbitante, ocorrer a seguinte situao
no sistema: o cliente (do mundo real) fcar liberado para comprar at esse
valor exorbitante (tendo ou no condies para pagar). Normalmente, os em-
preendimentos comerciais defnem limites de crdito para seus clientes, to-
mando por base a renda mensal de cada um, o tempo de cadastro, o histrico
de pagamentos etc. Enfm, h uma regra para que esse limite de crdito seja
calculado e/ou atualizado.
Agora, imagine outra situao. Determinada classe do sistema respon-
svel pelo processo de venda dessa mesma loja. Em algum momento, ser
necessrio verificar se a quantidade de estoque disponvel suficiente para
atender aos pedidos. Portanto, essa classe deve ter acesso ao atributo esto-
queDisponvel do produto que est sendo vendido. Tal acesso necessrio e
autorizado pelo sistema. Porm, se o atributo estoqueDisponivel foi defini-
do como privado, esse acesso no ser possvel. A soluo para o problema
definir mtodos de acesso para os atributos.
4.5.6.1. mtodos de acesso
Para garantir o encapsulamento e possibilitar o acesso aos dados do objeto,
so criados mtodos de acesso aos atributos em casos especficos. Esses
mtodos so codificados dentro da classe e, por isso, definidos com aces-
sibilidade pblica (public). Significa que eles podem ser acessados a partir
do objeto instanciado de qualquer classe. Servem, portanto, como portas
de entrada e de sada de informaes dos atributos, por onde seus valores
podem ser lidos e alterados.
A vantagem de abrir esse acesso via mtodo poder definir (programar) as
regras de leitura e escrita nesses atributos. Permite, como no exemplo da
loja, identificar se o processo que est solicitando o contedo do atributo
estoqueDisponvel autorizado a fazer tal consulta. Ou, mais crtico ainda,
se permite atualizar (alterar) esse atributo depois da venda efetuada (sub-
traindo a quantidade vendida), liberar a leitura do atributo limiteDeCredi-
to e bloquear a sua escrita (alterao). O clculo do limite fica a cargo do
mtodo responsvel por essa operao. Resumindo nenhuma outra classe
ou objeto pode acessar diretamente os atributos encapsulados.
Se isso for necessrio, deve-se pedir ao objeto para que ele mostre ou alte-
re o valor de um de seus atributos mediante suas prprias regras (definidas
nos mtodos de acesso). Apesar de no ser obrigatrio, adotaremos a defini-
o de um mtodo de leitura e de um mtodo de escrita para cada atributo
da classe. Voltando ao exemplo da classe Pessoa, para acessar o atributo
nome, temos os seguintes mtodos de acesso: get e set.
4.5.6.1.1. mtodo get
Por padro do prprio Java, os mtodos que leem e mostram (retornam) o con-
tedo de um atributo comeam com a palavra get, seguida pelo nome desse
atributo (fgura 71a).
4.5.6.1.2. mtodo set
J os mtodos responsveis por escrever (alterar) o contedo de um atributo co-
meam com a palavra set, seguida pelo nome desse atributo (fgura 71b) .
Figura 71a
O mtodo get.
Figura 71b
O mtodo set.
4.5.7. Representao do encapsulamento
em um objeto do tipo Pessoa
A fgura 72 ilustra o encapsulamento em um objeto do tipo Pessoa. Imagine o objeto
como uma esfera, que possui na parte interna (azul) os atributos (privados) que no
tm acesso ao mundo externo (restante da aplicao). J a camada externa (amarela)
tem acesso ao mundo externo (pelo lado de fora) e parte interna (pelo lado de dentro)
Figura 72
Representao grfca
do encapsulamento.
nome
S
e
t
t
e
r
s
a
p
r
e
s
e
n
t
a
r
P
e
s
s
o
a
(
)
G
e
t
t
e
r
s
endereco
telefone
I nFoRmtI Ca 4
114
CaPtulo 4
115
e funciona como uma pelcula protetora do objeto. Tem passagens padro que trans-
ferem informaes de fora para dentro (setters) e de dentro para fora (getters). Alm
disso, tm algumas passagens (mtodos) com fnalidades especfcas e que tambm
podem entrar e/ou sair com informaes. Esse trfego acontece de acordo com re-
gras de entrada e sada de informaes defnidas nas passagens (mtodos). Em nossos
exemplos, sempre sero utilizados getters e setters para acessar os atributos, garantindo
os benefcios do encapsulamento.
4.5.8. Viso geral da classe Pessoa e sua estrutura
A fgura 73 reproduz a codifcao completa da classe Pessoa, destacando as
camadas vistas at agora.
Figura 73
Codifcao completa
da classe Pessoa.
getters e setters (mtodos de acesso)
atributos
construtores
mtodo especco da classe Pessoa
Figura 74
O import, na classe
JOptionPane.
Figura 75
O uso do caractere
especial *.
4.6. Entrada e sada de dados
J vimos como inserir dados nos atributos por meio do construtor e tambm
como mostrar esses dados por meio do comando System.out.println(). Existem
ainda diferentes formas de leitura e de escrita de dados em Java. Agora, para
desenvolver exemplos mais elaborados, preciso saber como realizar a entrada
e a sada de dados utilizando a classe JOptionPane, localizada na API Swing=,
que contm vrios mtodos com essa fnalidade.
4.6.1. Declarao import
Os comandos utilizados nas classes devem estar acessveis para que a JRE consi-
ga interpret-los e execut-los. Desse modo, um conjunto de comandos bsicos
fca disponvel por padro, mas a maioria dos recursos da linguagem necessita
de uma indicao para a JRE localiz-los. Isso feito pela declarao import,
que deve ser inserida no comeo da classe (antes da abertura) e composta pelo
caminho a partir da API at o local do recurso desejado. No caso da classe JOp-
tionPane o import fcar assim como aparece na fgura 74.
O uso do caractere especial * (asterisco) pode substituir parte do caminho espe-
cifcado, como sugere o exemplo da fgura 75.
Nesse caso, a interpretao posso utilizar qualquer recurso existente dentro da API
Swing que pertence a API javax. A API Swing e seus recursos sero abordados com
detalhes, quando conhecermos os componentes grfcos disponveis no Java.
4.6.2. apresentao de dados (sada)
Para apresentao de mensagens, ser usado o mtodo showMessageDialog,
pertencente API Swing. Vamos alterar o mtodo apresentarPessoa da classe
Pessoa criada anteriormente, deixando da forma como aparece na fgura 76.
Usar o mtodo showMessageDialog requer a informao prvia de qual
classe ele pertence (JOptionPane) e recebe, no mnimo, dois parmetros.
O primeiro um componente do tipo object que, por ora, usaremos null.
J o segundo a mensagem propriamente dita, que pode ser composta por
trechos de texto literal, com contedo de variveis, ou retorno de mtodos,
I nFoRmtI Ca 4
116
CaPtulo 4
117
como no exemplo da figura 76, no qual a mensagem gerada pela primeira
linha ser o texto Nome:, juntando (somando as Strings) com o retorno
do mtodo getNome(), ou seja, o contedo do atributo nome. A execuo
do mtodo apresentarPessoa ficar como ilustra a sequncia da figura 77.
possvel realizar a apresentao da mensagem em uma nica janela, con-
catenando todas as informaes em uma nica String (figura 78).
O sinal de mais (+) o responsvel pela concatenao (soma) dos trechos de
textos e retorno de valor dos mtodos get. O parmetro \n faz uma que-
bra de linha na exibio da mensagem. Vale lembrar que quebrar a linha no
editor (pressionando enter) no faz nenhuma diferena para o compilador;
interessante apenas para melhorar a visibilidade do cdigo para o pro-
Figura 76
Mtodo
showMessageDialog.
Figura 78
Alterao no mtodo
apresentarPessoa.
gramador. A visualizao do mtodo apresentarPessoa depois da alterao
ficar como ilustra a figura 79.
4.6.3. leitura de dados (entrada)
Para leitura (entrada) de dados, ser usado o mtodo showInputDialog(). E,
para testar, acrescentaremos o mtodo inserirDadosPessoa() em nossa classe
exemplo Pessoa (fgura 80).
O mtodo showInputDialog() l a informao e retorna esse dado para a
linha na qual foi executado. No exemplo da figura 80, esse valor passado
por parmetro para o mtodo set, que o recebe e armazena nos atributos.
Para que o ltimo exemplo fque mais claro, poderamos reescrev-lo da
seguinte forma:
Figura 77
Execuo
do mtodo
apresentarPessoa.
Figura 79
Apresentao
da mensagem em
uma nica janela.
Figura 80
Acrscimo do mtodo
inserirDadosPessoa().
Poderamos armazenar o dado lido pelo showInputDialog() em uma varivel do
tipo String e, depois, passar essa varivel de parmetro para o mtodo set, que,
por sua vez, pegar esse dado e armazenar em seu respectivo atributo.
I nFoRmtI Ca 4
118
CaPtulo 4
119
4.7. assinatura de mtodos
O cabealho de um mtodo composto por quatro informaes (figura 81).
As duas ltimas (nome e passagem de parmetros) definem sua assinatura.
Quer dizer que no possvel ter dois mtodos na mesma classe com exata-
mente o mesmo nome e a mesma configurao de passagem de parmetros
(quantidade e tipo de dado na mesma sequncia). O Java e a orientao a
objetos possibilitam o uso dessas caractersticas na construo dos mtodos
de maneira mais ampla, fazendo uso dos conceitos de sobrecarga, sobres-
crita e herana.
Agora, importantssimo entender a estrutura de um mtodo. Toda a regra
codificada (programada) em Java se localiza em mtodos. Saber utilizar as
possibilidades de obteno (passagem de parmetros) e de disponibilizao
(retorno) de dados nos mtodos vital no s para escrever novos cdigos
como tambm para compreender os j desenvolvidos.
No mtodo inserirDadosPessoa(), exemplificado anteriormente, ele no
retorna valor e no recebe parmetros. Constatamos isso pelo uso da pa-
lavra void (vazio) e pela ausncia de definies entre os parnteses ().
Conclumos, ento, que se houver a necessidade de ler ou de apresentar
informaes, essas aes sero realizadas pelo prprio mtodo. Em outras
palavras, esse mtodo no espera e no envia nenhuma informao para
fora de seu escopo (definido pelas chaves { }). Utilizaremos os mtodos de
acesso getNome() e setNome() como exemplos no detalhamento da entrada
e sada de dados nos mtodos.
4.7.1. Retorno de valor
O mtodo getNome() l o contedo do atributo nome e retorna essa in-
formao para o local onde foi solicitada. O comando return envia o valor
definido sua frente (no caso, o contedo do atributo nome) para fora do
mtodo pela porta de sada de informaes, definida com o tipo String.
Portanto, o mtodo est preparado para retornar um valor do tipo String e
faz isso quando executa o comando return (figura 82).
4.7.2. Passagem de parmetro
O mtodo setNome foi escrito para receber um valor do tipo String e arma-
zen-lo no atributo nome. A porta de entrada de valores para dentro do m-
todo so os parnteses, e essas informaes (parmetros) devem ser nomeadas
e seus tipos defnidos (fgura 83).
Figura 81
Informaes do
cabealho de
um mtodo.
Figura 82
Retornar
um valor do
tipo String.
Figura 83
Passagem de
parmetro.
4.7.3. Retorno de valor e passagem de parmetro
Se for necessrio, os mtodos podem ser defnidos para receber e retornar valor.
Para exemplifcar, modifcaremos o mtodo inserirDadosPessoa.
As trs primeiras linhas armazenam os valores lidos em variveis. Na quarta li-
nha, usa-se o mtodo inserirDadosPessoa do objeto p e as variveis so passadas
por parmetro. Ainda nessa mesma linha, aps a execuo, o mtodo inserir-
DadosPessoa retorna uma mensagem de confrmao armazenada na varivel
mensagem. E na quinta linha apresentada a mensagem pelo mtodo showMes-
sageDialog(), como ilustra a fgura 84.
Classe Pessoa:
Mtodo main, classe Principal:
Mtodo main, classe Principal, a seguir.
Classe Pessoa:
Visibilidade Passagem de parmetro
Nome do mtodo Retorno de valor
I nFoRmtI Ca 4
120
CaPtulo 4
121
Figura 84
Mtodo main da
Classe Principal.
Segundo a Java Language Specifcation, as palavras null, true e false so chamadas de
valores literais, e no de palavras reservadas, porm, assim como as palavras reserva-
das, no possvel utiliz-las para criar um identifcador (varivel, mtodo etc.).
4.8.2. tipos de dados
As informaes manipuladas nos programas so chamadas de dados, os quais
so organizados em tipos. Os tipos de dados bsicos, tambm conhecidos como
tipos primitivos, tm uma pequena variao entre as diferentes linguagens de
programao (confra o quadro Tipos primitivos de dados).
Figura 85
Classe Pessoa.
PALAVRAS RESERVADAS
abstract boolean break byte case catch
char class const continue default do
double else extends fnal fnally oat
for goto if implements import instanceof
int interface long native new package
private protected public return short static
strictfp super switch synchronized this throw
throws transient try void volatile while
assert
O mtodo recebe os trs parmetros e os passa (tambm por parmetro)
para os respectivos mtodos sets, os quais armazenaro os dados nos atri-
butos. Depois, retorna uma frase (String) de confirmao, como mostra a
figura 85.
4.8. Estruturas e recursos da linguagem Java
4.8.1. Palavras reservadas do Java
As palavras reservadas do Java so aquelas que tm um sentido predetermi-
nado nessa linguagem. No podem ser usadas para outros fins, como por
exemplo nomes de variveis ou mtodos. Confira quais so elas no quadro
Palavras Reservadas.
TIPOS PRIMITIVOS DE DADOS
TIPO ABRANGNCIA
boolean Pode assumir o valor true (verdadeiro) ou o
valor false (falso).
char Caractere em notao unicode de 16 bits.
Serve para a armazenagem de dados
alfanumricos.
Possui um valor mnimo de \u0000 e um valor
mximo de \uffff. tambm pode ser usado
como um dado inteiro com valores na faixa
entre 0 e 65535.
byte um inteiro complemento de 2 em 8 bits com
sinal. Ele tem um valor mnimo de -128 e um
valor mximo de 127 (inclusive).
short um inteiro complemento de 2 em 16 bits
com sinal. Possui um valor mnimo de -32.768 e
mximo de 32.767 (inclusive).
int um inteiro complemento de 2 em 32 bits com
sinal. tem valor mnimo de -2.147.483,648 e
mximo de 2.147.483,647 (inclusive).
long um inteiro complemento de 2 em 64 bits com
sinal.
o seu valor mnimo
-9.223.372.036.854.775,808 e o mximo,
9.223.372.036.854.775,807 (inclusive).
oat Representa nmeros em notao de ponto
utuante normalizada em preciso simples
de 32 bits em conformidade com a norma
IEEE 754-1985. o menor valor positivo
representado por esse tipo 1.40239846e-46 e
o maior, 3.40282347e+38
double Representa nmeros em notao de ponto
utuante normalizada em preciso dupla de 64
bits em conformidade com a norma IEEE 754-
1985. o menor valor positivo representado
4.94065645841246544e-324 e o maior,
1.7976931348623157e+308
I nFoRmtI Ca 4
122
CaPtulo 4
123
ARITMTICOS
+
-
*
/
%
adio
Subtrao
multiplicao
Diviso
Resto da diviso
LGICOS
&&
||
!
E (and)
ou (or)
no (not)
RELACIONAIS
>
<
>=
<=
==
!=
instanceof
maior que
menor que
maior ou igual a
menor ou igual a
Igual
Diferente
Comparao de tipo
BIT A BIT
&
|
^
<<
>>
>>>
~
E (bitwise and)
ou (bitwise or)
ou exclusivo (bitwise xor)
Deslocamento de bit esquerda
Deslocamento de bit direita com extenso de sinal
Deslocamento de bit direita sem extenso de sinal
negao (inverso bit a bit)
ATRIBUIES
=
+=
-=
*=
/=
atribuio
atribuio com soma
atribuio com subtrao
atribuio com multiplicao
atribuio com diviso
ATRIBUIES BIT A BIT
&=
|=
^=
<<=
>>=
>>>=
atribuio de E bit a bit
atribuio de ou bit a bit
atribuio de ou exclusivo bit a bit
atribuio de deslocamento de bit esquerda
atribuio de Deslocamento de bit direita
com extenso de sinal
atribuio Deslocamento de bit direita
sem extenso de sinal
4.8.3. operadores
4.8.4. Variveis e constantes
Em Java, a declarao de variveis feita informando o tipo de dado seguido
do nome da varivel. Apesar de no ser obrigatrio, em algumas situaes
interessante inicializar os valores das variveis no momento da declarao
(fgura 86).
TERNRIO
?: Condicional (if-then-else compacto)
INCREMENTO
++ pr-incremento ou ps-incremento
DECREMENTO
-- pr-decremento ou ps-decremento
I nFoRmtI Ca 4
124
CaPtulo 4
125
E variveis do tipo numrico convertidas para String (fgura 90).
4.8.5.2. Cast (matriz)
So converses explcitas entre tipos primitivos, sempre respeitando a faixa de
abrangncia de cada tipo. Basicamente, o cast feito do tipo maior para o
menor sob risco de truncamento do valor se essa ordem no for respeitada
(observe o quadro Cast).
CONVERSO
De
String
String
String
int
oat
double
Para
int
oat
double
String
String
String
Mtodos
Integer.parseInt()
Float.parseFloat()
Double.parseDouble()
Integer.toString() ou String.valueof()
Float.toString() ou String.valueof()
Double.toString() ou String.valueof
Figura 88
Figura 89
Figura 90
CAST
Tipos
byte
short
char
int
long
oat
double
Cast vlidos
nenhuma
byte
byte e short
byte, short e char
byte, short, char e int
byte, short, char, int e long
byte, short, char, int, long e oat
Perceba que nos tipos foat e double deve-se explicitar o formato. Caso isso no
seja feito, ocorrer uma promoo de tipo (visto a seguir). Constantes em Java
so declaradas pelo comando fnal, ilustrado na fgura 87.
Convertida para dados numricos (fgura 89).
Figura 86
Declarao
de variveis.
Figura 87
Declarao de
constantes.
4.8.5. Converses de tipos de dados
4.8.5.1. Converso
A transformao de um dado de um tipo em outro realizada por mtodos
especfcos, conforme o quadro Converso.
Exemplo: uma varivel do tipo String (fgura 88).
I nFoRmtI Ca 4
126
CaPtulo 4
127
Exemplos (fgura 91).
4.8.5.3. Promoo
A promoo pode ser entendida como um tipo de cast automtico (implcito),
conforme mostra o quadro Promoo.
PROMOO
Tipos
double
oat
long
int
char
short
byte
boolean
Promoes vlidas
nenhuma
double
oat ou double
long, oat ou double
int, long, oat ou double
int, long, oat ou double (char no)
short, int, long, oat ou double (char no)
nenhuma
4.8.6. Desvios condicionais
4.8.6.1. If-else
A estrutura de if extremamente adaptvel, podendo assumir qualquer uma das
formas ilustradas nas fguras 93, 94 e 95.
O if considera o valor lgico (true ou false, literalmente verdadeiro ou falso)
resultante da condio. Se o tipo testado for um boolean, podemos aproveitar
seu prprio formato como condio (fgura 96).
Figura 92
Figura 91
Veja alguns exemplos na fgura 92.
Figura 93
Figura 94
Figura 95
Figura 96
I nFoRmtI Ca 4
128
CaPtulo 4
129
Quando as classes assumem o papel de tipos, como o caso do String, esses
objetos possuem mtodos para manipulao de seus contedos. Por exemplo, a
comparao de Strings (textos) feita pelo mtodo equals() que retorna true, se
o valor passado por parmetro for igual ao contedo armazenado, e false, se for
diferente (fgura 97).
Figura 97
Figura 98
Switch case.
Outras classes so utilizadas como tipos (por exemplo, Date) e, visualmente,
so de fcil identifcao pela primeira letra maiscula (tipos primitivos sempre
comeam com letra minscula).
4.8.6.2. Switch-case
Em Java, o switch-case s aceita a condio nos tipos int, byte e char (fgura 98).
4.8.7.2. Do-while
O teste condicional est no fnal do looping, isto , o bloco de cdigo contido
no do-while ser executado a primeira vez e, enquanto a condio for verdadei-
ra, ser repetido (fgura 100).
4.8.7.3. For
O bloco de cdigo contido no for ser repetido quantas vezes a condio na
abertura do looping determinar. No exemplo em seguida, a varivel ir de 0 a
9 (fgura 101).
4.8.7. laos de repetio
4.8.7.1. While
O teste condicional est no comeo do looping, ou seja, se a condio no for
verdadeira, o bloco de cdigo contido no while no ser executado. Se for, esse
bloco ser repetido enquanto a condio permanecer verdadeira (fgura 99).
Figura 99
Figura 100
Figura 101
4.8.8. array (Vetor)
Um array, tambm chamado de vetor, uma estrutura parecida com as variveis,
porm, que permite armazenar vrios valores, desde que sejam do mesmo tipo.
Por isso, pode ser defnido como uma estrutura homognea de dados. Ele pode
ser de tipos unidimensional e bidimensional. A quantidade de valores que um
array consegue armazenar defnida na sua declarao.
4.8.8.1. unidimensional
Um array pode ser composto por uma nica dimenso (nica linha), conforme
mostra a fgura 102.
I nFoRmtI Ca 4
130
CaPtulo 4
131
Exemplos:
A declarao pode ser feita de trs maneiras:
Em duas etapas (primeiro, defnindo-se o tipo e, depois a dimenso, conforme
a fgura 103).
Em uma nica linha (fgura 104).
Atribuindo valores s posies (fgura 105).
Por meio de loopings, utilizando um contador (fgura 107).
Figura 102
Vetor
unidimensional.
Figura 103
Figura 104
Figura 105
Figura 106
A leitura (apresentao) pode ser feita de trs maneiras:
Acessando explicitamente o ndice (posio) desejado (fgura 108).
vetorInteiros
10 30 50 20 40
0 1 2 3 4
vetorInteiros
ndices
nome
valores
nome valores
ndices
Por loopings, utilizando um contador (fgura 109).
Usando um iterador (detalhado adiante), como na fgura 110.
4.8.8.2. Bidimensional (matrizes)
Um array bidimensional (ou multidimensional) em Java pode ser entendido como
um array unidimensional cujas posies contm outros arrays unidimensionais e
podem ser regulares (mesma quantidade de linhas para todas as colunas) ou irre-
gulares (quantidade de linhas diferente para cada coluna), conforme fgura 111.
Essa atribuio pode ser feita de duas maneiras:
Indicando explicitamente o ndice (posio) desejado (fgura 106).
Figura 107
Figura 109
Figura 110
Figura 108
I nFoRmtI Ca 4
132
CaPtulo 4
133
Exemplos:
A declarao pode ser feita de trs maneiras:
Em duas etapas (primeiro, defnindo-se o tipo e, depois, a dimenso), como na
fgura 112.
Em uma nica linha, como na fgura 113.
Atribuindo valores s posies (fgura 114).
J a atribuio pode ser realizada de duas formas:
Indicando explicitamente o ndice (posio) desejado (fgura 115).
Figura 111
Vetor
bidimensional
irregular. 0 1 2 3 4
matrizInteiros
12
4
32
8
17
1
36
67
6
62
74
23
47
25
41
9
49
85
3
0
1
2
3
4
ndices
ndices
nome
valores
ndices
valores
nome
ndices
matrizInteiros
Figura 112
Figura 113
Figura 114
Figura 115
Figura 116
Figura 117
Por meio de loopings, utilizando um contador (fgura 116).
Quanto leitura (apresentao), h duas opes para faz-la:
Acessando explicitamente o ndice (posio) desejado (fgura 117).
Por meio de loopings, utilizando um contador (fgura 118).
Em um dos exemplos anteriores, foi manipulada uma matriz de 3 x 3, do tipo
double, que pode ser representada pela imagem da fgura 119.
I nFoRmtI Ca 4
134
CaPtulo 4
135
4.8.9. Collections
um conjunto de classes e interfaces disponveis no pacote java.util, que faz o
uso do import necessrio. Essas classes fornecem recursos para trabalhar com
conjuntos de elementos (colees). Na verdade, todas as funcionalidades encon-
tradas nas collections poderiam ser feitas manualmente, com a utilizao de
recursos normais da linguagem. A vantagem das collections que elas j trazem
essas funcionalidades prontas.
O estudo das collections relativamente extenso, pois existem muitos recursos dispo-
nveis. Por enquanto, vamos conhecer uma dessas colees, a ArrayList, responsvel
pelo manuseio de arrays. Sua grande vantagem contar com mtodos prontos.
4.8.9.1. arraylist
Antes de nos aprofundarmos nessa coleo, vamos primeiro conhecer melhor a
interface List. Como o prprio nome indica, ela cria e gerencia uma lista. Isso signi-
fca que a ordem de insero ser mantida. A interface List mantm seus elementos
indexados. Permite, portanto, que exista uma preocupao com o posicionamento
de cada elemento e que tal posio seja determinada pelo ndice. Devemos utilizar
Figura 118
Figura 119
Vetor bidimensional
quadrado.
uma List quando a ordem de insero ou a posio na coleo nos interessa. H al-
guns mtodos importantes, quando manipulamos Lists (confra o quadro Mtodos
da Interface List).
MTODOS DA INTERFACE LIST
Mtodo
add (objeto)
get (ndice)
iterator ()
size ()
contains (objeto)
clear ()
Descrio
adiciona um elemento list na ltima posio
Retorna o elemento da posio do ndice
Retorna um objeto do tipo Iterator
Retorna um int (inteiro) com a quantidade
de elementos da coleo
Retorna true se o elemento j existe dentro do list
Elimina todos os elementos do list
MTODOS DA COLLECTION ARRAYLIST
Mtodo
sort (arraylist)
shufe (arraylist)
binarySearch (arraylist, valor)
reverse (arraylist)
frequency (arraylist, valor)
Descrio
ordena os elementos em ordem crescente
o oposto do sort. ao invs de ordenar, ele
desordena (mistura) os elementos do arraylist
Pesquisa um valor no arraylist e retorna
sua posio (ndice). Se no for encontrado,
retorna um nmero inteiro negativo
Inverte a ordem dos elementos
Conta a quantidade de ocorrncias
do elemento especifcado
Um ArrayList pode ser entendido como um array dinmico: ele aumenta ou dimi-
nui sua dimenso medida em que utilizado. Alm disso, possvel armazenar
dados (e objetos) de diferentes tipos no mesmo ArrayList. A classe ArrayList flha
(subclasse) de List e, portanto, tem todos os mtodos pertencentes List. Veremos
mais sobre subclasses adiante, quando estudarmos o conceito de herana.
Para fechar essa introduo bsica sobre Collections, vamos ver, em seguida,
alguns mtodos muito teis na manipulao de ArrayList (observe o quadro
Mtodos da Collection ArrayList).
0 1 2
matrizDouble
10.0
40.0
70.0
20.0
50.0
80.0
30.0
60.0
90.0
0
1
2
ndices
ndices
nome
valores
ndices
valores
nome
ndices
matrizDouble
I nFoRmtI Ca 4
136
CaPtulo 4
137
Exemplos:
A declarao pode ser feita sem a defnio de tipo de dado a ser armazenado e,
com isso, qualquer tipo aceito (fgura 120).
Atribuio de valores (fgura 123).
Figura 120
Figura 121
Ordenao crescente (fgura 124).
Sada obtida (fgura 121).
A defnio do tipo de dado feita pelos delimitadores <>, e as chamadas aos
mtodos podem ser feitas como nos exemplos adiante.
Declarao de um ArrayList do tipo int (fgura 122).
Figura 122
Figura 123
Figura 124
Figura 126
Figura 125
Listagem do arrayInteiros j ordenado por um iterator (dado), como na fgura 125.
Sada obtida (fgura 126).
Pesquisa se o nmero 30 consta no arrayInteiros (fgura 127).
Figura 127
I nFoRmtI Ca 4
138
CaPtulo 4
139
Verifcando o resultado da pesquisa (fgura 128).
Resultado obtido (fgura 129).
4.9. orientao a objetos (2)
Uma vez estudados os fundamentos e sintaxes bsicas para a construo de obje-
tos, e que devem ser muito bem assimilados, o objeto de estudo, em seguida, so
os principais conceitos de orientao a objetos, detalhando suas caractersticas
e aplicabilidades.
4.9.1. Herana
A herana um conceito amplamente utilizado em linguagens orientadas a ob-
jetos. Alm de vantagens facilmente identifcadas, como a reutilizao e organi-
zao de cdigos, a herana tambm a base para outros conceitos, como a so-
brescrita de mtodos, classes e mtodos abstratos e polimorfsmo. Tais conceitos
so fundamentais para a modelagem de sistemas mais robustos.
Durante a anlise dos requisitos de um sistema (solicitaes que o sistema dever
atender), podemos destacar os atributos ou os mtodos comuns a um grupo de
classes e concentr-los em uma nica classe (processo conhecido como genera-
lizao). Da mesma forma, possvel identifcar o que pertinente somente a
determinada classe (conhecido como especifcao). A primeira vantagem dessa
organizao evitar a duplicidade de cdigo (ter o mesmo trecho de cdigo em
lugares diferentes do sistema), o que traz maior agilidade e confabilidade na
manuteno e expanso do sistema.
Chamamos de superclasses essas classes que concentram atributos e mtodos
comuns que podem ser reutilizados (herdados) e de subclasses aquelas que
reaproveitam (herdam) esses recursos. Observe as defnies de clientes, for-
necedores e funcionrios utilizados na livraria de acordo com o diagrama de
classes (fgura 130).
Figura 128
Figura 129
A classe pessoa contm oito atributos e um mtodo, os quais so comuns para
clientes, fornecedores e funcionrios e, portanto, deveriam constar nas classes
Cliente, Fornecedor e Funcionario. Sem o recurso da herana, teramos que re-
plicar esses atributos e mtodos nas trs classes, procedimento desaconselhvel
em qualquer linguagem de programao, por trazer complexidades extras na
manuteno e expanso dos sistemas. Por exemplo, vamos considerar um mto-
do para emisso de correspondncia que foi atualizado para comear a gerar um
histrico de remessas. Tal atualizao deveria ser feita nas trs classes envolvidas
e, caso uma delas no fosse realizada, a atualizao do controle de remessas (ge-
rao de histrico) fcaria inconsistente.
No modelo acima, a classe Pessoa foi defnida como uma superclasse e as classes
Cliente, Fornecedor e Funcionario, como suas subclasses. Do ponto de vista da
funcionalidade, tudo o que foi defnido na superclasse (atributos e mtodos) ser
herdado pelas suas subclasses. Ou seja, um objeto instanciado a partir da classe
Cliente possui 12 atributos. So eles: nome, endereo, bairro, cidade, UF, telefone
e celular declarados na superclasse Pessoa, alm de limiteCredito, rendaMensal,
RG e CPF na subclasse Cliente. H ainda trs mtodos, nos quais mostrar telefones
foi defnido na classe Pessoa e inserir DadosCliente e apresentarCliente foram de-
fnidos na classe Cliente. Na utilizao desses atributos e mtodos para um objeto
do tipo Cliente, fca transparente o local onde cada um foi declarado ou defnido.
Para estabelecer a herana em relao codifcao, as superclasses continuam
com a mesma estrutura de uma classe comum (como vimos em exemplos ante-
riores). J as subclasses recebem as seguintes defnies:
Figura 130
Herana.
Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
- telefone : String
- celular : String
+ mostrarTelefones() : void
Principal
+ main(args[ ] : String) : void
Cliente
- limiteCredito : double
- rendaMensal : double
- rg : String
- cpf : String
+ inserirDadosCliente() : void
+ apresentarCliente() : void
Fornecedor
- cnpj : String
- ie : String
- contato : String
+ inserirDadosFornecedor() : void
+ apresentarFornecedor() : void
Funcionario
- salarioBase : double
- salarioFinal : double
+ inserirDadosFuncionario() : void
+ apresentarFuncionario() : void
I nFoRmtI Ca 4
140
CaPtulo 4
141
Abertura da classe (fgura 131).
livraria so livros, CDs e DVDs, como representado no diagrama de classe
na figura 133.
O clculo do preo de venda dos produtos da livraria depende de alguns fatores: em
determinadas pocas do ano, todos os produtos recebem a mesma porcentagem de
acrscimo em relao ao preo de custo. Se o produto em questo for importado,
necessrio considerar a cotao do dlar. Em algumas situaes (promoes, por
exemplo), preciso atualizar todos os produtos de um determinado um gnero. E, no
caso especfco dos livros didticos, o clculo do preo de venda diferente dos demais.
Em outras linguagens de programao, como no possvel termos duas funes
(blocos de cdigo equivalentes a mtodos) com o mesmo nome, nos depararamos
com a necessidade de criar funes nomeadas (calcularPrecoVenda1, calcularPreco-
Venda2, calcularPrecoVenda3, calcularPrecoVenda4 ou calcularPrecoVendaNormal,
calcularPrecoVendaImportado, calcularPrecoVendaPorGenero e calcularPrecoVen-
daLivroDidatico e assim sucessivamente). Dessa forma, alm de nomes extensos, e
muitas vezes estranhos, teramos uma quantidade bem maior de nomes de funes
para documentar no sistema.
Em Java, para situaes desse tipo, usamos a sobrecarga que considera a identifca-
o do mtodo pela assinatura e no somente pelo nome. Como j vimos, a assina-
tura de um mtodo composta pelo nome e pela passagem de parmetros. Assim,
possvel defnir os mtodos com o mesmo nome (calcularPrecoVenda, como no
diagrama) e alternar a passagem de parmetros. Observe, na fgura 134, como fca a
codifcao dos mtodos na classe Produto.
Figura 131
Figura 132
O comando extends o responsvel por estabelecer a herana. inserido na
abertura da subclasse e indica o nome da superclasse, criando vnculo entre elas.
Construtores (fgura 132).
Os construtores esto diretamente relacionados inicializao dos atributos de uma
classe. Partindo desse princpio e considerando o nosso exemplo, um objeto do tipo
cliente possui todos os atributos declarados na sua superclasse (Pessoa) mais os decla-
rados na classe Cliente. Portanto, o construtor de uma subclasse deve estar prepara-
do para inicializar os atributos herdados e os declarados na prpria classe.
No construtor que recebe parmetros (aquele que inicializa os atributos com
algum valor), utilizamos o mtodo super() para invocar o construtor da super-
classe. Isso porque j foi defnida nele a forma como esses atributos sero inicia-
lizados (reutilizando o construtor j existente na superclasse), restando apenas
inicializar os atributos na subclasse.
Para acessar os atributos da superclasse, obrigatoriamente, devemos utilizar seus
mtodos de acesso (getters e setters), ao contrrio dos atributos instanciados na
prpria classe, que podem ser acessados diretamente. Porm, como j comen-
tamos antes, para garantir o conceito de encapsulamento e usufruir de seus be-
nefcios (segurana, manutenabilidade etc.), sempre devemos criar e utilizar os
mtodos getters e setters para todos os atributos. Em relao ao nosso exemplo,
o mesmo se aplica s classes Fornecedor e Funcionario.
4.9.2. Sobrecarga de mtodo (overload)
A programao em sistemas desenvolvidos com Java distribuda e orga-
nizada em mtodos. Muitas vezes, os programadores se deparam com si-
tuaes em que um mtodo deve ser usado para finalidades semelhantes,
mas com dados diferentes. Por exemplo, os produtos comercializados na
Figura 133
Sobrecarga do mtodo
calcularPrecoVenda.
livro
- autor : String
- editora : String
- edicao : String
+ calcularPrecoVenda(didatico : boolean) : void
+ inserirDadosLivro() : double
+ apresentarLivro() : void
Produto
- codigo : int
- descricao : String
- genero : String
- estoqueDisponivel : int
- precoCusto : double
- precoVenda : double
+ calcularPrecoVenda() : void
+ calcularPrecoVenda(cotacaoDolar : double) : void
+ calcularPrecoVenda(genero : String) : void
Cd
- artista : String
- gravadora : String
- paisOrigem : String
+ inserirDadosCd() : void
+ apresentarCd() : void
Principal
+ main(args[ ] : String) : void
Dvd
- diretor : String
- duracao : String
- censura : int
+ inserirDadosDvd() : void
+ apresentarDvd() : void
I nFoRmtI Ca 4
142
CaPtulo 4
143
O Java identifcar o mtodo que deve ser executado de acordo com a chamada
realizada, como mostra o exemplo da fgura 137.
Figura 134
Codifcao dos
mtodos na
classe Produto.
Figura 137
Figura 135
Codifcao do
mtodos na
classe Livro.
E na classe Livro (fgura 135): Figura 138
Sobrescrita
do mtodo
calcularSalarioFinal.
Gerente
- graticacao : double
+ apresentarFuncionario() : void
+ calcularSalarioFinal(valorVendi
do : double) : void
vendedor
- valorComissao : double
+ apresentarFuncionario() : void
Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
- tefone : String
- celular : String
+ mostrarTelefones() : void
temporario
- comissionado : boolean
+ inserirDadosFuncionario() : void
+ apresentarFuncionario() : void
+ calcularSalarioFinal(valorVendido :
double) : void
Funcionario
- salarioBase : double
- salarioFinal : double
+ inserirDadosFuncionario() : void
+ calcularSalarioFinal(valorVendido : double) : void
Principal
+ main(args[ ] : String) : void
Figura 136
Como est sendo passado um valor do tipo double, ser executado o mtodo
calcularPrecoVenda que considera a cotao do dlar.
4.9.3. Sobrescrita de mtodo (override)
A sobrescrita de mtodos est diretamente relacionada com a herana e consiste
em reescrever um mtodo herdado, mudando seu comportamento, mas mantendo
exatamente a mesma assinatura. Para exemplifcar, utilizaremos o clculo do salrio
fnal dos funcionrios da livraria (fgura 138).
Os pontos importantes na codifcao anterior so:
A diferenciao das assinaturas dos mtodos se baseia na quantidade e no
tipo de dado dos parmetros.
A sobrecarga pode ser realizada na mesma classe ou em subclasses, e os con-
ceitos de herana so aplicados na utilizao dos objetos. Em nosso exemplo,
um objeto do tipo Livro tem quatro mtodos calcularPrecoVenda(), j CD
e DVD tm trs.
No mtodo main, teremos o que ilustra a fgura 136.
I nFoRmtI Ca 4
144
CaPtulo 4
145
Na superclasse Funcionario, foi implementado o mtodo calcularSalarioFinal
considerando uma regra geral de clculo (somar 10% do valor vendido ao sal-
rio base). Consequentemente, esse mtodo foi herdado por suas subclasses Ge-
rente, Vendedor e Temporario. O problema que, de acordo com as normas
da livraria, o clculo do salrio dos gerentes e dos temporrios diferente. Para
os vendedores, o mtodo calularSalarioFinal herdado est correto, porm, para
Gerente e Temporario, no. O problema pode ser solucionado com a sobrescrita
dos mtodos calcularSalarioFinal nas classes Gerente e Temporario. Na classe
Funcionario, o mtodo foi codifcado da forma como ilustra a fgura 139.
J na subclasse Gerente fca da seguinte maneira (fgura 140).
Figura 139
Figura 140
4.9.4. Classes e mtodos abstratos
preciso, a princpio, conhecer os recursos utilizados na modelagem de sistemas.
Para entender melhor o assunto, devemos ampliar o horizonte e pensar na arqui-
tetura e no desenho da aplicao como um todo, assim como na manuteno e na
expanso, atividades que podem ser realizadas por programadores (ou equipes de
programadores) distintas e em momentos diferentes, mas que sempre seguiro as
defnies descritas no projeto. A primeira abordagem de classe abstrata que
se trata de classes que no daro origem a objetos. Em outras palavras, um objeto
no poder ser instanciado a partir delas. A sua fnalidade, ento, defnir, por
generalizao (possibilitada pela herana), os recursos (atributos e mtodos) co-
muns a um grupo de classes (subclasses). Analisemos a representao dos clientes
existentes na livraria no diagrama da fgura 143.
E na subclasse Temporario, veja a fgura 141.
Figura 141
Os objetos que representaro um gerente, um vendedor e um temporrio se-
ro instanciados a partir das classes Gerente, Vendedor e Temporario. Nesse
momento (da criao dos objetos), o Java considera a estrutura de cada sub-
classe, a qual d origem ao objeto. Ento, um objeto do tipo Gerente considera
a codifcao do mtodo calcularSalarioFinal da classe Gerente; um do tipo
Temporario leva em conta a codifcao da classe Temporario, e um do tipo
Vendedor focaliza o mtodo herdado, mas todos so invocados exatamente da
mesma forma (fgura 142).
A sobrescrita de mtodos tambm proporciona vantagens relacionadas ao geren-
ciamento polimrfco de objetos.
Figura 142
As classes e mtodos que vimos
anteriormente sochamados
de concretos. Os que estamos
estudandoagora soas classes
e mtodos abstratos, que
possuemalgumas caractersticas
especfcas: 1. EmUML,
classes e mtodos abstratos
soformatados emitlico. 2.
Uma classe concreta spode
conter mtodos concretos.
3. Uma abstrata pode conter
mtodos concretos e abstratos.
4. Uma subclasse que herda um
mtodoabstrato obrigada a
incluir a assinatura domtodo,
contendoounoimplementao
(programao). 5. Enquanto
nofor includa a assinatura do
mtodoabstratoherdado, a
subclasse apresentar umerro
que impedir sua compilao.
Figura 143
Classes abstratas
Pessoa e Cliente e
mtodo abstrato
calcularLimiteCredito.
ClientePJ
- cnpj : String
- ie : String
- faturamentoAnual : double
+ calcularLimiteCredito() : void
+ inserirDadosClientePJ() : void
+ apresentarClientePJ() : void
ClientePF
- rg : String
- cpf : String
- rendaMensal : double
+ calcularLimiteCredito() : void
+ inserirDadosClientePF() : void
+ apresentarClientePF() : void
<<abstract>>
Cliente
- limiteCredito : double
+ calcularLimiteCredito() : double
<<abstract>>
Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
- telefone : String
- celular : String
+ mostrarTelefones() : void
Principal
+ main(args[ ] : String) : void
I nFoRmtI Ca 4
146
CaPtulo 4
147
As classes Cliente e Pessoa, nesse contexto, servem somente para defnir quais e
como sero os recursos (atributos e mtodos) comuns a ClientePF e ClientePJ.
Os objetos que representaro os clientes da livraria sero instanciados a partir
das classes ClientePF e ClientePJ e nunca de Cliente e muito menos de Pessoa.
Ao defnir as classes Pessoa e Cliente como abstratas, evitamos que, por uma
eventual falha de desenvolvimento, objetos sejam instanciados a partir delas, o
que no faria sentido. Alm de classes, podemos tambm defnir mtodos como
abstratos, os quais servem para defnir e forar, uma padronizao nas subclasses
em relao existncia e assinatura de mtodos herdados.
Um mtodo abstrato no possui implementao (codifcao). composto
somente pela assinatura, na qual so defnidos seu nome, passagem de par-
metros e retorno de valor. Na codifcao de uma subclasse que estende de
uma superclasse que, por sua vez, possui um mtodo abstrato, o programador
obrigado a inserir, pelo menos, a assinatura desse mtodo, podendo ou no
implement-lo (codifc-lo). Voltando ao exemplo dos clientes da livraria apre-
sentado na fgura 130, calcularLimiteCredito defnido na classe Cliente um
mtodo abstrato. Dessa forma, nas classes ClientePF e ClientePJ, somos obri-
gados a inclu-lo. A declarao abstract defne uma classe abstrata, conforme
se observa na fgura 144.
A declarao abstract tambm usada para mtodos (fgura 145).
Cliente e Funcionario
Para utilizar o sistema da livraria, o usurio dever ser identifcado por um login
e uma senha. Os funcionrios tero acesso ao sistema para utiliz-lo em suas
rotinas de trabalho, como cadastros e atualizaes de dados dos clientes, pro-
dutos, movimentao, entre outros recursos disponveis no sistema, cujo aces-
so tambm ser permitido aos clientes, para que possam visualizar promoes
especiais e tambm entrar em contato com a livraria, pelo seu site na internet.
Assim, tanto funcionrios como clientes devero ser devidamente identifcados,
para ter acesso ao sistema, algo que ser realizado da mesma forma (recebendo
o login e a senha e retornando verdadeiro ou falso). Ento, pode-se concluir que
o ideal seria criar um mtodo de validao utilizado tanto por clientes como
por funcionrios. Mas para fazer isso nos deparamos com algumas difculdades:
Cliente e Funcionario so subclasses de Pessoa. Assim, se inclussemos o
mtodo de validao de usurio na superclasse Pessoa, os dois herdariam esse
mtodo e o nosso problema estaria aparentemente resolvido. Porm, a classe
Fornecedor tambm subclasse de Pessoa e, por isso, tambm herdaria o
mtodo de validao. S que os fornecedores no devero acessar o sistema.
Se o mtodo de validao for includo na superclasse Cliente, suas subclasses
possuiriam o mtodo de validao. Todavia, os funcionrios pertencem a
outro nvel hierrquico de classe (a partir da subclasse Funcionario) e no
teriam acesso ao mtodo e validao.
Da mesma forma, se forem includos na classe Funcionario, os clientes tam-
bm no tero acesso.
Figura 144
Figura 145
A utilizao de um mtodo abstrato garante que todas as subclasses de Cliente
obrigatoriamente tero, pelo menos, a assinatura do mtodo calcularLimite-
Credito. Isso garante no s a padronizao de modelagem (os programadores
sero obrigados a seguir tais defnies) como tambm a aplicao de concei-
tos polimrfcos.
4.9.5. Interfaces
Ainda no nvel da modelagem do sistema, as interfaces so tipos especiais
de classes que servem para defnir padres de como determinados grupos de
classes podero ser usados, defnindo assinaturas de mtodos pelas classes
que devero ser adotados obrigatoriamente pelas classes (e subclasses) que as
implementarem.
Uma interface composta somente por mtodos abstratos (no possui atributos
nem mtodos concretos) e pode ser vista como uma espcie de contrato, cujas
especifcaes as classes que as assinam (implementam) se comprometem a se-
guir, ou seja, devem seguir os mtodos nela defnidos. A fgura 146 ilustra uma
implementao de interface.
Figura 146
Implementao da
inteface Usuario
pelas classes Cliente
e Funcionario.
<<abstract>>
Cliente
- limiteCredito : double
+ mostrarTelefones() : void
+ calcularLimiteCredito() : double
+ validarLogin(login : String, senha :
String) : void
<<abstract>>
Funcionario
- salarioBase : double
- salarioFinal : double
+ mostrarTelefones() : void
+ calcularSalarioFinal(valorVendido :
double) : void
+ validarLogin(login : String, senha : String)
: double
<<interface>>
Usuario
+ validarLogin(login : String, senha : String) : boolean
<<abstract>>
Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
- tefone : String
- celular : String
- login : String
- senha : String
- tipoUsuario : String
+ mostrarTelefones() : void
Fornecedor
- cnpj : String
- ie : String
- contato : String
+ mostrarTelefones() : void
I nFoRmtI Ca 4
148
CaPtulo 4
149
O uso de uma interface resolve o problema j que, para implement-la, as classes no
precisam ser da mesma hierarquia. Lembre-se que uma interface s possui mtodos
abstratos. Assim, a classe Cliente e a classe Funcionario no recebero o mtodo de
validao j codifcado. Entretanto, a partir dessa implementao, teremos a certeza
de que existir um mtodo (com a mesma assinatura) nas classes (e subclasses) Clien-
te e Funcionario. Veja a codifcao da interface Usuario na fgura 147.
Para interfaces, no obrigatrio o uso do comando abstract, fcando implcito
que todos os mtodos inseridos em uma interface so abstratos. A assinatura
de uma interface realizada pelo comando implements da seguinte forma:
Classe Cliente (fgura 148).
necessidade. Por exemplo, para calcular os impostos a serem pagos pela livraria,
devemos considerar que existem aqueles que incidem sobre os funcionrios e os
que incidem sobre os produtos comercializados. Nesse caso, podemos criar uma
interface chamada Custos que defna um mtodo calcularImpostos, o qual de-
ver ser implementado na classe Funcionario e na classe Produto. Veja o exem-
plo da classe Funcionario na fgura 152.
Figura 147
4.9.6. Polimorfsmo
O polimorfsmo a possibilidade de utilizar um objeto como se fosse um ou-
tro. Embora o conceito seja esse, algumas publicaes relacionadas ao Java e
orientao de objetos fazem abordagens diferentes. Ento, podemos considerar
basicamente trs tipos de polimorfsmo: o de mtodos, o de classe, o de interface.
4.9.6.1. De mtodos
Muitos autores consideram polimorfsmo a possibilidade de utilizar dois ou
mais mtodos com a mesma assinatura, mas com comportamentos (codifca-
o) diferentes. Basta lembrar que j abordamos um recurso da linguagem Java
que permite exatamente isso: a sobrescrita. A questo no avaliar se essa viso
est correta ou no. Mesmo porque, de certa forma, a sobrescrita possibilita o
uso de um mtodo que pode assumir vrias formas (executar tarefas diferentes,
de acordo com sua codifcao) a partir da mesma chamada, sendo diferenciado
pela classe que deu origem ao objeto. Isso justifcaria chamar esse recurso de
polimrfco, mas acreditamos que melhor defnido como sobrescrita.
4.9.6.2. De classe
Considerando uma hierarquia de classes, temos, em uma superclasse, a gene-
ralizao de um tipo e, em suas subclasses, a especializao do mesmo tipo.
Imagine a seguinte situao: se colocarmos uma cesta disposio dos clientes
da livraria e nela estiver escrito Coloque aqui seus produtos, estes produtos
podem ser livros, CDs ou DVDs. Ou ainda, todos eles juntos. Outro exemplo:
na livraria, existe uma porta de acesso ao estoque e nela h uma placa com o
aviso Entrada permitida somente para funcionrios. Tanto pode entrar um
vendedor como um gerente, porque ambos so funcionrios.
Esse mesmo princpio se aplica aos programas em Java. Se defnirmos um mtodo que
recebe um objeto do tipo Produto por parmetro, podemos passar qualquer objeto
instanciado a partir de uma subclasse de Produto que ele ser aceito. Da mesma for-
ma, se um mtodo espera um objeto do tipo Funcionario, possvel passar um objeto
instanciado a partir da classe Vendedor, por exemplo, que ser aceito sem problemas.
O raciocnio o seguinte: Um vendedor um funcionrio, assim como, Um
livro um produto. A diferena que vendedor foi defnido a partir de uma
Classe ClientePF (fgura 149).
Figura 149
Figura 148
Figura 151
Figura 150
Classe Funcionario (fgura 150).
Classe Gerente (fgura 151).
Figura 152
Outra importante caracterstica das interfaces que uma mesma classe pode
implementar vrias delas. Como no existe herana mltipla em Java (uma
subclasse ter mais de uma superclasse), o uso de interface supre essa eventual
I nFoRmtI Ca 4
150
CaPtulo 4
151
especializao da classe Funcionario. Assim, pode ter atributos e mtodos espe-
cfcos referentes a vendedores, porm, no deixa de ser um Funcionario.
Apesar de um livro poder ser utilizado como se fosse um Produto, no deixa
de ser um livro e de ter as caractersticas especfcas de livro. O polimorfs-
mo, portanto, a possibilidade de utilizar um objeto como se fosse outro e no
transform-lo em outro. O uso do polimorfsmo de classe (ou de tipo) exem-
plifcado na fgura 153, que ilustra o processo de venda da livraria.
Na classe Movimentacao, h um atributo do tipo Cliente, ou seja, nele pode-
mos armazenar um objeto instanciado a partir das classes ClientePF ou Clien-
tePJ. Na classe ItemMovimentacao, temos um atributo do tipo Produto, o que
signifca poder armazenar nesse atributo um objeto categorizado a partir das
classes Livro, CD ou DVD.
Figura 153
Polimorfsmo
de classe.
Figura 154
Implementao
da inteface
EntidadeMovimentacao.
4.9.6.3. De interface
Tanto uma superclasse como uma interface podem ser interpretadas como um
superTipo. Ou seja, possvel referenciar um objeto pela interface que sua
classe de origem implementa. Voltemos ao exemplo da movimentao da livra-
ria. Para defnir quais classes podem ser utilizadas na movimentao de mer-
cadorias, criamos a interface EntidadeMovimentacao e a implementamos nas
classes Cliente e Fornecedor (fgura 154).
A movimentao, considerando compra e venda, fcar como aparece na fgura 155.
Temos uma nica classe Movimentacao responsvel pelos dados do corpo da
compra e da venda. Para armazenar o cliente (no caso de venda) ou o fornecedor
(no caso de compra), h o atributo destinatrio, do tipo EntidadeMovimenta-
cao, interface que as duas classes implementam.
Figura 155
Polimorfsmo de
classe e de interface.
venda
- nota : Movimentacao
+ vender() : void
+ nalizarNF(nota : Movimentacao) : void
movimentacao
- nf : int
- cli : Cliente
- data : Date
- itens[ ] : itemMovimentacao
- status : boolean
+ adicionarItem(item : Movimentacao) : void
Principal
+ main(args[ ] : String) : void
Itemmovimentacao
- produto : Produto
- qtde : int
- totalItem : double
+ totalizarItemVenda() : void
<<abstract>>
Cliente
- limiteCredito : double
+ mostrarTelefones() : void
+ calcularLimiteCredito() : double
+ validarLogin(login : String, senha :
String) : void
<<abstract>>
Funcionario
- salarioBase : double
- salarioFinal : double
+ mostrarTelefones() : void
+ calcularSalarioFinal(valorVendido : double) : void
+ validarLogin(login : String, senha : String) : double
<<interface>>
entidademovimentacao
<<abstract>>
Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
- tefone : String
- celular : String
- login : String
- senha : String
- tipoUsuario : String
+ mostrarTelefones() : void
Fornecedor
- cnpj : Spring
- ie : Spring
- contato : Spring
+ mostrarTelefones() : void
Principal
+ main(args[ ] : String) : void
venda
+ vender() : void
+ nalizarNF(nota : Movimentacao) : void
Compra
+ comprar() : void
+ nalizarNF(nota : Movimentacao) : void
movimentacao
- nf : int
- data : Date
- destinatario : EntidadeMovimentacao
- itens[ ] : ItemMovimentacao
- status : boolean
- tipo : String
+ adicionarItem(item : ItemMovimentacao) : void
Itemmovimentacao
- produto : Produto
- qtde : int
- totalItem : double
+ totalizarItemCompra() : void
+ totalizarItemVenda() : void
I nFoRmtI Ca 4
152
CaPtulo 4
153
4.10. Padres de desenvolvimento de sistemas
Um padro para desenvolvimento de sistemas estabelece critrios de anlise, or-
ganizao, modelagem, distribuio de tarefas, manuteno, expanso e comu-
nicao entre softwares. H duas mtricas bsicas de qualidade que devem ser
seguidas por um software: coeso e acoplamento. Um software tem que ter uma
alta coeso, isto , todos os componentes (mtodos, classes, pacotes ou qualquer
diviso que se faz dependendo do seu tamanho) e devem possuir o mesmo nvel
de responsabilidade. O ideal que cada componente esteja focado na resoluo
de um problema especfco. Alm disso, precisa haver baixo acoplamento: cada
elemento deve ser o mais independente possvel de outro. E uma alterao da
implementao de um componente no pode afetar nenhum outro.
Os padres, ento, procuram reduzir o acoplamento e aumentar a coeso entre
as partes de um sistema, diminuindo, assim, a duplicao do cdigo e possibili-
tando a consequente reutilizao dos componentes. Isso faz com que o custo de
manuteno da aplicao caia e a qualidade do cdigo aumente.
4.10.1. Programao em trs camadas
Um dos padres mais utilizados no desenvolvimento de softwares o que separa,
logicamente, uma aplicao em trs camadas: de apresentao, de negcio e de
dados. A vantagem desse tipo de desenvolvimento que, com a independncia das
camadas, as atualizaes e correes em uma delas podem ser feitas sem prejudicar as
demais. No h, portanto, maior impacto sobre a aplicao como um todo.
4.10.2. mVC (model, View, Controller)
O MVC (iniciais de modelo, viso e controlador) outro padro muito utiliza-
do em aplicaes orientadas a objetos. Segue o mesmo princpio da separao
em camadas, porm, com um foco maior em como esses nveis interagem.
Podemos ver a camada de negcios como o Model (contendo as classes de modela-
gem da aplicao) e a de apresentao como a View (com toda forma de interao
com o usurio: interfaces grfcas, pginas da web etc.). O Controller, porm,
especfco dessa arquitetura. o nvel responsvel pelas solicitaes ao Model (ins-
tancia e utiliza os objetos disponveis) e interao com a View (recebe, manipula e
fornece os dados obtidos). A camada de dados, responsvel pela comunicao com
o banco de dados, no citada especifcamente pela MVC, podendo ser visualiza-
da como pertencente ao Model ou como uma camada independente.
Apesar de existir uma considervel documentao a respeito da organizao de
softwares em camadas e sobre o MVC, no h uma regra rgida e infexvel
de distribuio das classes nessas camadas. Boa parte da deciso fca a critrio
dos projetistas de sistemas, que adaptam as vantagens dos modelos existentes
s necessidades especfcas de cada software, podendo, inclusive, criar camadas
adicionais como, por exemplo, um nvel de persistncia de dados. O importante
saber que existem modelos de organizao de softwares que agrupam os re-
cursos do sistema por funcionalidade e, em Java, esse agrupamento feito em
packages (pacotes).
A camada de
apresentao
determina como
o usurio interage
com a aplicao e
como as informaes
so captadas e
apresentadas. A de
negcio tambm
chamada de
Lgica empresarial,
Regras de negcio
ou Funcionalidade.
nela que fcam
armazenadas as
codifcaes do
funcionamento de
todo o negcio. A
de dados gerencia a
conexo com todas
as fontes de dados
usadas pelo aplicativo
(normalmente, um
banco de dados) e
o abastecimento de
dados dessas
fontes para a lgica
de negcio.
Figura 156
Classes contidas no
default package.
Figura 157
Organizao
em packages.
O mesmo projeto Livraria devidamente organizado em packages pode ser visua-
lizado nas fguras 157 e 158.
4.10.3. Packages
No decorrer do desenvolvimento de um software, muitas classes so criadas e,
logo, nos deparamos com a necessidade de organiz-las. Os packages servem
para agrupar as classes, normalmente por funcionalidades comuns. Alm das
vantagens vistas anteriormente, as classes so ordenadas de maneira lgica e
fsica, pois, para cada package, criado um diretrio em disco para salvamento.
Como exemplo no projeto Livraria, todas as classes esto contidas no default
package, como se observa na fgura 156.
I nFoRmtI Ca 4
154
CaPtulo 4
155
No eclipse, para criar um novo package, clique no menu File/ New/ Package.
4.11. Interfaces grfcas
A GUI (Graphical User Interface, ou Interface Grfca com o Usurio), em Java,
um conjunto de classes para disponibilizar componentes grfcos (objetos) como
caixas de texto, botes, listas etc. composta por duas APIs: a AWT e a Swing.
4.11.1. aWt (abstract Window toolkit)
A primeira API responsvel por interfaces grfcas em Java foi a AWT (Abstract
Window Toolkit, ou, literalmente, janela abstrata de caixa de ferramentas), lo-
calizada no pacote java.awt, que faz uso dos recursos de cada sistema operacio-
nal para desenhar as janelas e os componentes visuais. Essa caracterstica cria
uma dependncia do sistema em que a aplicao est rodando e impede que o
programa tenha o mesmo aspecto visual em diferentes ambientes operacionais.
Tambm reduz os componentes visuais a um conjunto muito pequeno, comum
a todos os sistemas operacionais. Por exemplo, um componente visual de rvore
de elementos, como no Windows Explorer, no poderia ser implementado em
AWT, pois nem todos os sistemas operacionais tm tal componente.
Apesar das limitaes, as interfaces grfcas em AWT ainda so utilizadas e
muitos de seus componentes permanecem nas atualizaes mais recentes, alm
de ela ser a base para a API Swing. Observe, na fgura 159, um exemplo de sua
estrutura e alguns de seus componentes, e, na fgura 160, veja a classe FormVa-
Figura 158
Classes organizadas em
pacotes (packages).
Figura 160
Classe
FormValidacaoUsuario.
Figura 159
Tela de validao
de usurios.
lidacaoUsuario, que d origem tela anterior, para depois conferir os principais
pontos do cdigo (consulte o quadro Principais pontos do cdigo).
I nFoRmtI Ca 4
156
CaPtulo 4
157
A classe FormValidacaoUsuario instanciada e exibida a partir da classe Princi-
pal, reproduzida na fgura 161.
Figura 161
Classe Principal.
Linha 01: importa a API AWT e a disponibiliza
para uso.
Linha 03: o comando extends responsvel por
estabelecer a herana entre classes. Assim, a classe
FormValidacaoUsuario passa a ser subclasse da
classe Frame, que, por sua vez, pertence API AWT
e contm um conjunto de componentes grfcos
que podemos utilizar agora, graas herana.
Linha 05 a 08: a declarao dos componentes,
necessria, assim como os atributos, para classes
que utilizam elementos grfcos. Nesse exemplo,
usa-se Button (botes), Label (rtulos), TextField
(caixas de texto) e Dimension (um tipo especial,
cuja fnalidade defnir o tamanho - altura
e largura - dos componentes).
Linha 10: a assinatura do construtor da classe,
ou seja, dentro desse mtodo sero defnidos
quais componentes iro compor a tela e como.
Linha 12 a 15: criao dos objetos dimension
que contm as dimenses (altura e largura)
usadas em cada componente.
Linha 17 a 21: alterao de algumas
propriedades do Frame (janela) como ttulo
(setTitle()); possibilidade de a janela ser ou
no redimensionada (setResizable()); tamanho
(setSize(), fazendo uso de um objeto dimension
(dFrame) para defnio desse tamanho; localizao
em relao ao monitor (setLocation()), e defnio
de se ser utilizado um gerenciador de layouts
(setLayout(null)).
Linha 23 a 25: instancia um objeto do tipo Label
e defne seu tamanho e localizao (em relao
ao Frame). Nas linhas seguintes, so instanciados
os demais componentes e apresentados
seus tamanhos e sua localizao.
Linha 47 a 52: os componentes que foram criados
e confgurados so adicionados janela (Frame)
para montar a tela.
Principais pontos do cdigo
Ao ser executada a classe Principal, a tela reproduzida antes, na figura 159,
ser exibida, mas no executar nenhuma ao, nem mesmo funcionar o
boto com um x no canto superior direito da janela. que, para colocar
eventos na janela, devemos implementar interfaces especficas para essa
finalidade.
4.11.2. Interfaces listeners
Para controlar os eventos de um formulrio, devemos incluir na classe as
interfaces gerenciadoras de eventos, tambm chamadas de listeners. Um
listener pode ser entendido como um ouvinte ou um rastreador, que
consegue capturar um evento ocorrido no formulrio e permite vincular a
ele, uma ao (codificao). Entre os diferentes tipos de eventos que podem
ocorrer, os mais comuns so:
Eventos de ao (em componentes): implementados pela interface
ActionListener.
Eventos de janela: implementados pela interface WindowListener.
Eventos de teclado: implementados pela interface KeyListener.
Eventos de mouse: implementados pela interface MouseListener.
Cada um dos listeners possui mtodos que capturam os eventos ocorridos. A
interface ActionListener possui apenas um, que :
actionPerformed().
A interface WindowListener tem sete:
windowActivated(), windowDeactivated(), windowIconifed(), window-
Deiconifed(), windowOpened(), windowClosed() e windowClosing().
A interface KeyListener conta com trs:
keyPressed(), keyReleased() e keyTyped().
I nFoRmtI Ca 4
158
CaPtulo 4
159
A interface MouseListener tem cinco:
mouseCliecked(), mouseEntered(), mouseExited(), mousePressed() e mou-
seReleased().
A implementao de uma interface feita pelo comando implements, inserido
na abertura da classe. Os mtodos das interfaces listeners so abstratos. Por-
tanto, ao implement-los, todos os seus mtodos devem estar inseridos na clas-
se. Vamos, ento, implementar as interfaces listeners WindowListener (para ler
eventos de janela) e ActionListener (para ler eventos de componentes) na classe
FormValidacaoUsuario. Observe, na fgura 162, a estrutura (organizao de pa-
ckages) do projeto ValidacaoUsuario.
Figura 165
Codifcao
do mtodo
validarLogin da
classe ClientePF.
Figura 162
Projeto
ValidacaoUsuario.
Figura 163
Classe
FormValidarUsuario
atualizada.
Veja como fcou a classe FormValidarUsuario aps a atualizao (fgura 163) e,
em seguida, confra uma anlise da codifcao.
Na prxima codifcao, vemos como implementar o WindowListener (fgura 164).
Figura 164
Como implementar
o WindowListener.
Para que o WindowListener funcione, necessrio adicionar o Frame a ele (pelo m-
todo addWindowListener(this), visto na linha 86), assim como implementar os sete
mtodos (abstratos) pertencentes ao WindowListener (linhas 90 a 110), mesmo que
s utilizando um deles (windowClosing) para fechar o formulrio (linhas 108 a 110).
Vamos ver como o funcionamento do ActionListener, aproveitando a oportu-
nidade para entender como fazer a interao entre um objeto (originado de uma
classe de modelagem, como foi possvel observar nos exemplos anteriores) e o
formulrio, que agora exerce a tarefa de se comunicar com o usurio (camada
view). O objeto em questo do tipo ClientePF e possui, entre outros atributos,
um login e uma senha. Esse objeto tambm conta com um mtodo chamado
validarLogin, que recebe duas Strings por parmetro (login e senha) e as compara
com seus atributos (login e senha). Se forem iguais, apresentar uma mensagem
Cliente autorizado!, caso contrrio, mostrar Login desconhecido!. Em segui-
da, confra a codifcao do mtodo validarLogin da classe ClientePF (fgura 165).
Linha 01: de acordo com a estrutura de packages, necessrio defnir
a qual classe pertence.
Linha 02 a 07: imports das classes que possuem os recursos para rea-
lizar a leitura de eventos.
Linha 09: incluso das duas listeners na abertura da classe pelo co-
mando implements.
I nFoRmtI Ca 4
160
CaPtulo 4
161
Para fazer a interao do objeto clientePF com a tela de login, instanciamos
o objeto na classe FormValidacaoUsuario, inicializando o login com a palavra
aluno e a senha com 123, pelo construtor. Mais uma vez, respeitando a or-
ganizao de packages. Para ter acesso classe ClientePF, necessrio importar
o pacote model (linha 14), conforme ilustra a fgura 166.
O prximo passo adicionar os botes ao ActionListener, pelo mtodo
addActionListener(this), para que eles passem a ser monitorados pelo Action-
Listener (fgura 167).
Figura 168
Implementando o
actionPermormed.
Figura 166
Importando o
pacote model.
Figura 167
Adicionando botes ao
ActionListener.
E, por fm, implementar o mtodo actionPerformed (fgura 168).
Quando um evento for disparado em qualquer componente adicionado ao
ActionListener, ele ser capturado e o mtodo actionPerformed, executado.
Resta, agora, identificar qual componente sofreu o processo. Para isso, uti-
lizaremos o parmetro do tipo ActionEvent do mtodo actionPerformed e
invocaremos seu mtodo getSource(), que retornar o nome do componente
que disparou o processo. Se o componente for igual ao bValidar (nome do
boto), verificado se um dos dois textFields esto vazios. Caso no este-
jam, o mtodo validarLogin do objeto clientePF acionado, passando por
parmetro o que foi digitado nos textfields tf Login e tfSenha. Os compo-
nentes textFields possuem um mtodo getText() para recuperar o que foi
digitado nele e um mtodo setText() que altera o seu valor.
4.11.3. Swing
A API Swing, localizada no pacote javax.swing, uma atualizao da AWT
que soluciona - ou pelo menos diminui - a dependncia do sistema ope-
racional, caracterstica de interfaces desenvolvidas com AWT. Essa API
desenha cada componente ou janela que necessita. Assim, permite que o
comportamento visual do programa seja o mesmo em qualquer platafor-
ma, alm de oferecer um conjunto extenso de componentes visuais. Para
testar as diferenas entre o AWT e a Swing, vamos transformar a classe
FormValidarUsuario em Swing. Primeiro, vale analisar a abertura da classe
(figura 169).
Linha 06 a 11: imports da API Swing.
Linha 15: a herana agora estabelecida com uma classe JFrame.
Visualmente, a diferena de nomenclaturas de componentes do AWT em re-
lao Swing a insero de um J na frente de cada nome. Alm de JFrame,
temos a declarao dos componentes utilizados na tela (da linha 19 a 22) todos
iniciando com um J.
Figura 169
A classe
FormValidacaoUsuario
utilizando o swing.
I nFoRmtI Ca 4
162
CaPtulo 4
163
Em relao aos listeners, a implementao explcita no mais necessria. Eles
continuam sendo utilizados, mas, agora, de forma implcita. No trecho seguinte
da fgura 170, temos o incio do construtor e a instanciao dos componentes.
Figura 170
Incio do construtor
e instanciao dos
componentes.
Figura 171
Trecho que
defne os eventos.
Linha 44: a incluso de um componente na interface ActionLis-
tener (deixando preparado para receber um evento), assim como
a utilizao de AWT, realizada pelo mtodo addActionListener.
Porm, com a Swing criado uma ActionListener (linha 45) den-
tro do mtodo addActionListener e definido seu mtodo actio-
nPerformed (linha 46). Com o uso do AWT, tnhamos um nico
mtodo actionPerformed e, nele, identificvamos o componente
que sofreu um evento. Com a Swing, h a definio de um Action-
Listener e de um mtodo actionPerformed para cada componente
que pode sofrer um evento.
Em relao s instrues definidas no evento, vale observar o que vem mais
adiante.
Linha 48: para leitura da senha foi utilizado um componente do
tipo JPasswordField, que substitui a senha digitada por outros carac-
teres (asteriscos ou bolinhas, por exemplo). Para recuperar a senha,
necessrio converter esses caracteres para String, permitindo que
sejam utilizados.
Na sequncia, verifcado se o login ou a senha esto vazios (linha 50). Ento,
o mtodo validarLogin do objeto clientePF invocado, passando-se o login e a
senha (lidos pelo formulrio) por parmetros.
Em relao ao exemplo AWT, o mtodo validarLogin retorna true (se os
valores passados forem iguais ao seus atributos login e senha) e false, se
forem diferentes. A estrutura de desvio condicional if codificada na linha
55 considera esse retorno para apresentar uma das mensagens definidas. A
seguir (figura 172), encontra-se a codificao do mtodo validarLogin (j
modificado) da classe ClientePF.
Figura 172
Codifcao do mtodo
validarLogin j modifcado.
Erros de lgica: apresentam-se
na elaborao de um algoritmo
no apropriado para solucionar
o problema. No causam
necessariamente interrupo
na execuo do programa.
Erros de execuo: mais
especfcos se comparados
aos lgicos, decorrem
de uma operao invlida
e causam interrupo na
execuo do programa,
porque este recebe um sinal
indicando que a operao
no pode ser realizada.
Utilizando a API Swing, o gerenciamento da janela fcou a cargo do componen-
te do tipo Conteiner, que receber e organizar todos os componentes.
Linha 26: defne o ttulo da janela pelo construtor da superclasse
(acessado pelo mtodo super()).
Linha 27: cria um componente nomeado como tela do tipo Conteiner.
Linha 28: defne que no ser utilizado um gerenciador de layout.
Linha30a40: declara os componentes e defne tamanho e posicionamento.
O mtodo setBounds() responsvel por defnir o tamanho e a localizao do com-
ponente pelos parmetros que recebe, na seguinte sequncia: coluna, linha, largura e
altura. Na fgura 171, observe o trecho que defne os eventos.
A API AWT e a Swing possuem vrios componentes que no foram abordados
nesses exemplos.
4.12. tratamentos de excees
Na execuo de um programa, possvel que ocorram erros de lgica e de
execuo, capazes de provocar a sua interrupo, de produzir resultados
incorretos ou ainda de causar uma ocorrncia inesperada.
I nFoRmtI Ca 4
164
CaPtulo 4
165
As linguagens de programao possuem formas para identifcar e tratar os erros
de execuo. Em Java, so detectados pela JVM e criado um objeto de uma
classe que caracteriza o erro. O programa que gerou o erro notifcado e, caso
seja possvel trat-lo, pode-se acessar o objeto que o caracteriza.
Os erros so caracterizados por objetos de classes especfcas que pertencem
hierarquia da classe Trowable. Uma parte dessa hierarquia pode ser visualizada
na fgura 173.
A classe Trowable a superclasse da classe Exception e, portanto, tambm
a superclasse de todas as excees. Somente objetos Trowable podem ser uti-
lizados como mecanismos de tratamento de excees. A Trowable tem duas
subclasses: Error e Exceptions.
4.12.1. Error
A Error, com suas subclasses, utilizada para indicar erros graves que no se
esperam que sejam tratados pelo programas. Errors raramente acontecem e no
so de responsabilidade da aplicao. Exemplos de Errors so os internos da
JVM e a falta de memria.
4.12.2. Exception
Os erros em Java so, normalmente, chamados de exceptions. Uma exceo,
como sugere o signifcado da palavra, uma situao que normalmente no
ocorre (ou no deveria ocorrer), algo estranho ou inesperado provocado no siste-
ma. O Java distingue duas categorias de excees: Unchecked (no verifcadas)
e Checked (verifcadas).
Figura 173
Parte da hierarquia
da classe Throwable.
4.12.2.1. unchecked Exception
Uma exceo no verifcada aquela em que o compilador Java no checa o cdigo
para determinar se ela foi capturada ou declarada. Em outras palavras, o programa-
dor no obrigado a inserir o tratamento de erro. De modo geral, pode-se impedir
a ocorrncia de excees no verifcadas pela codifcao adequada. Todos os tipos
de exceo, que so subclasses diretas ou indiretas da classe RuntimeException, so
excees no verifcadas. So exemplos de Unchecked Exceptions a entrada de tipos
incompatveis (Leitura de uma String em um atributo double, por exemplo); acesso
a ndice inexistente em um array e chamada a um mtodo de um objeto nulo.
4.12.2.2. Checked Exception
J em uma Checked Exception, o compilador acusa a possvel exceo e obriga o
programador a trat-la. Existem duas formas de tratar uma Checked Exception:
usando a clusula throws ou a estrutura try-catch-fnally.
4.12.2.3. throws
O Trows delega, para o local onde o mtodo foi solicitado, a responsabilidade
de tratar o erro. Isso quer dizer que a obrigatoriedade de tratamento passada
para a classe que far a chamada ao mtodo.
4.12.2.4. try-catch-fnally
a principal estrutura para captura de erros em Java. O cdigo tentar (try)
executar o bloco de cdigo que pode gerar uma exceo e, caso isso ocorra, o
erro gerado ser capturado pelo catch, que possui um parmetro de exceo
(identifcao do erro) seguido por um bloco de cdigo que o captura e, assim,
permite o tratamento. possvel defnir vrios catch para cada try. O fnally
opcional e, se for usado, colocado depois do ltimo catch. Havendo ou no
uma exceo (identifcada no bloco try) o bloco fnally sempre ser executado.
Para exemplifcar a utilizao dos recursos de tratamento de excees utilizare-
mos o exemplo de validao de login vistos nos subcaptulos anteriores.
Consideremos que na classe ClientePF o atributo senha do tipo int e, portan-
to, para armazenar um valor nele preciso convert-lo, j que os componentes
textField interpretam qualquer valor lido como String. Observe, na fgura 174,
a codifcao do mtodo validarLogin na classe ClientePF.
Figura 174
Codifcao
do mtodo
validarLogin na
classe ClientePF.
Throwable
Exception
RuntimeException
ArrayIndexOutOfBoundsException InputMismatchException
ClassCastException NullPointerException ArithmeticException
IOException ThreadDeath AWTError
Error
OutOfMemoryError
I nFoRmtI Ca 4
166
CaPtulo 4
167
Na linha 50, a senha obtida por meio do componente tpSenha do tipo JPas-
swordField precisa ser convertida para int antes de ser passada por parmetro
na chamada do mtodo validarLogin (linha 56). Se for digitada uma letra no
campo senha, a converso para int (linha 50) gerar uma exception do tipo
NumberFormatException. Perceba que o compilador no nos obriga a tratar
esse erro. Portanto, estamos diante de um Unchecked Exception (outra forma
de identifcar o tipo da exceo considerar que NumberFormatException
subclasse de RuntimeException). A insero da estrutura de try-catch-fnally
pode tratar essa possvel exceo da forma como ilustra a fgura 176.
Figura 176
Validao com
try-catch-fnally.
Figura 175
Evento do
componente
bOk na classe
FormValidacaoUsuario.
O bloco de cdigo entre as linhas 55 e 63 pertence ao try. Se alguma exceo
ocorrer neste trecho ela ser capturada pelo catch da linha 64. Como o possvel
erro que estamos tratando ocorrer na converso de String para int, um objeto
do tipo NumberFormatException (a classe de exceo responsvel por esse tipo
de erro) apreende o erro e passado por parmetro para o catch. Dentro do
catch (linha 65) apresentada uma mensagem explicativa para o usurio e o
programa continua sua execuo. Pelo objeto erro (parmetro do tipo Num-
berFormatException utilizado no catch) possvel recuperar mais detalhes da
exceo por intermdio de mtodos existentes em todas as classes de exceo.
Nesse exemplo, o fnally foi colocado somente para mostrar que, ocorrendo ou
no uma exceo, a mensagem contida nele ser exibida.
Podemos tambm utilizar as exceptions para tratar determinadas situaes nos quais
pode haver necessidade de realizar verifcaes que no so necessariamente erros, mas
sim valores invlidos, no contexto da aplicao desenvolvida. Por exemplo, considere-
mos que, para ser vlida, a senha (do exemplo de validao de login) deve estar entre
0 e 1000. Essa uma regra da aplicao, porm, analisando o tipo int no qual a senha
armazenada, a faixa de abrangncia vai de -2.147.483,648 a 2.147.483,647, ou seja,
estando nessa faixa de valores o compilador no gerar uma exceo. Mas para a mi-
nha aplicao, um valor informado fora da faixa entre 0 e 1000 uma exceo. Para
esses casos, podemos utilizar a clusula throw (no confundir com throws, que tem
outro sentido, estudado mais adiante), que realiza uma chamada a uma exceo (fora
uma exceo). Vejamos, na fgura 177, como fcar a validao com o uso do throw.
Na linha 58, verifcado se a senha informada est fora da faixa de valores pre-
vista. Se estiver, a exception IllegalArgumentException invocada e capturada
pelo catch da linha 71, onde uma mensagem ser exibida.
Para fechar nossos exemplos de tratamentos de exceo, vamos analisar o com-
portamento do Java (e os recursos do eclipse) em relao a Checked Exceptions
Figura 177
Validao com
uso do throw.
I nFoRmtI Ca 4
168
CaPtulo 4
169
Figura 179
Opes de tratamento.
Figura 178
Observao de erro de
uma checked exception.
Figura 180
Utilizando o try-catch.
e ao uso de throws. Para testarmos as Checked Exceptions, utilizaremos a classe
FileReader, responsvel por leitura de arquivos em disco. No entraremos em
detalhes sobre essa e outras classes responsveis por manipulao de arquivos.
Por hora, basta saber que, ao us-la, uma exceo do tipo FileNotFoundExcep-
tion pode ser gerada e essa uma Checked Exception.
Em nosso exemplo de validao de login, consideremos agora que, ao logar,
o usurio ter acesso ao contedo de um arquivo texto, nomeado como
confdencial.txt, salvo no HD da mquina no qual o programa est sendo
executado. Ao digitar a linha de comando que realiza a leitura do arquivo,
uma observao de erro aparece no eclipse da forma ilustrada na fgura 178.
Parando com o ponteiro do mouse sobre a observao de erro, ser exibido o
menu suspenso ilustrado na fgura 179.
Nesse momento, h duas alternativas (como o prprio eclipse sugere): inserir
um try-catch para tratar a exceo no prprio mtodo, ou, utilizar a clusula
throws para postergar o tratamento da exceo, passando essa responsabi-
lidade para a classe que ir realizar a chamada desse mtodo. Inserindo o
try-catch, a exceo tratada, como vemos no prximo cdigo (fgura 180).
J o throws utilizado da forma como sugere a fgura 181.
Na assinatura do mtodo, inserida na clusula throws e na exception que de-
ver ser tratada quando o mtodo for utilizado. O compilador para de exigir o
tratamento no mtodo e passa a cobr-lo na sua chamada, em nosso exemplo,
na classe FormValidacaoUsuario (fgura 182).
Como a linha que faz a chamada ao mtodo validarLogin (linha 61) j est
dentro de um bloco de try, basta acrescentar o catch da exception redirecionada
pelo throws, no caso, FileNotFounException (linha 71).
Figura 181
Uso do throws na
classe ClientePF.
Figura 182
Uso do throws
na classe
FormValidacaoUsuario.
I nFoRmtI Ca 4
170
CaPtulo 4
171
possvel capturar uma exceo recorrendo classe Exception (classe me
das excees), ou seja, qualquer erro ser interceptado. Esse tipo de trata-
mento desaconselhvel e deve sempre que possvel ser evitado devido fal-
ta de especificao do erro ocorrido. As formas de tratamento de excees
em Java no foram esgotadas nesse captulo, existindo ainda a possibilidade
de criao de nossas prprias classes de excees e a manipulao de vrias
outras exceptions.
e , portanto, inteiramente compatvel com as classes responsveis pela conexo
e manipulao dos dados.
IMPORTANTE:
A partir desse ponto
preciso que os conceitos
relacionados estrutura
dos bancos de dados
relacionais e a linguagem
SQL j tenham sido
estudados e devidamente
aprendidos. Caso ainda
falte alguma
etapa para essa
consolidao, vale uma
boa consulta s diversas
publicaes disponveis
sobre o assunto, bem
como documentaes
referentes ao MySQL.
O MySQL um banco
de cdigo-fonte
aberto, gratuito e
est disponvel tanto
para o Windows
como para o Linux.
O download pode
ser feito diretamente
do site do fabricante
(http://dev.mysql.com/
downloads/). A verso
utilizada nos exemplos
deste item a 5.0.
ArithmeticException: resultado de uma operao
matemtica invlida.
NullPointerException: tentativa de acessar um objeto
ou mtodo antes que seja instanciado.
ArrayIndexOutOfBoundsException: tentativa de
acessar um elemento de um vetor alm de sua
dimenso (tamanho) original.
NumberFormatException: incompatibilidade de tipos
numricos.
FileNotFoundException: arquivo no encontrado.
ClassCastException: tentativa de converso
incompatvel.
Exemplos de exceptions mais comuns
Estabelecer a conexo com o banco de dados
Executar comandos SQL
Permitir a manipulao de resultados (dados) obtidos
a partir da execuo de comandos SQL
Gerenciar transaes (aes realizadas
simultaneamente por um a um dos usurios conectados
ao SGBD)
Capturar e possibilitar o tratamento de excees
relacionadas conexo e utilizao do banco.
Principais funcionalidades do JDBC
4.13. Conexo com banco de dados
Por definio, um banco de dados um conjunto de informaes armaze-
nadas em um meio fsico (papel, disco rgido etc.), organizadas de tal forma
que seja possvel fazer sua manuteno (incluso, alterao e excluso) e
diferentes formas de pesquisas. Considerando os bancos de dados informa-
tizados, os SGBDs (Sistemas Gerenciadores de Bancos de Dados) possuem
recursos para manuteno, acesso, controle de usurios, segurana, e ou-
tras ferramentas de gerenciamento. O SQL (Structured Query Language,
ou linguagem de consulta estruturada) uma linguagem de manipulao
de dados que se tornou padro para SGBDRs (Sistemas Gerenciadores de
Bancos de Dados Relacionais). Entre os sistemas de gerenciamento de SGB-
DRs populares esto: o Microsoft SQL Server, o Oracle, o IBM DB2, o
PostgreSQL e o MySQL.
4.13.1. JDBC (Java Database Connectivity)
a API (conjunto de classes e interfaces) responsvel pela conexo de programas
desenvolvidos em Java com vrios tipos de bancos de dados. O prprio JDBC
(confra o quadro Principais funcionalidades do JDBC) foi desenvolvido em Java
Para que um sistema (projeto) Java possa se conectar e gerenciar uma conexo com
banco de dados, deve ser confgurado para ter acesso ao(s) driver(s) JDBC referen-
te ao(s) banco(s) utilizado(s). A JDBC suporta quatro categorias de drivers: a de
tipo 1, que a ponte JDBC-ODBC; a de tipo 2, API nativa parcialmente Java; a
de tipo 3, o Protocolo de rede totalmente Java; e a de tipo 4, o Protocolo nativo
totalmente Java. As caractersticas de cada um deles esto defnidas a seguir.
tipo 1: JDBC-oDBC bridge driver (Ponte JDBC-oDBC)
O ODBC (Open Data Base Connectivity) o recurso padro disponibilizado pela
Microsoft, responsvel pela conexo a bancos de dados na plataforma Windows. O
driver JDBC do Tipo 1 prov a comunicao entre o ODBC e a API JDBC, que
o padro de conexo a bancos de dados para aplicaes desenvolvidas em Java. Sua
vantagem ser ideal para integrao de aplicaes Java em ambientes que j possuem
aplicaes desenvolvidas para a plataforma Windows. H, porm, duas desvantagens:
no indicado para aplicaes em grande escala, pois seu desempenho cai medida
que as chamadas JDBC trafegam por meio da ponte para o driver ODBC; e o driver
JDBC-ODBC precisa estar instalado no cliente.
tipo 2: native aPI partly Java driver (aPI nativa parcialmente Java)
Os drivers JDBC do Tipo 2 permitem a comunicao de aplicaes Java
com os drivers nativos dos SGBDs (geralmente desenvolvidos em C ou
C++). Nesse sentido, so semelhantes aos do tipo 1, porm, criam uma pon-
te entre os drivers nativos de cada SGBD com as aplicaes Java. Sua vanta-
gem ter um desempenho melhor que o driver de Tipo 1. J a desvantagem
que o driver nativo especfico do SGBD utilizado deve estar instalado na
mquina cliente, o que impossibilita aplicaes web, pois necessrio ter
acesso s mquinas clientes.
I nFoRmtI Ca 4
172
CaPtulo 4
173
tipo 3: net protocol all Java driver (Protocolo de rede totalmente Java)
O driver Tipo 3 converte as requisies do SGBD em um protocolo de rede
genrico (no vinculado a nenhum SGBD). Essas requisies so enviadas a um
servidor middle-tier, que as traduz e encaminha para um SGBD especfco. O
middle-tier funciona como camada intermediria, que implementa certas re-
gras de converso e acesso. Oferece duas vantagens: como o driver e o servidor
intermedirio so alocados no servidor, no h a necessidade de instalao e
confgurao das mquinas clientes; indicado para aplicaes web. H uma s
desvantagem: exige a instalao e confgurao do servidor intermedirio, bem
como dos driver nativos dos SGBDs utilizados.
tipo 4: native protocol all Java driver (Protocolo nativo totalmente Java)
O driver do Tipo 4 inteiramente desenvolvido em Java e converte as requisi-
es de um SGBD em um protocolo de rede especfco para o SGBD utilizado,
assim realizada uma conexo direta entre a aplicao Java e o driver. Apresenta
duas vantagens: por ser totalmente desenvolvido em Java e permitir conexo di-
reta com o SGBD, a aplicao fca independente de plataforma e de instalaes
na mquina cliente; e tambm um drive ideal para aplicaes web. A desvan-
tagem que cada SGBD tem seu prprio driver e nem todos so gratuitos.
Nos exemplos a seguir, o driver usado o com.mysql.jdbc.Driver (mysql-con-
nector-java-5.1.6-bin), do tipo 4. Os prprios fabricantes dos SGBDs fornecem
seus drivers JDBC. Existem muitos fornecedores independentes que desenvol-
vem e disponibilizam drivers JDBC de vrios SGBDs.
4.13.2. Implementao do acesso a dados
Em nosso exemplo do projeto da livraria, uma das manutenes disponveis
relacionada aos clientes e entre aqueles que constituem pessoa fsica e os
de pessoa jurdica. Utilizaremos a manuteno dos primeiros para exempli-
ficar a conexo e o gerenciamento de dados em um banco MySQL. A classe
FormClientePF gera o formulrio visualizado na figura 183.
Componentes da API Swing foram utilizados para montar o layout do for-
mulrio. Vinculados aos eventos dos botes, esto os cdigos que realizam a
captura dos dados obtidos pelo formulrio e as chamadas aos mtodos de um
objeto nomeado como clientePF do tipo ClientePF e que ser o responsvel
pela interao com o banco de dados. Na classe ClientePF foram implemen-
tados mtodos que realizam cada uma das operaes com o banco de dados
(incluso, alterao, excluso, listagem de todos os clientes pessoa fsica e pes-
quisa de um determinado cliente).
Detalhemos, ento, esse relacionamento entre a obteno de dados pelo
formulrio e a chamada aos mtodos do objeto clientePF. Primeiramente,
na classe ClientePF (no qual ser feita a conexo com o banco e o geren-
ciamento de dados), para termos acesso aos mtodos do Java responsveis
pela interao com bancos de dados, devero ser acrescentados os imports
relacionados na figura 184.
Figura 183
Formulrio de
manuteno de clientes
pessoa fsica.
Para estabelecer a conexo com o banco, o mtodo responsvel (getConnection)
precisa de quatro informaes: o driver JDBC que ser utilizado, o endereo do
banco desejado, o login e a senha de identifcao no banco de dados. Em fun-
o da maior clareza de cdigo, declaramos quatro atributos para receber estas
informaes (fgura 185).
No exemplo, usamos o driver JDBC do MySQL, nosso banco foi criado com o
nome livraria, est localizado no caminho padro do MySQL e no defnimos
(no banco) nenhum login e senha especfcos. Estamos considerando, ento, o
banco livraria contendo uma tabela chamada clientes.
Figura 185
Defnio de parmetros
de conexo como atributos.
Figura 184
Importaes das API
de conexo a banco.
I nFoRmtI Ca 4
174
CaPtulo 4
175
4.13.2.1. Classe java.sql.Statement
A classe java.sql.Statement permite a execuo dos comandos fundamentais de
SQL. O mtodoConnection.createStatement() utilizado para criar um obje-
todo tipo Statement, que representa uma query (um comando SQL). Existem
dois mtodos de execuo de query na classe Statement.
4.13.2.2. a classe PreparedStatement
J a classe java.sql.PreparedStatement contm os mtodos da classe Statement e
outros recursos para elaborao de query, bem como a possibilidade de passa-
gem de parmetros.
4.13.2.3. a classe CallableStatement
A classe java.sql.CallableStatement, por sua vez, permite executar procedimen-
tos e funes armazenados no banco como, por exemplo, chamadas a stored
procedures.
4.13.3. Incluso
Na Classe FormClientePF, os objetos clientePF e clientePFAuxiliar (previa-
mente instanciados) so do tipo ClientePF e possuem os atributos referen-
tes aos dados lidos pelo formulrio, para a incluso. Os atributos do objeto
clientePFAuxiliar so preenchidos com os valores lidos do formulrio como
se observa nas linhas 289 a 302, ilustrada na figura 186.
Com os dados j armazenados em seus atributos, o objeto clientePFAu-
xiliar passado por parmetro para o mtodo incluir do objeto clientePF
(na linha 304).
1.Statement.
executeQuery():
executa uma query
e retorna um objeto
do tipo java.sql.
ResultSet (responsvel
por armazenar dados
advindos de uma
consulta SQL) com
o resultado obtido
(utilizado com select).
2.Statement.
executeUpdate():
executa uma query e
retorna a quantidade
(um valor inteiro)
de linhas afetadas
(utilizado com insert,
update e delete).
Figura 186
Mtodo
acaoInclusao
na classe
FormClientePF. A classe Connection utilizada para armazenar uma conexo com o banco.
Na linha 324, um objeto desse tipo criado e inicializado com null (vazio).
Na linha 327, quando o mtodo esttico Class.forName() executado, o
driver JDBC do MySQL (contido no atributo servidor) tenta ser inicializa-
do. Carregado o driver, o mtodo Class.forName() ir registr-lo no java.
sql.DriverManager. Na linha 328, a classe DriverManager abre uma cone-
xo com o banco de dados por meio do mtodo getConnection, utilizando
informaes contidas nos atributos urlBanco, usuarioBanco e senhaBanco.
A classe Connection designa um objeto, no caso con, para receber a cone-
xo estabelecida.
Na linha 331, criado um objeto do tipo Statement (com o nome de stmt)
e, na linha 333, executada uma consulta ao banco para obter o ltimo
cdigo cadastrado. Este cdigo, armazenado em um objeto do tipo Result-
Set (rs), incrementado (somado mais 1) na linha 335 e usado como novo
Figura 187
Mtodo incluir na
classe ClientePF.
Na classe ClientePF, o mtodo incluir recebe um parmetro do tipo ClientePF,
tambm nomeado clientePF (o nome do parmetro, alis, poderia ser qualquer
um, desde que o tipo seja respeitado) e realiza os comandos que podem ser
visua lizados em seguida, na fgura 187.
I nFoRmtI Ca 4
176
CaPtulo 4
177
cdigo na linha 340. O mtodo next do objeto rs (ResultSet) serve para
posicion-lo no primeiro registro e para passar para o prximo registro (no
caso da linha 334, como s haver um registro como retorno, ele fica no
primeiro). Aps a utilizao do objeto rs devemos fech-lo, por meio do
mtodo close (linha 336).
Na linha 325 criado um objeto do tipo PreparedStatement, nomeado
como ps e contendo null (vazio) e, na linha 339, inserido um script de
SQL (um insert) contendo a definio de parmetros (caractere ?). Por meio
do mtodo set (do prprio objeto ps) podemos inserir valores nesse coman-
do SQL (insert), passando por parmetro um ndice e o valor que quere-
mos inserir. Por exemplo, na linha 342 est sendo includo o contedo
do atributo nome do objeto clientePF, no terceiro parmetro do objeto ps
(podemos entender que o terceiro caractere ? foi substitudo pelo nome).
Observe que pelo prprio mtodo set do objeto ps, podemos definir o tipo
que ser inserido (setInt, setString, setDouble etc). Finalmente, quando o
comando SQL (insert) contido no objeto ps est completo (todos os valores
armazenados no objeto clientePF foram passados para ele), o mtodo exe-
cuteUpdade executado (linha 356) e os valores so includos no banco.
4.13.4. alterao
Na classe FormClientePF, para a alterao, os atributos do objeto clien-
tePFAuxiliar so preenchidos com os dados do formulrio (linhas 309 a
323), como se observa na sequncia ilustrada na figura 188.
E com os dados j armazenados em seus atributos, o objeto clientePFAu-
xiliar passado por parmetro para o mtodo alterar do objeto clientePF
(na linha 325).
Observe que todas a
linhas de comando
que fazem a conexo
e a manipulao dos
dados no banco esto
em uma estrutura
de try e as excees
tratadas nos catch so
ClassNotFoundException
(exceo gerada
se uma das classes
no for localizada) e
SQLException (se um
comando SQL no puder
ser executado). No bloco
de fnally, a conexo
fechada.
Figura 189
Mtodo alterar
na classe ClientePF.
Figura 188:
Mtodo
acaoAlteracao
na classe
FormClientePF.
Figura 190
Mtodo acaoExclusao
na classe FormClientePF.
pelos valores armazenados no objeto clientePF. Essa substituio de valores
(alterao) ser aplicada somente ao registro cujo campo cliCod igual ao
valor contido no atributo cdigo do objeto clientePF. Esse critrio foi defi-
nido por intermdio da clusula where do comando update.
4.13.5. Excluso
Na classe FormClientePF necessrio obter somente o cdigo do cliente a
ser excludo. Tal cdigo armazenado no objeto clientePFAuxiliar, que
passado por parmetro para o mtodo excluir do objeto clientePF, como se
pode visualizar na figura 190.
Na classe ClientePF, o mtodo alterar recebe um parmetro do tipo ClientePF
e realiza comandos visualizados na fgura 189.
As instrues de conexo e preparao do comando SQL so as mesmas
utilizadas e descritas no mtodo incluir. A diferena que agora o coman-
do SQL executado o update, substituindo os valores contidos no banco
Na classe ClientePF, o mtodo excluir recebe um objeto do tipo ClientePF
como parmetro e realiza os comandos visualizados na fgura 191.
I nFoRmtI Ca 4
178
CaPtulo 4
179
Figura 192
Mtodo acaoListar na
classe FormClientePF.
As instrues de conexo e preparao do comando SQL so as mesmas utili-
zadas e descritas no mtodo incluir. A diferena que agora o comando SQL
executado o delete, que remover o registro do banco cujo campo cliCod seja
igual ao contedo do atributo cdigo do objeto clientePF. Esse critrio foi def-
nido por meio da clusula where do comando delete.
4.13.6. listagem geral
Na classe FormClientePF, realizada a chamada ao mtodo listar do objeto
clientePF, como se pode ver na fgura 192.
Figura 193
Mtodo listar na
classe ClientePF.
207 realizada a consulta. No looping da linha 210 a 215 (while), o rs
percorrido a partir de sua primeira linha (posicionado pelo mtodo next do
rs) e passando linha a linha (por meio do mesmo mtodo next) at o fim
do rs (ltimo cliente retornado). A cada linha, o contedo de cada coluna
concatenado (unido) com trechos de texto que identificam uma a uma
das informaes (linhas 211 e 214). Observe que rs.getString(1) equivale ao
cdigo que por sua vez do tipo int, mas, como a inteno montar uma
String de mensagem, o valor pode ser recuperado j convertido por meio do
mtodo rs.getString(1).toString() (linha 211). Na linha 217, a varivel do
tipo String, nomeada como relacao (declarada na linha 209), montada
por intermdio de concatenaes com o contedo do objeto.
4.13.7. Pesquisa
Uma pesquisa pode ser realizada de formas diferentes. O que apresentamos,
ento, simplesmente um exemplo. Na classe FormClientePF, utilizaremos
mais um objeto do ClientePF como auxiliar na pesquisa, criado na linha
340 com o nome de clientePFPesquisa. O objeto clientePF instanciado
novamente dentro do mtodo somente para garantir que estar vazio. A
manipulao desses dois objetos ilustrada na figura 194.
Figura 191
Mtodo excluir
na classe ClientePF.
Na classe ClientePF, executada uma consulta ao banco e o retorno so os
campos cliCod, cliNome, cliTelefone e cliCelular de todos os registros da tabela
clientes (fgura 193).
Nesse exemplo, montaremos uma String com o retorno da consulta e a
apresentaremos por meio de um showMessageDialog. Um objeto rs tem o
formato de uma matriz, em que o retorno de uma consulta pode ser tratado
como uma tabela. Os mtodos de acesso aos dados contidos em um objeto
rs so gets especficos para o tipo de dado armazenado. Identifica-se o
campo desejado pelo seu referente ndice (coluna) na linha acessada. Na
I nFoRmtI Ca 4
180
CaPtulo 4
181
Na linha 343, o cdigo do cliente a ser pesquisado armazenado no objeto
clientePF. Na 344, esse objeto (clientePF) passado por parmetro para o
mtodo pesquisar contido nele mesmo!? (, isso possvel). Como o obje-
to clientePF foi instanciado novamente dentro desse mtodo, ele contm
somente o atributo cdigo preenchido. O mtodo pesquisar procura um
registro no banco de dados que tenha o mesmo cdigo informado. Se en-
contrar, retorna um objeto preenchido com os demais dados, caso contrrio
retorna um objeto como foi passado por parmetro, ou seja, somente com
o cdigo preenchido.
O retorno da pesquisa armazenado no objeto clientePFPesquisa (ainda na
linha 344), e seu atributo nome testado na linha 346. Imaginando que
nome um dado obrigatrio e que no existir um cliente cadastrado sem
nome, se o atributo nome de clientePFPesquisa estiver em branco porque
o cliente no foi encontrado e, ento, executado um mtodo que limpar
os campos do formulrio, seno os valores contidos em clientePFPesquisa
so carregados no formulrio.
Na classe ClientePF, o mtodo pesquisar recebe um objeto do tipo ClientePF
como parmetro, retorna um objeto do tipo ClientePF e realiza a pesquisa da
forma como ilustra a fgura 195.
Na linha 242 montado o comando SQL (select) que far a consulta. Esse
comando leva em considerao o contedo do atributo cdigo do objeto clien-
tePF passado por parmetro, e executado na linha 246. Como a consulta
feita por intermdio da chave primria da tabela clientes (cdigo), somente um
registro ser retornado (caso seja encontrado). O mtodo next posiciona o rs
em seu primeiro registro (que em nosso exemplo, tambm o ltimo, j que
s teremos um registro de retorno). O mtodo isLast retorna true se o rs estiver
posicionado no ltimo registro (e false, se no estiver). Se o rs estiver vazio,
Figura 195
Mtodo pesquisar
na classe ClientePF.
aparecer antes do fm, portanto, se o mtodo isLast retorna false porque o
rs est vazio. Na linha 249, testado o mtodo isLast. Se for false, apresenta
uma mensagem, seno, armazena os dados do cliente encontrado no objeto
clientePF (linha 253 a 267). Na linha 286, o objeto retornado com ou sem
dados dependendo do resultado da consulta.
Esse captulo no pretende esgotar os recursos e possibilidades de uso da lin-
guagem Java, tampouco das tcnicas de programao orientada a objeto. O
intuito foi passar pelas principais caractersticas dessa linguagem, suas estru-
turas e organizaes, alm de demonstrar as aplicaes prticas dos principais
conceitos da orientao a objetos, que so perfeitamente viveis nessa lingua-
gem. Ainda h muito o que ser visto tanto sobre as tcnicas de orientao a
objeto, quanto sobre Java. Esperamos que esse seja o seu ponto de partida.
Figura 194
Mtodo acaoPesquisar na
classe FormClientePF.
I nFoRmtI Ca 4
182
CaPtulo 4
183
Captulo 5
Visual Studio 2008

Net Framework


Solues e projetos
OVisual Studio um conjunto de ferramentas de desenvol-
vimento que contm editores de cdigos, IntelliSense, assistentes e diferentes
linguagens em um mesmo ambiente de desenvolvimento integrado para prin-
cipiantes e profssionais. Apresenta-se em diferentes plataformas: PCs, servido-
res, aplicaes web e mveis. Em uma viso mais abrangente, o Visual Studio
permite o desenvolvimento rpido de aplicativos, recursos de depurao e banco
de dados, sem depender dos recursos oferecidos pelo Framework 3.5. Auxilia no
desenvolvimento Web habilitado para o AJAX, contando ainda com os recursos
do ASP.NET.
5.1. .nEt Framework
Desenvolvido pela Microsoft, o .NET Framework um modelo de programa-
o de cdigo gerenciado para criar aplicativos cliente, servidores ou dispositi-
vos mveis. formado por um conjunto variado de bibliotecas que facilitam o
desenvolvimento de aplicaes, desde as mais simples at as mais complexas,
bem como a instalao e distribuio de aplicaes. Baseado em tecnologia de
mquina virtual, o .NET Framework totalmente orientado a objetos.
O .NET Framework 3.5 incrementa as verses anteriores com novas imple-
mentaes ASP.NET e AJAX e aumenta a integrao com o LINQ (Language
Integrated Query, ou consulta integrada de linguagem) que uma nova fer-
ramenta de pesquisas em base de dados, alm de suporte total para Windows
Workfow Foundation (WF), Windows Communication Foundation (WCF),
Windows Presentation Foundation (WPF) e Windows CardSpace. Sua estrutu-
ra composta por diferentes camadas, como podemos visualizar na fgura 196.
Na camada inferior, encontramos a Common Language Runtime (CLR) ou
tempo de execuo de linguagem comum. Sua fnalidade executar as aplica-
es, criando um ambiente de mquina virtual e compilando as linguagens de
programao do .NET Framework em cdigo nativo. O .NET Frameworks
Base Class, na segunda camada de baixo para cima, representa as bibliotecas de
classes disponveis para o desenvolvimento de aplicativos (consulte o quadro Re-
cursos de classes disponveis na pgina 188). o principal ponto de interatividade
com o Runtime (tempo de execuo).
Na terceira camada ascendente, est o ADO.NET (Data e XML). O ActiveX
Data Objects (ADO) oferece todos os recursos necessrios para a criao e ma-
nipulao de bancos de dados fornecidos por meio das classes System.Data,
.Common, .OleDb, .SqlClients, SqlTypes, .Odbc e .Xml.
AJAX (acrnimo
para a expresso em
ingls Asynchronous
Javascript And XML, que
literalmente pode ser
traduzido para Javascript
e XML Assncrono) o
nome dado utilizao
metodolgica de
Javascript e XML para
fazer com que as pginas
web se tornem mais
interativas.
O Microsoft .NET Framework
3.5 o modelo de programao
do Windows Vista e, segundo a
prpria Microsoft ao anunciar
o lanamento, combina o
poder do .NET Framework 2.0
com novas tecnologias para
construo de aplicativos.
Permite a realizao de novas
experincias, comunicao
integrada e sem fronteiras,
alm de ser til para vrios
processos corporativos.
Figura 196
.NET Framework.
Na quarta camada temos Web Services e Web Forms. O Web Service representa
a integrao entre os dados de diferentes aplicaes e plataformas, permitindo o
envio e recepo de dados no formato XML. Tudo de maneira muito fcil. Para
que isso ocorra, entra em cena o Web Forms, criando um ambiente de desen-
volvimento semelhante s ferramentas que normalmente utilizamos, clicando e
arrastando, assim como se faz no FrontPage da Microsoft. J o Windows Form
uma evoluo dos formulrios utilizados para programao.
Localizado na penltima camada de baixo para cima, o Common Type Sys-
tem (CTS), que pode ser literalmente traduzido como sistema de tipo comum,
existe para que ocorra a integrao entre as linguagens de programao. Def-
ne como os tipos de dados sero declarados, usados e gerenciados no momento
da execuo do aplicativo.
No topo, aparecem as linguagens de programao utilizadas para o desenvolvimen-
to da aplicao, como VB, C++, C# e JScript. Assim, pode-se concluir que o con-
junto de todas as camadas mencionadas representa o pacote do Visual Studio.Net.
5.1.1. mquina virtual
A mquina virtual serve como uma camada entre o cdigo e o sistema operacio-
nal. Todo cdigo escrito no .NET (Visual Basic, C# ou qualquer outra lingua-
ASP.NET, sucessora
da tecnologia ASP (de
Active Server Pages
ou pginas de servidor
ativo) a plataforma da
Microsoft usada para
o desenvolvimento de
aplicaes web.
I nFoRmtI Ca 4
186
CaPtulo 5
187
gem), compilado para uma linguagem intermediria chamada CIL (Common
Intermediate Language ou linguagem intermediria comum), que distribuda
e executada pelos diferentes clientes da aplicao.
5.1.2. Garbage collector (coletor de lixo)
Mecanismo interno que possibilita a retirada da memria de objetos que no
esto sendo mais utilizados. A operao feita sem a interferncia do usurio,
em intervalos de ociosidade da CPU.
5.2. Solues e projetos
Quando iniciamos uma aplicao ou servio no Visual Studio, temos um pro-
jeto que funciona como um repositrio para gerenciamento dos cdigos fonte,
conexes com bancos, arquivos e referncias. Ele representa uma pasta da Solu-
o (Solution), que por sua vez poder conter inmeros projetos independentes
entre si, elaborados em diferentes linguagens e organizados no formato de pastas
semelhante ao Windows Explorer. Os arquivos de projetos (.vbproj, .csproj etc.)
e os arquivos de soluo (.sln) esto no formato XML.
5.2.1. Iniciando o Visual Studio Solution
Ao iniciar o Visual Studio pela primeira vez (fgura 197), surge a tela de Start
Page (ou pgina inicial). No menu File (arquivo), entre em New (novo) e clique
em Project (projeto), como ilustra a fgura 198.
Em templates (modelos), escolha o tipo de projeto a ser elaborado (Windows
Form Application ou aplicao de formulrio Windows, Console Application
ou aplicao de painel de controle etc.). Lembre-se de nomear o seu projeto e
System: entre os seus inmeros recursos, est o suporte
para programao, os tipos de bases (String, Int32,
DateTime, Boolean etc.) e as funes matemticas.
System.CodeDom: para a criao e execuo de cdigo
de maneira imediata.
System.Collections: dene containers como listas,
las, matrizes etc.
System.Diagnostics: todas as classes necessrias
para fazer diagnsticos.
System.Globalization: suporte para a globalizao, ou
seja, essa classe integra toda a plataforma do Framework.
System.IO: suporte para o FileSystem, usando classes
de manipulao de arquivos e diretrios.
System.Resources: usado para traduo do aplicativo em
diferentes idiomas e tambm para retorno de mensagem
de acordo com o idioma selecionado pelo usurio.
System.Text: suporte para a codicao e ao
StringBuilder, para manipulao de Strings.
System.Text.RegularExpressions: suporte
para expresses regulares.
Recursos de classes disponveis
Figura 198
Janela de Projeto.
Figura 197
O Visual Studio.
I nFoRmtI Ca 4
188
CaPtulo 5
189
indicar a localizao, ou seja, onde os arquivos sero gravados e o nome da sua
Solution (soluo), como mostra a fgura 199. Confrme os dados e teremos a
Solution aberta para o desenvolvimento da aplicao.
Caso o projeto seja elaborado utilizando o Visual Basic, o procedimento
ser o mesmo. Escolha em Project Types (tipos de projeto) a opo Others
Languages (outras linguagens), depois Visual Basic e, por fm, a template na
qual deseja trabalhar.
5.2.2. Conhecendo o Visual Studio
O Visual Studio apresenta uma srie de janelas e guias que fazem parte da sua
IDE (Integrated Development Environment ou Ambiente de Desenvolvimento
Integrado). Confra algumas, a seguir.
Barra de ferramentas (toolbar), que disponibiliza os botes de comandos mais
utilizados (fgura 200).
gramao do formulrio; Form1.Designer.cs, para programao visual do for-
mulrio; e Program.cs, o programa principal, no qual encontramos o mtodo
main(), que dar incio aplicao.
Para aplicaes em Visual Basic, ser disponibilizado o arquivo Form1.vb, que possui
a mesma funo do Form1.cs. Confra, a seguir, janelas disponveis e suas funes:
ToolBox (caixa de ferramentas): contm componentes para o desenvolvimento
do projeto, os quais esto divididos em guias de acordo com o tipo de aplicao.
Nesse caso, podemos verifcar (fgura 202) a aba de componentes da categoria
Common Controls (controles comuns).
Form (formulrio): essa janela (fgura 203) receber os componentes da tool-
box e a programao correspondente. Os componentes sero arrastados sobre
o Form para compor a interface do usurio e tero suas propriedades modifca-
das de acordo com o projeto. Para ativar a janela de cdigo e realizar a progra-
mao, preciso dar um duplo clique sobre o componente ou formulrio.
Properties (propriedades): permite alterar as propriedades dos componentes, que
podem aparecer organizadas por categoria ou em ordem alfabtica (fgura 204).
A janela de propriedade traz, de acordo com cada componente toolbox, uma srie de
recursos para confgurao. Por exemplo, um componente Label (rtulo), utilizado
Figura 202
ToolBox.
Figura 199
Defnio da Solution.
Figura 200
Toolbar.
Solution Explorer: mostra os arquivos que fazem parte do seu projeto. seme-
lhante ao Explorer do Windows, pois permite criar, excluir e importar arquivos
(fgura 201).
Se analisarmos uma aplicao Windows Form Application em C#, dentro da
janela Solution, podemos encontrar os seguintes arquivos: Form1.cs, para pro-
Figura 201
Solution Explorer. Figura 203
Form.
I nFoRmtI Ca 4
190
CaPtulo 5
191
para incluir expresses no projeto, possuindo diversas propriedades tais como name
(nome), text (texto), visible (visvel), font (fonte), forecolor (cor) e que podero ser
manipuladas diretamente na janela ou por meio de programao, utilizando a nota-
o de ponto, conforme o seguinte cdigo, que oculta o Label:
Label1.Visible = false;
Code and Text Editor (editor de texto e de cdigo) a janela que utilizaremos para
implementar os cdigos de programao (fgura 205). Para acess-la, basta clicar duas
vezes sobre ela ou em qualquer componente. Outra opo usar os botes Code (c-
digo) e View (visualizar) na janela de Solution Explorer, como mostra a fgura 206.
Figura 209
Guias de janelas.
Figura 204
Properties.
Figura 205
Code and text Editor.
Figura 206
Em destaque, os botes
Code e View.
Auto Hide: um apontador indica a posio da janela, que fcar oculta. Basta
um simples movimento do mouse sobre o ttulo dessa janela (fgura 207) para
que ela seja aberta. Para fx-la, utilize o cone semelhante a um preguinho
(fgura 208), localizado na barra de ttulo.
Podemos movimentar as janelas e coloc-las em qualquer lugar da aplicao com a
ajuda dos guias. Para isso, clique na barra de ttulo e mantenha o boto do mouse
pressionado, arrastando a janela para qualquer rea de seu desktop. Imediatamen-
te, surgiro as indicaes das guias (fgura 209). Escolha uma delas e solte a janela.
Figura 207
Auto Hide.
Figura 208
Fixar janela.
5.2.3. Gerenciador de janelas
O Visual Studio apresenta muitas janelas e, para facilitar o seu gerenciamento,
existem quatro recursos. Confra quais so, a seguir.
Dockable: coloca a janela aberta junto janela principal do programa.
Hide: fecha aquela janela e, para abri-la novamente, usa o menu View.
Floating: a janela fca futuante, podendo ser deslocada para qualquer parte
do desktop.
5.2.4. nomenclatura de componentes
Cada componente recebe uma numerao automtica quando inserido no pro-
jeto (Label1, Label2, Label3 etc.). No h problemas em manter esses nomes,
mas, para deixar o cdigo mais legvel e padronizado, o melhor utilizar um
prefxo relacionado ao tipo de componente e sua identifcao. Por exemplo:
Label1 = lblPergunta
Label2 = lblMensagemAlerta
I nFoRmtI Ca 4
192
CaPtulo 5
193
A tabela 12 mostra alguns dos vrios prefxos utilizados na plataforma .NET.
tabela 12
PREFIXOS USADOS NA .NET
Componente
label
textBox
DataGrid
Button
ImageButton
DropDownlist
RadioButtonlist
Image
Panel
Prexo
lbl
txt
dtg
btn
imb
ddl
rbl
img
pnl
Prexo
lst
Dtl
Rep
Chk
Cbl
Rdo
PhD
tbl
Val
Componente
listBox
Datalist
Repeater
Checkbox
CheckBoxlist
RadioButton
PlaceHolder
table
Validators
5.2.5. IntelliSense
Ao digitar alguma instruo, aparecer uma srie de complementos relacionados
a ela. Quando escrevemos Console, por exemplo, so disponibilizados vrios
mtodos. Com a ajuda da tecla Tab ou da Barra de Espao, a instruo se com-
pe naturalmente (fgura 210).
Durante essa atividade, podemos recorrer a alguns botes auxiliares (fgura 212)
como Break, Stop e Restart.
5.2.7. Identifcao de erros
O Visual Studio nos ajuda a identifcar ou interpretar alguns erros que po-
dem ocorrer durante o processo de criao ou execuo do cdigo. Confra
alguns, a seguir.
Erro de sintaxe: geralmente identifcado com uma linha em vermelho su-
blinhando a expresso. No exemplo mostrado na fgura 213, esto faltando as
aspas no fechamento da expresso.
Figura 211
Executando a aplicao.
Figura 212
Controles de execuo.
Figura 210
IntelliSense.
Instruo
Opes de
complemento
Figura 213
Erro de sintaxe.
Erro antes da execuo: quando o cdigo apresenta algum erro e uma execu-
o forada, uma caixa de dilogo solicita ao usurio que continue a execuo
do cdigo, mesmo constando erro (fgura 214). Isso faz com que a ltima verso
correta seja executada, ignorando a atual.
Figura 214
Janela de erro.
Figura 215
Painel de erros.
Figura 216
Erro de classe.
Na parte inferior do Visual Studio, podemos visualizar o painel (error list) de
Erros, Warnings e Messages (fgura 215).
Clique sobre o erro identifcado (1, 2 etc.) para que ele seja selecionado no cdi-
go para visualizao.
Erro de classe ou mtodo: comumente identifcado com uma linha em azul
sublinhando a expresso (fgura 216). No exemplo, a instruo est escrita de
forma errada, pois o correto WriteLine().
5.2.6. Executando a aplicao
Para executar a aplicao, pressione a tecla F5, ou, na barra de menu, clique
no item Debug. Escolha a opo Start Debugging ou utilize o boto da barra de
ferramentas (fgura 211).
I nFoRmtI Ca 4
194
CaPtulo 5
195
Captulo 6
C Sharp

Programao


Tipos de dados e variveis

Operadores

Estrutura de deciso

Estruturas de repetio usadas na linguagem

Tratamento de erros / excees

Vetores e matrizes

Classes

Windows Form Application - componentes

Eventos
C
onsiderada como a mais importante linguagem de desenvolvimen-
to da Microsoft dentro da Plataforma .NET Framework, a C#
vem ganhando inmeros adeptos (programadores de outras lin-
guagens) em virtude de sua caracterstica e semelhana ao C, C++ ou Java. A
linguagem de programao C# orientada a objetos e foi criada praticamente
a partir do zero para compor a plataforma. Trata-se do primeiro compilador
com suporte de programao para a maioria das classes do .NET Frameworks.
Embora tenha sido feita por vrios programadores, os mritos so atribudos
principalmente a Anders Hejlsberg, muito conhecido por desenvolvedores do
compilador Delphi.
6.1. Programao
O C# requer toda a lgica de programao contida em classes. Neste captulo,
no sero abordados, em detalhes, os conceitos de programao orientada a ob-
jetos. Caso haja dvidas consulte o captulo 4.
6.1.1. Console application
A aplicao do tipo Console Application (aplicao do painel de controle em
portugus) se assemelha s programaes da linguagem C/C++. Seu resultado
apresentado na janela de Prompt do DOS, na qual programamos diretamente
pelo mtodo Main(), s que, agora, no formato de uma classe (fgura 217).
Pode-se fazer uma analogia ao Java: no comeo do nosso cdigo, encontramos
os usings (import), a classe principal Program e o mtodo Main() com a imple-
mentao do cdigo em C#.
6.1.2. Windows Form application
No Windows Form Application (aplicao de formulrios de Windows), a es-
trutura do projeto diferente do Console Apllication. Se analisarmos a janela do
Solution Explorer, podemos verifcar que a disposio dos cdigos tm arquivos
separados, com funes especfcas, como se pode ver em seguida.
Program.cs: possui o mtodo Main() (fgura 218), que executa o primeiro
formulrio (Form1). Nesse caso, EnableVisualStyles() defne o estilo visual do
projeto, SetCompatibleTextRenderingDefault(), o modo e propriedade como os
componentes sero visualizados, e o Run(), para execuo do formulrio.
Form1.Designer.cs: realiza a especifcao dos componentes utilizados na
aplicao (fgura 219). Quando um projeto comea a ser construdo, toda a
estrutura dos seus componentes (tamanho, fonte, nome, localizao e outras
propriedades) fca registrada no formulrio, seguindo o mtodo chamado Ini-
tializeComponent(), exatamente no qual encontramos a expresso Windows
Form Designer generated code.
Form1.cs: reapresenta a maior parte da nossa programao em relao aos com-
ponentes e aos eventos (fgura 220). Insere-se, ento, a lgica de programao,
ou seja, aquilo que deve ser feito ao inicializar um formulrio (Form1_Load),
quando o usurio clicar em um boto e em outros procedimentos do projeto.
O engenheiro de software
Anders Heijsberg nasceu
na Dinamarca, na cidade
de Copenhagem, em 1960.
Um importante marco em
sua carreira foi ter escrito
os compiladores Pascal
e Blue Label, quando
trabalhava na Nascon
Computer. Foi, porm,
mais tarde, para a Borland
que desenvolveu o Turbo
Pascal e o Delphi, antes
de ser contratado pela
Microsoft, em 1996. Criou
a linguagem J++ e a C#,
em cujo desenvolvimento
trabalha continuamente.
Figura 217
Console Application.
Figura 218
Program.cs.
I nFoRmtI Ca 4
198
CaPtulo 6
199
6.2. tipos de dados e variveis
Os tipos de dados em C# so distribudos da forma como apresenta a tabela 13.
Utilizamos as variveis para armazenar diferentes tipos de dados (nmeros, pa-
lavras, data etc.), como j foi mostrado antes. Para a criao de uma varivel,
deve-se dar um nome nico, que identifque o seu contedo (consulte o quadro
Recomendaes para a boa prtica).
O importante fazer corretamente as declaraes das variveis e os tipos de
dados aos quais elas pertencem, como est exemplifcado na fgura 221.
int num;
int x, y, x;
foat salario;
string nome;
string edereco, cidade, estado;
char resp;
Figura 219
Form1.Designer.cs.
Figura 221
Declaraes corretas
das variveis.
Figura 220
Form1.cs.
ATENO:
No momento da
programao,
fundamental fcar alerta
para ver onde o cdigo
ser inserido. Portanto,
identifque corretamente
o componente e o evento
que ser agregado. As
instrues bsicas de
programao sero
apresentadas, aqui,
utilizando-se o mtodo
Console Application, pois
a sua estrutura a
mesma para aplicaes
grfcas do Windows
Form Application.
tabela 13
Distribuio dos
tipos de dados.
IMPLEMENTAO TIPO
Byte
Sbyte
ushort
Short
uint
Int
ulong
long
Double
Float
Decimal
Bool
Char
Inteiro de 8 bits sem sinal (0 a 255).
Inteiro de 8 bits com sinal (-127 a 128).
Inteiro de 16 bits sem sinal (0 a 65 535).
Inteiro de 16 bits com sinal (-32 768 a 32 767).
Inteiro de 32 bits sem sinal (0 a 4 294 967 295).
Inteiro de 32 bits com sinal (-2 147 483 648 a 2 147 483 647).
Inteiro de 64 bits sem sinal (0 a 18 446 744 073 709 551 615).
Inteiro de 64 bits com sinal (-9 223 372 036 854 775 808 a 9 223 372 036 854 775 807).
Ponto utuante binrio IEEE de 8 bytes (5.0 _ 10-324 a 1.7 _ 10308),
15 dgitos decimais de preciso.
Ponto utuante binrio IEEE de 4 bytes (1.5 _ 10-45 a 3.4 _ 1038),
7 dgitos decimais de preciso.
Ponto utuante decimal de 128 bits. (1.0 _ 10-28 a 7.9 _ 1028),
28 dgitos decimais de preciso.
Pode ter os valores true e false. no compatvel com inteiro.
um nico caractere unicode de 16 bits. no compatvel com inteiro.
RECOMENDAES PARA A BOA PRTICA
Se houver mais de uma palavra, a primeira letra da segunda deve ser
maiscula:
nomeCliente
pesoMedio
idadeMaxima
Pode-se usar um prefxo para expressar, no incio da varivel, o tipo
de dado ao qual ela pertence:
strNomeCliente
foPesoMedio
intIdadeMaxima
6.2.1. alocao de memria
A alocao e a utilizao de variveis de memria podem ser realizadas de duas
maneiras: Stack (pilha) e Heap (amontoado). A diferena entre elas est na for-
ma como cada uma trata as informaes.
Stack: Nessa rea, fcam as variveis locais ou os parmetros de funes de valor
ou referncia. Sua limpeza realizada automaticamente na sada de cada funo,
usando return ou no.
I nFoRmtI Ca 4
200
CaPtulo 6
201
Heap: Aqui, fcam os valores referentes aos objetos. Isso ocorre quando uma
classe estabelecida usando o new (construtores). Caso as funes sejam encer-
radas ou ocorra um exception, a limpeza no acontece automaticamente e sim
por meio do Garbage Colletor.
6.3. operadores
Exemplos prticos para mostrar a funcionalidade dos operadores so executados
no Console Application, como j foi mencionado.
6.3.1. operadores aritmticos
Para visualizar o efeito dos operadores (indicados no quadro Aritmticos), utilize
a classe Console(), a qual, pelo mtodo WriteLine(), revela uma expresso ou
um contedo de uma varivel com a quebra de linha automtica. J o Write()
realiza a impresso sem a quebra de linha.
6.3.4. operadores de incremento e decremento
static void Main(string[] args)
{
Console.WriteLine(Verifcando os Operadores);
int x = 10;
int y = 15;
Console.WriteLine(Soma: + (x + y));
Console.WriteLine(Subtrao: + (x - y));
Console.WriteLine(Multiplicao: + (x * y));
Console.WriteLine(Diviso: + (y / x));
Console.WriteLine(Diviso (10/3): + (x / 3));
Console.WriteLine(Resto da Diviso (10/3): + (x % 3));
Console.ReadKey();
}
Figura 222
Usando o
mtodo Readkey.
ARITMTICOS
+ adio
- Subtrao
* multiplicao
/ Diviso
% Resto da diviso
RELACIONAIS
> maior que
< menor que
>= maior ou igual a
<= menor ou igual a
== Igual
!= Diferente
ARITMTICOS
+= adio Igual
-= Subtrao Igual
*= multiplicao Igual
/= Diviso Igual
%= Resto da diviso Igual
OPERADORES
++ Incremento
- - Decremento
6.3.2. operadores relacionais
6.3.3. operadores aritmticos de atribuio reduzida
Outro mtodo da classe Console() utilizado neste exemplo o Readkey(), que
permite ao programa realizar uma pausa, aguardando at que uma tecla seja
pressionada. Isso necessrio por estarmos trabalhando com uma janela DOS,
que se encerra quando o programa fnalizado (fgura 222).
Observe sua aplicao na fgura 223.
static void Main(string[] args)
{
Console.WriteLine(Operadores Reduzidos);
int x = 10;
int y = 15;
Console.WriteLine(Soma + igual: + (x += 2));
Console.WriteLine(Subtrao + igual: + ( y -= 10));
// x est com novo valor !!!
Console.WriteLine(Multiplicao + igual: + (x *= 2));
Console.WriteLine(Diviso + igual: + (x /= 2));
Console.WriteLine(Resto da Diviso + igual: + (x %=5));
Console.ReadKey();
}
Figura 223
Aplicao de
operadores aritmticos
de atribuio reduzida.
Observe sua aplicao na fgura 224.
static void Main(string[] args)
{
Console.WriteLine(Operadores Reduzidos);
int x = 10;
int y = 10;
x++;
Console.WriteLine(Incremento: + x);
y--;
Console.WriteLine(Decremento: + y);
Console.ReadKey();
}
Figura 224
Aplicao de operadores de
incremento e decremento.
I nFoRmtI Ca 4
202
CaPtulo 6
203
6.3.5. operadores lgicos
6.4. Estrutura de deciso
Assim como o Java, os controles de incio e fm de cada estrutura devero ser
controlados pelos {}. Para realizar os desvios condicionais, utilizamos a estru-
tura if() ou switch(), traduzidos como se e troca, respectivamente.
6.4.1. Condio verdadeiro if
A mesma recomendao feita para Java vale para o C#. Ou seja, quando a ins-
truo if() apresentar uma nica instruo para a sua condio, no necessrio
utilizar as chaves, que se tornam opcionais. No exemplo (fgura 228), podemos
verifcar que a varivel x maior que o valor 10, sabendo-se que o seu valor
inicial 5. E visualizamos a expresso: A varivel X maior que 10.
OPERADORES
&& and
|| or
! not
Sua aplicao ilustrada na fgura 225.
6.3.6. Converses C#
Para realizar as converses de dados, usamos os mesmos conceitos trabalhados
em Java. No entanto, dependendo da instruo adotada, o resultado obtido
poder variar. Um bom programador realiza alguns testes para verifcar qual a
melhor maneira de fazer a converso.
6.3.7. Parse
A classe Parse sempre vem precedida do tipo de dados e em seguida da varivel
ou da expresso a ser convertida (fgura 226).
Figura 225
Aplicao de
operadores lgicos.
static void Main(string[] args)
{
Console.WriteLine(Operadores Lgicos);
int a = 10;
int b = 30;
int c = 10;
int d = 25;
Console.WriteLine((a < d) && (b != c));
Console.WriteLine((a > d) || (b != c));
Console.WriteLine(! (a >= b));
Console.ReadKey();
}
int.Parse(idade);
foat.Parse(salario);
int.Parse(Console.ReadLine());
valor = Int32.Parse(numero);
teste = Int16.Parse(dado);
dt = DateTime.Parse(01/01/2010);
Figura 226
Classe Parse.
6.3.8. Convert
A classe Convert tem a sua indicao de tipo registrada aps o nome da classe,
seguido da varivel ou da expresso (fgura 227).
Convert.ToUInt16(indade);
Convert.ToDouble(salario);
Convert.ToInt16(Console.ReadLine());
valor = Convert.ToInt32(numero);
teste = Convert.ToInt16(dado);
dt = Convert.ToDateTime(01/01/2010);
Figura 227
Classe Convert.
DICA
Existe um grande nmero
de mtodos da Classe
Convert e Parse. Para
conhec-los, consulte o
Msdn .NET Frameworks
Developer Center. http://
msdn.microsoft.com/
pt-br/library/default.
aspx. Os prximos
tpicos envolvem os
conhecimentos prvios
de lgica de programao.
Caso haja dvidas, recorra
aos conceitos tratados
anteriormente.
static void Main(string[] args)
{
Console.WriteLine(Estrutura IF);
int x = 15;
if (x > 10) {
Console.WriteLine(A varivel X maior que 10);
}
Console.ReadKey();
}
Figura 228
Exemplo de instruo if().
6.4.2. Condio verdadeiro ou falso ifelse
J nesse outro exemplo (fgura 229), verifcaremos se a varivel x maior que
10 ou no, sabendo-se que o seu valor inicial 5. Ser adicionada uma ex-
presso para cada alternativa.
I nFoRmtI Ca 4
204
CaPtulo 6
205
6.4.3. Condies mltiplas if...elseif...elseif....else
Agora, verifcaremos se a varivel x possui o nmero 1, 2 ou 3, sabendo-se
que o valor inicial 3. Nesse caso, para qualquer outro valor, ser visualizada a
expresso: O valor de X TRS (fgura 230).
6.5. Estruturas de repetio usadas na linguagem
6.5.1. While()
Usando a varivel cont, para controle do loop, obtemos os nmeros de 0 a 10.
O importante em uma instruo While() a implementao de um contador
dentro da estrutura (fgura 232).
static void Main(string[] args)
{
Console.WriteLine(Estrutura IF);
int x = 5;
if (x > 10)
{
Console.WriteLine(A varivel X maior que 10);
}
else {
Console.WriteLine(A varivel X menor que 10);
}
Console.ReadKey();
}
Figura 229
Exemplo de if...else.
static void Main(string[] args)
{
Console.WriteLine(Estrutura IF);
int x = 3;
if (x ==1)
{
Console.WriteLine(O valor de X UM);
}
else if (x==2) {
Console.WriteLine(O Valor de X DOIS);
}
else if(x==3){
Console.WriteLine(O Valor de X TRS);
}
else {
Console.WriteLine(Qualquer outro valor);
}
Console.ReadKey();
}
Figura 230
Exemplo de
condies mltiplas.
6.4.4. mltiplos testes Switch()
Usando o mesmo exemplo do item anterior, a sequncia de testes realizada
com a instruo switch(). Assim, cada um ser implementado com a instruo
break para que as outras condies no sejam executadas (fgura 231). A instru-
o default est realizando a funo da instruo else do if().
Figura 231
Exemplo de mltiplos
testes Switch().
static void Main(string[] args)
{
Console.WriteLine(Estrutura SWITCH);
int x = 3;
switch (x) {
case 1:
Console.WriteLine(O valor de X UM);
break;
case 2:
Console.WriteLine(O valor de X DOIS);
break;
case 3:
Console.WriteLine(O valor de X TRS);
break;
default:
Console.WriteLine(Qualquer outro valor);
break;
}
Console.ReadKey();
}
static void Main(string[] args)
{
Console.WriteLine(Estrutura WHILE);
int cont=0;
while (cont <=10){
Console.WriteLine(Numero: + cont);
cont++;
}
Console.ReadKey();
}
6.5.2. Do While()
Nesse caso, repete-se a instruo para While(). Porm, o teste realizado no
fnal do loop. Esse tipo de estrutura permite que as instrues que esto dentro
do lao de repetio sejam executadas, no mnimo, uma vez (fgura 233).
Figura 232
Exemplo de While.
I nFoRmtI Ca 4
206
CaPtulo 6
207
6.5.3. For()
Diferente do While(), a instruo For() capaz de defnir, em uma nica linha,
a varivel e o seu tipo, bem como estabelecer a condio para a estrutura e indi-
car o contador (fgura 234).
Figura 233
Do While().
static void Main(string[] args)
{
Console.WriteLine(Estrutura DO...WHILE);
int cont=0;
do
{
Console.WriteLine(Numero: + cont);
cont++;
} while (cont <= 10);
Console.ReadKey();
}
Figura 234
Instruo for(). static void Main(string[] args)
{
Console.WriteLine(Estrutura FOR);
for(int cont=0; cont<=10; cont++)
{
Console.WriteLine(Numero: + cont);
}
Console.ReadKey();
}
6.5.4. Break e continue
As instrues break e continue podem interferir diretamente em um lao de
repetio. No prximo exemplo (fgura 235), quando a varivel cont tiver o
valor 5, o loop ser encerrado, executando a prxima instruo aps o fecha-
mento da estrutura.
Observe, na fgura 236 como fca o mesmo exemplo de quebra de loop com a
instruo break, agora dentro da instruo While().
Figura 235
Instrues break
e continue.
static void Main(string[] args)
{
Console.WriteLine(Estrutura BREAK);
int num;
for (num = 0; num < 10; num++)
{
if (num == 5){
break;
}
Console.WriteLine (O nmero : + num);
}
Console.WriteLine (Mensagem aps o lao);
Console.ReadKey();
}
Figura 236
Exemplo com break
dentro de While().
static void Main(string[] args)
{
Console.WriteLine(Estrutura BREAK);
int num=0;
while (num < 1000) {
num +=10;
if (num > 100){
break;}
Console.WriteLine(O nmero : + num);
}
Console.WriteLine (Mensagem aps o lao);
Console.ReadKey();
}
A instruo Continue fora a execuo do loop a partir do ponto em que est.
No exemplo (fgura 237), ser forada a contagem quando a varivel num
possuir o valor 100. Como resultado dessa operao, o valor 100 no ser apre-
sentado na tela.
Figura 237
Exemplo de uso
da instruo continue.
Na fgura 238, confra outro exemplo da instruo continue, agora, dentro de
uma estrutura for().
static void Main(string[] args)
{
Console.WriteLine(Estrutura CONTINUE);
int num=0;
while (num < 1000){
num += 1;
if (num == 100)
{
continue;
}
Console.WriteLine(O nmero : + num);
}
Console.WriteLine (Mensagem aps o lao);
Console.ReadKey();
}
static void Main(string[] args)
{
Console.WriteLine(Estrutura CONTINUE);
for (int num = 0; num <= 10; ++num)
{
if (num == 5){
Figura 238
Exemplo de uso da instruo
continue dentro de for().
I nFoRmtI Ca 4
208
CaPtulo 6
209
6.6. tratamento de erros / excees
Uma das tarefas mais importantes dos programadores saber realizar o trata-
mento de erros (consulte o quadro Erros mais comuns) e excees que podem
ocorrer durante a execuo de um projeto. Seja por uma operao invlida ou
at mesmo devido abertura de determinado arquivo inexistente. Para isso,
utilizamos uma estrutura bem familiar: o try-catch-fnally (j abordado ante-
riormente, quando falamos de Java).

continue;
}
Console.WriteLine(O nmero : + num);
}
Console.WriteLine (Mensagem aps o lao);
Console.ReadKey();
}
Try {
// instruo que pode gerar o erro de execuo
}
Catch
{
// o que deve ser feito se ocorrer o erro
}
Outra possibilidade incluir o fnally, o que opcional, pois ele sempre ser
executado, ocorrendo exceo ou no.
O prximo exemplo (fgura 239) mostra a converso do contedo de dois Text-
Box, transformando os dados digitados em nmeros do tipo foat. Nesse ponto,
pode ocorrer um erro, caso o usurio no digite os dados passveis de converso,
como letra ou smbolos.
Try {
// instruo que pode gerar o erro de execuo
}
Catch
{
// o que deve ser feito se ocorrer o erro
}
Finally
{
// opcional, mas executado
}
No caso da implementao do cdigo com o fnally, teramos uma instruo
ou um bloco de instrues sendo executados, independentemente da existncia
de uma exception. Ou seja, sempre ser executado o bloco do fnally, como
possvel observar na fgura 240.
Figura 239
Converso do contedo
de dois TextBox.
try
{
double var01 = double.Parse(txtLado01.Text);
double var02 = double.Parse(txtLado02.Text);
double resp = var01 * var02;
txtResp.Text = resp.ToString();
}
catch
{
MessageBox.Show(Dados Incorretos);
}
Figura 240
Implementao do
cdigo com o fnally.
try
{
double var01 = double.Parse(txtLado01.Text);
double var02 = double.Parse(txtLado02.Text);
double resp = var01 * var02;
txtResp.Text = resp.ToString();
}
catch
{
MessageBox.Show(Dados Incorretos);
}
fnally {
MessageBox.Show(Mensagem de Finalizao, Mensagem);
}
6.6.1. Exception
Quando o bloco catch{} executado, poder ser disparada uma exceo. Isso
signifca que foi gerado um cdigo de erro e uma descrio correspondente.
Cada erro possui caractersticas diferentes. Com bases nessas informaes, po-
demos especifcar o nmero do erro gerado.
ERROS MAIS COMUNS
Rede ou Internet: geralmente
por problemas de conexo
(servidor, linha etc.). Drive:
falta da unidade de disco. Path:
caminho para a localizao
de arquivos em geral.
Impressora: equipamento
no disponvel, sem tinta
ou sem papel. Componente
no instalado: falta algum
componente de software
ou est com erro de execuo.
Permisso: privilgio para acesso
de arquivos, dados ou rea
de rede. Clipboard: problema
com dados transferidos para
determinada rea.
catch (Exception objeto)
Ao modifcar o exemplo anterior, sero emitidas mensagens de erro, como mos-
tra a fgura 241.
I nFoRmtI Ca 4
210
CaPtulo 6
211
6.7. Vetores e matrizes
Vamos ver agora, na fgura 242, a forma de declarao, atribuio e acesso
aos valores para diferentes tipos de vetores e matrizes. Uma boa dica, para
essa etapa, revisar os conceitos a respeito, no tema programao em Java.
Figura 241
Emisso de
mensagens de erro.
try
{
double var01 = double.Parse(txtLado01.Text);
double var02 = double.Parse(txtLado02.Text);
double resp = var01 * var02;
txtResp.Text = resp.ToString();
}
catch (Exception erro) // erro o objeto de controle
{
MessageBox.Show(Dados Incorretos: Fornea apenas valores
numricos);
MessageBox.Show(erro.Message);
MessageBox.Show(erro.Source);
}
fnally {
MessageBox.Show(Mensagem de Finalizao, Mensagem);
}
6.8. Classes
Usando os mesmos conceitos do Java, o C# pode implementar classes espec-
fcas para programao, as quais seguem os mesmos princpios de formao e
manipulao. Para relembrar os conceitos de programao orientados a objetos,
observe o exemplo a seguir e, depois, confra a classe na fgura 243.
Uma classe chamada Carro tem atributos referentes ligados a marca, combus-
tvel e marcha e, ainda, os mtodos movimentar(), parar() e consultar(), que
representam:
Movimentar(): indica a velocidade com que o veculo deve andar.
Parar(): quando acionado, diminui em uma unidade a velocidade do veculo.
Consultar(): informa a atual velocidade do veculo.
Figura 242
Vetores e matrizes.
// vetor do tipo String
string[] j;
j = new string[2];
j[0] = seg;
j[1] = ter;
MessageBox.Show(j[0]);
string[] semana = { dom, seg, ter, qua, qui, sex };
MessageBox.Show(semana[0]);
// vetor do tipo foat
foat[] y;
y = new foat[3];
y[0] = 10.5F;
y[1] = 7.3F;
y[2] = 1.9F;
// vetor do tipo inteiro
int[] x = { 10, 5, 3 };
MessageBox.Show(x[0].ToString());

// matriz do tipo double
double[,] matriz;
matriz = new double[2,2];
matriz[0,0] = 1;
matriz[0,1] = 2;
matriz[1,0] = 3;
matriz[1,1] = 4;
MessageBox.Show(matriz[1,1].ToString());
// matriz do tipo inteiro
int[,] temp = { { 1, 4 }, { 2, 7 }, { 3, 5 } };
MessageBox.Show(temp[1, 1].ToString());
Figura 243
Diagrama de classe.
Carro
+ marca : String
+ com : String
+ marcha : int
- velocidade : int
+ movimentar (acelerao : int) : void
+ parar() : void
+ consultar() : int
I nFoRmtI Ca 4
212
CaPtulo 6
213
Observe, ento, na fgura 244, como fcaria a classe, seguindo o diagrama.
Assim como em Java, importante seguir as boas prticas de programao.
Uma delas utilizar os getters e setters. Vamos usar uma classe criada no cap-
tulo anterior para compor outro exemplo (fguras 246 e 247).
Figura 244
Como fcou a classe, de
acordo com o diagrama.
class Carro
{
// atributos da classe carro
public string marca;
public string comb;
public int marcha;
private int velocidade;
// mtodo movimentar
// recebe o valor (int) que indica a acelao do veculo
public void movimentar(int aceleracao){
velocidade += aceleracao;
}
// mtodo parar
// diminui em uma unidade toda vez que acionado
public void parar(){
if (velocidade > 0){
velocidade--;
}
}
// mtodo consultar
// retorna a velocidade do veculo
public int consultar(){
return velocidade;
}
}
Analisando o cdigo principal main(), na fgura 245, veja o que aparece.
Figura 245
Analisando o cdigo main(). static void Main(string[] args)
{
// instanciando a classe Carro
Carro objCarro = new Carro();
// atribui os valores para o OBJ
objCarro.marca = Fusca;
objCarro.comb = Querozene;
objCarro.marcha = 4;
// imprime os dados do veculo e combustivl
Console.WriteLine(Veculo: + objCarro.marca + de + objCarro.
marcha + marchas);
Console.WriteLine(Combustvel: + objCarro.comb + \n);
// inicia a movimentao do carro com velocidade 5
objCarro.movimentar(5);
// consulta a velocidade do veculo
velocidade = objCarro.consultar();
// visualiza a velocidade do veculo
Console.WriteLine(Velocidade Atual: + velocidade);
Console.ReadKey();
// aumenta a velocidade do veculo
objCarro.movimentar(5);
Console.WriteLine(Velocidade Atual: + objCarro.consultar());
Console.ReadKey();

// comea a parar o carro
// a primeira chamada diminui em 1 unidade a velocidade
objCarro.parar();
velocidade = objCarro.consultar();
Console.WriteLine(Velocidade Atual: + objCarro.consultar());
Console.ReadKey();
}
Figura 246
Classe Pessoa.
Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
cidade : String
- uf : String
- telefone : String
- celular : String
* mostrartelefones() ; void
I nFoRmtI Ca 4
214
CaPtulo 6
215
6.9. Windows Form application componentes
O tipo Windows Form Application (em portugus aplicao de formulrio
Windows), diferentemente do Console Application, permite a elaborao do
projeto para ambiente Windows, utilizando componentes fornecidos pela To-
olBox (caixa de ferramentas). Essa janela apresenta uma srie de componentes
e, cada um deles, uma variedade de propriedades que podem ser confguradas
tanto via janela, como por meio de programao. Veja, a seguir, os componentes
mais comuns para a elaborao de um projeto.
6.9.1. Form
Ao iniciar a aplicao do Form (formulrio), ser disponibilizado o Form1
(nome padro) para o desenvolvimento dos trabalhos. Esse o repositrio prin-
cipal para os nossos componentes (fgura 248). Confra os detalhes no quadro
Propriedades Form.
public class Pessoa
{
private int codigo;
private string nome;
private string endereco;
private string bairro;
private string cidade;
private string uf;
private string telefone;
private string celular;
public int setCodigo(int novoCodigo){
this.codigo = novoCodigo;
}
public int getCodigo(){
return this.codigo;
}
public String setNome(String novoNome){
this.nome = novoNome;
}
public int getNome(){
return this.nome;
}
// o get e set dever ser construdo para os demais atributos
}
Figura 247
Uso de getters e setters.
Figura 248
Form.
6.9.2. Button
O Button (boto), apresentado na fgura 249, o responsvel por grande parte
da nossa programao. Ao clicar sobre esse componente, acessamos a janela de
cdigos, na qual o primeiro evento est previamente selecionado, nesse caso
click. Isso indica que o cdigo ser executado quando dermos o clique sobre o
boto (fgura 250). Confra detalhes no quadro Propriedades Button.
Figura 249
Button.
Figura 250
Evento Click.
PROPRIEDADES FORM
name modifca o nome
text atualiza a barra de ttulo do formulrio
Backcolor Cor de fundo do formulrio
BackgroundImage Insere uma imagem como plano de fundo em um formulrio
BackgroundImagelayout ajusta a posio da imagem em relao ao formulrio
ControlBox Desativa os botes maximizar, minimizar e fechar
FormBorderStyle muda as confguraes de visualizao do formulrio
Icon Insere um cone no formulrio
maximizeBox Permite ou no ao usurio maximizar
minimizeBox Permite ou no ao usurio minimizar
Size Defne a largura e a altura do formulrio
WindowState Defne o modo como o formulrio ser aberto: maximizado, minimizado, etc.
PROPRIEDADES BUTTON
name modifca o nome
text texto para o boto
BackColor modifca a cor do boto
BackgroundImage Insere uma imagem como plano de fundo
BackgroundImagelayout ajusta a posio da imagem em relao ao boto
Visible Defne se esse boto est visvel ou no
nome do boto e evento
rea de programao
I nFoRmtI Ca 4
216
CaPtulo 6
217
6.9.3. textBox
O TextBox (caixa de texto) o componente responsvel por receber as informa-
es do usurio (fgura 251), tambm o item mais comum, pois a maioria das
entradas de dados realizada por ele. Observe detalhes no quadro Propriedades
TextBox.
Figura 251
TextBox.
PROPRIEDADES TEXTBOX
name modifca o nome
text Insere um texto predefnido
BackColor Cor de fundo da caixa de entrada
ForeColor Cor da fonte
CharacterCasing Controla a entrada do texto, mantendo as letras
em maiscula ou minscula
maxlength tamanho mximo em nmero de caracteres
PasswordChar Caractere utilizado para coletar senha
Readonly mostra o texto, mas no permite que ele seja alterado
textalign Defne se o texto deve ser colocado direita, esquerda ou centralizado
PROPRIEDADES LABEL
name modifca o nome
text Insere um texto predefnido
BackColor Cor de fundo da caixa de entrada, local onde
as informaes sero inseridas
ForeColor Cor da fonte
Font Defne a fonte do texto
PROPRIEDADES COMBOBOX
name modifca o nome
text Insere um texto no combo
DataSource Pode ser ligado a uma base de dados Datatable
Items lista de valores que o ComboBox disponibiliza ao usurio para seleo
6.9.4. label
Usamos o Label (rtulo) para inserir rtulos nos formulrios, como mostra a
fgura 252 (consulte o quadro Propriedades Label, para obter detalhes).
6.9.5. ComboBox
O ComboBox (caixa de agrupamento) permite ao usurio abrir vrias opes (f-
gura 253), assim como ocorre quando escolhemos uma fonte de letra do Micro-
soft Word. Veja mais detalhes no quadro Propriedades ComboBox, os detalhes.
Figura 252
Label.
Figura 253
ComboBox.
Figura 254
ComboBox
(carregado).
Para a insero de itens, escolha a opo Items. Uma nova caixa de dilogo
ser aberta: os itens devero ser colocados um abaixo do outro (one per line).
Aps a confrmao, teremos o ComboBox carregado com as informaes
(fgura 254).
6.9.6. listBox
Diferentemente do ComboBox, o ListBox (caixa de lista) disponibiliza
vrias opes aos usurios, porm, em forma de lista. Isso permite a
utilizao de barra de rolagem caso o nmero de opes ultrapasse o
limite da caixa da janela (figura 255). Consulte o quadro Propriedades
ListBox.
I nFoRmtI Ca 4
218
CaPtulo 6
219
Para carregar o ListBox (figura 256), use o mesmo procedimento do
ComboBox.
Figura 255
ListBox.
Figura 256
ListBox (carregado).
Figura 257
CheckBox.
PROPRIEDADES LISTBOX
name modifca o nome
DataSource Pode ser ligado a uma base de dados Datatable
Items lista de valores que o ComboBox disponibiliza ao usurio para seleo
Selectionmode Permite escolher um ou mais itens de uma s vez
PROPRIEDADES CHECKBOX
name modifca o nome
text Insere a texto da opo
CheckState Deixa a opo j selecionada
6.9.7. CheckBox
Utilizamos o controle CheckBox (caixa de seleo) para obter mltiplas opes
de resposta ou para simular um sim ou no, dependendo do escopo empre-
gado. O exemplo da fgura 257 simula um questionrio no qual o usurio deve
marcar quais linguagens de programao est estudando (consulte tambm o
quadro Propriedades CheckBox).
Para verifcar o que foi selecionado pelo usurio, devemos realizar o teste em
cada um dos elementos. Assim, implementaremos o cdigo anterior com um
boto, para verifcao dos itens selecionados, cuja sada ser uma caixa de di-
logo contendo todas as informaes selecionadas (fguras 258 a e 258 b).
Figuras 258 a e 258 b
Verifcao da caixa CheckBox.
O cdigo descrito refere-se apenas ao evento click, relacionado ao boto de ve-
rifcao (confra na fgura 259).
6.9.8. RadioButton
O RadioButton (boto de seleo) diferente do CheckBox, pois pode estabe-
lecer relaes entre si, o que possibilita fornecer mltiplas opes para que se
escolha somente uma. O exemplo ilustrado nas fguras 260 (a e b) e 261 verifca
o estado civil do usurio (confra tambm o quadro Propriedades RadioButton).
private void btnVerifcar_Click(object sender, EventArgs e)
{
string frase = Voc est estudando: ;
if (chkOpcao1.Checked == true)
frase = frase + > C#;
if (chkOpcao2.Checked == true)
frase = frase + > Visual Basic .NET;
if (chkOpcao3.Checked == true)
frase = frase + > ASP.NET;
MessageBox.Show(frase, Mensagem);
}
Figura 259
Cdigo descrito do evento
click, com a verifcao.
Figuras 260
Verifcao da opo
do RadioButton.
I nFoRmtI Ca 4
220
CaPtulo 6
221
6.9.8.1. agrupamento
Em alguns momentos, ser necessrio reunir grupos de opo usando o Ra-
dioButton. Para que os controles fquem vinculados, mas dentro de um deter-
minado grupo, devemos utilizar um container, ou melhor, uma estrutura que
permita criar tal vnculo. Selecione, ento, o componente GroupBox da aba
Containers da janela ToolBox (fgura 262). Confra, tambm, o quadro Proprie-
dades Agrupamento.
Figura 261
O detalhamento
da verifcao.
private void btnVerifcar_Click(object sender, EventArgs e)
{
string frase = Seu estado Civil :;
if (rdbCasado.Checked == true)
frase = frase + Casado;
if (rdbSolteiro.Checked == true)
frase = frase + Solteiro;
MessageBox.Show(frase, Titulo);
}
PROPRIEDADES RADIOBUTTON
name modifca o nome
text Insere a texto da opo
CheckState Deixa a opo j selecionada
PROPRIEDADES AGRUPAMENTO
name modifca o nome
text ttulo da caixa de grupo
Figura 262
Container
GroupBox.
Figura 263
RadioButton e
GroupBox.
Coloque o container no formulrio e, em seguida, o RadioButton dentro do
container, mas sem arrastar, apenas inserindo dentro do grupo (fgura 263).
6.10. Eventos
Para cada componente inserido na aplicao, incluindo o formulrio, podemos
manipular eventos distintos. O evento a forma com que a classe se manifesta
quando o usurio interage com os componentes do formulrio: com um clique,
duplo clique, passagem de mouse etc. Por exemplo, ao inserir um boto para fna-
lizar a aplicao, devemos associar o cdigo a um determinado evento, no caso, o
clique. Na fgura 264, podemos verifcar a identifcao do boto de acordo com a
atribuio do seu name e com o evento que receber a programao.
Figura 264
Eventos.
Figura 265
Para modifcao
de eventos.
Para modifcar os eventos, podemos utilizar a janela de Properties (fgura 265)
com o boto Events, semelhante a um raio.
Nome do boto indicado
na propriedade name.
Evento Listagem dos eventos
e componentes
I nFoRmtI Ca 4
222
CaPtulo 6
223
Captulo 7
Visual Basic.NET

Programao


Tipos de dados e variveis

Operadores

Estrutura de deciso

Estrutura de repetio

Tratamento de erros e excees

Vetores e matrizes

Classes

Windows Form Application - componentes

Eventos
O
Visual Basic.NET mais uma ferramenta que compe o Visual
Studio. Ele permite criar aplicativos Windows Cliente, Servi-
dor, Internet, sem a necessidade de usar outra ferramenta. Ao
trabalhar com a Plataforma .NET, os aplicativos so gerenciados e no mais
interpretados ou nativos (VB 6.0), alm de incorporar novos recursos. A Mi-
crosoft considera uma ferramenta do tipo RAD Rapid Application Develop-
ment, que possibilita o desenvolvimento rpido de aplicativos, como o prprio
nome indica em ingls.
7.1. Programao
A programao em Visual Basic, ou simplesmente VB, exige os mesmos cuida-
dos j apresentados anteriormente. importante, porm, fazer uma recordao
sucinta.
7.1.1. Console application
Valem as mesmas aplicaes em C#, nas quais teremos uma janela do tipo DOS
como resposta.
7.1.2. Windows Form application
Ao iniciarmos uma aplicao do tipo Windows Form Application, a Soluction
Explorer dever fornecer o Form1.vb (fgura 266), o qual receber a programa-
o do nosso projeto.
Figura 266
Solution Explorer VB.
Figura 267
Abas da janela Code.
Na janela de desenvolvimento (fgura 267), podemos verifcar a presena de
outro elemento j conhecido, o Form1.vb [Design], que representa o design do
projeto, e a Start Page, a pgina inicial do Visual Studio.
Na programao em VB (Form1.vb), envolvemos novamente os conceitos de
programao orientada a objeto, usando a mesma metodologia j apresen-
tada em C#, com suas classes, atributos, mtodos e o controle de eventos,
como na fgura 268.
Figura 268
Programao em VB.
7.2. tipos de dados e variveis
Os tipos de dados so tratados diretamente pelo .NET Framework. Portanto,
utilizaremos, no VB, os tipos de dados semelhantes ao C#, mas com notaes
diferentes em alguns casos (tabela 14). Siga as mesmas recomendaes especif-
cadas anteriormente.
tabela 14
Tipos de dados em VB.
TIPO IMPLEMENTAO
Byte Inteiro de 8 bits sem sinal (0 a 255)
Sbyte Inteiro de 8 bits com sinal (-127 a 128)
ushort Inteiro de 16 bits sem sinal (0 a 65 535)
Short Inteiro de 16 bits com sinal (-32 768 a 32 767)
uinteger Inteiro de 32 bits sem sinal (0 a 4 294 967 295)
Integer Inteiro de 32 bits com sinal (-2 147 483 648 a 2 147 483 647)
ulong Inteiro de 64 bits sem sinal (0 a 18 446 744 073 709 551 615)

long
Inteiro de 64 bits com sinal (-9 223 372 036 854 775 808
a 9 223 372 036 854 775 807)
I nFoRmtI Ca 4
226
CaPtulo 7
227
Single Ponto Flutuante Binrio de 4 bytes

Double
Ponto utuante binrio IEEE de 8 bytes
(5.0 x10
-324
a 1.7 _ 10308), 15 dgitos decimais de preciso

Decimal
Ponto utuante decimal de 128 bits.
(1.0 _ 10-28 a 7.9 _ 1028), 28 dgitos decimais de preciso
Boolean Pode ter os valores true e false. no compatvel com inteiro
Char um nico caractere unicode de 16 bits. no compatvel com inteiro
String at 2 bilhes de caracteres
Data 8 bytes intervalo 01/01/100 at 31/12/9999
7.2.1. atribuio DIm
Para a defnio das variveis em VB, utilizaremos a instruo DIM, o nome da
varivel e o seu tipo. Confra no exemplo ilustrado pela fgura 269.
7.2.2. Variveis globais
Podemos defnir, dentro das rotinas tendo visibilidade local, o cdigo mostrado
na fgura 270.
Dim x
Dim y As Integer
Dim nome As String
Dim endereco, cidade, estado As String
Dim md = 10
Dim salario As Double
Figura 269
Instruo DIM.
Figura 270
Cdigo para defnio.
Visibilidade
dentro da rotina
Private Sub Form1_Load()
Dim nome As String
Dim valor As Integer
nome =
valor = 0
End Sub
}
Outra alternativa fazer o mesmo dentro da classe, para que possam ser aces-
sadas por outras rotinas da mesma classe. O cdigo ilustrado na fgura 271
implementa variveis de visibilidade pblicas dentro da aplicao.
7.3. operadores
Os exemplos prticos para mostrar a funcionalidade dos operadores sero execu-
tados no Console Application.
7.3.1. operadores aritmticos
Visibilidade dentro
da rotina
Visibilidade global
Public Class Form1
Public frase As String
Public calc As Double
Private Sub Form1_Load()
Dim nome As String
Dim valor As Integer
nome =
valor = 0
End Sub
End Class
}
}
Figura 271
Cdigo implementando
variveis.
Sub Main()
Console.WriteLine(Verifcando os Operadores)
Dim x = 10
Dim y = 15
Console.WriteLine(Soma: & (x + y))
Console.WriteLine(Subtrao: & (x - y))
Console.WriteLine(Multiplicao: & (x * y))
Console.WriteLine(Diviso: & (y / x))
Console.WriteLine(Parte inteira da diviso: & (x \ 3))
Console.WriteLine(Resto da Diviso (10/3): & (x Mod 3))
Console.WriteLine(Bom & Dia & aluno)
Console.WriteLine(Quadrado de trs: & 3 ^ 2)
Console.ReadKey()
End Sub
ARITMTICOS
+ adio
- Subtrao
* multiplicao
/ Diviso
\ Diviso de um valor por outro e retorna somente
a parte inteira do resultado
mod Resto da Diviso
& Combina (concatena) Strings
^ Expoente (potncia)
RELACIONAIS
> maior que
< menor que
>= maior ou igual a
<= menor ou igual a
= Igual
<> Diferente
7.3.2. operadores relacionais
Figura 272
Exemplo de operadores
aritmticos.
I nFoRmtI Ca 4
228
CaPtulo 7
229
7.3.3. operadores aritmticos de atribuio reduzida
7.3.4. operadores lgicos
Sub Main()
Console.WriteLine(Operadores Reduzidos)
Dim x As Integer = 10
Dim y As Integer = 15
Dim frase As String = Bom
x += 2
Console.WriteLine(Soma + igual: & x)
y -= 10
Console.WriteLine(Subtrao + igual: & y)
x est com novo valor !!!
x *= 2
Console.WriteLine(Multiplicao + igual: & x)
x /= 2
Console.WriteLine(Diviso + igual: & x)
frase &= Dia!!!!
Console.WriteLine(Resto da Diviso + igual: & frase)
y ^= 2
Console.WriteLine(Potncia + igual: & y)
Console.ReadKey()
End Sub
Figura 273
Exemplo de
operadores
aritmticos de
atribuio
reduzida.
ARITMTICOS
+= adio Igual
-= Subtrao Igual
*= multiplicao Igual
/= Diviso Igual
&= Concatena Igual
^= Potncia Igual
LGICOS
and and
or or
not not
7.4. Estrutura de deciso
Para realizar os desvios condicionais, utilizamos a estrutura if() ou Select Case(),
nos formatos indicados a seguir.
7.4.1. Condio Verdadeiro if
Neste exemplo, verifcaremos se a varivel x maior do que o valor 10,
sabendo-se que seu valor inicial 5, visualizando a expresso: A varivel X
maior do que 10 (fgura 275).
Figura 274
Exemplos de
converses.
x = CInt(idade)
y = CSng(salario)
z = CInt(Console.ReadLine())
dt = CDate(01/01/2010)
7.3.5. Converses em VB.nEt
O processo de converso segue os conceitos abordados anteriormente (Java e
C#). A lista ilustrada pela fgura 274 sugere alguns exemplos de converses.
Sub Main()
Dim x As Integer = 15
If x >= 10 Ten
Console.WriteLine(A varivel X maior que 10)
Console.ReadKey()
End If
End Sub
7.4.2. Condio Verdadeiro ou Falso ifelse
Agora, verifcaremos se a varivel x maior do que 10 ou no, considerando-
se que seu valor inicial 5. Ser impressa uma expresso para cada alternativa
(fgura 276).
Figura 275
Exemplo de
verifcao
de varivel.
Figura 276
Expresses
diferentes para
cada alternativa.
Sub Main()
Dim x As Integer = 5
If x >= 10 Ten
Console.WriteLine(A varivel X maior que 10)
Else
Console.WriteLine(A varivel X menor que 10)
End If
Console.ReadKey()
End Sub
7.4.3. Condies mltiplas if...elseif...elseif....else
Verifcaremos, agora, se a varivel x possui o nmero 1, 2 ou 3, sabendo-se
que o valor inicial 03. Para outros valores, a expresso ser: A varivel X
TRS (fgura 277).
I nFoRmtI Ca 4
230
CaPtulo 7
231
7.4.4. mltiplos testes Select Case()
Usando o mesmo exemplo anterior, a sequncia de testes realizada com a ins-
truo Select Case(), a qual, dever para cada teste estar implementada junta-
mente com a instruo break (fgura 278). Assim, as outras condies no sero
executadas. A instruo Case Else realiza a funo da instruo else do if().
Figura 277
Verifcando
condies mltiplas.
Sub Main()
Dim x As Integer = 3
If x = 1 Ten
Console.WriteLine(A varivel X UM)
ElseIf x = 2 Ten
Console.WriteLine(A varivel X DOIS)
ElseIf x = 3 Ten
Console.WriteLine(A varivel X TRS)
Else
Console.WriteLine(Qualquer outro valor)
End If
Console.ReadKey()
End Sub
7.5. Estrutura de repetio
Vamos conhecer agora as estruturas de repetio utilizadas na linguagem.
7.5.1. While()
Usando a varivel cont para controle do loop, sero visualizados os nmeros
de 0 at 10. O importante em uma instruo While() a implementao de
um contador dentro da estrutura (fgura 279).
Figura 278
Mltiplos testes.
Sub Main()
Dim x As Integer = 3
Select Case x
Case 1
Console.WriteLine(O valor de X UM)
Case 2
Console.WriteLine(O valor de X DOIS)
Case 3
Console.WriteLine(O valor de X TRS)
Case Else
Console.WriteLine(Qualquer outro valor)
End Select
Console.ReadKey()
End Sub
Figura 279
Instruo While().
Sub Main()
Console.WriteLine(Estrutura WHILE)
Dim cont As Integer = 0
While (cont <= 10)
Console.WriteLine(Numero: & cont)
cont = Cont + 1
End While
Console.ReadKey()
End Sub
7.5.2. Do While()...loop
Representa a mesma estrutura da instruo anterior (fgura 280).
Figura 280
Instruo
Do While()...Loop.
Private Sub Form1_Load()
Dim cont = 0
Do While (cont <= 10)
MsgBox(Numero: & cont)
cont = cont + 1
Loop
End Sub
7.5.3. Do...loop until
Vale a mesma instruo anterior, mas, nesse caso, o teste realizado no fnal
do loop (fgura 281). Esse tipo de estrutura permite que as instrues dentro do
lao de repetio sejam executadas, no mnimo, uma vez.
Figura 281
Teste no fm
do Loop.
Sub Main()
Console.WriteLine(Estrutura WHILE)
Dim cont As Integer = 0
Do
Console.WriteLine(Numero: & cont)
cont = cont + 1
Loop Until cont >= 10
Console.ReadKey()
End Sub
7.5.4. For
Diferentemente da instruo While(), a instruo For capaz de defnir, em
uma nica linha, a varivel e o seu tipo, bem como estabelecer a condio para
a estrutura e indicar o contador (fgura 282).
7.5.5. For...Step
Contar de 0 a 10, mostrando o resultado. No entanto, dessa vez o contador
ser incrementado de 2 em 2 (fgura 283).
I nFoRmtI Ca 4
232
CaPtulo 7
233
Figura 282
Instruo For.
Sub Main()
For x = 0 To 10
Console.WriteLine(Nmero: & x)
Next
Console.ReadKey()
End Sub
Figura 283
Instruo For...Step. Sub Main()
For x = 0 To 10 Step 2
Console.WriteLine(Nmero: & x)
Next
Console.ReadKey()
End Sub
7.6. tratamento de erros e excees
Nas verses anteriores do Visual Basic, o tratamento de erro era controlado
pela instruo On error go to, ainda mantido por questes de compatibi-
lidade. Porm, prefira utilizar o try-catch-finally, que possui as mesmas
caractersticas estudadas anteriormente, mas com mudanas em suas linhas
de programao, como podemos verificar no exemplo a seguir:
Try
instrues que podem gerar o erro de execuo
Catch
o que deve ser feito se o erro ocorrer
Finally
opcional, mas executado
End Try

Assim, como nas outras linguagens (Java e C#), podemos capturar os valores
de erros:

Catch erro As DivideByZeroException

No prximo exemplo, a estrutura Try foi organizada para verificar se existe
erro no momento da converso de dados das variveis (figura 284).
7.7. Vetores e matrizes
Vamos agora conhecer a forma de declarao, atribuio e acesso aos valores
para diferentes tipos de vetores e matrizes (fgura 285). Uma sugesto para con-
solidar o conhecimento fazer uma pesquisa especfca sobre vetores e matrizes
de Lgica de Programao e Programao em Java. H muita informao dispo-
nvel, no apenas na bibliografa, como tambm em sites de busca.
Try
Dim var01, var02, resp As Double
var01 = CDbl(TextBox1.Text)
var02 = CDbl(TextBox2.Text)
resp = var01 * var02
TextBox3.Text = resp
Catch erro As DivideByZeroException
MsgBox(Dados Incorretos)
Finally
MsgBox(Mensagem de fnalizao, Mensagem)
End Try
Figura 284
Verifcao de erro
na converso de
dados das variveis.
vetor de string
Dim j(2) As String
j(0) = seg
j(1) = ter
MsgBox(j(0))
vetor de string
Dim semana() As String = {dom, seg, ter, qua, qui, sex}
MsgBox(semana(0))
vetor tipo Single
Dim y(3) As Single
y(0) = 10.5
y(1) = 7.3
y(2) = 1.9
MsgBox(y(1))
vetor tipo Inteiro
Dim x() As Integer = {10, 5, 3}
MsgBox(x(2))
matriz tipo double
Dim matriz(2, 2) As Double
matriz(0, 0) = 1
matriz(0, 1) = 2
matriz(1, 0) = 3
matriz(1, 1) = 4
Figura 285
Formas de declarao
de vetores e matrizes.
I nFoRmtI Ca 4
234
CaPtulo 7
235
MsgBox(matriz(1, 1))
matriz tipo inteiro
Dim temp(,) As Integer = {{1, 4}, {2, 7}, {3, 5}}
MsgBox(matriz(1, 1))
7.8. Classes
Usando os mesmos conceitos de Java, o Visual Basic pode implementar classes
especfcas para programao, as quais seguem os mesmos princpios de forma-
o e manipulao, incluindo os getters e setters.
7.9. Windows Form application componentes
Da mesma forma que em C#, a janela ToolBox conta com vrios componentes para
o desenvolvimento de aplicaes em VB. Para os componentes apresentados a seguir,
utilize as mesmas descries de propriedades mencionadas no captulo 6.
7.9.1. Form
Quando a aplicao iniciar, aparecer o Form1 (nome padro) utilizado para o
desenvolvimento dos trabalhos. Trata-se do principal repositrio para os com-
ponentes, como mostra a fgura 286.
Figura 286
Form.
Figura 287 a e b
Button.
Figura 288
Evento Click.
Figura 289
TextBox.
Figura 290
Label.
Figura 291
ComboBox.
7.9.3. textBox
o componente que recebe as informaes do usurio, como ilustra a
figura 289.
7.9.4. label
O Label usado para inserir rtulos nos formulrios (fgura 290).
Nome do boto e evento
7.9.5. ComboBox
O ComboBox permite abrir uma cortina de opes ao usurio (fgura 291).
Para a insero de itens, uma nova caixa de dilogo ser aberta e os itens deve-
ro ser colocados um abaixo do outro (one per line). Aps a confrmao de tal
execuo, teremos o ComboBox carregado com as informaes (fgura 292).
7.9.2. Button
O Button (fgura 287 a e b) o responsvel por grande parte da programao.
Ao clicar nele, acessamos a janela de cdigos na qual o primeiro evento, click,
est previamente selecionado (fgura 288).
Figura 292
ComboBox
carregado.
I nFoRmtI Ca 4
236
CaPtulo 7
237
7.9.6. listBox
O ListBox tambm disponibiliza vrias opes aos usurios, s que so abertas
com barra de rolagem (fgura 293).
Figura 293
ListBox.
Figura 294
ListBox carregado.
Figura 295
CheckBox.
Figura 296
Verifcao da
caixa CheckBox.
Para carregar o ListBox (figura 294), use o mesmo procedimento do
ComboBox.
7.9.7. CheckBox
Assim como no C#, vamos utilizar o CheckBox para indicar mltiplas
opes ou questes de sim ou no. O exemplo da figura 295 o mesmo
utilizado em C#.
A fgura 296 mostra como fazer a verifcao de seleo por meio de um boto.
O cdigo descrito na fgura 297 referente apenas ao evento click, o qual est
relacionado ao boto de verifcao.
Figura 297
Cdigo referente apenas
ao evento click.
Private Sub btnVerifca_Click()
Dim frase As String
frase = Voc est estudando:
If chkOpcao1.Checked = True Ten
frase = frase + > C#
End If
If chkOpcao2.Checked = True Ten
frase = frase + > Visual Basic .NET
End If
If chkOpcao3.Checked = True Ten
frase = frase + > ASP.NET
End If
MsgBox(frase, , Mensagem)
End Sub
7.9.8. RadioButton
Vamos utilizar o mesmo exemplo do C# e solicitar ao usurio a escolha do esta-
do civil (fgura 298 e, com detalhes, na fgura 299).
Figura 298
Verifcando a opo
do RadioButton.
Figura 299
Detalhes da opo
do RadioButton.
Dim frase As String
frase = Seu estado Civil :
If rdbCasado.Checked = True Ten
frase = frase + Casado
End If
If rdbSolteiro.Checked = True Ten
frase = frase + Solteiro
End If
MsgBox(frase, , Mensagem)
End Sub
I nFoRmtI Ca 4
238
CaPtulo 7
239
7.9.8.1. agrupamento
Use um container para realizar o agrupamento dos componentes RadioButton,
assim como no mesmo exemplo de C# (fgura 300). Confra, em seguida, o
quadro Propriedades RadioButton.
Figura 300
Agrupamento.
PROPRIEDADES RADIOBUTTON
name modifca o nome
text ttulo da caixa de grupo
7.10. Eventos
Existe uma maneira muito fcil de controlar os eventos em VB. Na parte supe-
rior da janela de Code, como mostra a fgura 301, aparecem todos os componen-
tes inseridos no formulrio, incluindo o prprio formulrio.
Clique para abrir o combo de opes (fgura 302), franqueando o acesso aos
componentes.
Figura 303
Eventos.
Figura 302
Componentes
acionados.
Figura 301
Componentes.
Na outra extremidade da janela Code, h a lista de todos os eventos disponveis
para o componente (fgura 303). Ao escolher um deles, automaticamente uma
rea de cdigo ser criada, para onde o cursor ser deslocado.
I nFoRmtI Ca 4
240
CaPtulo 7
241
Captulo 8
ASP.NET

Aplicao ASP.NET


Eventos

HTML Server Controls


e Web Server Controls

Sesses em ASP.NET

Dados via URL


A
SP.NET uma plataforma de desenvolvimento usada para a cons-
truo de aplicaes Web e Web Service, as quais sero executadas
por um servidor, que, nesse caso, o IIS (Internet Information
Service servio de informao de Internet) da Microsoft. No se trata apenas
de uma tecnologia de desenvolvimento, mas de um conjunto de ferramentas que
permite a integrao entre servidores Microsoft, segurana, cdigo compilado,
e acesso a bancos de dados via ADO.NET e ao .NET Framework, bem como
suporte total ao XML.
8.1. aplicao aSP.nEt
Uma aplicao ASP.NET constituda por trs partes (fgura 304):
Contedo: arquivos do tipo Web Forms, HTML, imagens, udio e vdeo, que
determinam a aparncia de uma aplicao Web.
Lgica: arquivos executveis e script, que determinam como uma aplicao res-
ponder s aes dos usurios.
Confgurao: via arquivos WebConfg e CSS , que determinam como a apli-
cao vai ser executada.
Um dos principais caminhos para criar uma interface entre o usurio e a aplicao
ASP.NET o Web Form, cuja parte executvel armazenada em um assembly
(.dll), porm, executada no servidor e controlada por um work process (asp-
net_wp.exe). Funciona em parceria com o IIS, que inicia a execuo do ASP.NET
(aspnet_wp.exe) carregando o assembly do Web Form, o qual, por sua vez, cons-
tri a resposta para o usurio de acordo com sua requisio e envia uma resposta
no formato HTML (fgura 304).
Como ilustra a fgura 304, partir da ao do usurio, o navegador cria a requi-
sio de uma pgina Web ou ativa um determinado servio. Isso faz com que a
parte lgica da pgina entre em ao. A resposta ser no formato HTML, devi-
damente confgurada como, por exemplo, a forma grfca que ser apresentada
ao usurio (formatao).
8.1.2. Web Form
Um Web Form pode conter os seguintes componentes: Server Controls (con-
troles de servidor): TextBox, Label e Button, que permitem controlar e res-
ponder a determinados eventos do servidor. HTML Controls (controles de
HTML): TextArea, Table e Image, que representam os elementos padres do
HTML. Data Controls (controles de dados): SqlConnection, SqlCommand,
OleDbConnection, OleDbCommand e DataSet, que fornecero mecanismos
para manipulao de arquivos XML e conexo com bancos de dados (SQL).
System Components (componentes de sistema): EventoLog, Message Queue e
FileSystemWatcher, os quais permitem manipular eventos do servidor.
8.1.3. Projeto Web application (aplicao Web)
Para iniciar uma Web Application, escolha, em Project Types, Visual Basic, e
depois a opo Web na template ASP.NET Web Application (fgura 305). No
OIIS umconjunto integrado
de servios de rede para a
plataformaWindows, criado
pela Microsoft. Sua primeira
verso surgiu comoWindows
NTServer 4 e passou por
vrias atualizaes.
Averso de 2009 o IIS 7.5
(disponvel noWindows Server
2008 R2 eWindows 7). Uma
de suas caractersticas mais
utilizadas a gerao de
pginas HTML dinmicas,
que, diferentemente de outros
servidores web, funciona com
tecnologia proprietriaASP
(Active Server Pages, pginas
de servidor ativas), mas tambm
pode usar outras tecnologias com
a adio de mdulos de terceiros.
Para ter acesso a essa ferramenta,
necessrio adquirir licena de
uso. E para cada instalao ou
verso exigido umpagamento.
Depois do lanamento da
plataforma .NET em2002,
o IIS ganhou tambma funo
de gerenciar oASP.NET, formado
basicamente por dois tipos
de aplicaes: Pginas Web
(acessadas por usurios com
a extensoASPX) eWebServices
(funes disponibilizadas
pela rede, chamadas
de aplicativos ASMX).
Figura 304
Funcionamento de
um Web Service.
Figura 305
Aplicao ASP.NET.
I nFoRmtI Ca 4
244
CaPtulo 8
245
se esquea de indicar o nome da Solution, que, nesse caso, ExemploWeb, e o
local em que ela ser gravada.
Analisando a Solution Explorer, novos arquivos sero disponibilizados para apli-
cao em ASP, como o Default.aspx. A descrio visual de um Web Form que,
uma vez ativado, permite visualizar na janela Code as opes Design, Split e
Source (fgura 306). Elas permitem modifcar a janela de desenvolvimento den-
tro de trs opes: design; design e cdigo, e cdigo. Alm disso, possibilita o
controle das tags de marcao.
8.1.4. Ciclo de vida da aplicao
Uma aplicao Web comea no momento em que o navegador faz a requisi-
o na sua pgina principal. Inicialmente, executa o assembly (.dll), criando
uma instncia do Web Form. Essa, por sua vez, responder requisio do
usurio no formato HTML, sendo destruda posteriormente. Caso o usurio
no realize nenhuma requisio, a instncia poder ser excluda depois de um
determinado tempo.
8.1.5. Executando uma application Service (Servio de aplicao)
Execute uma Application Service da mesma forma que faz em um Windows
Form Application. Dessa vez, porm, no teremos a aplicao rodando como
anteriormente, mas sim uma porta lgica que ser criada para o servidor IIS.
O navegador padro da mquina ser ativado para mostrar a aplicao, con-
forme ilustra a fgura 307. Podemos observar que aparece na URL a expresso
localhost, indicando que o servio est operando como um servidor local. O
nmero que surge aps essa expresso representa a porta lgica da mquina, o
qual no padro e poder ser modifcada a cada execuo.
Toda e qualquer modifcao no cdigo dever ser gravada por meio da atualiza-
o da pgina e poder ser visualizada posteriormente. Para isso, basta pressionar
a tecla F5. Caso seja usado o boto break, a janela do navegador ser fechada.
8.1.6. Escrevendo a aplicao
Assim como nas aplicaes em C# ou VB.NET, podemos utilizar a ToolBox
para arrastar os componentes usados no desenvolvimento do layout da pgina
Web. Para isso, preciso mudar a viso para Design (fgura 308).
Se preferir ir diretamente ao cdigo, mude para Source, escreva e grave o seu
cdigo e verifque o resultado fnal no navegador (fguras 309 a e b).
<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Untitled Page</title>
</head>
<body>
<form id=form1 runat=server>
<div>
Minha Primeira Pgina em ASP</div>
</form>
</body>
</html>
Figura 306
WebForm.
Figura 307
Servidor em
Execuo.
Figura 308
ToolBox para
Aplicao Web.
Figura 309a
Verifcando o
resultado fnal.
Figura 309b
Minha primeira
aplicao.
I nFoRmtI Ca 4
246
CaPtulo 8
247
8.1.7. Estruturando uma pgina aSP.nEt
Antes, as pginas em ASP utilizavam as tags <%...%> para a incluso do script,
como podemos constatar no cdigo ilustrado na fgura 310.
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<title>Exemplo em ASP 3.0</title>
</head>
<% response.write(now()) %>
<body>
</body>
</html>
O resultado pode ser visto na fgura 311. Lembre-se de executar o cdigo usan-
do o IIS (localhost).
Dessa forma, as tags marcadoras do ASP eram colocadas onde se desejava que
o cdigo aparecesse. Elas fcavam misturadas com o HTML, gerando um c-
digo de difcil leitura e manuteno, que foi batizado de cdigo espaguetti. O
ASP.NET eliminou esse problema, utilizando os Server controls, ou seja, tags
que podem ser interpretadas diretamente pelo servidor e esto divididas em trs
categorias de Server Controls.
<% Tempo.InnerText = Now()%>
<body>
<p id=Tempo runat=server></p>
</body>
</html>
A tag <p> tornou-se um controle do servidor. Sua identifcao foi representada
pelo atributo id, que permitir futuras referncias por meio do cdigo execut-
vel, permanecendo agora fora do HTML.
8.1.7.2. Web Server Controls
So semelhantes ao HTML Server Controls, pois agem como parte de um cdi-
go HTML. No entanto, so independentes e podem ser utilizados em aplicaes
interativas, o que signifca que eles englobam servios como, por exemplo, a
programao de eventos. Isso porque dispem de componentes de calendrio,
gridview, treeview, entre outros. Os Web Server Controls so mais complexos
que o HTML Server Controls e devem iniciar com <asp:.../>, como mostra o
cdigo ilustrado pela fgura 313.
<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Exemplo em ASP - VB</title>
</head>
<% Tempo.Text = Now()%>
<body>
<p></p><asp:label id=Tempo runat=server/></p>
</body>
</html>
8.1.7.3. Validation Server Controls
Se voltarmos ao conceito das tags em HTML, lembraremos que o grande pro-
blema era o controle de entrada de dados, ou seja, aquilo que o usurio poderia
digitar ou no. Pois os controles de validao do servidor (validation server con-
trols) permitem justamente validar essas entradas e ainda exibem mensagens.
Cada controle executa uma validao especfca, aps uma ao do usurio por
meio de controle Button, ImageButton, ou LinkButton.
8.2. Eventos
Para que o cdigo seja executado no momento correto, podemos utilizar os
manipuladores de evento. O cdigo seguinte determinar o momento em que a
verifcao da data/hora dever ser lida no servidor (fgura 314). O manipulador
Figura 310
Uso de tags
<%...%>.
Figura 311
Execuo do ASP.
HTML Server Controls
(Controles de servidor
HTML): tags HTML
tradicionais.
Web Server Controls
(Controles de servidor
Web): novas tags ASP.
NET.
Validation Server
Controls (Controles de
servidor de validao):
validao da entrada
de dados.
Figura 312
Tags com incluso
de atributo
runat=server.
Figura 313
Cdigo com uso
de <asp:.../>.
8.1.7.1. Html Server Controls
So tags HTML padro, criadas a partir da incluso de um novo atributo
runat=server. Veja o exemplo no cdigo mostrado na fgura 312.
<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Exemplo em ASP - VB</title>
</head>
I nFoRmtI Ca 4
248
CaPtulo 8
249
realizar uma sub-rotina quando determinado evento ocorrer. No exemplo an-
terior, o evento Page_Load executado quando uma pgina carregada.
<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Exemplo em ASP - VB</title>
</head>
<script runat=server>
Sub Page_Load(Sender As Object,E As EventArgs)
Tempo.Text = Now()
End Sub
</script>
<body>
<p><asp:label id=Tempo runat=server/></p>
</body>
</html>
8.3. Html Server Controls e Web Server Controls
A construo de uma pgina Web poder ser feita de duas formas: por meio do
HTML Server Controls ou do Web Server Controls. Isso depende diretamente
dos componentes da Toolbox. No existe regra para se utilizar um ou outro.
Porm, recomendvel optar pelo HTML Controls, em caso de migrao do
ASP para o ASP.NET. J o Web Controls indicado para situaes em que os
componentes precisam de mais funcionalidade, pois ele permite a programao
e incorporao de recursos do Framework.
8.3.1. Html Server Controls
O exemplo ilustrado pelas fguras 315 a e b mostra uma entrada simples de login
e senha.
<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Exemplo em ASP - VB</title>
</head>
<body>
<p id=lblLogin>rea Restrita - Usando Web Control</p>
<p>Login:
<input id=txtLogin type=text /></p>
<p id=lblSenha>
Senha:
<input id=pwdSenha type=password /></p>
<p>
<input id=btnEnviar type=button value=Enviar />
&nbsp;&nbsp;&nbsp;&nbsp;
<input id=btnCancelar type=button value=Cancelar /></p>
</body>
</html>
Assim como ocorreu em C# e VB.NET, a janela de Properties dever ser utili-
zada para ajustes e identifcao dos componentes (fgura 316).
Figura 314
Verifcao de
data e hora.
Figura 315a
Usando Server
Control.
Figura 315b
Detalhamento do uso
do Server Control.
Figura 316
Janela Properties.
8.3.2. Web Server Controls
Usando o mesmo exemplo do item anterior, agora com o Web Server Controls,
podemos verifcar que no existe mudana de layout (fguras 317 a e b).
I nFoRmtI Ca 4
250
CaPtulo 8
251

<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Exemplo em ASP - VB</title>
</head>
<body>
<form id=form1 runat=server>
<p id=lblLogin>rea Restrita - Web Service Controls</p>
Login:
<asp:TextBox ID=TextBox1 runat=server></asp:TextBox>
<p>
Senha:
<asp:TextBox ID=TextBox2 runat=server></asp:TextBox>
</p>
<asp:Button ID=btnEnviar runat=server Text=Enviar />
&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Button ID=btnCancelar runat=server Text=Cancelar />
</form>
</body>
</html>
8.4. Sesses em aSP.nEt
Em alguns momentos, ser necessrio deixar um valor disponvel para
toda aplicao. Isso fcil quando se trata de programao para ambien-
te Windows, como o VB.NET. Mas, no caso de uma aplicao Web, te-
mos que utilizar os recursos das variveis de sesso, ou seja, defnir uma
chave e atribuir um valor para ela. As sesses so criadas pelo comando
Session(), que identifca as variveis criadas pelo programador. Exemplo:
Session(aula) = ASP.NET
Session(data) = Now()

Aps a defnio da palavra-chave da sesso, ser determinado o seu valor. A
recuperao dos dados ser feita da mesma forma, identifcando a palavra-chave.
No exemplo da fgura 318, vamos criar as duas variveis mencionadas e recupe-
r-las aps o clique do boto.
Ao clicarmos no boto Enviar, os itens referentes a Estamos vendo uma aula de:
e Horrio: sero preenchidos de acordo com o cdigo mostrado na fgura 319.

<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Session em ASP.NET</title>
</head>
<script runat=server>
Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
Session(aula) = ASP.NET
Session(data) = Now()
End Sub
Protected Sub btnEnviar_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
Mostrar1.Text = Session(aula)
Figura 317a
Web Server Controls.
Figura 317b
Detalhamento do
login e senha.
Figura 318
Tela antes de pressionar
o boto Enviar.
Figura 319
Preenchendo itens.
I nFoRmtI Ca 4
252
CaPtulo 8
253
Mostrar2.Text = Session(data)
End Sub
</script>
<body>
<form name=formulario runat=server>
Visualizando variveis tipo Session<br />
<br/>
<asp:Button ID=btnEnviar runat=server Text=Enviar
onclick=btnEnviar_Click /><br/>
<br/> Estamos vendo uma aula de:
<asp:Label ID=Mostrar1 runat=server Text=></asp:Label>
<br/>Horrio:
<asp:Label ID=Mostrar2 runat=server Text=></asp:Label>
</form>
</body>
</html>
As variveis de sesso foram criadas no evento Page_Load e a recuperao
dos valores ocorrer quando o evento btnEnviar_Click for acionado (figu-
ra 320).
No cdigo principal, podemos verifcar somente a criao das chaves (fgura 322).
<html xmlns=http://www.w3.org/1999/xhtml >
<head id=Head1 runat=server>
<title>Session em ASP.NET</title>
</head>
<script runat=server>
Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
Session(aula) = ASP.NET
Session(data) = Now()
End Sub
</script>
<body>
<form id=Form1 name=formulario runat=server>
Visualizando variveis tipo Session<br />
<br/>
<asp:linkbutton runat=server PostBackUrl=Recuperar.
aspx>Prxima Pgina</asp:linkbutton>
</form>
</body>
</html>
De acordo com o cdigo mostrado no quadro anterior, o link aponta para um
arquivo chamado Recuperar.aspx, que dever mostrar o contedo da sesso.
Aps o clique no boto, observe o resultado (fgura 323).
<html xmlns=http://www.w3.org/1999/xhtml >
<head id=Head1 runat=server>
<title>Session em ASP.NET</title>
</head>
<script runat=server>
Figura 320
Varivel Session
carregada.
Figura 321
Link para
visualizao.
Figura 322
Cdigo principal com
criao das chaves.
Figura 323
Resultado aps
o clique no boto.
8.4.1. Recuperando sesso em outra pgina por meio de um evento
Depois que uma sesso foi criada, podemos recuperar os valores em outra pgi-
na. Vamos utilizar o exemplo anterior e dividi-lo em duas pginas a primeira
para criao da sesso e a segunda para visualizao. Na primeira, vamos retirar
o boto e incluir um link para que o usurio seja direcionado para a prxima
pgina (fgura 321).
I nFoRmtI Ca 4
254
CaPtulo 8
255
Protected Sub btnEnviar_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
Mostrar1.Text = Session(aula)
Mostrar2.Text = Session(data)
End Sub
</script>
<body>
<form id=Form1 name=formulario runat=server>
Clique no Boto Para Recuperar os Dados:<br />
<br/>
<asp:Button ID=btnEnviar runat=server Text=Enviar
onclick=btnEnviar_Click /><br/>
<br/> Estamos vendo uma aula de:
<asp:Label ID=Mostrar1 runat=server Text=></asp:Label>
<br/>Horrio:
<asp:Label ID=Mostrar2 runat=server Text=></asp:Label>
</form>
</body>
</html>
8.4.2. Recuperando sesso em outra pgina automaticamente
importante que as variveis de sesso sejam recuperadas automaticamente,
para que possam ser utilizadas nas pginas subsequentes. Vamos utilizar o cdi-
go do exemplo anterior e eliminar o boto para visualizao (fguras 324 a e b).
Mostrar2.Text = Session(data)
End Sub
</script>
<body>
<form id=Form1 name=formulario runat=server>
<br/> Estamos vendo uma aula de:
<asp:Label ID=Mostrar1 runat=server Text=></asp:Label>
<br/>Horrio:
<asp:Label ID=Mostrar2 runat=server Text=></asp:Label>
</form>
</body>
</html>
8.5. Dados via uRl
Outro mecanismo para transportar informaes de uma pgina Web para outra
o URL (Uniform Resource Locator ou localizador de recurso universal). Pode-
se utilizar o seguinte artifcio: aps o nome do arquivo que receber as infor-
maes, digite o sinal de interrogao ? e indique as variveis e seus respectivos
contedos. Se houver mais de uma varivel, separe com o sinal de &, como no
exemplo seguinte:
Menu.aspx?op=1
Menu.aspx?op=1&nome=Jos&cod=3456
Para receber as informaes, usaremos o comando Request.QueryString() no
evento Page_Load da pgina que receber os dados, indicando o nome da
varivel que se deseja recuperar. A fgura 325 mostra um exemplo de menu de
opes.
Figura 324a
Recuperao direta.
<html xmlns=http://www.w3.org/1999/xhtml >
<head id=Head1 runat=server>
<title>Session em ASP.NET</title>
</head>
<script runat=server>
Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
Mostrar1.Text = Session(aula)
Figura 324b
Eliminado o boto
para visualizao.
Uma URL o endereo
de um recurso (um arquivo,
uma impressora, etc.)
disponvel em uma rede,
seja internet, rede
corporativa ou intranet.
A URL tem a seguinte
estrutura: protocolo://
mquina/caminho/recurso.
O protocolo poder ser
HTTP, FTP, entre outros.
O campo mquina indica
o servidor que disponibiliza
o documento ou recurso
designado. E o caminho
especifca o local
(geralmente em um
sistema de arquivos)
onde se encontra o
recurso dentro do servidor.
Figura 325
Menu de opes.
I nFoRmtI Ca 4
256
CaPtulo 8
257
No cdigo que estamos utilizando como exemplo, encontramos para cada link a
identifcao do arquivo e o valor a ser transferido via URL (fgura 326).
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0
Transitional//EN http://www.w3.org/TR/xhtml1/DTD/
xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Menu de Opes</title>
</head>
<body>
<form id=form1 runat=server>
<div>
<b>Escolha uma Opo de Menu </b> <br />
<asp:LinkButton ID=lnkOpcao01 runat=server
PostBackUrl=Menu.aspx?op=1>Opo 01</asp:LinkButton><br />
<asp:LinkButton ID=lnkOpcao02 runat=server
PostBackUrl=Menu.aspx?op=2>Opo 02</asp:LinkButton><br />
<asp:LinkButton ID=lnkOpcao03 runat=server
PostBackUrl=Menu.aspx?op=3>Opo 03</asp:LinkButton><br />
</div>
</form>
</body>
</html>
No arquivo Menu.aspx, teremos como resposta a indicao da opo escolhida
pelo usurio (fgura 327).
No cdigo (fgura 328), a funo Request.QueryString() realizar a captura da
varivel no evento Load_Page e carregar a frase no controle Label, de acordo
com a escolha do usurio.
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitio-
nal//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.
dtd>
<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>menu de Opes - Escolha</title>
</head>
<script runat=server>
Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
Dim opcao = Request.QueryString(op)
Select Case opcao
Case 1
Escolha.Text = Opo UM selecionada
Case 2
Escolha.Text = Opo DOIS selecionada
Case 3
Escolha.Text = Opo TRS selecionada
End Select
End Sub
</script>
<body>
<form id=form1 runat=server>
<asp:Label ID=Escolha runat=server Text=></asp:Label>
</form>
</body>
</html>
Figura 326
Identifcao de arquivo
e valor a transferir.
Figura 327
Opo escolhida
via menu.
Figura 328
Captura da
varivel no evento
Load_Page.
I nFoRmtI Ca 4
258
CaPtulo 8
259
Captulo 9
ADO.NET

DataSet


DataReader

Objetos para banco de dados

Mtodos de conexo

Consideraes nais

Referncias bibliogrcas

Glossrio
I
ntegrado plataforma .NET, o ADO.NET uma tecnologia de acesso a
banco de dados. Suas diversas classes permitem acesso a plataformas como
SQL Server, MySQL, Oracle, Sybase, Access, XML e arquivos textos. Es-
sas conexes podem ser realizadas de trs maneiras: OLE DB , SQL e ODBC.
Criado para trabalhar no formato desconectado, o ADO.NET faz a conexo
com a base de dados por meio de um objeto DataAdapter (SqlDataAdapter
e OleDbDataAdapter), aumentando, assim, o seu desempenho. Alm disso, o
ADO.NET possui o objeto DataSet, que a representao mais prxima do
banco de dados. Ele carrega na memria vrias tabelas representadas pelo objeto
DataTable, alm de permitir o relacionamento entre as tabelas por meio do obje-
to DataRelation. Os provedores de dados que acompanham o ADO.NET pos-
sibilitam a utilizao de vrias classes que interagem diretamente com a base de
dados, as quais so identifcadas por um prefxo, conforme mostra a tabela 14.
Caso seja necessrio utilizar outros sistemas gerenciadores de banco de dados,
voc pode consultar o seu desenvolvedor a respeito dos servios de conexo,
como o MySQL e PostgreSQL. Para cada provedor de conexo, teremos os obje-
tos representados a partir de seu prefxo da seguinte forma: OleDbConnection,
SqlConnection, OdbcConnection, OleDbCommand e SqlCommand. Para ter-
mos uma viso geral dos mecanismos de conexo, observemos a fgura 329, que
mostra toda a estrutura.
Os principais pacotes utilizados pelo ADO.NET so:
System.Data: contm as classes que representam tabelas, colunas, linhas e
tambm a classe DataSet de todos os provedores, alm das interfaces IDb-
Command, IDbConnection, e IDbDataAdapter, que so usadas por todos
os provedores de conexo;
System.Data.Commom: defne as classes para os provedores de dados Db-
Connection e DbDataAdapter;
System.Data.OleDb: fonte de dados Ole Db usando o provedor .NET
OleDb;
System.Data.Odbc: fonte de dados ODBC usando o provedor .NET
ODBC;
System.Data.SqlTypes: dados especfcos para o SQL Server.
Alm disso, o ADO.NET oferece classes referenciadas:
Disconnected: fornece classes capazes de armazenar dados sem a depen-
dncia da fonte de dados de determinado provedor. Por exemplo, DataTable.
Shared: classes que podem ser acessadas por todos os provedores;
Data Providers: classes utilizadas em diferentes fontes de dados para ge-
renciamento.
tabela 14
Provedores de
conexo.
ODBC Data Provider
API Prexo: Odbc
OleDb Data Provider
API Prexo: OleDb
Oracle Data Provider
API Prexo:Oracle
SQL Data Provider
API Prexo:Sql
Geralmente usada para banco
de dados mais antigos que utilizam
a interface ODBC
Conexo do tipo OleDb, como o
Access ou Excel
Para implementao de Banco de
Dados Oracle
Para implementao de Banco de
Dados Microsoft SQL Server
ProveDor DeSCrIo
Figura 329
Estrutura geral.
I nFoRmtI Ca 4
262
CaPtulo 9
263
9.1. DataSet
O objeto recordset (ADO), que armazena somente uma coleo de tabelas,
tem desvantagens em relao ao DataSet, que faz parte do System.Data. O
DataSet controla uma cpia do banco de dados, representando um conjunto
de informaes em memria cach que no esto conectadas com o banco
de dados do sistema. Baseado em XML e independente da fonte de dados,
o DataSet pode armazenar vrias verses das tabelas. Apesar de trabalhar
no formato desconectado, o DataSet possui mecanismos que do suporte ao
modelo conectado. Entre os mtodos disponveis, podemos destacar alguns
mostrados na tabela 15.
9.3. objetos para banco de dados
Uma das grandes vantagens do ADO.NET so os recursos oferecidos pelos ob-
jetos de manipulao de dados.
9.3.1. objeto Datatable
O objeto DataTable pode representar uma ou mais tabelas de dados, as quais
permanecem alocadas em memria. Pode ser manipulado por meio de mtodos,
como mostra a tabela 17.
FieldCount
IsClosed
Read
Close
Nmero de colunas da linha de
dados atual
Verica se o objeto DataReader
est fechado
Avana para o prximo registro
Fecha o objeto
mtoDoS DeSCrIo
Columns
Rows
PrimaryKey
NewRow
Copy
TableName
Clear
Representa as colunas da tabela
Linhas da tabela
Chave primria
Cria uma nova linha de dados
Faz uma cpia da estrutura e dos dados
da tabela
Dene o nome da tabela
Limpa dos dados da tabela
mtoDoS DeSCrIo
Tables Uma coleo de tabelas que
armazenam os dados atuais a serem
manipulados
ColeeS DeSCrIo
AcceptChanges
Clear
Clone
Copy
GetChanges
GetXmlSchema
Reset
Grava todas as alteraes
para o DataSet
Remove todas as linhas das tabelas
Faz uma cpia da estrutura,
mas no copia os dados
Faz uma cpia da estrutura
e dos dados
Retorna uma cpia do DataSet
com apenas as colunas alteradas
Retorna uma representao XML
da estrutura de um DataSet
Reverte o DataSet ao seu
estado original
mtoDoS DeSCrIo
tabela 15
DataSet.
tabela 16
DataReader.
tabela 17
DataTable.
9.2. DataReader
O DataReader permite acessar e fazer a leitura do banco de dados, percorrendo
os registros de forma sequencial por meio do objeto command. Esses registros
sero lidos posteriormente pelo DataReader. Diferentemente do DataSet, o Da-
taReader no oferece acesso desconectado e no permite alterar ou atualizar a
fonte de dados original. Ele possibilita apenas o acesso rpido de leitura. Entre
os mtodos, podemos destacar os que aparecem na tabela 16.
I nFoRmtI Ca 4
264
CaPtulo 9
265
9.3.2. objeto DataView
As operaes de pesquisa, ordenao e navegao pelos dados podem ser feitas
por meio do DataView, que permite a ligao da fonte de dados com a interface
do usurio. Portanto, utilizamos um DataView para visualizar as informaes
contidas em DataTable. Uma vantagem possuir vrios DataViews para a mes-
ma DataTable. A tabela 18 ilustra algumas das propriedades do DataView.
SQL Server: Classe SqlConnection
OLE DB: Classe OleDbConnection
As principais propriedades da Classe Connection podem ser observados na ta-
bela 19.
RowFilter
Item
Sort
Addnew
Table
Delete
Find
Retorna a expresso usada para
ltrar os dados
Captura uma linha de dados
especca da tabela
Ordena os dados por meio
de uma coluna
Adiciona uma nova linha
Dene qual DataView ser visualizada
Exclui linhas de um DataView
Busca uma linha de informaes
mtoDoS DeSCrIo
ConnectionString
DataBase
DataSource
State
Contm a string de conexo
Retorna o nome do banco de dados
Retorna o nome da instncia do banco
de dados
Retorna o estado atual de conexo:
Broken, Closed, Connecting, Executing,
Fetching e Open
mtoDoS DeSCrIo
tabela 18
DataView.
Figura 330
Objeto connection
especfco.
9.4.2. Exemplo genrico de conexo
O cdigo mostrado na fgura 332, escrito em C#, representa os passos necess-
rios para a conexo de uma base de dados SQL Server. A partir desse ponto, as
operaes com o banco de dados j podem ser realizadas.
Incluindo os namespace
using System.Data
using System.Data.SqlClient
Montando a string de conexo
// defnindo isoladamente cada componente da conexo
string servidor = localhost
string username = usuario
string senha = db2009conect
string banco = papelaria
// contruindo a ConnectionString
string ConnectionString = Data Source= + servidor + ;
ConnectionString += User ID= + username + ;
ConnectionString += Password= + senha + ;
ConnectionString += Initial Catalog= + banco;
tabela 19
Connection String.
Figura 332
Cdigo
representando
passos para conexo.
9.4. mtodos de conexo
O primeiro passo para realizar a conexo criar o objeto Connection por meio
de uma string de conexo. Isso permitir que o objeto Command receba e exe-
cute instrues SQL no formato de parmetros. Quando o objeto Command
realizar o retorno dos dados, deve-se criar um objeto DataAdapter, que preen-
cher um objeto DataSet ou DataTable.
9.4.1. objeto Command
A funo do Command fazer a ligao com um banco de dados especfco.
Por isso, esse objeto deve conter informaes necessrias para que a conexo
seja estabelecida, indicando o caminho do banco, usurio, senha etc. Como foi
mencionado anteriormente, cada provedor possui um objeto connection espe-
cfco (fgura 330).
I nFoRmtI Ca 4
266
CaPtulo 9
267
Criando uma instncia do objeto Connection
SqlConnection SQLConnection = new SqlConnection();
Realizando a conexo
SQLConnection.ConnectionString = ConnectionString;
SQLConnection.Open();
Outra forma de fazer essa conexo est representada no cdigo mostrado na
fgura 333.
SqlConnection conexao = new SqlConnection(Data
Source=(localhost);Initial Catalog=papelaria; User ID=usuario;Passwor
d=db2009conect);
9.4.2.1. Implementando a leitura de dados
Ainda seguindo o exemplo anterior, vamos elaborar uma estrutura mais com-
pleta de conexo e implementar os cdigos para leitura dos dados (fgura 334).
using System;
using System.Data;
using System.Data.SqlClient;
class ExemploConexao
{
static void Main()
{
// criando a linha de conexo
SqlConnection conexao = new SqlConnection(Data
Source=(localhost);Initial Catalog=papelaria; User ID=usuario;Passwor
d=db2009conect);
// defnindo um DataReader Nullo
SqlDataReader drExemplo = null;
// Abre o banco de dados
conexao.Open();
// Cria a linha de comando
SqlCommand comando = new SqlCommand(select * from Cliente,
conexao);
// Executa a leitura dos dados
drExemplo = comando.ExecuteReader();
// faz a leitura dos dados
while (drExemplo.Read())
{
// imprime o primeiro campo da tabela
Console.WriteLine(drExemplo[0]);
}
// fecha o DataReader
drExemplo.Close();
// fecha a conexo com o banco
conexao.Close();
}
}
Para obter mais colunas, podemos utilizar o comando da forma como sugerida
na fgura 335.
Console.WriteLine(drExemplo[0]);
Console.WriteLine(drExemplo[1]);
Console.WriteLine(drExemplo[2]);
Ou indicar o nome da coluna da qual se pretende obter a informao (fi-
gura 336).
Console.WriteLine(drExemplo[codigo]);
Console.WriteLine(drExemplo[nome]);
Console.WriteLine(drExemplo[usurname]);
Ao usar os mtodos ligados base de dados, importante verifcar se a conexo
foi efetivamente aberta, se no ocorreu nenhum erro e fech-la no fnal. O pro-
cedimento evita problemas de desempenho. Portanto, recomendvel realizar
os tratamentos de erro (Try).
9.4.3. Conexo com VB.nEt
Seguindo o mesmo princpio do item anterior, vamos fazer uma conexo com
uma base de dados Access, porm, usando o VB.NET como plataforma de
conexo.
9.4.3.1. Base de dados
Por meio do Access 2007, criamos a base de dados mostrada na fgura 337 e
inclumos alguns dados fctcios, para os testes iniciais. O nome do banco de
dados Usuarios e o da tabela, operadores. A chave primria o cam-
po cod_ID de numerao automtica. O objetivo desse banco cadastrar o
nome de login dos usurios.
Figura 333
Outra forma de
realizar conexo.
Figura 334
Estrutura mais
completa de
conexo.
Figura 335
Como obter mais
colunas.
Figura 336
Indicando o nome
da coluna.
I nFoRmtI Ca 4
268
CaPtulo 9
269
9.4.3.2. Criando o Form
Em uma Solution do tipo Windows Form Application, foi criado para o Visual
Basic o layout que pode ser visto na fgura 338.
O layout muito simples. Inclumos um Button com o nome de btnListar e
uma ListBox chamada de lstUsers. Veja, na fgura 339, como fca a descrio
dos componentes.
Public Class frmBancoDados
Private Sub btnListar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnListar.Click
Dim conexao As New OleDbConnection()
conexao.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=D:\Usuarios.mdb
Dim comando As OleDbCommand = conexao.CreateCommand
comando.CommandText = Select * from operadores
conexao.Open()
Dim leitor As OleDbDataReader = comando.ExecuteReader()
Try
Dim linha As String = Usurio:
While leitor.Read()
Dim reg As Integer
For reg = 0 To leitor.FieldCount - 1
linha = linha & - & leitor.Item(reg)
Next
lstUsers.Items.Add(linha)
linha = Usurio:
End While
leitor.Close()
conexao.Close()
Catch erro As Exception
MsgBox(No foi possvel realizar a operao, Erro)
End Try
End Sub
End Class
A estrutura de conexo que usa o Visual Basic, com banco de Dados Access,
semelhante ao cdigo desenvolvido no item anterior, que adota C# e SQL Server.
9.4.3.4. utilizando uma Datatable
Para visualizar os dados, vamos melhorar um pouco mais a nossa estrutura.
Eliminamos o ListBox do exemplo anterior e colocamos um DataGrid em seu
lugar, como mostra a fgura 341.
Figura 337
Descrio da tabela e
contedo.
Figura 338
Layout do Form.
Figura 339
Nome dos
componentes.
Figura 340
Registros diferentes
para cada linha.
Figura 341
DataGrid.
9.4.3.3. Inserindo o cdigo
O cdigo inserido no boto Listar dever fazer a leitura de todos os dados con-
tidos na tabela e inseri-los numa ListBox. Assim, haver um registro diferente
em cada linha do ListBox (fgura 340 ).
I nFoRmtI Ca 4
270
CaPtulo 9
271
No exemplo a seguir, vamos indicar passo a passo a construo do DataTable
para visualizao em um DataGrid.
Defnindo um DataTable (dtMinhaTabela), com o nome de MinhaTabela.
Dim dtMinhaTabela As DataTable = New DataTable(MinhaTabela)
Defnidos dois objetos para controlar coluna e linha do DataTable.
Dim dtColuna As DataColumn
Dim dtLinha As DataRow
Aps a defnio do objeto para coluna, devemos construir a coluna, ou seja,
indicar a sua nomenclatura e o tipo de dado que ela conter.
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Login
dtMinhaTabela.Columns.Add(dtColuna)
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Nome
dtMinhaTabela.Columns.Add(dtColuna)
Se utilizarmos o mtodo Read(), sero carregadas as informaes, assim como
ocorreu no exemplo anterior.
While leitor.Read()
dtLinha = dtMinhaTabela.NewRow
dtLinha(Login) = leitor.Item(0)
dtLinha(Nome) = leitor.Item(1)
dtMinhaTabela.Rows.Add(dtLinha)
End While
Com o DataTable carregado, vamos vincul-lo a um DataSet.
Dim dtMinhaDataSet As DataSet = New DataSet()
dtMinhaDataSet.Tables.Add(dtMinhaTabela)
Finalmente, carregamos o DataSet para dentro do DataGrid.
dtMinhaTabela.SetDataBinding(dtMinhaDataSet, MinhaTabela)
Os comandos anteriores representam somente a criao do DataTable. O cdigo
completo fcar como se apresenta na fgura 342.
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb
Public Class frmBancoDados
Private Sub btnListar_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnListar.Click
Dim conexao As New OleDbConnection()
conexao.ConnectionString = Provider=Microsoft.Jet.
OLEDB.4.0;Data Source=D:\Usuarios.mdb
Dim comando As OleDbCommand = conexao.CreateCommand
comando.CommandText = Select * from operadores
conexao.Open()
Dim dtMinhaTabela As DataTable = New DataTable(MinhaTabela)
Dim dtColuna As DataColumn
Dim dtLinha As DataRow
montando as colunas
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Login
dtMinhaTabela.Columns.Add(dtColuna)
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Nome
dtMinhaTabela.Columns.Add(dtColuna)
inserindo os dados
Dim leitor As OleDbDataReader = comando.ExecuteReader()
While leitor.Read()
dtLinha = dtMinhaTabela.NewRow
dtLinha(Login) = leitor.Item(1)
dtLinha(Nome) = leitor.Item(2)
dtMinhaTabela.Rows.Add(dtLinha)
End While
Figura 342
O cdigo
completo.
I nFoRmtI Ca 4
272
CaPtulo 9
273
inclui a tabela no dataset
Dim dtMinhaDataSet As DataSet = New DataSet()
dtMinhaDataSet.Tables.Add(dtMinhaTabela)
vincula o dataset1 ao datagrid1
dtgMinhaTabela.SetDataBinding(dtMinhaDataSet, MinhaTabela)
End Sub
End Class
9.4.3.4.1. Visual do DataGrid
Para melhorar o visual do DataGrid, clique na seta existente no canto superior
do DataGrid (fgura 343) e escolha a opo AutoFormat.
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Login
dtColuna.ReadOnly = True
dtMinhaTabela.Columns.Add(dtColuna)
Isso impede que o usurio faa novas incluses. Como as colunas so montadas indi-
vidualmente, podemos determinar qual vai ser o procedimento adotado em cada uma,
assim como foi feito com a coluna login, deixando a alterao de dados ativa ou no.
Podemos, ainda, utilizar o mtodo Unique para informar se o valor da coluna nico
ou no (fgura 346). Isso signifca que o mtodo no permite que o valor registrado em
uma coluna seja inserido novamente na mesma coluna em outro registro.
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Nome
dtColuna.ReadOnly = False
dtColuna.Unique = True
dtMinhaTabela.Columns.Add(dtColuna)
9.4.4. utilizando um DataView
O DataView permite estabelecer uma ligao com a interface de usurio por meio
do DataBinding, no qual podemos realizar operaes como pesquisa, navegao,
fltro, etc. O DataView retorna os dados contidos em um DataTable. possvel que
haja vrios DataView, que, alis, no podem ser considerados tabelas. O exemplo da
fgura 347 mostra dois Datagrid e dois botes. No primeiro DataGrid, carregado
o contedo da tabela; no segundo, ser um DataView, ordenado por nome.
A conexo com o banco de dados ser feita de maneira diferente, para que seja
possvel avaliar outra forma de conexo com o DataSet. Nesse caso, todas as
variveis relacionadas conexo com o banco de dados sero defnidas dentro
da classe, para que tenham visibilidade global (fgura 348).
Figura 343
Menu DataGrid.
Figura 344
Formatando Layout
DataGrid.
Na opo Formats, teremos vrios tipos de layout. Escolheremos um deles e
confrmaremos com o boto OK (fgura 344).
Figura 345
Incluso do mtodo
ReadOnly como True.
9.4.3.5. travando colunas
As colunas do DataGrid esto disponveis para que o usurio possa realizar
modifcaes diretamente na janela de dados. Se no quiser que isso seja pos-
svel, inclua o mtodo ReadOnly como True, como mostra o cdigo ilustrado
na fgura 345.
Figura 346
Utilizao do
mtodo Unique.
Figura 347
Construo de
um DataView.
I nFoRmtI Ca 4
274
CaPtulo 9
275
Dim conexao As String = Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\Usuarios.mdb
Dim comando As String= Select * from operadores
Dim adpTabela As New OleDbDataAdapter(comando, conexao)
Dim dsTabela1 As New DataSet()
Dim dsTabela2 As New DataSet()
Assim, teremos: conexo: varivel que possui as informaes de provedor, ca-
minho e nome do banco; comando: armazena a string referente instruo
SQL a ser executada inicialmente; adptabela: cria um objeto Adapter usando
as variveis comando e conexo; dstabela1 e dstabela2: representa os objetos
DataSet(), um para cada DataGrid do formulrio.
O boto referente opo Carregar dever conter o cdigo mostrado na
fgura 349.
dtgLista.CaptionText = Listagem de Operadores
adpTabela.Fill(dsTabela1, operadores)
dtgLista.DataSource = dsTabela1
dtgLista.DataMember = operadores
importante observar os conceitos abaixo:
dtgLista.CaptionText: atribui o nome no DataGrid (dtgLista).
adpTabela.Fill: preenche o objeto Adpter (adpTabela.Fill).
dtgLista.DataSource: atribui o DataSet (dstabela1) no DataGrid (dtgLista).
dtgLista.DataMember: associa a tabela ao DataGrid (dtgLista).
No segundo boto, referente ordenao dos dados via campo nome, obser-
vamos o que ilustra a fgura 350.

dtgOrdenado.CaptionText = Listagem de Operadores
adpTabela.Fill(dsTabela2, operadores)
Dim dvTabela As New DataView(dsTabela2.Tables(operadores))
dvTabela.Sort = nome
dtgOrdenado.DataSource = dvTabela
A diferena do DataView em relao ao DataSet (dsTabela2) est na ordenao
(.Sort) por meio do campo nome. O cdigo completo fcar como ilustra a
fgura 351. Como resultado, surgir o layout mostrado na fgura 352.
Imports System.Data.OleDb
Public Class frmExemplos
Dim conexao As String = Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\Usuarios.mdb
Dim comando As String = Select * from operadores
Dim adpTabela As New OleDbDataAdapter(comando, conexao)
Dim dsTabela1 As New DataSet()
Dim dsTabela2 As New DataSet()
Private Sub btnCarregar_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnCarregar.Click
dtgLista.CaptionText = Listagem de Operadores
adpTabela.Fill(dsTabela1, operadores)
dtgLista.DataSource = dsTabela1
dtgLista.DataMember = operadores
End Sub
Private Sub btnOrdeNome_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnOrdeNome.Click
dtgOrdenado.CaptionText = Listagem de Operadores
adpTabela.Fill(dsTabela2, operadores)
Dim dvTabela As New DataView(dsTabela2.Tables(operadores))
dvTabela.Sort = nome
dtgOrdenado.DataSource = dvTabela
End Sub
End Class
Figura 348
Variveis defnidas
dentro da classe.
Figura 349
Cdigo do boto da
opo Carregar.
Figura 350
Boto da ordenao
dos dados.
Figura 351
O cdigo completo.
Figura 352
Utilizao
do DataView.
9.4.5. Conectando com aSP.nEt
Podemos realizar a incluso de DataGrid ou do GridView, utilizando Wizard
(passo-a-passo) fornecedido pelo componente. Nos exemplos anteriores, realiza-
mos a conexo por meio do Visual Basic e do C#. Agora, faremos a conexo com
I nFoRmtI Ca 4
276
CaPtulo 9
277
o banco via ASP.NET. O primeiro passo criar um projeto tipo Visual Basic e
um template Web Aplication. No modo Design, ser adicionado o componente
SqlDataSource (fgura 353).
Nesse ponto, ser possvel realizar um teste de conexo com o banco de dados,
usando o boto Test Connection. Se estiver tudo OK, aparecer uma mensa-
gem de confrmao (fgura 356).
Aps o teste de conexo, fnalize a tela clicando em OK. Retorne janela an-
terior. Podemos disponibilizar a Connection String, como mostra a fgura 357.
No guia do componente, escolha a opo confgure, conforme a fgura 354.
Figura 353
Componente
SqlDataSource.
Figura 354
Confgurao do
SqlDataSource.
Figura 355
Localizao do banco
de dados.
O prximo passo ser criar a nova conexo usando o boto New Connection.
Aparecer uma segunda janela, na qual poderemos indicar o nome e o local
onde se encontra a base de dados (fgura 355).
Figura 356
Testando a conexo.
Figura 357
Visualizando
a String de
conexo.
Na continuao do processo, ser confrmada a conexo (fgura 358).
Figura 358
Confrmando a
ConnectionString.
I nFoRmtI Ca 4
278
CaPtulo 9
279
Uma nova janela ser aberta para a criao da instruo SQL inicial. Obser-
vando a janela de confgurao podemos verifcar o nome da tabela, quais os
campos a serem visualizados e a confgurao das clusulas Where e Order By.
Na parte inferior da janela, nota-se a montagem da linha SQL (fgura 359).
Finalizado o processo, possvel realizar o teste da Query com o banco de
dados, conforme a fgura 360.
Agora, podemos ver (fgura 361) o cdigo que foi implementado automaticamente.
<asp:SqlDataSource ID=SqlDataSource1 runat=server
ConnectionString=<%$ ConnectionStrings:ConnectionString %>
ProviderName=<%$ ConnectionStrings:ConnectionString.Provider-
Name %>
SelectCommand=SELECT * FROM [operadores]></
asp:SqlDataSource>
O prximo passo ser a incluso de um GridView, como mostra a fgura 362.
Figura 359
Confgurando o SqL.
Figura 360
Teste do SqL
(query).
Figura 362
GridGrid View.
Figura 361
O cdigo
implementado
automaticamente.
A partir da opo Choose Data Source, podemos apontar o SqlDataSource
(fgura 363).
Figura 363
Selecionando o
DataSource.
Finalizada essa operao, o cdigo seguinte ser o que mostra a fgura 364.
<asp:GridView ID=GridView1 runat=server
AutoGenerateColumns=False
DataKeyNames=cod_ID DataSourceID=SqlDataSource1>
<Columns>
<asp:BoundField DataField=cod_ID HeaderText=cod_ID
InsertVisible=False
Figura 364
Concluda a
operao de
selecionar o
DataSource.
I nFoRmtI Ca 4
280
CaPtulo 9
281
ReadOnly=True SortExpression=cod_ID />
<asp:BoundField DataField=login HeaderText=login
SortExpression=login />
<asp:BoundField DataField=nome HeaderText=nome
SortExpression=nome />
</Columns>
</asp:GridView>
O layout ainda no foi formatado, mas j possvel verifcar o resultado pelo navega-
dor (fgura 365). Nos campos destinados aos nomes aparecem os ttulos da coluna.
E todos os dados so disponibilizados conforme composio da instruo SQL.
Figura 365
Visualizao da Tabela.
Consideraes fnais
O objetivo dos autores deste livro permitir que alunos e profssionais da rea de
informtica possam ingressar no ramo da programao e desenvolvimento de sof-
tware. Por isso, foram abordados aspectos de lgica de programao e programa-
o orientada a objetos e apresentadas as estruturas bsicas de programao como
HTML, Java, C#, VB.NET e ASP.NET, que podem ser aplicadas nas plataformas
desktop e Web. O livro a ponta de um iceberg no que diz respeito a comandos
e recursos de programao. Compete ao aluno a busca incessante pelo aprimora-
mento das tcnicas de programao. Portanto, seguem abaixo algumas dicas.
Trabalhar a lgica de programao essencial. Por isso, a prtica dever ser
contnua.
Pesquisar sempre em livros especializados, revistas tcnicas ou at mesmo
na internet novas tecnologias e recursos que a linguagem pode oferecer e
procurar aplic-las.
Manter-se atualizado, pois as linguagens de programao esto sempre se
renovando e novas verses so lanadas a todo o momento.

Aos leitores, alunos ou profssionais da rea, boa sorte e sucesso na rea escolhida.
Referncias bibliogrfcas
FORBELLONE, Andr. Lgica de Programao - A Construo de Algoritmos
e Estruturas de Dados. 3 edio. So Paulo: Ed. Makron Books, 2005.
LEISERSON, Charles E., STEIN, Cliford, RIVEST, Ronald L. e CORMEN,
Tomas H. Algoritmos: Teoria e Prtica. Rio de Janeiro: Ed. Campus, 2002.
RAY, Eric T. Aprendendo XML. Rio de Janeiro: Ed. Campus, 2001.
FURGERI, Srgio. Ensino Didtico da Linguagem XML. So Paulo: rica,
2001.
HOLZNER, Steven. Desvendando XML. Rio de Janeiro: Campus, 2001.
MARCONDES, Christian Alfm. Programando em HTML 4.0. 7. edio.
So Paulo: rica, 2002
I nFoRmtI Ca 4
282 283
Glossrio Glossrio
B
backbones (espinhas dorsais) linhas de transmisso tronco, conectadas a ro-
teadores de alta capacidade.
backup cpia de segurana de arquivos e confguraes de um computador.
badblock (bloco ruim) falhas causadas por perda do poder magntico de algu-
ma rea na parte magntica do disco.
barramento (Bus) circuito integrado que faz a transmisso fsica de dados de
um dispositivo a outro. Ele formado por vrias linhas ou canais, como se fos-
sem fos eltricos, que transmitem sinais eltricos tratados como bits.
BIOS (Basic Input Output System ou sistema bsico de entrada/sada) sof-
tware com a funo de reconhecer, confgurar e iniciar os dispositivos do com-
putador, e ainda de iniciar o sistema operacional. Ao ligar o computador, os
primeiros sinais que voc v na tela so da interface do BIOS.
bit menor poro de informao possvel em informtica. Um nico bit repre-
senta somente duas informaes, 0 ou 1.
bluetooth tecnologia que permite comunicao simples e segura entre apare-
lhos eletroeletrnicos.
blu-ray formato criado em 2008 para as empresas que queriam gravar seus fl-
mes em mdias mais seguras contra pirataria e que pudessem armazenar imagens
de alta resoluo. A leitura nesse caso por meio de um feixe de raio laser de cor
azul-violeta com comprimento de onda de 405 nanmetros, diferente da tecno-
logia do CD/DVD, cujo raio vermelho, com comprimento de onda de 605nm.
BMP terminao usada para o formato Bitmap, que signifca mapa de bits. Nesse
tipo de representao, cada ponto da imagem associado a um valor (no caso, o bit).
boot o termo (bota) empregado em informtica em analogia ao chute, o
pontap inicial do sistema operacional.
browsers (navegadores) programa que possibilita ao usurio ter acesso aos
recursos da rede.
BTX (Balanced Tecnology Extended ou tecnologia balanceada estendida)
padro de gabinete com o objetivo de padronizar placas-me de menor tamanho
e tambm aumentar a refrigerao, facilitando a passagem do ar. A tendncia
que este formato substitua o ATX.
bufer rea usada para armazenar dados, utilizada sempre que o computador
precisa ler dados de uma fonte que no tenha velocidade de transmisso constante.
bug problema de lgica surgido durante a execuo de um aplicativo ou siste-
ma computacional.
byte tambm chamado de octeto, o byte formado por 8 bits.
A
ACL (Acess Control List ou lista de controle de acesso) confgurao criada
para defnir regras para que os usurios da rede local acessem a internet.
ADO.NET integrado plataforma .NET, o ADO.NET uma tecnologia de
acesso a banco de dados.
AJAX acrnimo para a expresso em ingls Asynchronous Javascript And
XML, que pode ser traduzido por Javascript e XML Assncrono, o nome dado
utilizao metodolgica de Javascript e XML para fazer com que as pginas
web se tornem mais interativas.
anti-spywares softwares usados para eliminar programas maliciosos.
antivrus software usado para eliminar virus de computador.
API (Application Programming Interface ou interface de programao de aplica-
tivos) conjunto de rotinas e padres estabelecidos por um software para o uso de
suas funcionalidades por programas aplicativos que no se envolvem em detalhes da
implementao do programa, apenas precisam de seus servios, ou seja, os progra-
madores podem utilizar esses recursos sem precisar saber como foram desenvolvidos.
APM (Advanced Power Management ou gerenciamento avanado de energia)
controle que faz com que o BIOS pea fonte para desligar o computador,
aps o sistema operacional ter sido descarregado.
arquitetura de rede conjunto de camadas e protocolos de uma rede.
ASCII sigla para American Standard Code for Information Interchange ou c-
digo padro americano para troca de informaes, uma tabela de codifcao
de caracteres baseada no alfabeto ingls.
ASP (de Active Server Pages ou pginas de servidor ativo) plataforma da Mi-
crosoft usada para o desenvolvimento de aplicaes web.
ASP.NET plataforma de desenvolvimento usada para a construo de aplicaes
Web e Web Service, as quais sero executadas por um servidor, que, nesse caso, o IIS
(Internet Information Service ou Servio de Informao de Internet) da Microsoft.
AT(AdvancedTecnology) padro de gabinete utilizado nos primeiros PCs da IBM.
ATA tecnologia que permite que os dados armazenados em discos rgidos, para se-
rem utilizados pelo processador, sejam total ou parcialmente carregados para a me-
mria e transmitidos da memria para o disco, depois de serem alterados, ou criados.
ATAPI tecnologia que permite que os dados armazenados em discos rgidos, para
serem utilizados pelo processador, sejam total ou parcialmente carregados para a me-
mria e transmitidos da memria para o disco, depois de serem alterados, ou criados.
ATX (Advanced Tecnology Extended ou tecnologia avanada estendida)
padro de gabinete desenvolvido pela Intel em 1995, em substituio ao AT.
I nFoRmtI Ca
286
GloSSRI o
287
D
cooler (dissipador de calor) dispositivo, tambm chamado de fan ou ventoi-
nha, que ajuda a manter a temperatura bem abaixo da mxima admissvel e,
assim, conservar o processador.
CPD Centro de Processamento de Dados, nome obsoleto atualmente.
CPU (Central Processing Unit ou unidade central de processamento) refere-
se ao microprocessador, e no ao gabinete como um todo, e sua funo proces-
sar as instrues enviadas.
CRT (Catodic Ray Tube ou tubo de raios catdicos) tecnologia usada para mo-
nitores com tubo.
CSS sigla para Cascading Style Sheets ou estilo de pginas em cascata.
Data Base Administrator (DBA ou administrador de banco de dados) profs-
sional que conhece profundamente as ferramentas de administrao de banco
de dados para utiliz-las de maneira efciente.
deb pacotes de software do Debian, distribuio Linux da qual derivou o Ubuntu.
debugger (depurador) tem a funo de permitir ao usurio acompanhar a
execuo do programa, visualizando os resultados em tempo real, em busca de
possveis erros de lgica.
desktop rea de trabalho.
DIMM (Dual In-line Memory Module ou mdulo de memrias em linha dupla)
mdulo de memria formado pelos chips de memria encapsulada e soldados
um ao lado do outro sobre os dois lados de uma placa de circuito impresso.
disco fexvel foppy-disk ou disquete.
disco rgido o HD o jeito popular de nos referirmos ao HDD (Hard Disc
Drive ou unidade de disco rgido), tambm conhecido como winchester, nome
de uma tecnologia de fabricao antiga de discos rgidos.
disquete (foppy-disk) o nome disco fexvel refere-se ao fato de o dispositivo
ser de plstico, que pode ser magnetizado.
distribuio para o sistema Linux nunca se fala em verso, e sim em distribui-
o. As verses se aplicam a sistemas operacionais como o Windows.
DMA tecnologia implementada nas placas-me que faz com que a transmisso
de dados entre o disco rgido e outras interfaces, como memria, placa de rede,
outros discos, etc. seja direta, sem sobrecarregar o processador.
DML (Data Manipulation Language ou linguagem de manipulao de dados)
decorre do fato de os nveis de abstrao no se aplicarem somente defnio
ou estruturao de dados, mas tambm sua manipulao.
C
C# considerada como a mais importante linguagem de desenvolvimento da
Microsoft dentro da Plataforma .NET Framework.
C letra que representa a unidade de disco utilizada pelo sistema operacional.
Representa tambm a linguagem de programao criada por Dennis Ritchie,
como base ao desenvolvimento do sistema operacional UNIX (escrito em As-
sembly originalmente).
C++ linguagem de programao de alto nvel desenvolvida por Bjarne
Stroustrup. Desde os anos 1990, uma das linguagens comerciais mais po-
pulares, mas disseminada tambm na academia por seu grande desempenho
e base de utilizadores.
cache considerada memria primria, ou principal, devido a velocidade de
acesso aos dados do processador.
CD A sigla signifca Compact Disc, ou disco compacto, e foi introduzida no
mercado em 1985 pela Sony e pela Philips.
CD-R CD que pode ser gravado, como indica o sufxo R (de Recordable ou
gravvel), porm aceita somente uma gravao.
CD-ROM O CD leva a sigla ROM para indicar que somente para leitura
(Read-Only Memory ou memria apenas de leitura).
CD-RW esse formato (RW remete a Rewritable ou regravvel) permite gravar,
apagar e gravar novamente vrias vezes no mesmo CD.
chaves em um modelo relacional, designam o conceito de item de busca,
ou seja, um dado que ser empregado nas consultas base de dados. Tipos
de chaves em um modelo relacional primrias, candidatas, secundrias e
estrangeiras.
chips circuitos integrados.
CI (Circuito Integrado) componente capaz de realizar somente um determina-
do tipo de operao, com determinada quantidade de dados.
clusters blocos em que os setores do disco so divididos.
CMOS chip responsvel por armazenar confguraes sobre os HDs instalados
e seus tamanhos, data e hora, e vrias outras informaes.
cdigo fonte texto escrito segundo as regras de determinada linguagem de
programao.
compilador software que tem a funo de traduzir o cdigo fonte desenvolvido
pelo programador em um software que possa ser executado diretamente pelo
usurio, ou seja, voc escreve todo cdigo fonte e depois pede para o compilador
convert-lo em um programa.
I nFoRmtI Ca
288
GloSSRI o
289
F
fotogrfcas, pen-drive, celulares e/ou outros dispositivos.
EPROM sigla para Erasable Programmable Read Only Memory (Erasable de
apagvel) memria que pode ser regravada.
estabilizador equipamento de proteo para as variaes na voltagem que
ocorrem normalmente no fornecimento de energia eltrica e podem causar fa-
lhas nos equipamentos ou diminuir sua vida til.
Ext tipo de sistema de arquivos no sistema operacional Linux, assim como o
ReiserFS, o XFS, o JFS, o GSF e o OCFS2. O Ext o padro da maioria das
distribuies, geralmente na verso Ext2 e Ext3.
Ext2(secondextendedflesystemousegundosistemaextendidodearquivos) sis-
tema de arquivos que era o mais comum nas distribuies e que deu origem ao Ext3.
Ext3 (third extended fle system ou terceiro sistema extendido de arquivos)
sistema de arquivos no Linux adotado pela maioria das distribuies.
FASTATA tecnologia que permite que os dados armazenados em discos r-
gidos, para serem utilizados pelo processador, sejam total ou parcialmente
carregados para a memria e transmitidos da memria para o disco, depois de
serem alterados, ou criados.
FAT (File Allocation Table ou tabela de alocao de arquivos) primeiro sistema
de arquivos utilizado pelo Windows.
fltro de linha equipamento usado para bloquear o fuxo de energia caso a ten-
so aumente mais que o normal.
fo terra ponto ou caminho no solo que serve de descarga para a corrente el-
trica que escapa do aparelho eltrico.
Firewall (signifca parede corta-fogo, em traduo literal) software de segu-
rana responsvel por gerenciar as conexes de rede com destino mquina
local, e bloqueia o acesso de pessoas ou aplicaes no autorizadas.
Firewire barramento com tecnologia desenvolvida pela Apple Computer em meados
dos anos 1990, e a principal concorrente da USB na padronizao de dispositivos.
fash (memria) a principal mdia para armazenamento de dados em micro-
dispositivos, como celulares, cmeras, PDAs e notebooks, em formato de car-
tes de memria e pen-drives ou unidades internas no lugar do HD.
foppy-disk (disquete) o nome disco fexvel refere-se ao fato de o dispositivo
ser de plstico, que pode ser magnetizado.
fonte de alimentao dispositivo que transforma a energia eltrica que vem
da rede atravs do cabo de fora, preparando-a para que chegue aos componen-
tes do computador da forma adequada.
E
DNS sigla para Domain Name System ou sistema de nomes de domnio.
DOCTYPE identifca o tipo de documento.
download transferir dados ou arquivos de um computador remoto para o de
um usurio; baixar o arquivo.
DRAM (Dynamic RAM ou memria RAM dinmica) tipo de memria empre-
gada como RAM nos computadores em 2009.
drive dispositivo para inserir disco fexvel (disquete), CD-ROM e/ou DVD e
leitoras de cartes Flash.
driver tradutor ou software controlador que sabe os comandos que o sistema
operacional pode enviar, interpreta-os e converte a solicitao de modo que o
chip do aparelho possa reconhec-la.
DSP sigla em ingls para Digital Signal Processor ou processador de sinais digitais.
DTD sigla para Document Type Defnition ou defnio do tipo de documento.
dual channel (canal duplo) permite que uma placa-me tenha duas controla-
doras de memria, cada uma controlando um jogo de memria em separado.
DVD sigla para Digital Vdeo Disc ou disco digital de vdeo, para armazenar
vdeos de boa qualidade e capacidades que variam de 4.7GB em uma camada
at 8.5GB em duas camadas.
DVD+R disco idntico ao DVD-R, porm tem formato diferente de gravao
e leitura. Portanto, no so lidos e gravados por leitoras/gravadoras DVD-R.
DVD-R disco que permite uma s gravao de at 4,7GB.
DVD-RW disco que tem a mesma capacidade do DVD-R, mas pode ser grava-
do e regravado vrias vezes.
EEPROM (Eletrical Erasabel Programmable Read Only Memory ou memria
somente de leitura, programvel e limpa eletricamente) memria em que se
pode regravar, ou seja, podemos apagar parte da memria e gravar novamente.
EIDE tecnologia que permite que os dados armazenados em discos rgidos, para
serem utilizados pelo processador, sejam total ou parcialmente carregados para a me-
mria e transmitidos da memria para o disco, depois de serem alterados, ou criados.
e-mail correio eletrnico.
energia eletroesttica corrente eltrica que escapa do aparelho eltrico quando
surge algum defeito, ou tambm para liberar a energia esttica captada do ambiente.
entradas USB entradas para conexes de dispositivos como webcam, cmeras
I nFoRmtI Ca
290
GloSSRI o
291
M
G
H
J
K
L
I
Java linguagem de programao desenvolvida nos anos 1990 por uma equipe
de programadores chefada porJames Gosling, na Sun Microsystems, conglo-
meradonorte-americano da rea de informtica.
journaling (registro de dados como em um jornal) recurso do sistema de ar-
quivos Linux, no qual as informaes so salvas automaticamente durante a
execuo do sistema operacional.
JPG ou JPEG (Joint Photographic Experts Group ou Grupo Reunido de Especia-
listas em Imagem) tipo de imagem.
JVM (Java Virtual Machine ou, literalmente, mquina virtual Java) programa
que carrega e executa os programas desenvolvidos em Java.
kernel ncleo ou gerenciador, a parte mais importante do sistema operacional.
LAN (Local Area Network ou rede local) rede com mquinas que se limi-
tam a conectar entre si num mesmo ambiente, de uma empresa, instituio
ou residncia.
laptop computador porttil.
LBA (Logical Block Addressing ou Endereamento Lgico de Blocos) o m-
todo de traduo que permite a BIOS reconhecer HDs IDE.
LCD (Liquid Crystal Displays ou tela de cristal lquido) tecnologia que utiliza a
substncia chamada cristal lquido para bloquear ou dar passagem luz.
LEDs (diodos emissores de luz) pequenas lmpadas que podem ser controla-
das uma a uma e variar sua luminosidade at se apagarem por completo numa
imagem totalmente escura.
link texto que geralmente aparece em azul, sublinhado, e que contm uma
URL da pgina a qual ele se refere, que fca escondida, no visvel.
Linux sistema operacional derivado do UNIX. Trata-se de um software livre
ou OpenSource (cdigo aberto em portugus), desenvolvido sem cunho comer-
cial, ou seja, criado por programadores que no tm inteno de vend-lo, mas
disponibiliz-lo para qualquer pessoa que queira utiliz-lo.
logic board (placa lgica) placa-me nos computadores da Apple.
login nome do usurio que o identifca para acessar o sistema.
Mac OS sigla de Macintosh Operating System, o primeiro sistema operacional
do mundo a permitir o uso de janelas grfcas e de mouse, lanado em 1984,
como gerenciador das mquinas da Apple.
mainboard placa-me.
formatar excluir a tabela de parties de arquivos do sistema operacional e
criar uma nova.
FreeBSD sistema operacional para servidores de rede.
gabinete caixa normalmente metlica que organiza e fxa os seus vrios com-
ponentes, como HD, CD/DVD-ROM, placa-me, placas de expanso com co-
nectores externos (USB, serial, vdeo, som etc.), sustenta a placa-me e protege
as placas do contato direto com pessoas, umidade, energia esttica, poeira.
game station assim so chamados os computadores montados para afcionados
em jogos, e precisam de placa de vdeo com processador e memria dedicados.
GIF (Graphics Interchange Format ou Formato de Intercmbio de Grfcos)
formato de imagem.
gigabyte (GB) unidade utilizada para indicar a capacidade de armazenamento
de dados em um computador, em que 1GB equivale a 1 milho de bytes, segun-
do o Sistema Internacional de Unidades (SI).
GUI (Graphical User Interface ou interface grfca com o usurio) em Java,
um conjunto de classes para disponibilizar componentes grfcos (objetos) como
caixas de texto, botes, listas etc.
hacker pessoa que usa seus profundos conhecimentos em programao para
burlar o sistema de segurana de computadores e sistemas.
hardware a parte fsica do computador, seus circuitos eletrnicos, cabos,
placas, dispositivos perifricos conectados, etc.
HD sigla em ingls para Hard Disk (disco rgido).
HTML (HyperText Markup Language ou linguagem de marcao de hipertex-
to) linguagem utilizada para o desenvolvimento de pginas da internet.
I/O abreviao em ingls para input/output, que signifca entrada/sada. Refe-
rem-se a dispositivos utilizados para a comunicao entre o sistema computa-
cional e os usurios.
IDE (Integrated Development Environment ou ambiente integrado de de-
senvolvimento) programa de computador que rene recursos e ferramentas
de apoio para agilizar o desenvolvimento de softwares, como o NetBeans, e
Eclipse (Java) e o DevC++ (C++).
IRQ (Interrupt Request Line ou linha de requisio de interrupo) canal de
comunicao com o processador, cuja funo chamar sua ateno para alguma
ocorrncia de que deva ser informado.
ISA(Industry StandardArquiteture ouarquitetura padroda indstria) padro
para conector de expanso utilizado pela IBM em seus primeiros computadores.
I nFoRmtI Ca
292
GloSSRI o
293
N
O
P
nibble largamente utilizado em sistemas digitais, representa meio byte (4
bits), a quantidade de bits que o sistema de codifcao BCD (Binary-coded
decimal ou codifcao binrio decimal) usa para representar valores de 0 a 15.
n representa um recurso de computao. Qualquer elemento computacional que
faa parte da arquitetura na qual ser implementada a soluo pode ser representado
como um n. Pode ser um servidor, um computador cliente, um switch, um hub etc.
no-break dispositivo que mantm o abastecimento por meio de sua bateria at
que a energia volte ou que o computador seja desligado.
NTFS (New Technology File System ou nova tecnologia em sistema de arqui-
vos) sistema de arquivos utilizado pelo Windows, traz diversas caractersticas
como segurana, capacidade de armazenamento e limitaes aprimoradas em
relao s verses anteriores.
ncleo quantidade de processadores internos em uma mesma CPU.
OCFS2 sistema de arquivos Linux, permite utilizao simultnea e comparti-
lhada por mais de um computador.
of-board (fora da placa) expresso para descrever se um dispositivo faz parte
da placa-me ou se ser includo parte por meio de uma placa de expanso,
especfca para a tarefa.
OLED sigla para Organic Lighting Emmiting Diode ou diodo orgnico
emissor de luz.
on-board (na placa) expresso que signifca que os circuitos esto impressos
nas prprias placas, para vrios tipos de aplicaes.
on-line est conectado internet ou a uma rede de computadores.
OpenSource signifca cdigo aberto, indicando que o programa pode ser uti-
lizado livremente por qualquer pessoa, independentemente da fnalidade, e se
refere a sistemas como os softwares livres, Linux.
P2P (Peer-to-Peer ou de par em par) termo usado para os softwares que fazem
transferncia de arquivos de um computador para outro.
pacote software que pode ser instalado no Linux.
PAN sigla para Personal Area Network ou rede pessoal.
parmetro elemento digitado depois do primeiro espao, ou seja, a primeira pala-
vra um comando e as demais, separadas por espao, so os parmetros (porque o
espao justamente um caractere separador entre um comando e um parmetro).
partio diviso do disco rgido.
malware palavra originria da expresso em ingls MALicious softWARE,
que literalmente signifca software malicioso.
MAN (Metropolitan Area Network ou rede metropolitana) Rede Metropolita-
na redes que abrangem uma cidade inteira e podem se ligar a vrias LAN que
estiverem dentro do seu permetro.
MBR tabela de alocao, quando o disco particionado, que fca armazenada
no incio do disco rgido. Essa tabela informa a posio de incio da partio, se
est ativa e qual o seu tipo.
memria local de armazenamento dos dados.
microprocessador circuito integrado, porm programvel, capaz de realizar
vrias instrues, uma de cada vez.
Microsoft SQL Server sistema de gerenciamento de SGBDRs (sistemas geren-
ciadores de bancos de dados).
MMS (Microsoft Media Service) protocolo proprietrio da Microsoft para
transmisso de fuxo de dados em tempo real, chamado tambm de NetShow.
modelo de referncia ISO OSI modelo apresentado pelo ISO (Internationals
Standards Organization ou Organizao Internacional de Padres), com o in-
tuito de padronizar os protocolos em camadas, com o nome de Open System
Interconnection (OSI), ou seja, interconexo de sistemas abertos.
monotarefa sistema operacional que consegue processar apenas uma instru-
o de cada vez.
motherboard placa-me.
mouse dispositivo apontador que serve para mostrar ao sistema operacional o
que se deseja fazer, indicando, por meio do cursor no vdeo, o elemento com o
qual se quer interagir e que tipo de ao se pretende realizar.
MSDNAA sigla para Microsoft Developer Network Academic Alliance ou
aliana acadmica da rede de desenvolvedores da Microsoft.
MS-DOS sigla para Microsoft Disk Operating System ou disco de sistema
operacional Microsoft.
multitarefa sistema operacional que consegue processar vrias instrues ao
mesmo tempo e executar diversos programas simultaneamente.
MySQL sistema de gerenciamento de SGBDRs, um banco de cdigo-fonte
aberto, gratuito e est disponvel tanto para o Windows como para o Linux.
NetBSD sistema operacional para servidores de rede.
I nFoRmtI Ca
294
GloSSRI o
295
plug and play modo pelo qual o sistema operacional pode reconhecer automa-
ticamente o dispositivo, mesmo que este demande algum driver especfco. Os
dispositivos mais comuns como pen-drives, mouses e impressoras, podem ser
utilizados assim que so conectados.
plugn play (conecte e use) tcnica que reconhece e instala muitos dispositi-
vos automaticamente sem necessidade de nenhuma tarefa adicional, encontrada
desde a verso 95 do Windows, e tem seu pice na verso XP, que capaz de
operar com quase todos os dispositivos existentes.
PMBOK - Guia do Conjunto de Conhecimentos em Gerenciamento de Proje-
tos publicao do PMI (Project Management Institute ou Instituto de Geren-
ciamento de Projetos), para identifcar e descrever as boas prticas de projetos
que agreguem valor e sejam fceis de aplicar.
porta paralela conector utilizado para ligar dispositivos a computadores, principal-
mente impressoras, caracterizando a transmisso de bits na forma paralela de envio.
porta serial conector que foi muito utilizado no passado para conectar mouse,
impressora, leitores de cdigo de barras e outros dispositivos de automao, co-
mercial e industrial, enviando os bits de forma serial.
PostgreSQL sistema de gerenciamento de SGBDRs (sistemas gerenciadores de
bancos de dados).
prompt de comandos do Windows aplicativo em que o usurio dispe de uma
interface que interpreta os comandos digitados. Esses so transferidos ao sistema
operacional, que, depois de execut-los, retorna o resultado ao prompt, de ma-
neira que o usurio o visualize.
protocolo mdulo que agrupa um tipo de servio.
protocolo RDP (Remote Desktop Protocol ou protocolo de rea de trabalho
remota) protocolo empregado para transmisso de dados da camada de apli-
cao. Permite transmitir udio e vdeo em vrios canais de uma transmisso da
aplicao Microsoft Terminal Service.
protocolo RTP/RTCP (Real Time Protocol ou protocolo de tempo real e Real
Time Control Protocol ou protocolo de controle de tempo real) protocolos
utilizados em conjunto, desenvolvidos para transmitir udio em tempo real.
protocolo SMTP sigla para Simple Mail Transfer Protocol ou protocolo de
transmisso de e-mail simples.
protocolo TCP (Transfer Control Protocol ou protocolo de transferncia com
controle) protocolo de controle que negocia entre as partes como se dar a
conexo antes que um dado seja enviado e mantm o estado da conexo, mesmo
que as camadas inferiores da rede no ofeream controle de estado.
pseudocdigo linguagem com a qual os algoritmos so desenvolvidos.
particionar o mesmo que dividir o disco, identifcando suas partes e devidas
dimenses.
pass senha.
password caracteres digitados pelo usurio, com limitaes e uma janela para
a entrada de dados.
pasta forma mais simples de organizar o contedo em um sistema operacional.
PATA (vem de Parallel ATA) tecnologia que permite que os dados armazenados
em discos rgidos, para serem utilizados pelo processador, sejam total ou par-
cialmente carregados para a memria e transmitidos da memria para o disco,
depois de serem alterados, ou criados.
PC/AT o primeiro computador lanado em 1984 pela IBM, como sucessor do
modelo XP, com capacidade de apenas 20MB e tecnologia ATA.
PC abreviao para Personal Computer ou computador pessoal.
PCI (Peripheral Component Interconnect ou componente de interconexo de
perifricos) padro desenvolvido pela Intel em 1990 para substituir os barra-
mentos ISA e VESA Local Bus.
pen-drive pen, disco removvel, chaveiro de memria so as tradues mais
usadas para Memria USB Flash Drive, dispositivo de armazenamento com
ligao tipo USB que comeou a ser produzido no ano 2000.
perifricos so todos os dispositivos que se conectam unidade de sistema
para obter respostas ou para passar informaes para o computador. Esses
dispositivos so geralmente divididos em trs grupos perifricos de entrada,
de sada e mistos.
PID (Process Identifcation ou cdigo do processo) nmero de controle do
processo, junto ao percentual de uso de memria e de processador.
pilha de protocolos protocolos de uma mesma camada.
pixel Menor ponto visvel que compe uma imagem digital.
placa controladora placa lgica.
placa lgica tambm chamada de placa controladora, a placa que controla
todo o funcionamento do HD.
placa-me conhecida tambm como mother-board, main-board ou, nos
computadores da Apple, como logic board (placa lgica), a placa de cir-
cuito impresso que liga ou interliga todos os componentes do computador.
Em sites e fruns da internet, voc pode encontrar ainda a abreviao mobo
para design-las.
I nFoRmtI Ca
296
GloSSRI o
297
R
S
um programa em execuo no PC.
servidor palavra derivada dos verbos servir, tornar disponvel, um compu-
tador em geral mais potente que os PCs de estaes de trabalho e que tem a
funo de prover algum servio na rede.
setup programa de confgurao que todo micro tem gravado dentro da me-
mria ROM (que, por sua vez, fca na placa-me).
SGBDs (Sistemas Gerenciadores de Bancos de Dados) conjunto de progra-
mas que permite a implementao de bancos de dados, assim como o controle
de acesso, o backup, a recuperao de falhas, a manuteno da integridade, a
administrao e a segurana dos dados que contm.
sistema embarcado aquele que est gravado dentro dos equipamentos.
sistema operacional software (como o MS-DOS, o Windows 95, 98, NT, XP
e Vista, MacOS-X e Linux) que faz a comunicao amigvel e segura entre o
hardware e as aplicaes.
socket encaixe, na placa-me, que varia de acordo com o modelo do proces-
sador, que leva em conta velocidade e capacidade de processamento, memria
cach, terminais, consumo de energia.
software a parte no fsica programas, instrues e procedimentos escritos
por programadores para controlar o hardware de modo que este possa executar
as tarefas de que precisamos.
software de compresso programas que fazem a compactao de arquivos.
software de inteligncia artifcial (IA) sistema que utiliza algoritmos no nu-
mricos para resolver problemas complexos, tambm conhecido como sistema
baseado em conhecimento.
software frmware programa implantado em um chip.
Solaris sistema operacional para servidores de rede.
spywares vrus espies que copiam dados ou senhas e os enviam para um am-
biente externo sem conhecimento nem consentimento do usurio.
SQL (Structured Query Language ou, literalmente, linguagem de consulta es-
truturada) linguagem de manipulao de dados que se tornou padro para
SGBDRs (Sistemas Gerenciadores de Bancos de Dados Relacionais).
SSH(SecureShell) protocolo que permite conexes seguras entre mquinas Linux.
stored procedure (procedimento armazenado) conjunto de comandos SQL
que so compilados e guardados no servidor.
RAD (Rapid Application Development ou desenvolvimento rpido de aplica-
o) linguagem capaz de, por si s, gerar cdigos com os quais podem ser
criadas aplicaes, mesmo sem se especializar na linguagem.
RAM sigla para Random Access Memory ou memria de acesso aleatrio.
rede interligao de vrios computadores.
registradores componentes do processador, que so unidades de memria
que, por fcarem dentro da CPU, possibilitam acesso aos dados bem mais veloz
do que ao acesso das memrias RAM ou cache.
ReiserFS (Reiser File System) sistema de arquivos bastante usado no Linux,
que tambm oferece journaling (registro de dados como em um jornal), mas
somente retm as informaes de cabealhos no faz o registro de dados, o
que o torna mais rpido que o Ext3.
reset (restabelecer) boto que reinicia o computador, como se desligasse e
ligasse o micro novamente.
resoluo imagem defnida pela quantidade de pontos, os pixels.
RFC (Request for Comments) especifcao tcnica desenvolvida sobre um de-
terminado assunto por solicitao da IETF (Internet Engineering Task Force).
RGB sigla para Red, Green e Blue ou vermelho, verde e azul que determina
uma tabela de cores no padro RGB.
rodar executar algum programa.
ROM sigla para Read-Only Memory, que signifca memria apenas de leitura.
uma memria que no permite a alterao ou remoo dos dados ali gravados,
os quais so impressos em uma nica ocasio.
roteadores equipamentos que fazem interconexo com vrias redes.
roteamento algoritmo que analisa o trfego de rede entre os pontos que esto
transferindo pacotes para verifcar o caminho que eles esto seguindo. Repasse
e roteamento geralmente so realizados por equipamentos chamados roteadores.
RTSP (Real Time Streaming Protocol ou protocolo de transmisso de fuxo de
dados em tempo real) protocolo utilizado para transmitir e controlar a trans-
misso tanto de udio quanto de vdeo sob demanda em tempo real.
script lista dos comandos de criao do banco de dados e de suas tabelas den-
tro do SGBD.
service packs pacotes de atualizaes.
servio a maioria das atividades executadas pelo sistema operacional, ou seja,
I nFoRmtI Ca
298
GloSSRI o
299
T
U
V
tuplas linhas de uma tabela.
Ubuntu sistema operacional baseado em Linux, desenvolvido de forma cola-
borativa pelos internautas.
UC (Unidade de Controle) principal componente do processador, que identif-
ca as instrues, comanda os outros componentes, controla a memria e todos
os outros dispositivos do computador.
UDP sigla para User Datagram Protocol ou protocolo de datagrama do usurio.
ULA (Unidade Lgica Aritmtica) componente do processador que funciona
como uma calculadora, ou seja, faz clculos matemticos, lgicos e estatsticos,
e no qual os dados so processados.
Ultra-ATA tecnologia que permite que os dados armazenados em discos rgi-
dos, para serem utilizados pelo processador, sejam total ou parcialmente carre-
gados para a memria e transmitidos da memria para o disco, depois de serem
alterados, ou criados.
Ultra-DMA tecnologia que permite que os dados armazenados em discos rgi-
dos, para serem utilizados pelo processador, sejam total ou parcialmente carre-
gados para a memria e transmitidos da memria para o disco, depois de serem
alterados, ou criados.
UML (Unifed Modeling Language ou linguagem de modelagem unifcada)
linguagem dedicada especifcao, visualizao, construo e documentao
que usa notao grfca para modelar softwares.
unidade central de processamento o termo refere-se ao microprocessador, e
no ao gabinete como um todo, como muitas pessoas imaginam. Como seu
prprio nome diz, sua funo processar as instrues enviadas. O processador
est para o computador assim como crebro est para o ser humano.
URL (Uniform Resource Locator ou localizador de recurso universal) endere-
o de um recurso disponvel em uma rede.
USB sigla signifca Universal Serial Bus e se refere a uma tecnologia que veio
para facilitar a ligao de maior nmero de aparelhos ao PC como cmeras,
joysticks, mp3 players, leitores de cartes (inclusive simultaneamente), bem
como acelerar ainda mais a velocidade da transmisso de dados.
vetor defnido tambm como matriz unidimensional, uma varivel que pos-
sui vrios dados, acessados por meio de uma posio relativa, seguindo a mesma
regra da concepo e atribuio das variveis.
VGA sigla para Video Graphic Array ou vdeo de grfcos vetorizados.
VNC (Virtual Network Computing ou computao em rede virtual) tecnologia
que possibilita acesso remoto de um computador a outro com interface grfca.
streaming termo usado para transmisses multimdia ininterruptas por uma
fonte a vrios clientes e ao mesmo tempo.
swap (troca) sistema de arquivos para memria virtual no Linux/Unix.
Swebok (Software Engineering Body of Knowledge ou reas do conhecimento
da engenharia de software) publicao de 2004, uma iniciativa da Socie-
dade da Computao do Instituto de Engenharia Eltrica e Eletrnica (IEEE
Computer Society), com o propsito de criar um consenso sobre as reas de
conhecimento da engenharia de software.
tabeladealocao tabela chamada MBR, que fca armazenada no incio do disco r-
gido. Essa tabela informa a posio de incio da partio, se est ativa e qual o seu tipo.
tag palavra-chave (relevante) associada a uma informao, que muito co-
mum na linguagem de programao de computador.
Telnet tecnologia muito utilizada, tanto no Linux quanto no Windows, para
acessar um PC remotamente.
template modelo.
TextBox (caixa de texto) componente responsvel por receber as informaes
do usurio e tambm o item mais comum, pois a maioria das entradas de
dados realizada por ele.
threads tpicos, ou divises dos processos, que os sistemas operacionais mo-
dernos utilizam para melhorar seu desempenho.
TI sigla para Tecnologia da Informao.
toolbar (barradeferramentas) disponibiliza os botes de comandos mais utilizados.
ToolBox (caixa de ferramentas) contm componentes para o desenvolvimento
do projeto, os quais esto divididos em guias de acordo com o tipo de aplicao.
top no Linux, um monitor bastante poderoso que traz diversas informaes
do sistema, alm dos processos em execuo e dos dados de PID, usurio etc.
topologia de redes modo como os computadores esto ligados entre si, os equi-
pamentos empregados e a maneira como os dados iro trafegar dentro da rede.
tradutor utilitrio que converte o cdigo desenvolvido em uma linguagem de
alto nvel (entendida mais facilmente pelo programador) em uma linguagem de
mquina (entendida mais facilmente pelo computador).
trilhazero primeira trilha do sistema de arquivos do HD em que o boot est gravado.
trojans nome em ingls dado a um vrus que evoca a histria grega do Cavalo
de Troia, ou spywares.
I nFoRmtI Ca
300
GloSSRI o
301
W
X
Z
W3C (World Wide Web Consortium ou consrcio da rede mundial de compu-
tadores) fundado em 1994, o W3C formado por empresas de tecnologia de
diferentes partes do mundo que trabalham para criar padres e diretrizes para a
interpretao de contedos da web.
WAI (Web Accessibility Initiative ou iniciativa para acessibilidade na rede)
projeto internacional criado por grupos de pessoas dedicadas a desenvolver con-
dies especfcas para que todos tenham acesso internet (ambiente, equipa-
mento, navegador, ferramentas etc.).
WAN (Redes Geografcamente Distribudas) redes que se espalham por uma
regio de um estado, por todo o estado, um pas ou o mundo todo. So, portan-
to, redes de longa distncia. A internet, cujo acrnimo WWW (World Wide
Web ou rede mundial de computadores) a maior WAN do planeta.
Windows ou Microsoft Windows sistema operacional surgido da juno do
MS-DOS com uma interface grfca. H diversas verses Windows 95, 98,
XP, Vista, NT, 2000, 2003, 2008.
wireless (semfo) meio de transporte das informaes entre teclado e computador.
World Wide Web (ou WWW) rede mundial criada em 1991 pelo cientista Tim
Berners-Lee, tornou-se base para o desenvolvimento dos navegadores com inter-
face grfca que viriam a se popularizar a partir da dcada de 1990, quando a
rede foi aberta s empresas e se espalhou mundo afora.
XFS sistema de arquivos Linux, rpido e indicado para parties grandes.
XHTML (eXtensible HyperText Markup Language ou linguagem de marcao
de texto extensvel) o novo padro de desenvolvimento web.
XML (eXtensible Markup Language ou linguagemde marcao extensiva) lin-
guagem de marcao que permite a manipulao dos dados de forma mais preci-
sa. Isso assegura informaes uniformes e independentes de aplicao ou de for-
necedor que, dessa forma, podem ser utilizadas em diferentes nveis de aplicao.
zip ou rar formato de arquivo compactado com aplicativos especfcos de
compactao.
I nFoRmtI Ca
302
excelncia no ensino profssional
Administrador da maior rede estadual de educao profssional do pas, o
Centro Paula Souza tem papel de destaque entre as estratgias do Governo
de So Paulo para promover o desenvolvimento econmico e a incluso
social no Estado, na medida em que capta as demandas das diferentes
regies paulistas. Suas Escolas Tcnicas (Etecs) e Faculdades de Tecnolo-
gia (Fatecs) formam profssionais capacitados para atuar na gesto ou na
linha de frente de operaes nos diversos segmentos da economia.
Um indicador dessa competncia o ndice de insero dos profssionais
no mercado de trabalho. Oito entre dez alunos formados pelas Etecs e
Fatecs esto empregados um ano aps conclurem o curso. Alm da ex-
celncia, a instituio mantm o compromisso permanente de democra-
tizar a educao gratuita e de qualidade. O Sistema de Pontuao Acres-
cida benefcia candidatos afrodescendentes e oriundos da Rede Pblica.
Mais de 70% dos aprovados nos processos seletivos das Etecs e Fatecs
vm do ensino pblico.
O Centro Paula Souza atua tambm na qualifcao e requalifcao de
trabalhadores, por meio do Programa de Formao Inicial e Educao
Continuada. E ainda oferece o Programa de Mestrado em Tecnologia, re-
comendado pela Capes e reconhecido pelo MEC, que tem como rea de
concentrao a inovao tecnolgica e o desenvolvimento sustentvel.

Você também pode gostar