Você está na página 1de 154

Habilitao tcnica em

4
Informtica

Programao
de Computadores
Informtica
Volume 4
Informtica
Programao de
computadores

Ralfe Della Croce Filho


Carlos Eduardo Ribeiro

So Paulo
2010
Governador
Presidente Jos Serra
Paulo Markun
Vice-Presidente Vice-Governador
Fernando Jos de Almeida Alberto Goldman

Secretrio de Desenvolvimento
Geraldo Alckmin
Ncleo Cultura Educao Edio de texto: Marlene Jaggi
Coordenador: Fernando Jos de Almeida Editores assistentes: Celia Demarchi
Gerente: Monica Gardelli Franco e Wagner Donizeti Roque
Secretrio editorial: Antonio Mello
Equipe de autoria Centro Paula Souza Revisores: Antonio Carlos Marques, Fabiana Lopes
Coordenao geral: Ivone Marchi Lainetti Ramos
Bernardino, Jos Batista de Carvalho, Lieka Felso
Coordenao da srie Informtica: Luis Eduardo
e Miguel Facchini
Fernandes Gonzalez Direo de arte: Deise Bitinas
Autores: Carlos Eduardo Ribeiro, Evaldo Fernandes
Edio de arte: Ana Onofri
Ru Jnior, Gustavo Dibbern Piva, Joo Paulo Lemos Presidente do Conselho Deliberativo
Editoras assistentes: Nane Carvalho, Nicia Cecilia
Escola, Luciene Cavalcanti Rodrigues, Ralfe Della Yolanda Silvestre
Lombardi e Roberta Moreira
Croce Filho, Wilson Jos de Oliveira Assistentes: Ana Silvia Carvalho, Claudia Camargo
Diretora Superintendente
Reviso tcnica: Anderson Wilker Sanfins, Luis Laura Lagan
e Felipe Lamas
Claudinei de Moraes, Humberto Celeste Innarelli, Ilustraes: Carlos Grillo
Srgio Furgeri Pesquisa iconogrfica: Completo Iconografia,
Maria Magalhes e Priscila Garofalo Vice-Diretor Superintendente
Equipe de Edio
Fotografia: Carlos Piratininga, Eduardo Pozella (fotgrafos) Csar Silva
Coordenao geral e Daniela Mller (produtora) Chefe de Gabinete da Superintendncia
Alfredo Nastari Tratamento de imagens: Sidnei Testa
Coordenao editorial Elenice Belmonte R. de Castro
Mirian Ibaez Coordenadora da Ps-Graduao, Extenso e
Impresso em Vitopaper 76g, papel
Consultor tcnico sinttico de plstico reciclado, da Vitopel, Pesquisa
Victor Emmanuel J. S. Vicente pela Grfica Ideal. 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
Dados Internacionais de Catalogao na Publicao (CIP) Continuada
Celso Antonio Gaiote
D357 Coordenador de Infraestrutura
Della Croce Filho, Ralfe Rubens Goldman
Informtica, programao de computadores / Ralfe Della Croce Coordenador de Gesto Administrativa e
Filho, Carlos Eduardo Ribeiro ; revisor Srgio Furgeri ; coordenador Financeira
Luis Eduardo Fernandes Gonzalez. -- So Paulo : Fundao Padre Anchieta, 2010
Armando Natal Maurcio
(Manual de Informtica Centro Paula Souza, v. 4) Coordenador de Recursos Humanos
Elio Loureno Bolzani
ISBN 978-85-61143-46-6
Assessora de Avaliao Institucional
1. Sistemas operacionais (Computadores) 2. Softwares de aplicao Roberta Froncillo
I. Ribeiro, Carlos Eduardo II. Furgeri, Srgio, revisor III. Assessora de Comunicao
Gonzalez, Luis Eduardo Fernandes, coord. IV. Ttulo
Gleise Santa Clara
CDD 005.43 Procurador Jurdico Chefe
Benedito Librio Bergamo
Sumrio
21 Captulo 1 3.3. Formatao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
lgica de programao 3.4. Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Capa: Luiz Felipe do
1.1. Fluxograma e pseudocdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.5. Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Nascimento, aluno de uma
Etec do Centro Paula Souza.
1.2. Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.6. Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Foto: Eduardo Pozella
Edio: Deise Bitinas
1.3. Constantes e variveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.7. Imagens ................................................ 77
1.4. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.8. Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
1.5. Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.9. Formulrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
1.6. Vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.10. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

1.7. Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.8. Programao modular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 93 Captulo 4
lgica de programao aplicada
49 Captulo 2 linguagem Java
estrutura de dados 4.1. A plataforma de desenvolvimento . . . . . . . . . . . . . . . . . . . . . 96

2.1. Lista encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.1.1. JRE (Java Runtime Environment). . . . . . . . . . . . . . . . . 97


Incio
2.2. Lista circular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.1.1.1. JVM (Java Virtual Machine) . . . . . . . . . . . . . . 97
2.3. Lista duplamente encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.1.1.2. API (Application Programming
nome como caractere
2.4. Pilhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Interface). . . . . . . . . . . . . . . . . . . . . . . . . . . 98
idade como inteiro
salrio como utuante
2.5. Filas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.1.2. Ambientes de desenvolvimento . . . . . . . . . . . . . . . . . 98
2.6. rvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.1.2.1. JSE (Java Standard Edition). . . . . . . . . . . . . . 98
Se
4.1.2.2. JEE (Java Enterprise Edition) . . . . . . . . . . . 98 t te nome
nome Joozinho rs
idade 15
4.1.2.3. JME (Java Micro Edition) . . . . . . . . . . . . . . . . 98
salrio 1500 57 Captulo 3
Criao de pginas Web 4.1.2.4. JDK (Java Development Kit) . . . . . . . . . . . 99 endereco

3.1. Identificao do documento . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.1.2.5. JSE: nosso foco . . . . . . . . . . . . . . . . . . . . . . . . . 99


Fim
3.2. Estrutura do documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.1.3. A portabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 telefone

arPessoa()
Sumrio
4.2. Origem da orientao a objetos . . . . . . . . . . . . . . . . . . . . . . 100 4.5.6.1.1. Mtodo get . . . . . . . . . . . . . . . . . . 114
4.2.1. Abstrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.5.6.1.2. Mtodo set . . . . . . . . . . . . . . . . . . 115
4.3. UML (Unified Modeling Language) . . . . . . . . . . . . . . . . . . . . 101 4.5.7. Representao do encapsulamento
4.4. Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 em objeto do tipo Pessoa . . . . . . . . . . . . . . . . . . . . . . 115
4.5. Orientao a objetos (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.5.8. Viso geral da classe
4.5.1. Componentes elementares. . . . . . . . . . . . . . . . . . . . . 104 Pessoa e sua estrutura . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.5.1.1. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 4.6. Entrada e sada de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.5.1.1.1. Atributos . . . . . . . . . . . . . . . . . . . . . 105 4.6.1. Declarao import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.5.1.1.2. Mtodos. . . . . . . . . . . . . . . . . . . . . . 105 4.6.2. Apresentao de dados (sada). . . . . . . . . . . . . . . . . 117
4.5.1.1.3. Detalhando o 4.6.3. Leitura de dados (entrada) . . . . . . . . . . . . . . . . . . . . . 119
diagrama de classe . . . . . . . . . . . 105 4.7. Assinatura de mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.5.1.1.4. Codificao da 4.7.1. Retorno de valor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
classe Pessoa . . . . . . . . . . . . . . . . . 106 4.7.2. Passagem de parmetro . . . . . . . . . . . . . . . . . . . . . . . . 121
4.5.1.1.5. Comentrios . . . . . . . . . . . . . . . . . 109 4.7.3. Retorno de valor
4.5.1.2. Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 e passagem de parmetro . . . . . . . . . . . . . . . . . . . . . . 121
4.5.2. Modificadores de acesso . . . . . . . . . . . . . . . . . . . . . . . 111 4.8. Estruturas e recursos da linguagem Java . . . . . . . . . . . . . . 122
4.5.2.1. Private ................................. 111 4.8.1. Palavras reservadas do Java . . . . . . . . . . . . . . . . . . . . 122

4.5.2.2. Public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.8.2. Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123


4.5.2.3. Protected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.8.3. Operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.5.3. Mtodos construtores . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.8.4. Variveis e constantes . . . . . . . . . . . . . . . . . . . . . . . . . . 125
4.5.4. Garbage collector (coletor de lixo) . . . . . . . . . . . . 113 4.8.5. Converses de tipos de dados . . . . . . . . . . . . . . . . . 126
4.5.5. O comando this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 4.8.5.1. Converso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.5.6. Encapsulamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 4.8.5.2. Cast (matriz) . . . . . . . . . . . . . . . . . . . . . . . . . . 127

4.5.6.1. Mtodos de acesso . . . . . . . . . . . . . . . . . . . . 114 4.8.5.3. Promoo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128


Sumrio
es
0 1 2 3 4 4.8.6. Desvios condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 4.10.3. Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.8.6.1. If-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 4.11. Interfaces grficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Inteiros
4.8.6.2. Switch-case . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 4.11.1. AWT (Abstract Window Toolkit) . . . . . . . . . . . . . 156
4.8.7. Laos de repetio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 4.11.2. Interfaces listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
0 12 1 6 47 85 4.8.7.1. While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 4.11.3. Swing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
1 4 36 62 25 3 4.8.7.2. Do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 4.12. Tratamento de excees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
4.8.7.3. For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 4.12.1. Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
2 32 67 74 41 valores
4.8.8. Array (Vetor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 4.12.2. Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
3 8 23 9 4.8.8.1. Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . 131 4.12.2.1. Unchecked Exception . . . . . . . . . . . . . . . . 167

4 17 49 4.8.8.2. Bidimensional (Matrizes) . . . . . . . . . . . . . . 133 4.12.2.2. Checked Exception . . . . . . . . . . . . . . . . . . 167

4.8.9. Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 4.12.2.3. Throws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167


4.8.9.1. ArrayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 4.12.2.4. Try-catch-finally . . . . . . . . . . . . . . . . . . . . . . 167
ces 4.9. Orientao a objetos (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 4.13. Conexo com banco de dados . . . . . . . . . . . . . . . . . . . . . . . 172

r
ro
4.9.1. Herana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 4.13.1. JDBC (Java Database Connectivity) . . . . . . . . . . . 172

Er

th
le
4.9.2. Sobrecarga de mtodo (overload) . . . . . . . . . . . . . 142 4.13.2. Implementao do acesso a dados . . . . . . . . . . . . 174

ea
ab

D
ow

ad
4.9.3. Sobrescrita de mtodo (override). . . . . . . . . . . . . . 145 4.13.2.1. Classe java.sql.Statement . . . . . . . . . . . . . 176

hr

re
T

Th
4.9.4. Classes e mtodos abstratos . . . . . . . . . . . . . . . . . . . 147 4.13.2.2. A classe PreparedStatement . . . . . . . . . 176

or
4.9.5. Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 4.13.2.3. A classe CallableStatement . . . . . . . . . . 176

rr
TE
4.9.6. Polimorfismo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 4.13.3. Incluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

AW

u
Inp
4.9.6.1. De mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 4.13.4. Alterao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

n
tio

on
p
4.9.6.2. De classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 4.13.5. Excluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

ce

ti
p

n
Ex

ce

io
4.9.6.3. De interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 4.13.6. Listagem geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Ex

pt
ce
O

e
nt
Ex
4.10. Padres de desenvolvimento de sistemas . . . . . . . . . . . 154 4.13.7. Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

oi
ds

lP
n

un

ul
4.10.1. Programao em trs camadas . . . . . . . . . . . . . . . . 154

tio

N
Bo
ep

f
4.10.2. MVC (Model, View, Controller) . . . . . . . . . . . . . . 154

O
xc

ut
eE

O
im

x
de
nt

In
Ru

ay

n
rr

tio
A

ep
xc
tE
Sumrio
185 Captulo 5 6.3.4. Operadores de incremento e decremento . . . .203
visual Studio 2008 6.3.5. Operadores lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . .204

5.1. .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 6.3.6. Converses C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204


5.1.1. Mquina virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 6.3.7. Parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 // imprime os dados do veculo e co
Console.WriteLine(Veculo: + obj
5.1.2. Garbage collector (coletor de lixo) . . . . . . . . . . . . 188 6.3.8. Convert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
marcha + marchas);
5.2. Solues e projetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 6.4. Estrutura de deciso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205 Console.WriteLine(Combustvel:
5.2.1. Iniciando o Visual Studio Solution . . . . . . . . . . . . 189 6.4.1. Condio verdadeiro if . . . . . . . . . . . . . . . . . . . . . . .205
// inicia a movimentao do carro
5.2.2. Conhecendo o Visual Studio . . . . . . . . . . . . . . . . . . . 190 6.4.2. Condio verdadeiro ou falso ifelse . . . . . . .205
objCarro.movimentar(5);
5.2.3. Gerenciador de janelas . . . . . . . . . . . . . . . . . . . . . . . . . 192 6.4.3. Condies mltiplas
5.2.4. Nomenclatura de componentes . . . . . . . . . . . . . . . 193 if...elseif...elseif....else . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 // consulta a velocidade do veculo
velocidade = objCarro.consultar();
5.2.5. IntelliSense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 6.4.4. Mltiplos testes Switch() . . . . . . . . . . . . . . . . . . . .206
5.2.6. Executando a aplicao. . . . . . . . . . . . . . . . . . . . . . . . . 194 6.5. Estruturas de repetio usadas na linguagem . . . . . . . . 207 // visualiza a velocidade do veculo
6.5.1. While() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 Console.WriteLine(Velocidade At
5.2.7. Identificao de erros . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Console.ReadKey();
6.5.2. Do While(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
197 Captulo 6 6.5.3. For() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 // aumenta a velocidade do veculo
objCarro.movimentar(5);
C Sharp 6.5.4. Break e continue .............................. 208
Console.WriteLine(Velocidade At
6.1. Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 6.6. Tratamento de erros / excees . . . . . . . . . . . . . . . . . . . . . . 210 Console.ReadKey();
6.1.1. Console Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 6.6.1. Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
// comea a parar o carro
6.1.2. Windows Form Application . . . . . . . . . . . . . . . . . . . . 198 6.7. Vetores e matrizes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
// a primeira chamada diminui em
6.2. Tipos de dados e variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 6.8. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 objCarro.parar();
6.2.1. Alocao de memria . . . . . . . . . . . . . . . . . . . . . . . . . . 201 6.9. Windows Form velocidade = objCarro.consultar();
Console.WriteLine(Velocidade At
6.3. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202 Application componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Console.ReadKey();
6.3.1. Operadores aritmticos . . . . . . . . . . . . . . . . . . . . . . . .202 6.9.1. Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 }
6.3.2. Operadores relacionais . . . . . . . . . . . . . . . . . . . . . . . .202 6.9.2. Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

6.3.3. Operadores aritmticos 6.9.3. TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218


de atribuio reduzida . . . . . . . . . . . . . . . . . . . . . . . . . . .202 6.9.4. Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Sumrio
6.9.5. ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 7.4.3. Condies Mltiplas
6.9.6. ListBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 if...elseif...elseif....else . . . . . . . . . . . . . . . . . . . . . . . . . . 231
6.9.7. CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220 7.4.4. Mltiplos testes Select Case() . . . . . . . . . . . . . . . . 232
6.9.8. RadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 7.5. Estrutura de repetio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
6.9.8.1. Agrupamento . . . . . . . . . . . . . . . . . . . . . . . . . .222 7.5.1. While() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
6.10. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223 7.5.2. Do While()...Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
7.5.3. Do...Loop Until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
225 Captulo 7 7.5.4. For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

visual Basic.net 7.5.5. For...Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233


7.1. Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226 7.6. Tratamento de erros e excees . . . . . . . . . . . . . . . . . . . . .234
7.1.1. Console Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . .226 7.7. Vetores e matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
7.1.2. Windows Form Application . . . . . . . . . . . . . . . . . . . .226 7.8. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
7.2. Tipos de dados e variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 7.9. Windows form application componentes . . . . . . . . . . . 236
7.2.1. Atribuio DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228 7.9.1. Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
7.2.2. Variveis globais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228 7.9.2. Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
7.3. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 7.9.3. TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
7.3.1. Operadores aritmticos . . . . . . . . . . . . . . . . . . . . . . . .229 7.9.4. Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
7.3.2. Operadores relacionais. . . . . . . . . . . . . . . . . . . . . . . . .229 7.9.5. ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
7.3.3. Operadores aritmticos de atribuio reduzida . .230 7.9.6. ListBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
7.3.4. Operadores lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 7.9.7. CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
7.3.5. Converses em VB.NET . . . . . . . . . . . . . . . . . . . . . . .230 7.9.8. RadioButton. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 )
UM
ge r=3 lX e
7.4. Estrutura de deciso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 7.9.8.1. Agrupamento . . . . . . . . . . . . . . . . . a. i. n. (. ). . . . .s240
Inte v a riv )
M A ( A OIS
Sub Dim x Then L i n e D
7.4.1. Condio Verdadeiro if . . . . . . . . . . . . . . . . . . . . . . . 231 7.10. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .x. =. . 1. 240 le.Write el X
a riv )
If s o
Con 2 Then Line(A
v
T R S
7.4.2. Condio Verdadeiro ou Falso ifelse . . . . . . 231 = te lX
e If x ole.Wri r ive )
E l s s
Con 3 Then Line(A
v a
o v a lor
x = e.Write outr
s e I f l a lquer
El so Qu
Con L i ne(
t e
.Wri
Else onsole
C
y( )
n d If e a d Ke
E .R
sole
Con
b
Sumrio
243 Captulo 8 261 CaPtUlo 9
aSP.net aDo.net
8.1. Aplicao ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244 9.1. DataSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
8.1.2. Web Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 9.2. DataReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264
8.1.3. Projeto Web Application (Aplicao Web) . . 245 9.3. Objetos para banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . 265
8.1.4. Ciclo de vida da Aplicao. . . . . . . . . . . . . . . . . . . . . . 246 9.3.1. Objeto DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
8.1.5. Executando uma Application Service 9.3.2. Objeto DataView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
(Servio de Aplicao) . . . . . . . . . . . . . . . . . . . . . . . . . . 246 9.4. Mtodos de conexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266
8.1.6. Escrevendo a Aplicao. . . . . . . . . . . . . . . . . . . . . . . . . 247 9.4.1. Objeto Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

8.1.7. Estruturando uma pgina ASP.NET . . . . . . . . . . . . 248 9.4.2. Exemplo genrico de conexo . . . . . . . . . . . . . . . . . 267
8.1.7.1. HTML Server Controls . . . . . . . . . . . . . . . . 248 9.4.2.1. Implementando a leitura de dados . . . .268
8.1.7.2. Web Server Controls . . . . . . . . . . . . . . . . . 249 9.4.3. Conexo com VB.NET . . . . . . . . . . . . . . . . . . . . . . . . . 269
8.1.7.3. Validation Server Controls . . . . . . . . . . . . 249 9.4.3.1. Base de dados . . . . . . . . . . . . . . . . . . . . . . . . . . 269
8.2. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 9.4.3.2. Criando o Form . . . . . . . . . . . . . . . . . . . . . . . 270
8.3. HTML Server Controls e Web Server Controls . . . . .250 9.4.3.3. Inserindo o cdigo . . . . . . . . . . . . . . . . . . . . . 270
8.3.1. HTML Server Controls . . . . . . . . . . . . . . . . . . . . . . . . .250 9.4.3.4. Utilizando uma DataTable . . . . . . . . . . . . . 271
8.3.2. Web Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . 251 9.4.3.4.1. Visual do DataGrid . . . . . . . . . . 274
8.4. Sesses em ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 9.4.3.5. Travando colunas . . . . . . . . . . . . . . . . . . . . . . 274
8.4.1. Recuperando sesso em outra pgina 9.4.4. Utilizando um DataView . . . . . . . . . . . . . . . . . . . . . . . . 275
por meio de um evento . . . . . . . . . . . . . . . . . . . . . . . .254 9.4.5. Conectando com ASP.NET . . . . . . . . . . . . . . . . . . . . 277

8.4.2. Recuperando sesso em outra pgina


automaticamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256 282 Consideraes finais
8.5. Dados via URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 283 referncias bibliogrficas
285 Glossrio
Captulo 1

Lgica de
programao
Fluxograma e pseudocdigo
Tipos de dados
Constantes e variveis
Operadores
Comandos
Vetor
Matriz
Programao modular
InFoRmtICa 4 CaPtulo 1

Quadro
Algoritmo
com os passos
necessrios
da latinha.

1 - Pegar o recipiente. 2 - Abrir a tampa. 3 - Tomar o contedo.

Quadro

A
Algoritmo
detalhado
lgica computacional um dos primeiros passos para quem da latinha.
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 1 - Pegar o refrigerante 2 - Segurar o lacre com 3 - Remover o lacre.
resolver um problema, no entanto, temos de saber interpret-lo. Assim, com a mo esquerda. a mo direita.
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 4 Eliminar o lacre. 5 Posicionar a lata 6 - Inclinar a lata.
operaes de clculos, representadas pelo pseudocdigo a partir de comandos corretamente na boca.
no formato de texto (exatamente como uma receita) ou pelo fl uxograma de
forma grfi ca. 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 7 - Ingerir o lquido. 8 - Voltar a lata na
algoritmo, deixando-o mais detalhado (observe o quadro Algoritmo deta- posio original.
lhado da latinha).

22 23
InFoRmtICa 4 CaPtulo 1

Entre os diferentes smbolos que constituem a estrutura de um fl uxograma, os Aproveitando o mesmo exemplo da latinha de refrigerante, vamos reescre-
mais comuns esto includos na tabela 1. ver os passos lgicos por meio de um fluxograma (figura 1).
tabela 1
SIMBOLOGIA DO FLUXOGRAMA
SMBOLO NOME E FUNO Incio

NOME = TERMINAL
FUNO = Indica INCIO ou FIM
Incio Fim
de um processamento Pegar a
latinha

NOME = PROCESSAMENTO
FUNO = Denio de variveis ou Remover o Eliminar o
processamentos em geral (Clculos) lacre lacre
Abrir a
tampa
NOME = ENTRADA MANUAL
FUNO = Entrada de dados via
teclado, idntico ao comando LEIA Segurar o Posicionar a
Voltar a lata
na posio
lacre lata na boca
Tomar o original
NOME = DISPLAY
refrigerante
FUNO = Sada de Dados, mostra
um texto e/ou varivel na tela,
idntico ao comando ESCREVA
Pegar o Inclinar a Ingerir o
refrigerante lata lquido
NOME = DOCUMENTO
FUNO = Sada de Dados, envia
um texto e/ou varivel para a impressora,
usado em relatrios. Idntico ao
Figura 1
comando IMPRIMA Existem muitos softwares destinados construo de fl uxogramas, mas poss-
Fluxograma
vel faz-los tambm com o uso do Microsoft Word. Os exemplos desse material
dos passos
NOME = DECISO foram elaborados pelo Microsoft Visio.
lgicos.
FUNO = Deciso a ser tomada,
retornando verdadeiro ou falso, Pseudocdigo
idntico ao comando SE
Os algoritmos so desenvolvidos em uma linguagem denominada pseudoc-
NOME = CONECTOR digo ou, como preferem alguns autores, portugus estruturado. Podem ser
FUNO = Desvia o uxo para uma outra criados sem o formalismo das linguagens de programao, mas obedecem a
pgina, sendo interligados pelo conector uma regra bsica de estruturao: cabealho, declarao e instrues, confor-
me o seguinte modelo:
NOME = ENTRADA/SADA
FUNO = Leitura de gravao Programa nome_do_programa
Ttulo do Algoritmo
de arquivos Declare
{declarao de variveis}
NOME = SETA
FUNO = Indica a direo do uxo Incio Declaraes de
variveis
{instrues e comandos}
NOME = LOOP Comandos e
Fim
FUNO = Realiza o controle de loop instrues ordenados
de forma lgica

24 25
InFoRmtICa 4 CaPtulo 1

Um algoritmo deve ter como caracterstica um nmero fi nito de passos, des- de sua varivel ou constante e no utilize espao em branco ou caracteres especiais,
critos de forma precisa e que possam ser executados em um determinado tem- com exceo do underline (_). Exemplos:
po. Pode permitir zero ou mais entradas de dados e gerar sadas de dados
refi nados. Para construir um algoritmo, preciso usar informaes claras e nome Joozinho
objetivas, geralmente compostas de um verbo ou de uma frase direta.
idade 0
1.2. tipos de dados
minha_idade 15
A manipulao de dados em um algoritmo ou at mesmo nas linguagens
de programao s possvel com base em algumas regras fundamentais pag_final R$ 1.479,00
para a definio dos tipos de dados. preciso diferenciar um dado com
nmeros ou outros tipos de caracteres.
No pseudocdigo (fi gura 2), as constantes ou variveis devero estar relaciona-
das com os seus respectivos tipos de dados:
numricos inteiros
Esse tipo de dado representado por nmeros no fracionados positivos ou ne- Figura 2
gativos, como: 10, 50, -56, -1.000 etc. Programa variveis Estrutura de
pseudocdigo.
Declare Incio
numricos utuantes
So representados por nmeros fracionados positivos ou negativos, por exemplo: nome como caractere
10.5, -45.78, 178.67 etc.
nome como caractere
idade como inteiro idade como inteiro
salrio como utuante
Caracteres ou literais
salrio como flutuante
o maior conjunto de dados. So representados por letras, nmeros, sm-
bolos e espao em branco, sempre entre aspas. Exemplo: cadeira, 100, Incio
nome Joozinho
R$ 10.00, 11h00 etc. idade 15
nome Joozinho salrio 1500

1.3. Constantes e variveis idade 15


As constantes so expresses que recebem um valor qualquer que no ser
Fim
modificado durante o processo de execuo do algoritmo. J as variveis salrio 1.500,00
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 Fim
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
1.4. operadores
o uso do sinal de ou =. Isso quer dizer que o valor na frente do si- Os operadores so utilizados pelos pseudocdigos. O mesmo acontece com as
nal ser armazenado no elemento anterior ao sinal de atribuio. Veja: linguagens de programao, cuja funo realizar as diferentes operaes de
aritmtica e de lgica em um ambiente computacional.
nome Joozinho idade 10 pi 3.14
aritmticos
Independentemente do tipo de dado adotado caracteres variados (Joozinho), Esse grupo tem como responsabilidade realizar as operaes aritmticas
nmeros inteiros (10) ou fl utuantes (3.14) , o processo de atribuio o mesmo. (tabela 2) de um pseudocdigo. As operaes sero realizadas de acordo
Mas a declarao requer cuidado. Por isso, procure escolher o nome da varivel de com a prioridade, ou seja, parnteses, potncia, multiplicao, diviso e,
acordo com o tipo de dado que ser recepcionado, inicie sempre com letras o nome por ltimo, soma e subtrao.

26 27
InFoRmtICa 4 CaPtulo 1

tabela 2 Para compreender o processo lgico de dados, observe as tabelas abaixo, mos-
trando os valores originais e os resultados adquiridos a partir dos operadores
OPERADORES ARITMTICOS lgicos. Esse tipo de quadro conhecido como Tabela Verdade (tabela 5).
+ adio de nmeros utuantes ou inteiros
+ Concatenao de valores literais (caracteres) tabela 5
- Subtrao de nmeros utuantes ou inteiros
NO // NOT
* multiplicao de nmeros utuantes ou inteiros
Valor Entrada 01 Resultado
/ Diviso de nmeros utuantes e inteiros
Verdadeiro Falso
** Potncia de nmeros utuantes e inteiros chave 1 chave 2
Falso Verdadeiro

E // AND Lgica E lmpada


bateria
Relacionais Valor Entrada 01 Valor Entrada 02 Resultado
Verdadeiro Verdadeiro Verdadeiro
Os operadores relacionais (tabela 3) permitem a execuo de testes entre cons- Verdadeiro Falso Falso
tantes e variveis. Falso Verdadeiro Falso
lgica ou
Falso Falso Falso
tabela 3 Simulao dos operadores
OU // OR
E e OU
OPERADORES RELACIONAIS Valor Entrada 01 Valor Entrada 02 Resultado
= Igual Verdadeiro Verdadeiro Verdadeiro
<> Diferente Verdadeiro Falso Verdadeiro
> maior
Falso Verdadeiro Verdadeiro
Falso Falso Falso
< menor

<= menor igual

>= maior igual


1.5. Comandos
Uma ao para o computador defi nida com um comando que executa deter-
minada operao (mostrar os dados e realizar um clculo, por exemplo). Essas
lgicos e tabela Verdade
aes sero representadas nos pseudocdigos por meio de expresses predefi ni-
Os operadores lgicos (tabela 4 ) executam funes especiais dentro dos pseudo- das na lgica computacional.
cdigos, quando relacionados aos testes condicionais ou a outros valores lgicos.
Comando Escreva()
tabela 4
utilizado para mostrar a sada de dados (fi gura 3), ou seja, quando uma men-
OPERADORES LGICOS 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-
no / not Inverte o resultado de uma expresso presses devem aparecer entre aspas, exceto as variveis e valores (inteiros ou
fl utuantes).
Figura 3
E / and Retorna verdadeiro caso todas as Escreva(bom dia)
Comando Escreva().
condies retornem verdadeiro
valor 10
Mensagem ou
varivel
ou / or Retorna verdadeiro quando uma das Escreva(valor)
condies retorna verdadeiro
Escreva(56)

28 29
InFoRmtICa 4 CaPtulo 1

Comando leia()
O pseudocdigo a seguir representa um exemplo mais completo, assim como o
fl uxograma, na sequncia (fi gura 4): Ao contrrio do comando Escreva(), o Leia() permite a insero de dados pela
interao com o usurio. Eles sero armazenados em variveis devidamente de-
Programa exemplo_escreva fi nidas (fi gura 5).
Figura 5
Declare
Leia(nome) Entrada de Dados.
nome como caractere
Leia(nota1)
Entrada de dados
mdia, nota1, nota2 como flutuante
Leia(nota2)
Inicio
Leia(temp)
nome Fulaninho

nota1 10.0 Ao realizar uma entrada de dados, o ideal que o usurio seja notifi cado sobre
o tipo de informao que dever ser inserida. Veja como:
nota2 2.0
Programa exemplo_leia
media (nota1 + nota2)/2
Declare
Escreva(Sua nota final :)
nome como caractere
Escreva(mdia)
mdia, nota1, nota2 como flutuante
Fim
Incio

Escreva(calculando a mdia)
Figura 4
Fluxograma Escreva.
Escreva(Qual o seu nome?)
Incio
Leia(nome)

Escreva(Qual a sua nota 1?)


nome como caractere
mdia, nota1, nota2 como Fim
utuante Leia(nota1)

Escreva(Qual a sua nota 2?)

nome Fulaninho Leia(nota2)


nota1 10.0 mdia
nota2 2.0
media (nota1 + nota2)/2

Escreva(Sua mdia final :)


Sua nota
mdia (nota1+nota2)/2
nal
Escreva(media)

Fim

30 31
InFoRmtICa 4 CaPtulo 1

Observe na fi gura 6, a mesma representao, no formato de fl uxograma: No prximo exemplo, para estabelecer a condio vamos utilizar os operadores
lgicos j vistos.

Se (mdia >= 7.00) Ento

Qual a sua nota1 mdia


Escreva(Voc est aprovado!!!! )
Incio
nota 1
Fim-Se

Estrutura de deciso Se...Seno...Fim-Se


nome como caractere
mdia, nota1, nota2 nome Qual a sua Sua mdia Fim Podemos organizar o comando Se(), para criar desvios condicionais de verdadei-
como utuante nota 2 nal ro ou falso no mesmo teste (fi gura 8):
Figura 8
Se (condio) Ento Se...Seno...Fim-Se.

{comando(s) condio verdadeira}


Calculando a Qual o seu mdia =
mdia nome? nota2 (nota1+nota2)/2 Seno

{comando(s) condio falsa}

Fim-Se
Figura 6
Fluxograma Leia.
Estrutura de deciso Se...Fim-Se
Os algoritmos, assim como as linguagens de programao, executam as ativi- No Sim
dades de forma sequencial. Mas, s vezes, devemos defi nir 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 (fi gura 7). Como fi caria a repetio do teste com a varivel mdia.

Figura 7 Se (media >= 7.00) Ento


Se...Fim-Se.
Se (condio) Ento
Escreva(Voc est aprovado!!!! )
{comando(s)}
Seno
Fim-Se Sim
Escreva(Voc est reprovado!!!! )

Fim-Se

32 33
InFoRmtICa 4 CaPtulo 1

Figura 9
Vamos organizar todo o pseudocdigo, apresentando-o, tambm, no formato
Exemplo de teste.
de fl uxograma (fi gura 9).
nome como caractere
Incio Calculando Qual o seu
mdia, nota1, nota2
a mdia nome?
como flutuante
Programa exemplo_teste

Declare Qual a sua Qual a sua


nota 02? nota1 nota 01? nome

nome como caractere

media, nota1, nota2 como fl utuante mdia = Sua mdia


nota2 mdia
(nota1 + nota2)/2 final

Sim
Incio Aprovado

Fim do
Fim mdia >=7.00
Escreva(calculando a mdia) programa

Escreva(Digite o seu primeiro nome.) Reprovado


No

Leia(nome)

Escreva(Qual a sua nota 01?)


Estrutura de deciso
Leia(nota1)
Selecione Caso...Seno...Fim-Selecione
Escreva(Qual a sua nota 02?) Em alguns momentos, haver necessidade de testar a mesma varivel diversas
vezes, como acontece no menu de opes. Para isso, utilizamos o comando Se-
Leia(nota2) lecione Caso da seguinte forma (fi gura 10):
Figura 10
mdia (nota1 + nota2)/2 Selecione Caso {varivel}
Selecione Caso.
Escreva(Sua nota fi nal :) Caso condio 01

Escreva(mdia) {comando(s)}

Se (media >= 7.00) Ento Caso condio 02

Escreva(Aprovado) {comando(s)} Sim

Seno Caso condio 03


No

Escreva(Reprovado) {comando(s)}

Fim-Se Seno Sim

Escreva(Fim de programa) {comando(s)}

Fim Fim-Selecione

34 35
InFoRmtICa 4 CaPtulo 1

Estrutura de repetio Para...Fim-Para


preciso descobrir, em determinada situao, se o usurio escolheu os nmeros
1, 2 ou 3. Qualquer outro diferente, dever gerar a mensagem nmero invli- Alm dos desvios sequenciais, possvel criar desvios em loop, ou seja, repetir
do (fi gura 11): 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
Leia(nmero) e fi nal dessa contagem (fi gura 12), e tambm identifi que o formato em que essa
tarefa ser realizada.
Selecione Caso nmero Figura 12
Para <varivel> = <vlr.inicial> At <vlr.fi nal> Passo <arg> Faa Para...Fim-Para.
Caso 1
{comando(s)}
Escreva(Voc escolheu o nmero 01)
Fim-Para
Caso 2
Cont = Inicial at
Escreva(Voc escolheu o nmero 02) Final

Caso 3

Escreva(Voc escolheu o nmero 03)


Comando(s)

Seno

Escreva(Nmero invlido)

Fim-Selecione Alguns exemplos:

Figura 11 Para x = 1 At 5 Faa


Selecione caso. 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.
No No No
Fim-Para
nmero 01 02 03

Sim Sim Sim

Para vlr = 0 At 10 Passo 2 Faa


Escreva(vlr) // Sero visualizados os nmeros: 0,2,4,6,8 e10.
Voc escolheu Voc escolheu Voc escolheu Nmero Fim-Para
o nmero 01 o nmero 02 o nmero 03 invlido

Para cont = 3 At 0 Passo -1 Faa


Escreva(cont) // Sero visualizados os nmeros: 3,2,1 e 0.
Fim-Para

36 37
InFoRmtICa 4 CaPtulo 1

Estrutura de repetio Enquanto...Fim-Enquanto Estrutura de repetio Repita...at que


Assim como o comando Para...Fim-Para permite realizar loop, a instruo En- O comando Repita tem a mesma fi nalidade do comando Enquanto, quando
quanto...Fim-Enquanto executa o mesmo processo (fi gura 13). Mas preciso o assunto funcionalidade. A nica diferena a localizao da condio de
lembrar que esse comando no realiza a contagem automaticamente. Por isso, teste, que ocorre no fi nal da cadeia de loop (fi gura 14), garantindo a execuo
necessrio implementar um contador de passos. dos comandos no mnimo uma vez.
Figura 13 Figura 14
Enquanto... Enquanto (condio) Faa Repita Repita...Fim-Repita.
Fim-Enquanto. {comando(s)} {comando(s)}
Fim-Enquanto At que (condio)

Condio
comando(s)

Comando(s)
Repita (condio)

Vamos repetir os exemplos da instruo Para...Fim-Para, mas agora com o


comando Enquanto.
x 1
x 1 Repita
Enquanto (x<=5) Faa Escreva(x) // Sero visualizados os nmeros: 1,2,3,4 e 5.
Escreva(x) // Sero visualizados os nmeros: 1,2,3,4 e 5. x x + 1
x x + 1 At que (x<=5)
Fim-Enquanto

num 3 num 3
Enquanto (num <=6) Faa Repita
Escreva(num) // Sero visualizados os nmeros: 3,4,5 e 6. Escreva(num) // Sero visualizados os nmeros: 3,4,5 e 6.
num num + 1 num num + 1
Fim-Enquanto At que (x<=6)

vlr 0
vlr 0 Repita
Enquanto (vlr <=10) Faa Escreva(vlr) // Sero visualizados os nmeros: 0,2,4,6,8 e 10.
Escreva(vlr) // Sero visualizados os nmeros: 0,2,4,6,8 e 10. vlr = vlr + 2
vlr vlr + 2 At que (vlr <=10)
Fim-Enquanto

cont 3 cont 3
Enquanto (cont >=0) Faa Repita
Escreva(cont) // Sero visualizados os nmeros: 3,2,1 e 0. Escreva(cont) // Sero visualizados os nmeros: 3,2,1 e 0.
cont cont -1 cont cont -1
Fim-Enquanto At que (cont >=0)

38 39
InFoRmtICa 4 CaPtulo 1

1.6. Vetor Programa vetores


Defi nido tambm como matriz unidimensional, um vetor (tabelas 6 e 7) uma Declare
varivel que possui vrios dados, acessados por meio de uma posio relativa, vet como conjunto[1..5] de inteiro
seguindo a mesma regra da concepo e atribuio das variveis. Incio
vet[1] 90
vet[2] 1
tabela 6
vet[3] 100
Vetor de Letras.
1 2 3 4 5 6 7 8 9 10 vet[4] 4 - 1
vet[5] 21
A H M B R J G Q S P Fim

Para realizar o acesso posio de um vetor, preciso identifi car a posio que
est entre os sinais de [], logo aps o nome do vetor:
tabela 7
Escreva(vet[3])
Vetor de Nmeros.
1 2 3 4 5 6 7 8 9 10
Leia(vet[2])
10 56 -4 60 2 6 99 3 1 -10

trabalhando com vetor


A entrada de dados em um vetor realizada por intermdio de seu identifi ca-
No exemplo anterior, podemos verifi car que cada elemento de um vetor carac- dor. Para isso, utiliza-se um contador crescente ou decrescente, de acordo com
terizado por uma posio relativa. Observando o vetor de letras, teremos: a necessidade. Vamos carregar 10 informaes numricas dentro de um vetor.

vet como conjunto[1..10] de inteiro


Posio 1 valor A Para i = 1 At 10 Faa
Escreva(Digite um valor na posio, i, do vetor)
Posio 5 valor R Leia(vet[i])
Fim-Para
Posio 8 valor Q

Seguindo a mesma lgica, podemos realizar a impresso do contedo desse vetor.

Em um pseudocdigo, realizamos a declarao de um vetor da seguinte forma: Para i = 1 At 10 Faa


Escreva(Valor da posio:, i, do vetor , vet[i])
Fim-Para
Programa vetores
Declare
vet como conjunto[n..n1] de <tipo> Vamos reunir os conceitos de leitura e impresso no mesmo algoritmo.
Incio
{comandos ou bloco de comandos} Programa vetor_dados
Fim Declare
vet como conjunto[1..10] de inteiro
i como inteiro
O nome do vetor representado pela expresso vet, cujo conjunto de infor- Incio
maes identifi cado por n, posio inicial, e n1, posio fi nal, ou seja, Para i = 1 At 10 Faa
um vetor de 10 posies poder ser representado como [1..10]. E o tipo de Escreva(Digite um valor na posio, i, do vetor)
informao que este vetor dever receber.

40 41
InFoRmtICa 4 CaPtulo 1

Leia(vet[i]) mat como conjunto[1..5][1..3] de inteiro


Fim-Para Incio
Para I = 1 At 10 Faa {comando ou bloco de comandos}
Escreva(Valor da posio:, i, do vetor , vet[i]) Fim
Fim-Para
Fim Assim como os vetores, para a atribuio de valores em uma matriz, devemos
identifi car a linha e a coluna.
Outro exemplo para analisar:
Programa matriz
Programa mdia Declare
Declare mat como conjunto[1..2][1..2] de inteiro
vetor como conjunto[1..8] de inteiro Incio
soma, mdia como fl utuante mat[1,1] 19
ct como inteiro mat[1,2] 2
Incio mat[2,1] 77
soma = 0 mat[2,2] 16
Para ct = 1 At 8 Faa Fim
Escreva(Digite um valor na posio, ct, do vetor)
Leia(vetor[ct])
soma soma + vetor[ct] trabalhando com matriz
Fim-Para
mdia soma / 8 ---- ou ---- mdia soma / ct A leitura e a impresso das matrizes seguem o mesmo esquema dos vetores. Mas
Escreva(A mdia fi nal :, mdia) ser necessrio utilizar dois contadores: um para identifi car a linha e outro, para
Fim coluna. Vejamos o exemplo de uma matriz 2x2.

Programa matriz
1.7. matriz Declare
matriz como conjunto[1..2][1..2] de fl utuante
A matriz, ao contrrio do vetor, multidimensional. Nesse caso, os dados so lin, col como inteiro
armazenados ou lidos de acordo com a relao entre os eixos, e seu ndice re- Incio
presentado por dois ou mais valores. Uma matriz 3x2, por exemplo, possui trs Para lin = 1 At 2 Faa
linhas por duas colunas. Portanto, qualquer referncia aos dados dever apontar Para col = 1 At 2 Faa
para ambas as posies da forma matriz[2,1], indicando que a informao refe- Escreva(Linha, lin, da matriz)
renciada est na linha 2 e na coluna 1 da matriz. Grafi camente, tem-se: Escreva(Coluna, col, da matriz)
Escreva(Qual o valor?)
Leia(matriz[lin,col])
1 2 Fim-Para
Fim-Para
1 9 20 matriz 3x2
Escreva(Visualizando os dados da matriz:)
matriz[2,1] 2 10 6 Para lin = 1 At 2 Faa
3 2 11 Para col = 1 At 2 Faa
Escreva(Linha, lin, da matriz)
Escreva(Coluna, col, da matriz)
Escreva(O valor :)
Para implementao, realizamos a declarao da matriz da seguinte forma: Escreva(matriz[lin, col])
Fim-para
Programa matriz Fim-para
Declare Fim

42 43
Informtica 4 captulo 1

Outro exemplo:
Programa procedimento
Declare
Programa soma op como caractere
Declare Procedimento bomdia
a,b,c como conjunto[1..8][1..4] de flutuante Escreva(Bom dia!!!!!)
ln, cl como inteiro Fim-procedimento
Incio Incio
Para ln = 1 At 8 Faa Escreva(Deseja ver nossa mensagem? (S/N))
Para cl = 1 At 4 Faa Leia(op)
Escreva(Digite o valor para a Matriz A:) Se op = S Ou op = s Ento
Leia(a[ln, cl]) bomdia // chamada ou procedimento
Escreva(Digite o valor para a Matriz B:) Fim-Se
Leia(b[ln, cl]) Fim
Escreva(Valores somados para a Matriz C:)
c[ln, cl] = a[ln, cl] + b[ln, cl]
Escreva(c[ln, cl]) Variveis locais ou globais
Fim-Para
Fim-Para As variveis locais so consideradas apenas em uma sub-rotina (procedimento
Fim ou funo). Dessa forma, so desconhecidas pelo algoritmo principal, ao contr-
rio das globais, que so consideradas por todo o algoritmo.

1.8. Programao modular Programa tipos_variveis


Uma das tcnicas bem empregadas para o desenvolvimento de programas a Declare
modulao de parte do cdigo. Isso significa que o programa principal que- a, b como INTEIRO // so variveis do tipo global
brado em partes menores. E cada parte representa uma unidade funcional. Essas Procedimento teste
sub-rotinas so identificadas como procedimentos ou funes. Permitem que Declare
parte do cdigo seja reaproveitada em outra parte do cdigo principal ou, at x, y como inteiro // so variveis locais
mesmo, em projetos diferentes, por outros programadores. // esta rea reconhece (a),(b),(x) e (y)
Fim-procedimento
Incio
Procedimento // esta rea reconhece (a) e (b).
Um procedimento, assim como o programa principal, formado por toda a es- Fim
trutura lgica (incio-fim, 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 finalizado, o controle O quadro em seguida mostra o campo de visualizaes das variveis, conforme
retorna ao programa principal. o pseudocdigo apresentado anteriormente.

Procedimento nome-do-procedimento ( parmetro:tipo )


Declare {variveis}
{comando ou bloco de comando Programa tipos_variaveis
Fim-Procedimento Procedimento teste
Visualizao das variveis
O nome-do-procedimento faz a identificao do programa e por essa ex- Visualizao das variveis (a),(b),(x) e (y)
presso que ele ser referenciado. Logo aps essa etapa, encontramos os par- (a) e (b)
metros e a definio 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. Acompanhe um exemplo para o clculo da rea do quadrado usando o procedimento.

44 45
Informtica 4 captulo 1

Funo
Programa quadrado
Uma funo tem as mesmas caractersticas estruturais de um procedimento, no
Declare
que diz respeito a fatores como funcionalidade, visualizao de variveis e cha-
op como caractere
madas. Mas a sua principal vantagem a possibilidade de retorno de valores em
Procedimento quadrado
tempo real. Isso quer dizer que, quando chamamos determinada funo, pode-
Declare
mos receber valores em tempo real, armazenando o resultado em uma varivel.
lado, rea como inteiro
Escreva(Digite um nmero inteiro:)
Leia(lado) Funo nome-da-funo ( parmetros:tipo ) : <tipo-de-retorno>
rea lado * lado Declare {variveis}
Escreva(A rea do quadrado :, rea) {comando ou bloco de comandos}
Fim-Procedimento Fim-Funo
Incio
Escreva(Gostaria de saber a rea de um quadrado (S/N)?)
Diferentemente do procedimento, preciso fazer a identificao do tipo de valor
a ser retornado.
Leia(op)
Se op = S Ou op = s Ento
quadrado
Programa quadrado
Fim-Se
Declare
Fim
op como caractere
lado como inteiro
Passagem de parmetro
Funo quadrado (ld como inteiro): inteiro
A passagem de parmetros por valor utilizada para que as sub-rotinas possam Declare
receber informaes e realizar qualquer tipo de manipulao fora do pseudoc- rea como inteiro
digo principal. rea ld * ld
Fim-Funo
Incio
Programa quadrado Escreva(Gostaria de saber a rea de um quadrado (S/N)?)
Declare Leia(op)
op como caracter Se op = S Ou op = s Ento
lado como inteiro Escreva(Digite o valor:)
Leia(lado)
Procedimento quadrado (ld como inteiro) Escreva(A rea do quadrado :)
Declare Escreva(quadrado(lado))
area como inteiro Fim-Se
rea ld * ld
Escreva(A rea do quadrado :, area) Fim
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

46 47
Captulo 2

Estrutura de dados
Lista encadeada
Lista circular
Lista duplamente encadeada
Pilhas
Filas
rvores
InFoRmtICa 4 CaPtulo 2

incio vazio II NULL

incio INFO 001 II posio 01

vazio II NULL

A estrutura de dados defi ne de que maneira os tipos primitivos


sero organizados (FORBELLONE, 2005): por meio de lista,
pilhas, fi las 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 identifi ca-
Cada elemento da lista identifi cado 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
Figura 16
Insero de elemento.

o e ao desenvolvimento de modelos para a resoluo de problemas. Na prtica, a um dispositivo nulo). Para a criao de uma lista, considera-se o primeiro pon-
signifi ca criar representaes concretas que podem atuar sobre modelos. teiro existente. Uma lista vazia deve ser criada com o ponteiro indicando NULL,
permitindo inseres no fi nal. Essa lista deve ser alocada em uma posio de
memria, com encadeamento para o prximo elemento (fi gura 16).
2.1. lista encadeada
Retirar um elemento da lista um processo um pouco mais complexo, pois
Um espao de memria reservado para os dados, quando so inseridos em uma podemos encontrar diferentes situaes, como eliminar o primeiro elemento da
lista encadeada. Ento, o espao ocupado por uma lista, na memria, expresso lista ou um elemento intermedirio (fi gura 17).
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 Outras funes agregadas s listas so: busca de elementos e verifi cao para
que indique o elemento seguinte (fi gura 15). saber se ela est vazia ou no. Figura 17
Eliminao de um elemento.
Figura 15
Lista encadeada.

incio incio incio

INFO 001 II posio 01 INFO 001 II posio 01 INFO 001 II posio 01

INFO 002 II posio 02 INFO 002 II posio 02 INFO 002 II posio 02

INFO 003 II posio 03 INFO 003 II posio 03 INFO 003 II posio 03

50 51
InFoRmtICa 4 CaPtulo 2

Figura 18
Lista circular.

INFO 001 II posio 01

25 40
INFO 002 II posio 02 15 15 15
10

INFO 003 II posio 03

tabela 8
2.4. Pilhas Push e pop
em uma pilha.
A pilha uma estrutura bem simples, muitas vezes encontrada dentro do hard-
2.2. lista circular 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
Em uma lista circular o ltimo elemento dever apontar para o primeiro (fi gura que pode ser retirado. Portanto, o primeiro que sai o ltimo que entrou. Te-
18). Para percorrer a lista preciso visitar todos os seus elementos, a partir de um mos, nesse caso, o LIFO (do ingls last in, fi rst out, ou ltimo dentro, primeiro
ponteiro inicial, at chegar a ele novamente. Caso o ponteiro inicial seja NULL, fora). H duas operaes bsicas, para trabalhar com as pilhas: push (empilhar)
a lista ser considerada vazia. e pop (desempilhar) (tabela 8).

2.3. lista duplamente encadeada 2.5. Filas


Na lista encadeada h um ponteiro indicando o prximo elemento. J na du- Outra estrutura a fi la, que apresenta a ordem de sada dos elementos de
plamente encadeada so dois ponteiros: um mostrando o elemento seguinte e forma diferente do que acontece em uma pilha. Na fi la, o primeiro elemento
Figura 19
outro, o anterior. A partir de um elemento podemos acessar ambos os lados que entra o primeiro a sair: FIFO (fi rst in, fi rst out, ou seja, primeiro dentro,
Lista duplamente tabela 9
(fi gura 19). primeiro fora). possvel inserir um novo elemento no fi nal da fi la e retirar o
encadeada. Entrada e sada
primeiro (tabela 9).
de uma fila.

INFO 001 II posio 01 INFO 001 II posio 01 INFO 001 II posio 01 10

II posio 02 II posio 02 II posio 02 20 35 10


20 10
10 15 15 15 20 35

52 53
InFoRmtICa 4 CaPtulo 2

Figura 20 Figura 22
rvore e Esquema da
seus ns. rvore Binria.

R raiz

A B C D E sae sad

2.6. rvores Na rvore binria cada n tem zero, um ou, no mximo, dois fi lhos. Ento,
possvel defi nir uma rvore binria como vazia ou um n raiz com duas subr-
Os tpicos anteriores representam a disposio de dados lineares. As rvores, vores uma na direita (sad) e outra na esquerda (sae) (fi gura 22).
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. rvore genrica
Os demais ns so identifi cados como internos ou fi lhos (fi gura 20).
Na rvore binria h restrio quanto ao nmero de ns: no mximo dois. Esse
rvores binrias limite no acontece nas rvores genricas (fi gura 23). Figura 23
rvore genrica.
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 (fi gura 21).

Figura 21
rvore binria.

* 2

+ *

1 2 5 3

54 55
Captulo 3

Criao de
pginas Web
Identicao do documento
Estrutura do documento
Formatao
Texto
Cores
Tabelas
Imagens
Links
Formulrios

XML
Informtica 4 captulo 3

3.1. Identificao do documento


Para a criao de documentos HTML, devemos identificar o padro daquele
que est sendo criado, o DOCTYPE. Ele especifica o DTD (Document Type
Definition ou Definio 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 DICA
usa elementos desaprovados ou obsoletos. Para validar o tipo de
documento que est
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional// sendo desenvolvido,
ENhttp://www.w3.org/TR/html4/loose.dtd> utilize o validador do
W3C no link: http://

O
validator.w3.org/.

HTML 4.01 Frameset: utiliza molduras (FRAMES) e tambm transitrio.
HTML (iniciais da expresso em ingls HyperText Markup
Language ou Linguagem de Marcao de Hipertexto) vem <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Frameset//
sendo utilizado para o desenvolvimento de pginas da internet ENhttp://www.w3.org/TR/html4/frameset.dtd>
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 especificao do W3C (Word Wide Web Con- HTML 4.01 Strict: segue padres exigidos pelo W3C, portanto, cumprindo
sortium ou Consrcio da Rede de Alcance Mundial) recomenda a verso 4.01 as especificaes.
como padro de desenvolvimento do HTML, que sofreu nova reformulao
com base na estrutura de documentos XML (Extensible Markup Language). <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN
Surgiu, assim, o XHTML (eXtensible HyperText Markup Language ou Lin- http://www.w3.org/TR/html4/strict.dtd> O W3C
guagem de Marcao de Texto Extensvel), considerada o novo padro de de- Fundado em 1994,
senvolvimento web. o W3C (World Wide
Da mesma maneira como acontece com o HTML, existem tambm especifica- Web Consortium)
Pgina de HTML do es DOCTYPE para os documentos XHTML. ou Consrcio da
Centro Paula Souza. Rede Mundial de
Computadores)
XHTML 1.0 Transacional: utiliza recursos obsoletos.
formado por empresas
de tecnologia
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//
de diferentes partes
ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
do mundo
que trabalham
para criar padres
XHTML 1.0 Frameset: usa molduras (FRAMES) e tambm transitrio. e diretrizes para
a interpretao de
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Frameset// contedos da web.
ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd> O grupo desenvolve
protocolos, promove
fruns abertos, entre
XHTML 1.0 Strict: segue padres exigidos pelo W3C, ou seja, cumpre as es- outras aes. Mais
pecificaes. informaes podem
ser obtidas no site
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN http://www w3c.br.
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.

58 59
Informtica 4 captulo 3

3.2. Estrutura do documento utilizar o CSS (Cascading Style Sheet ou Estilo Pginas em Cascata), para fazer
a formatao correta do documento. A insero dessa formatao realizada por
Para indicar as marcaes do documento, denominadas tag, devemos utilizar os meio da tag <style> e poder ser aplicada em trs nveis diferentes:
sinais de < e >. Para que ele seja validado, deve ter a seguinte estrutura bsica:
Nvel Local quando h necessidade de formatar uma tag especial.

Nvel Geral quando as formataes sero usadas em todo o documento.


<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN Nvel Global quando possvel associar os estilos de formatao com
http://www.w3.org/TR/html4/loose.dtd> outros documentos ou projetos.
<html>
<head> Todas as aplicaes so corretas e nada impede o uso dos trs mtodos no mes- Escreva todas
<meta http-equiv=Content-Type content=text/html; charset=utf-8> mo documento. as tags e atributos
<title>Ttulo do Documento</title> em letras minsculas
</head> e os atributos
Regras entre aspas.
<body>
</body> Tag uma palavra-chave (relevante) associada a uma informao, que mui-
</html> 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 ;
DOCTYPE: identifica o tipo de documento (HTML 4.01 Transitional).

HTML: o elemento raiz do documento. Identifica e informa ao navegador o


tipo de documento; utilizado no incio e fim do arquivo. <style type=text/css>
body {background:blue;
HEAD: nessa tag, sero inseridas informaes como ttulo, palavra-chave, tipo color:yellow}
de caractere etc. </style>

META: define 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. No estilo determinado para a tag <body>, duas propriedades foram seleciona-
das: a cor de fundo estilo skyblue e a cor amarela das letras (figura 25).
TITLE: a informao que aparece na aba do navegador (figura 24).
Formatao de nvel local
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 Para a formatao diretamente na tag, devemos utilizar a tag <style> e os par-
seja, <body> abre e </body> fecha, assim como as tag isoladas. Por exemplo, o metros de formatao entre aspas. O resultado pode ser observado na figura 26.
<br> para o HTML e <br/> para o XHTML.

3.3. Formatao <body style=background:skyblue>



As pginas devem ser criadas conforme as recomendaes do W3C, evitando,
principalmente na formatao, o uso de tags desaprovadas. Portanto, deve-se Figura 25
Regras de formatao.
Figura 24
Ttulo do
documento.

60 61
InFoRmtICa 4 CaPtulo 3

Figura 26
No exemplo anterior, a tag <link> identifi ca o documento a ser adicionado ao
Formatao na tag.
documento principal, no caso, o estilo.css. Veja o cdigo a seguir:

/* CSS Document */
body {background:skyblue}

Classes e identificadores
Formatao de nvel geral
As classes permitem que vrios estilos sejam aplicados na mesma tag. Dessa
A tag <style> deve fi car no incio do documento e conter todos os parmetros forma, devemos colocar o class junto tag.
de formatao.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN
Transitional//EN http://www.w3.org/TR/html4/loose.dtd>
http://www.w3.org/TR/html4/loose.dtd> <html>
<html> <head>
<head> <meta http-equiv=Content-Type content=text/html; charset=utf-8>
<meta http-equiv=Content-Type content=text/html; <title>Utilizao de Classes</title>
charset=utf-8> <style type=text/css>
<title>Formao No Documento</title> p.um {background:blue;
<style type=text/css> color:yellow}
body {background:skyblue} p.dois {background:yellow;
</style> color:blue}
</head> </style>
<body> </head>
Minha Primeira Pgina em HTML <body>
</body> <p class=um> Minha pgina, usando a classe um </p>
</html> <p class=dois> Minha pgina, usando a classe dois </p>
</body>
Formatao de nvel global </html>

Nesse caso, devemos criar dentro do documento HTML um link (cdigo abai-
xo) para identifi car um documento de formatao CSS. 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 fi gura 27.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN Usamos os identifi cadores quando no queremos vincular a formatao a
http://www.w3.org/TR/html4/loose.dtd> uma determinada tag. Os identifi cadores so nomes defi nidos pelos pro-
<html> gramadores, geralmente associados ao estilo de formatao a ser utilizada.
<head>
<meta http-equiv=Content-Type content=text/html; Figura 27
charset=utf-8> Classes em CSS.
<title>Formatao com Arquivo Externo</title>
<link href=estilo.css rel=stylesheet type=text/css>
</head>
<body>
Minha Primeira Pgina em HTML
</body>
</html>

62 63
Informtica 4 captulo 3

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01


<p> Minha Primeira pgina HTML <br> Na Linha de Baixo </p>
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
Se no tivermos a formatao de texto includa, o resultado ser o texto padro
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
do navegador (figura 29).
<title>Utilizao de Identificador</title>
<style type=text/css>
Figura 29
#titulo {color:red}
Texto padro.
#texto {color:blue}
</style>
</head>
<body>
<div id=titulo> HTML </div>
<div id=texto> Minha Primeira Pgina em HTML</div>
</body>
</html> Fonte
Uma fonte de letra poder ser modificada conforme a sua famlia (Verdana,
Arial, Times etc.), tamanho, estilo (itlico, regular, etc.) e peso (negrito).
Foram criados dois estilos para o texto: um na cor vermelha e outro na cor azul.
Para acionar os identificadores foi utilizada a tag <div> e, na sequncia, o nome Font-Size
do identificador. O resultado pode ser conferido na figura 28.
Este tpico indica o tamanho da fonte, definido com base em determinada
O programador pode utilizar classe ou identificador. No h restries. O im- unidade de medida. As unidades mais comuns para os padres web so pontos
portante seguir as especificaes corretas para o desenvolvimento de um docu- (pt) e pixel (px).
mento padronizado e validado pelo W3C.

Figura 28
Identificador. <!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>
3.4. Texto <style type=text/css>
#titulo {font-size:12pt}
A insero de texto realizada diretamente no corpo do documento, geralmente #texto1 {font-size:12px}
utilizando a tag <p> </p> para identificar o incio e o fim do pargrafo respec- #texto2 {font-size:10px}
tivamente. Por exemplo: </style>
</head>
<body>
<p> Minha Primeira Pgina HTML </p> <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>
Outra tag que dever ser levada em considerao a <br>, que realiza a quebra </html>
automtica do texto para outra linha.

64 65
Informtica 4 captulo 3

Para o identificador ttulo, a referncia est em pontos. E para os demais, em <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
pixel. Observe que os dois primeiros identificadores tm o mesmo tamanho,
Transitional//EN
mas o resultado final mostra diferenas (figura 30).
http://www.w3.org/TR/html4/loose.dtd>
Figura 30 <html>
Font-Size. <head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
A expresso acessibilidade <title>Formatao de Texto</title>
refere-se possibilidade <style type=text/css>
de qualquer pessoa, #titulo {font-size:12pt;
independentemente de suas
capacidades fsico-motoras
font-family:Geneva, Arial, Helvetica, sans-serif} Dica
#texto1 {font-size:12px; Utilize a tag
e perceptivas, culturais
font-family:Arial, Helvetica, sans-serif} <div> quando for
ou sociais, usufruir dos
Font-Family #texto2 {font-size:10px; trabalhar com os
benefcios de uma vida em
identificadores
sociedade. Acessibilidade preciso escolher com cuidado o tipo de letra a ser utilizado. As fontes menos co- font-family:Times New Roman, Times, serif}
e a tag<span>
na web, ou e-acessibilidade, muns podem at ser bonitas, mas tambm so as que mais tm chance de provocar .estilo {font-style: italic; para as classes.
refere-se especificamente a desconfigurao visual de um projeto. Portanto, procure utilizar fontes-padro font-size:20px}
ao direito de ingressar na e, de preferncia, de boa visualizao, seguindo as normas de acessibilidade. </style>
rede sem qualquer tipo
de barreira arquitetnica,
</head>
Um recurso interessante para a definio das fontes a criao de uma lista. Se <body>
seja na arquitetura dos
no acharmos a primeira fonte listada, partimos para a segunda, e assim suces-
equipamentos e programas, <div id=titulo>Formatando <span class=estilo>Fontes </span></div>
sivamente. Se no encontrarmos nenhuma fonte, a alternativa recorrer fonte-
na linguagem adotada ou <div id=texto1>Texto usando a primeira formatao </div>
padro do navegador. Nesse caso, o resultado ser outro (figura 31).
no visual das informaes. <div id=texto2>Texto usando a segunda formatao </div>
Dentro desse conceito surgiu </body>
o WAI (Web Accessibility
<style type=text/css> </html>
Initiative ou Iniciativa para
Acessibilidade na Rede), #titulo {font-size:12pt;
um projeto internacional font-family:Geneva, Arial, Helvetica, sans-serif}
criado por grupos de pessoas #texto1 {font-size:12px; A figura 32 mostra o resultado final.
dedicadas a desenvolver font-family:Arial, Helvetica, sans-serif}
condies especficas para #texto2 {font-size:10px; Figura 32
que todos tenham acesso font-family:Times New Roman, Times, serif} Font-Style.
internet (ambiente, </style>
equipamento, navegador,
ferramentas etc.).

Figura 31
Font-Family.

Font-Weight
A expresso identifica o peso da fonte e notado quando utilizamos determi-
nada fonte em negrito. Para efeito de comparao, uma fonte normal tem valor
Font-Style 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,
Um dos estilos mais usados o itlico. Aqui, vamos usar uma classe na tag 500, 600, 700, 800 e 900. Fazendo algumas modificaes no exemplo anterior,
<span> para a ativao. podemos obter outro resultado (figura 33).

66 67
Informtica 4 captulo 3

O resultado final pode ser conferido na figura 34.


#texto2 {font-size:10px;
font-family:Times New Roman, Times, serif; Figura 34
font-weight:700} Text-Decoration.
.estilo {font-style: italic;
font-size:20px;
font-weight:900}

Figura 33
Font-Weight.
Text-Transform
Modifica a configurao da letra diferenciando caracteres maisculos de minsculos.

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01


Transitional//EN
Text-Decoration
http://www.w3.org/TR/html4/loose.dtd>
O Text-Decoration, ou decorao de texto, representado por uma linha junto ao
<html>
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 <head>
vrios identificadores em uma nica linha, e depois formataes especficas. <meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 <title>Formatao de Texto</title>


Transitional//EN <style type=text/css>
#estilo1, #estilo2, #estilo3, #estilo4 {font-size:15pt}
http://www.w3.org/TR/html4/loose.dtd>
#estilo1 {text-transform: capitalize}
<html>
<head> #estilo2 {text-transform: lowercase}
<meta http-equiv=Content-Type content=text/html; #estilo3 {text-transform: none}
charset=iso-8859-1>
#estilo4 {text-transform: uppercase}
<title>Formatao de Texto</title>
<style type=text/css> </style>
#estilo1, #estilo2, #estilo3, #estilo4 {font-size:15pt} </head>
#estilo1 {text-decoration: line-through} <body>
#estilo2 {text-decoration: none}
#estilo3 {text-decoration: overline} <div id=estilo1>Preste Muita Ateno nas Letras da Frase - Estilo 01</div>
#estilo4 {text-decoration: underline} <div id=estilo2>Preste Muita Ateno nas Letras da Frase - Estilo 02</div>
</style> <div id=estilo3>Preste Muita Ateno nas Letras da Frase - Estilo 03</div>
</head>
<div id=estilo4>Preste Muita Ateno nas Letras da Frase - Estilo 04</div>
<body>
<div id=estilo1>Texto Decorado - Estilo 01</div> </body>
<div id=estilo2>Texto Decorado - Estilo 02</div> </html>
<div id=estilo3>Texto Decorado - Estilo 03</div>
<div id=estilo4>Texto Decorado - Estilo 04</div>
</body> O resultado final (figura 35) mostra o efeito de capitalize para a primeira letra
</html> de cada palavra em maiscula, lowercase para todas as minsculas, none para o
original e uppercase para todas as maisculas.

68 69
InFoRmtICa 4 CaPtulo 3

Figura 35
Existe outra opo chamada vertical-align, que faz o alinhamento no topo,
Text-Transform.
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 identifi cadas por meio das
text-align palavras em ingls: black, blue, red, skyblue, green, etc.

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.
#texto {color:blue}
CONHECIMENTO
DAS CORES
A representao
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 hexadecimal das cores
Transitional//EN Para obter mais opes de cores, podemos utilizar as referncias em hexa- foi adotada porque
http://www.w3.org/TR/html4/loose.dtd> decimal, cujos valores representam o sistema RGB (do ingls Red, Green e a decimal fica muito
extensa. Se 0 igual
<html> Blue, ou seja, vermelho, verde e azul). Cada par de valores em hexadecimal
a 0 em hexadecimal,
<head> representa a fora de um elemento no sistema RGB (tabela 10).
10 equivale a A, 125 a 7D
<meta http-equiv=Content-Type content=text/html;
e 255 a FF. A cor, assim,
charset=iso-8859-1> pode variar de 00 a FF,
<title>Formatao de Texto</title> r G B Cor DeSCrIo
que so combinados para
<style type=text/css> se obter intensidade,
#estilo1, #estilo2, #estilo3 {font-size:15pt} tonalidades. Como
#estilo1 {text-align: center} 00 00 00 #000000 preto o branco a mistura
#estilo2 {text-align: left} de todas as cores,
#estilo3 {text-align: right} representado por seis
</style> F. J o preto, que
FF FF FF #FFFFFF branco
</head> ausncia de cor (na
<body> verdade, de reflexo de
luz), representa-se com
<div id=estilo1>Alinhado no Centro da Pgina - Estilo 01</div>
FF 00 00 #FF0000 vermelho seis 0. bom lembrar
<div id=estilo2>Alinhado Esquerda da Pgina - Estilo 02</div>
que o conhecimento das
<div id=estilo3>Alinhado Direita da Pgina - Estilo 03</div>
cores remete a 1665. Foi
</body> quando Isaac Newton,
CF CF CF #CFCFCF tonalidade de cinza
</html> aos 23 anos e de frias
foradas no campo
tabela 10 Hexadecimal. para fugir da peste
Nesse exemplo, o alinhamento serve de referncia para uma pgina da web (fi gura 36). que assolava a Europa,
conseguiu separar as
Figura 36 A variao entre os valores de cada elemento em hexadecimal ir produzir cores da luz branca do
Text-Align. uma tonalidade de cor diferente. Sol por meio de um
prisma e algumas lentes.

Dica: procure na internet a expresso tabela de cores HTML,


acessando qualquer um dos sites de busca.

70 71
Informtica 4 captulo 3

3.6. Tabelas 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
A tabela um dos recursos mais usados para organizar as informaes em uma nenhuma tag (palavra-chave) (figura 38).
pgina. Mas para mont-la precisamos de uma srie de marcaes que nos per-
mitiro organizar a sua estrutura. <table border=1px>
<tr> <td>
TABLE Identifica o incio e o fim da tabela. <table border=1px>
<tr> <td> linha 01 - coluna 01 </td> </tr>
TR Linhas da tabela. <tr> <td> linha 02 - coluna 01 </td> </tr>
</table>
TD Colunas da tabela. </td>
<td>
TH Representa a coluna da tabela para ttulos, formatando o texto em <table border=1px>
negrito. <tr> <td> linha 01 - coluna 02 </td> </tr>
<tr> <td> linha 02 - coluna 02 </td> </tr>
A estrutura da tabela dever obedecer composio de suas linhas e colunas. O </table>
exemplo da figura 37 mostra uma tabela 2x2. </td></tr>
<tr> <td> coluna 01 </td>
<td> coluna 02 </td> </tr>
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
</table>
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html> Figura 38
<head> Tabelas internas.
<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>
Vamos associar a tabela aos recursos do CSS (Cascading Style Sheets ou Estilo Pginas
<td> linha 01 - coluna 02 </td> </tr> em Cascata), por meio das classes e dos identificadores, para formatao e alinhamen-
<tr> <td> linha 02 - coluna 01 </td> to do texto, alm de aplicao de cores utilizando o exemplo anterior (figura 39).
<td> linha 02 - coluna 02 </td> </tr>
</table> <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
</body> Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
</html>
<html>
<head>
Nesse primeiro momento de desenvolvimento interessante manter a borda da <meta http-equiv=Content-Type content=text/html;
tabela, porque facilita a verificao de sua estrutura (figura 37). charset=iso-8859-1>
<title>Tabela</title>
Figura 37 <style type=text/css>
Tabela 2x2. table {color: #0033CC}
td { text-align:center}
.coluna1 {background:#FF3300;
color:#FFFF00}

72 73
Informtica 4 captulo 3

#coluna2 {background: #33FF33; No <style>, a coluna (TD) est defina como 350px. Se analisarmos a estrutura
color: #6633FF} da tabela, veremos que ela constituda por duas colunas. Portanto, a tabela ter
</style> 700px (2 x 350px de cada coluna) de comprimento. Mas, se verificarmos sua
</head> definio, teremos 400px. O resultado final ser, ento, uma tabela de 400px.
<body>
<table border=1px>
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
<tr> <td>
<table border=1px> Transitional//EN
<tr> <td> linha 01 - coluna 01 </td> </tr> http://www.w3.org/TR/html4/loose.dtd>
<tr> <td class=coluna1> linha 02 - coluna 01 </td> </tr> <html>
</table>
</td> <head>
<td> <meta http-equiv=Content-Type content=text/html;
<table border=1px> charset=iso-8859-1>
<tr> <td id=coluna2> linha 01 - coluna 02 </td> </tr> <title>Tabela</title>
<tr> <td> linha 02 - coluna 02 </td> </tr>
</table> <style type=text/css>
</td></tr> table {text-align:center}
<tr> <td style=font-size:24px> coluna 01 </td> .coluna1 {width:200px}
<td style=font-size: 8px> coluna 02 </td> </tr>
coluna2 {width:400px}
</table>
</body> tr {height:60px}
</html> </style>
</head>
<body>
Figura 39
Tabela formatada. <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>
Tamanho da tabela, linha e coluna </table>
</body>
A identificao de medidas para a tabela pode ser feita a partir dela mesma, da
</html>
linha ou da coluna. preciso ter cuidado, no entanto, para que uma medida
obtida no anule a outra. Veja o seguinte cdigo:

<style type=text/css> Nesse exemplo, se somarmos as colunas, obteremos valores coerentes em relao
td {width:350px} 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
</style>
demais seguiro essa definio (figura 40).
</head>
<body> Figura 40
Tabela tamanho.
<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>

74 75
Informtica 4 captulo 3

Estilo de bordas 3.7. Imagens BMP a


terminao usada
Ao utilizar o CSS, poderemos realizar diferentes aplicaes nas bordas das ta- Os navegadores esto habilitados para abrir diferentes tipos de imagens para a unidade
belas. Os exemplos abaixo mostram os diferentes efeitos em um nico cdigo. (BMP, JPG, GIF, entre outros), alm de contar com os GIFs para pequenas Bitmap, que
animaes existentes no site. Essas imagens podero ser inseridas pela tag significa mapa de
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 <img>, que, alm da incluso da imagem, oferece outros parmetros de for- bits. Nesse tipo de
Transitional//EN matao, como altura, largura e texto explicativo. representao, cada
http://www.w3.org/TR/html4/loose.dtd> ponto da imagem
<html> associado a
<head> <img src=programador.jpg width=100px height=100px um valor (no caso, o
<meta http-equiv=Content-Type content=text/html; alt=Programador> </img> bit). JPG (ou JPEG):
charset=iso-8859-1> Joint Photographic
<title>Tabela</title> Experts Group
<style type=text/css> SRC: Indica o arquivo para visualizao (caminho do arquivo, nome completo ou Grupo Reunido
table {background-color: #FFCC66; e extenso). de Especialistas
width:500px; em Imagem.
border-style:solid; Width e Height: largura e altura da imagem. GIF: Graphics
border-top-width: 15px; Interchange Format
border-bottom-width: 5px; ALT: permite incluir um texto alternativo caso a imagem no aparea no site. ou Formato de
border-left-width: 5px; Intercmbio de
border-right-width: 10px; Geralmente, as imagens so redimensionadas para um site, ou seja, raramente Grficos.
border-top-color: #00CC00; elas aparecem em seu tamanho natural. Portanto, os valores de largura e altura
border-bottom-color: #3333FF; devero ser bem analisados para que no ocorra distoro na imagem.
border-left-color: #FFFF00;
border-right-color: #FF0000} Vamos utilizar o cdigo a seguir para reproduzir uma imagem correta e outras
</style> duas com distoro (largura e altura).
</head>
<body>
<table> <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
<tr> <td> linha 01 - coluna 01 </td> <td> linha 01 - coluna 02 </td> </tr> Transitional//EN
<tr> <td> linha 02 - coluna 01 </td> <td> linha 02 - coluna 02 </td> </tr> http://www.w3.org/TR/html4/loose.dtd>
</table> <html>
</body> <head>
</html> <meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Imagem</title>
O resultado (figura 41) no est seguindo nenhum padro de design. </head>
<body>
<img src=programador.jpg width=100px height=100px
Dica: substitua o termo solid (slido) de border-style (estilo da alt=Programador>
borda), pelas palavras: none (nenhuma), dotted (pontilhada), dashed <img src=programador.jpg width=100px height=50px
(tracejada), double (dupla), groove (encaixe ou ranhura), ridge alt=Programador>
(serrilhado), inset (insero) ou outset (incio). <img src=programador.jpg width=50px height=100px
alt=Programador>
</body>
Figura 41 </html>
Formatao de borda.

Na figura 42, podemos verificar as trs imagens e, de acordo com os valores da


altura e largura, conseguiremos visualizar a distoro nas duas ltimas.

76 77
Informtica 4 captulo 3

Figura 42
Imagem distorcida. 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 significa ncora no existe um nome mais
sugestivo para navegao.

<a href=destino name=nome do link> imagem ou texto </a>

Na figura 43, podemos ver o Alt em ao, pois a primeira imagem no apareceu.

Figura 43 Links para outros sites


Utilizao do Alt.
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
Programador localizada (figura 45).

Figura 45
Link para o
Centro Paula Souza.

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 especificada Imagens.

<img src=../Imagens/programador.jpg width=50px


height=100px alt=Programador> <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
Bordas na imagem <html>
<head>
A aplicao de bordas na imagem ser feita pelo CSS diretamente na tag (figura 44). <meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Link</title>
<img src=../Imagens/programador.jpg width=100px </head>
height=100px alt=Programador style=border:solid; border- <body>
width:10px> <a href=http://www.centropaulasouza.sp.gov.br/>
Centro Paula Souza </a>
Figura 44 </body>
Imagem com borda. </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.

78 79
Informtica 4 captulo 3

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Figura 47


Pgina 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> Links para outros tipos de documentos
</head>
So utilizados, tambm, os links para indicar documentos para download, os
<body> quais ficam automticos, caso o padro no seja web (figura 48).
<p>Menu de opes</p>
<a href=pag_um.html> Pgina 01 </a> <br>
<a href=pag_dois.html> Pgina 02 </a> <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
</body> Transitional//EN
</html> http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
O cdigo acima cria um menu de opes para o usurio, que poder escolher
entre duas pginas (figura 46). <meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
Figura 46 <title>Link</title>
Menu de usurio. </head>
<body>
<p>Lista de exerccio em HTML para prxima aula<p>
<a href=html.doc> Baixar </a>
</body>
</html>

As pginas pag_um.html e pag_dois.html devero ser elaboradas de forma que Figura 48


os links funcionem e sejam de fcil acesso. Por isso, devem ficar no mesmo di- Download.
retrio do arquivo principal (menu.html) (figura 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>

80 81
Informtica 4 captulo 3

Links com imagens 3.9. Formulrios


Podemos inserir imagens associadas aos links, deixando a navegao mais in- Um formulrio usado para receber informaes do usurio. Esses dados, que
tuitiva. H, porm, problemas recorrentes, como a eliminao das marcaes depois podero ser tratados por outra aplicao, como ASP, PHP ou Java, so
do tipo ativo e visitado, normalmente representadas pela mudana de cores. enviados por meio de dois mtodos:
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- GET: as informaes seguem via URL ao servidor e ficam visveis ao usurio.
mas (figura 49). Exemplo, a pesquisa realizada no Google para encontrar a expresso Centro
Paula Souza:
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN http://www.google.com.br/search?hl=pt-BR&source=hp&q=centro&meta=&aq=f&oq=
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head> POST: as informaes so enviadas depois que a URL for ativada. Isso significa
<meta http-equiv=Content-Type content=text/html; que o servidor sabe que, depois de receber uma ativao de URL, deve aguar-
charset=iso-8859-1> dar a entrada de novos dados, os quais, portanto, no so visualizados na web
(MARCONDES, 2002).
<title>Link</title>
<style type=text/css> Todo formulrio tem a tag <form>, que identifica o incio, e </form>, para si-
a:link {text-decoration:none} nalizar o fim. Somente o que est entre essas tags ser considerado dado vlido
a:visited {text-decoration:none} para envio.
a:active {text-decoration:none}
a:hover {text-decoration:none} <form action= method=post name=cadastro></form>
a img {border-width:0} </form>
.texto {color:#33CC33}
</style>
</head> O formulrio pode receber uma identificao feita por name (nome). Isso aju-
<body> dar no tratamento dos dados, futuramente. Temos ainda a action (ao) do
<p>Lista de exerccio em HTML para prxima aula<p> formulrio, que indica a aplicao servidora que receber os dados. Por exemplo:
<a href=html.doc> <img src=../Imagens/down.png width=40px
height=35px alt=down></a> <br> <form action=verifica.aspx method=post name=cadastro>
<a href=http://www.centropaulasouza.sp.gov.br/> <form action=cadastro.php method=post name=cadastro>
<span class=texto>Centro Paula Souza </span></a>
</body> Entrada de texto
</html>
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-
Figura 49 maes. Alm disso, admite um valor padro j includo pelo value (valor),
Link e imagem com limita a quantidade de caracteres a serem digitados maxlength (comprimento
formatao CSS. 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 (figura 50).

82 83
Informtica 4 captulo 3

Figura 50
As informaes da caixa select so carregadas diretamente no formulrio.
Entrada tipo texto.
Com a utilizao, posterior, de linguagens de programao como ASP, PHP ou
Java, certamente isso acontecer dinmicamente (figura 53).

Figura 53
Caixa select.

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 (figura 51).

Login <input type=text value= size=20 maxlength=20> Outro recurso a opo pr-selecionada, acessada por meio da expresso selec-
Senha <input type=password value= size=8 maxlength=8> </p> ted (selecionada) em um dos itens definidos por option.

Figura 51 <p> Estado: <select name=cidade>


Entrada de <option selected> - - Cidade - - </option>
login e senha. <option>So Paulo</option>
<option>Rio de Janeiro</option>
<option>Distrito Federal</option>
Comentrio
</select> </p>
Para entrada de textos maiores, utilizamos a tag <textarea>, que permite criar
uma janela com especificaes de linha e coluna.
A opo indicada j aparece selecionada (figura 54).

<p> Descrio da Funo:<br> Figura 54


<textarea name=func rows=5 cols=40></textarea> </p> Opo pr-selecionada.

Podemos observar que a janela foi definida para 5 linhas e 40 colunas (figura
52). Ateno: o texto inserido na figura apenas ilustrativo.

Figura 52
Textarea - Botes checkbox
Comentrio.
Os botes checkbox (que significa verificao 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-
Opo select des, podemos indicar a palavra name, que ser fundamental para o controle
dos dados para validao, assim como o checked (controlado) para opes j
Representa as caixas tipo combos, presentes na maioria das aplicaes, nas quais selecionadas.
uma srie de opes fica disponvel para o usurio.
<p> Possui carteira de Trabalho:
<p> Estado: <select name=cidade> <input type=checkbox name=carteira></p>
<option>So Paulo</option> <p> Possui meio de conduo prpria:
<option>Rio de Janeiro</option> <input type=checkbox name=conduzir></p>
<option>Distrito Federal</option> <p> Deseja receber nossas informaes por e-mail?:
</select> </p> <input type=checkbox name=conduzir checked> Sim, desejo.</p>

84 85
Informtica 4 captulo 3

Na opo referente recepo de e-mails, o boto checkbox foi previamente BUTTON (boto): no executa funo nenhuma, exceto quando programado.
assinalado (figura 55). Significa que preciso desenvolver um cdigo a ser relacionado com o boto.

Figura 55 No caso dos formulrios, os mais importante so os Reset e Submit, que sero
Botes checkbox. 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 identificao padro.

<input type=reset value=Limpar>


<input type=submit value=Enviar>

Botes de Radio
O layout dos botes est na figura 57.
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- Figura 57
tante manter o mesmo name nos controles, para que possa ser criado vnculo Botes Reset
entre eles. e Submit.

<p>Estado Civil:<br>
<input type=radio name=civil> Solteiro Formulrio
<input type=radio name=civil> Casado
At aqui apresentamos os elementos comuns para a elaborao de um formulrio.
<input type=radio name=civil> Outros </p> Agora, o momento de colocar todos os recursos em um nico documento.
<p>Jornada de Trabalho:<br>
<input type=radio name=trab checked> Manh
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
<input type=radio name=trab> Tarde
Transitional//EN
<input type=radio name= trab> Noite </p> http://www.w3.org/TR/html4/loose.dtd>
<html>
Na opo referente jornada de trabalho, assim como no checkbox, uma opo <head>
foi pr-selecionada (figura 56). <meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
Figura 56 <title>Cadastro de Cliente</title>
Botes de Radio. <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>
Botes <body>
Utilizamos os botes para indicar o tipo de ao a ser realizada com os dados do <span class=titulo>Cadastro de Cliente</span>
formulrio. Existem trs tipos de botes com funes especficas: <form action= method=post name=cadastro></form>

RESET (restabelecer): limpa todas as informaes do formulrio e no envia <p> Nome completo
mais nada. <input type=text value=seu nome aqui size=40 maxlength=35> </p>
<p> Login <input type=text value= size=20 maxlength=20>
SUBMIT (envio): manda as informaes de acordo com as condies do me- Senha <input type=password value= size=8 maxlength=8> </p>
thod (mtodo) e do action do formulrio.

86 87
Informtica 4 captulo 3

<p> Descrio da Funo:<br> 3.10. XML


<textarea name=func rows=5 cols=40></textarea> </p>
<p> Estado: <select name=cidade> A XML (eXtensible Markup Language ou Linguagem de Marcao Extensiva),
<option selected> - - Cidade - - </option> assim como o HTML, uma linguagem de marcao que permite a manipu-
<option>So Paulo</option> lao dos dados de forma mais precisa. Isso assegura informaes uniformes
<option>Rio de Janeiro</option> e independentes de aplicao ou de fornecedor que, dessa forma, podem ser
<option>Distrito Federal</option> utilizadas em diferentes nveis de aplicao. J a XML, dependendo do nvel de
</select> </p> anlise (RAY, 2001), considerada um modelo de gerenciamento de informa-
<p> Possui carteira de Trabalho: es e ainda pode ser formatada ou filtrada.
<input type=checkbox name=carteira></p>
<p> Possui meio de conduo prprio: A XML no apenas mais uma linguagem de marcao como a HTML, que
<input type=checkbox name=conduzir></p> especifica a formatao de uma palavra ou um trecho de texto. A XML permite
<p> Deseja receber nossas informaes por e-mail?: a definio de tags personalizadas. Isso ajuda a tornar o documento mais inteli-
<input type=checkbox name=conduzir checked> Sim, desejo.</p> gente, j que o texto armazenado entre as tags ganha um significado especfico
<p>Estado Civil:<br> (FURGERI, 2001). Possibilita, tambm, que o documento seja criado com uma
<input type=radio name=civil> Solteiro estrutura facilmente compreendida por seres humanos e mquinas. A afirmao
<input type=radio name=civil> Casado fica bem clara no exemplo seguinte, no qual fcil reconhecer que 5,20 se
<input type=radio name=civil> Outros </p> refere ao preo do produto.
<p>Jornada de Trabalho:<br>
<input type=radio name=trab checked> Manh
<input type=radio name=trab> Tarde <pedido>
<input type=radio name=trab> Noite </p> <produto>
<input type=reset value=Limpar> <codigo>MF45-KJ90</codigo>
<input type=submit value=Enviar> <descritivo>Parafuso de 15mm</descritivo >
</form> <valor>5,20</valor>
</body> </produto>
</html> <pedido>

O resultado um formulrio com todos os recursos (figura 58).


As tags so representadas em formato de rvore, semelhante disposio de
Figura 58 pastas nos diretrios (figura 59).
Formatao
de borda. Figura 59
Estrutura XML.

88 89
Informtica 4 captulo 3

Verificao Diretivas
A maioria dos editores que atuam na web pode criar documentos XML. Uma A identificao do documento deve aparecer logo no incio, o que facilitar a
maneira rpida para verificar se a estrutura do documento est correta abri-lo leitura por parte de outros aplicativos. Pode ser da seguinte forma:
por meio de um navegador web. Se o contedo no estiver totalmente visvel,
significa que h um erro que dever ser apontado pelo navegador. Se estiver tudo
<?xml version=1.0 ?>
certo, ser possvel visualizar claramente o contedo (figura 60).

Essa linha deve ser a primeira do documento. Se houver informaes (dados)


Figura 60
que utilizem caracteres especiais (RAY, 2001), a definio de cdigo tem de ser
Verificao de
informada.
documento.

<?xml version=1.0 encoding=iso-8859-1 ?>

O cdigo a seguir um exemplo de documento que traz na sua primeira linha


de identificao 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>
No navegador Internet Explorer, vemos os sinais de + e -, que permitem a </produto>
expanso ou contrao do nvel de detalhamento das informaes. Mas no <produto>
podemos esquecer que o documento XML deve, obrigatoriamente, levar em <codigo>MMZ-1010-GR</codigo>
conta que: <descritivo>Pito de 18mm</descritivo >
<valor>2,60</valor>
Precisa de uma tag raiz, denominada root. </produto>
</pedido>
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 especificaes 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).

90 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
InFoRmtICa 4 CaPtulo 4

Figura 61
( esquerda)
*7 StarSeven,
o ponto de partida.

Figura 62
Logotipo do Java, com

J
a xcara estilizada.

ava uma linguagem de programao desenvolvida nos anos 1990 por


uma equipe de programadores chefi ada por James Gosling, na Sun
Microsystems, conglomerado norte-americano da rea de informtica
Smalltalk-80,
(leia o quadro Quem quem no mundo Java). Para conhec-la mais profundamen-
ou simplesmente
te, preciso voltar um pouco no tempo e saber quais foram suas antecessoras: a ingls), em homenagem a uma rvore que podia ser vista da janela da sede da Sun.
Smalltalk, uma
linguagem de
BCPL e B, a C e a C++ (confi ra no quadro A evoluo da linguagem de programa- Descobriu-se mais tarde que j havia uma linguagem de programao chamada
programao o). Por trs de todo o sucesso do Java est um projeto de pesquisa corporativa Oak, o que implicava a necessidade de se buscar outro nome para a desenvolvida
puramente orientada batizado de Green, fi nanciado em 1991 pela norte-americana Sun Microsystems. na empresa e assim nasceu o nome Java. H, porm, outras verses para a origem
objetos. Isso significa A Sun, cujo nome faz referncia Standford University, fabrica computadores, do nome. Uma delas diz que foi escolhido quando a equipe visitou uma cafeteria
que em Smalltalk tudo semicondutores e softwares. Tem sede no Silicon Valley (Vale do Silcio), em Santa local que tinha o nome Java, em referncia cidade de origem de um tipo de caf
objeto: os nmeros, Clara, Califrnia (EUA) e subsidirias em Hillsboro, no estado do Oregon (EUA), importado pelo estabelecimento. Essa verso explica a xcara estilizada estampada
as classes, os mtodos, e em Linlithgow, na Esccia. Gosling e a equipe que tocou o projeto para a Sun no logo do Java (fi gura 62).
os blocos de cdigo apostavam na convergncia dos computadores com outros equipamentos e eletro-
etc. Tecnicamente, domsticos e produziram um controle remoto com interface grfi ca touchscreen O projeto Green passou por algumas difi culdades. O mercado de dispositivos ele-
todo elemento (toque na tela) batizado de *7 (Star Seven) (fi gura 61). Para o desenvolvimento de trnicos inteligentes, voltado para o consumo popular, no incio da dcada de 1990,
um objeto de parte do sistema operacional e dos aplicativos do *7, foi criada uma linguagem de no se desenvolvia to rpido como a Sun havia previsto. Por isso, corria o risco de
primeira ordem. programao baseada no C++ e no smalltalk, chamada de Oak (carvalho, em ser cancelado. Por uma feliz coincidncia, a www (World Wide Web, rede mundial

Quem quem no mundo Java


James Gosling Kenneth Thompson Dennis MacAlistair Ritchie Bjarne
Programador canadense conhecido (ou Ken Thompson) - cientista um cientista da computao notvel por sua
Stroustrup
como o pai da linguagem Java. computacional conhecido por sua participao no desenvolvimento de linguagens Cientista da
Em 1977, tornou-se bacharel em inuncia no sistema operacional e sistemas. Nascido em Bronxville, Nova computao
Cincia da Computao pela UNIX. Nasceu em 1943 em Nova Yorque (EUA), formou-se em Fsica dinamarqus e
Universidade de Orleans, Louisiana, EUA, e tem e Matemtica Aplicada pela professor catedrtico
Calgary, no Canad, mestrado pela UC Berkeley. Foi o Universidade de Harvard. da Universidade

FOTOS: DIVULGAO
e em 1983, PhD criador da linguagem B, em 1969, no Em 1983, Richie e Ken do Texas, EUA.
em Cincia da centro de pesquisas da AT&T Bell Thompson receberam Conhecido como o
Computao Labs, onde nasceram tecnologias o prmio Turing pelo pai da linguagem de
pela Universidade consideradas revolucionrias (desde cabos de telefone, transistores, desenvolvimento da teoria programao C++.
Carnegie Mellon, LEDs e lasers at linguagem de programao C e o sistema de sistemas operacionais
nos Estados operativo Unix, que hoje de propriedade do The Open Group, genricos e, especialmente, pela
Unidos. consrcio formado por empresas de informtica). implementao do sistema UNIX.

94 95
InFoRmtICa 4 CaPtulo 4

de computadores) se popularizou em 1993 e a Sun viu o Java ser utilizado para trinhas. Mas vamos nos ater ao ambiente de desenvolvimento JSE. O Java come-
adicionar contedo dinmico s pginas da web, como interatividade e animaes. 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
Alm de salvar o projeto Green, a expanso da World Wide Web deu incio correes e um signifi cativo aumento nas APIs (banco de recursos da linguagem,
ao desenvolvimento do Java como uma linguagem comercial. Essa mudana j que ser descrito mais adiante). Nessa etapa, a Sun resolveu trocar a nomenclatu-
trazia a ideia de estimular a interatividade entre os ambientes computacionais ra de Java para Java2, para diminuir a confuso entre Java e Javascript e divulgar
(mainframes, PCs etc.), os eletrodomsticos (que cada vez mais tm programa- as melhorias trazidas pela nova verso. Mas que fi que bem claro: no h verso
o embarcada), equipamentos eletrnicos (que evoluiriam para os dispositivos do Java 2.0. O 2 foi incorporado ao nome (exemplo: Java2 1.2). Depois, vieram
mveis) e a ento recm-nascida internet. 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
A Sun anunciou o Java formalmente durante uma conferncia, em maio de correes de erros e melhorias. A partir do Java 5, comearam a surgir diversas
1995. A linguagem chamou a ateno da comunidade de negcios, devido ao atualizaes, como Java 5 update 7, e Java6 1.6 update 16.
enorme interesse que a web despertava na poca. Alm disso, tambm tinha o
grande apelo da portabilidade: Write once, Run anywhere. 4.1.1. JRE (Java Runtime Environment)
Por isso, o Java passou a ser utilizado para desenvolver aplicativos corporativos Os ambientes de desenvolvimento Java contm um pacote (conjunto de softwa-
de grande porte e aprimorar a funcionalidade de servidores web (os computado- res que se complementam e interagem para determinada fi nalidade) chamado JRE
res que fornecem o contedo http://www.sis.pitt.edu/~mbsclass/hall_of_fame/ (Java Runtime Environment). Ele executado como um aplicativo do sistema ope-
images/thompson.jpg que vemos em nossos navegadores da internet). Essa lin- racional e interpreta a execuo de programas Java de forma performtica, segura
guagem tambm passou a ser usada no desenvolvimento de aplicativos para e em escalas. A JRE composta pela JVM (Java Virtual Machine, ou mquina
dispositivos mveis (telefones celulares, pagers e PDAs, por exemplo). virtual Java), por um conjunto de APIs (Application Programming Interface ou
interface de programao de aplicaes) e por alguns pacotes de desenvolvimento.
4.1. a plataforma de desenvolvimento
4.1.1.1. JVm (Java Virtual machine)
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- A mquina virtual Java, traduo literal da sigla em ingls JVM, um programa
am a estudar o assunto. H um universo de siglas e acrnimos que permeiam que carrega e executa os programas desenvolvidos em Java, convertendo os byte-
todas as fases do desenvolvimento e tambm formam uma verdadeira sopa de le- codes (cdigo fonte pr-compilado)em cdigo executvel de mquina.

A evoluo da linguagem de programao


BCPL B C C++
Acrnimo para Basic Combined Sucessora da BCPL, a B foi uma linguagem de programao compilada, De alto nvel, com facilidades para o uso em baixo nvel, uma
Programming Language (Linguagem desenvolvida no famoso centro de estruturada, imperativa, processual, de alto liguagem comercial multiparadigma e de uso geral. Muito popular,
de Programao Bsica Combinada), pesquisas da AT&T Bell Labs em nvel e padronizada. Foi criada em 1972, desde os anos 1990, tambm est entre as preferidas nos meios
a BCPL uma linguagem de 1969 um trabalho capitaneado por por Dennis Ritchie, tambm no AT&T Bell universitrios em virtude de seu grande desempenho e enorme
programao voltada para o Ken Thompson com contribuies de Labs, como base para o desenvolvimento base de usurios. Foi desenvolvida por Bjarne Stroustrup
desenvolvimento de softwares Dennis Ritchie. Ken Thompson utilizou do sistema operacional UNIX (escrito em (primeiramente, com o nome C with Classes, que significa C
para sistemas operacionais e a linguagem B para criar as primeiras Assembly originalmente). A maior parte do com classes em portugus), em 1983, no Bell Labs, como um
compiladores. Foi criada por Martin verses do sistema operacional UNIX. cdigo empregado na criao dos sistemas elemento adicional linguagem C. A linguagem C++ oferece
Richards em 1966 e utilizada, anos Hoje obsoleta, mas seu valor operacionais de equipamentos, como vrios recursos que complementam e aprimoram a linguagem
depois, por Ken Thompson para incontestvel por ter sido a precursora desktops, laptops, estaes de trabalho e C. Sua principal caracterstica, no entanto, est na adoo da
desenvolver a B e, depois, a C. da C. Por isso, uma das mais pequenos servidores, escrita em C ou C+ +. programao orientada a objetos, tcnica de programao que
populares no mundo. abordada em todo este captulo.

96 97
Informtica 4 captulo 4

A plataforma
A JVM responsvel pelo gerenciamento dos programas Java, medida Java Micro Editon
que so executados, simulam uma CPU e a memria (da o nome mquina indicada para
virtual). Graas JVM, os programas escritos em Java podem funcionar
aparelhos como
em qualquer plataforma de hardware e software que possua uma verso da
o Personal Digital
JVM. Ou seja, cada sistema operacional compatvel com o Java possui sua
Assistant.
prpria verso de JVM, tornando os programas desenvolvidos em Java inde-
pendentes em relao plataforma (hardware e software) onde esto sendo
executados. Configura-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.

divulga
4.1.2. Ambientes de desenvolvimento
4.1.2.1. JSE (Java Standard Edition)
caes embarcadas, ou seja, aquelas que rodam em um dispositivo especfico.
Em portugus, a edio Java padro. Contm todo o ambiente necessrio para bastante indicada para aparelhos compactos, como telefone celular, PDA
a criao e execuo de aplicaes Java, incluindo a mquina virtual Java (JVM), (Personal Digital Assistant ou assistente digital pessoal), controles remotos etc.
ocompilador Java (JRE), um conjunto de APIs e outras ferramentas utilitrias. Contm configuraes e bibliotecas desenvolvidas especialmente para os port-
voltada para o desenvolvimento de aplicaes desktop e web de pequeno porte, exe- teis. Com esse instrumento, o desenvolvedor tem mais facilidade para lidar com
cutadas em PCs e em servidores. O JSE considerado o ambiente principal, j que as limitaes de processamento e memria do equipamento.
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- 4.1.2.4. JDK (Java Development Kit)
dispositivos). Por ser a plataforma mais abrangente do Java, a JSE a mais indicada
para quem quer aprender a linguagem. A JDK (ou JSDK Java Software Development Kit, kit de desenvolvimento de
programas Java) o ambiente completo de desenvolvimento Java. Existe um
4.1.2.2. JEE (Java Enterprise Edition) JDK para cada ambiente (JSE, JEE e JME). Esse kit deve ser instalado na m-
Servidores de
quina para possibilitar a criao de aplicaes Java.
aplicao so
programas que
A plataforma JEE (sigla em ingls, que literalmente significa edio empresa-
fornecem uma rial Java) contm bibliotecas que oferecem facilidades para a implementao 4.1.2.5. JSE: nosso foco
srie de recursos de softwares Java distribudos, tolerantes a falhas. Voltada para aplicaes mul-
para suporte ticamadas baseadas em componentes que so executados em um servidor de O JSE o mais indicado para os programadores iniciantes (ou mesmo veteranos
de aplicaes aplicaes, a JEE considerada, mais do que uma linguagem, um padro de de outras linguagens) e ser o foco de todos os exemplos deste captulo. Mas,
corporativas, desenvolvimento. Nela, o desenvolvedor de software segue obrigatoriamente apesar dos diferentes ambientes de desenvolvimento, trata-se da mesma lingua-
na web, de determinadas regras para que seu sistema possa se comunicar com outros de gem de programao. Portanto, a maioria dos recursos que sero abordados
forma segura e maneira automtica. Destina-se a aplicaes corporativas de grande porte e que comum e perfeitamente aplicvel a outros ambientes, principalmente no que diz
consistente. usam frequentemente o EJB (Enterprise Java Beans, um padro com estrutura respeito orientao a objetos.
de aplicaes distribudas) e servidores de aplicao. Outro recurso desse am-
biente so as aplicaes que rodam no lado servidor em uma arquitetura cliente/ 4.1.3. A portabilidade
servidor, conhecidas como servlets.
Em primeiro lugar, preciso entender o que um programa compilado e um
4.1.2.3. JME (Java Micro Edition) programa interpretado. Compilao o processo de converso do cdigo fonte
(texto escrito segundo as regras de determinada linguagem de programao)
A plataforma Java Micro Edition (literalmente, edio Java micro, voltada para para a linguagem de mquina (programa pronto para ser executado). Nesse pro-
microdispositivos) permite o desenvolvimento de softwares para sistemas e apli- cesso, so feitas vrias referncias (e consequentemente suas dependncias) em

98 99
InFoRmtICa 4 CaPtulo 4

A orientao a objetos surgiu da necessidade de elaborar programas mais indepen-


Cdigo fonte JVM dentes, de forma gil, segura e descentralizada, permitindo que equipes de programa-
Windows dores localizadas em qualquer parte do mundo trabalhem no mesmo projeto. Essa
Java (.java) Windows
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
Bytecodes JVM Linux
rotinas ou funes sequenciadas e ordenadas para atender aos requisitos funcionais de
(.class) Linux uma aplicao. Nele, as regras (codifi cao) fi cam 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 signifi cativamente a complexidade na ela-
JVM Solaris borao e expanso desses softwares.
Solaris
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
Figura 63
como o usurio enxerga os elementos tratados no mundo real. Nessa tcnica, o desen-
Portabilidade Java.
relao ao sistema operacional no qual o programa gerado. J em um progra- volvedor cria uma representao do que se pretende gerenciar no sistema (um cliente,
ma interpretado a execuo ocorre por meio da leitura, interpretao e execuo um produto, um funcionrio, por exemplo) exatamente como acontece no mundo
direta do cdigo fonte (no existe o processo de compilao). real. Assim, esses elementos podem interagir, trocando informaes e adotando aes
que defi nem os processos a serem gerenciados pelo sistema. Por exemplo, no processo
Na comparao entre esses dois modelos de desenvolvimento, possvel perce- de venda de uma empresa podem ocorrer os seguintes passos: um cliente compra
Cdigo fonte Java
ber que os programas compilados oferecem melhor desempenho (velocidade de um ou vrios produtos; o cliente atendido por um vendedor; o vendedor tem
um arquivo de texto
escrito de acordo
execuo), enquanto os interpretados so bem mais lentos. Em contrapartida, os direito a comisso.
com as regras da compilados so totalmente dependentes da plataforma e do sistema operacional
linguagem Java em que foram gerados, ao contrrio dos interpretados. Ao analisarmos esses processos no mundo real, destacamos como entidades envol-
e salvo com a vidas os seguintes elementos: cliente, vendedor e produto, assim como a venda e o
extenso .java. J a O Java se aproveita do que h de bom nos dois modelos e descarta os pontos ne- clculo e comisso. A partir da anlise orientada a objetos, representamos essas enti-
expresso bytecode gativos de cada um, por meio da JVM. Um cdigo fonte Java pr-compilado e dades dentro da nossa aplicao com as mesmas caractersticas adotadas no mundo
se refere a um convertido em bytecode pela JRE (e no pelo sistema operacional). O bytecode real (nome, endereo e telefone de um cliente, etc. alm de suas atitudes tpicas numa
arquivo convertido gerado por meio de recursos da JRE e executado sobre a JVM, ou seja, sem transao comercial (cotao, compra, pagamento etc.).
em linguagem de interao direta com o sistema operacional da mquina em que foi desenvolvido.
mquina e salvo No entanto, a JVM precisa interagir com o sistema operacional e, por isso, tem 4.2.1. abstrao
com o mesmo nome verses para diferentes sistemas operacionais.
do cdigo fonte, Abstrao a capacidade do ser humano de se concentrar nos aspectos essenciais
porm com Como tudo passa pela JVM, essa plataforma pode tirar mtricas, decidir qual de um contexto qualquer, ignorando caractersticas menos importantes ou aciden-
a extenso.class. o melhor lugar para alocar ou suprimir memria, entre outras funes que antes tais. Outra defi nio: habilidade mental que permite visualizar os problemas do
fi cavam sob a responsabilidade do sistema operacional. A fi gura 63 mostra como a mundo real com vrios graus de detalhe, dependendo do contexto do problema.
portabilidade em aplicaes Java alcanada e qual o papel da JVM nesse contexto. Para o programador que utiliza orientao a objetos, a abstrao a habilida-
de de extrair do mundo real os elementos (entidades, caractersticas, comporta-
4.2. origem da orientao a objetos mentos, procedimentos) que realmente interessam para a aplicao desenvolvida.
Por exemplo, as informaes relevantes a respeito de um CD para uma aplicao
No mundo em que vivemos, de constante utilizao e atualizao de recursos usada no gerenciamento de uma loja que vende CDs, so diferentes das de uma
tecnolgicos, os softwares ganharam um espao que vem aumentando vertigi- aplicao para o gerenciamento de uma fbrica, que produz CDs.
nosamente e em diversos setores da sociedade. Existem programas especfi cos
para uso comercial, industrial, administrativo, fi nanceiro, governamental, mi- 4.3. uml (unified modeling language)
litar, cientfi co, de entretenimento etc. Para atender a essa demanda cada vez
maior e mais exigente, as reas de desenvolvimento e manuteno de softwares A UML, sigla em ingls de linguagem modular unifi cada, dedicada especi-
precisam criar aplicaes cada vez mais complexas. fi cao, visualizao, construo e documentao que usa notao grfi ca para

100 101
InFoRmtICa 4 CaPtulo 4

modelar softwares. Muito utilizada em empresas que desenvolvem aplicaes www.java.sun.com/docs/codeconv/) que defi ne sua prpria conveno de nomen-
orientadas a objetos, tambm est presente em vrias publicaes relacionadas clatura, cuja utilizao ser destacada durante a elaborao dos cdigos fonte.
com a linguagem Java (alm de ser um instrumento interessante para elaborao Tal como ocorre com os conceitos, deixar de us-la no gera erros de lgica, de
de exerccios em aula). Por isso, escolhemos um de seus diagramas (de clas- compilao ou de execuo. Seguiremos, entretanto, risca as recomendaes de
ses) para ilustrar nossos exemplos. bom frisar, no entanto, que os recursos da conceitos e convenes, para que sejam conhecidas em profundidade e tambm
UML vo muito alm desses diagramas. em nome da implantao de boas prticas de programao.

4.4. Eclipse
IDE (Integrated Development Environment, ou ambiente integrado de desen- o projeto da livraria Duke Controle de clientes: vendas.
A Eclipse Foundation
volvimento) um programa de computador que rene recursos e ferramentas A partir desse ponto, vamos Controle de funcionrios: clculo de salrios.
uma organizao
de apoio para agilizar o desenvolvimento de softwares. Aqui, trataremos da IDE desenvolver um controle de estoque e Controle de produtos: compras, vendas e estoques disponveis.
sem fins lucrativos que
Eclipse Classic 3.5.0, comumente conhecida por Galileo (as verses mais recentes movimentao para uma livraria fictcia, Controle de fornecedores: compras realizadas de cada fornecedor.
hospeda os projetos
Eclipse e ajuda a manter
fi cam disponveis para download no site htpp://www.eclipse.org/downloads/.) chamada Duke. Todos os exemplos Controle de compra e venda: o sistema manter um registro de todas.
tanto uma comunidade criados a seguir sero reaproveitados as movimentaes realizadas de acordo com as regras da livraria.
de openSource (grupo O Eclipse mantido pela Eclipse Foundation, que possui projetos que se con- para a construo desse projeto.
que desenvolve centram na criao de uma plataforma de desenvolvimento composta por qua- Para o software da empresa, temos a
softwares com cdigo dros extensveis e ferramentas para construo, implantao e gerenciamento de manuteno dos dados (em banco) e o
de fonte aberto) softwares em todo o seu ciclo de vida.
levantamento dos seguintes requisitos:
como um conjunto de
produtos e servios 4.5. orientao a objetos (1)
complementares. O
projeto Eclipse foi Uma vez familiarizados com uma parte do universo das siglas e com os am-
originalmente criado bientes de desenvolvimento relacionados linguagem Java, o momento de
pela IBM em novembro aprofundar o conhecimento do tema e das boas prticas de programao, na
de 2001 e apoiado construo de softwares orientados a objetos. Para isso, nosso foco de estudo
por um consrcio ser a construo de um projeto. Para comear, importante entender diversos
de fornecedores de conceitos que ajudaro a estruturar e a padronizar os programas desenvolvidos
software. (Para mais com essa tcnica. A construo de softwares independentes, de fcil expanso,
informaes de alto nvel de reusabilidade (a possibilidade de reutilizar trechos de um pro-
sobre o Eclipse, acesse: grama) e que viabilizam a interao entre programas e plataformas diferentes,
htpp://www.eclipse.org). 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, fi sicamente), 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 especfi ca (disponvel no site http://

102 103
Informtica 4 captulo 4

4.5.1. Componentes elementares As classes de modelagem podem ser comparadas a moldes ou formas que defi-
nem as caractersticas e os comportamentos dos objetos criados a partir delas.
4.5.1.1. Classes Vale traar um paralelo com o projeto de um automvel. Os engenheiros defi-
nem as medidas, a quantidade de portas, a potncia do motor, a capacidade em
Em Java, tudo definido e organizado em classes (a prpria linguagem estru- relao ao nmero de passageiros, a localizao do estepe, dentre outras descri-
turada dessa forma). Inclusive, existem autores que defendem ser correto chamar es necessrias para a fabricao de um veculo.
a orientao a objeto de orientao a classes. As classes exercem diversos papis
em programas Java, a princpo vamos nos ater a duas abordagens: Durante a elaborao do projeto, bvio que o automvel ainda no existe. Po-
rm, quando for fabricado, todas as especificaes previamente definidas no dese-
Classes de modelagem: so as que daro origem a objetos. Ou, ainda, nho tero de ser seguidas risca. Os diferentes modelos desse mesmo veculo tero
so as que definem novos (e personalizados) tipos de dados. 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.
Classe Principal: ter, por enquanto, a finalidade de implementar o m- Sero informaes acrescentadas aos elementos j definidos no projeto (atributos).
todo main (principal). Poderia ter qualquer nome, desde que respeitadas
as regras de nomenclatura de classes. Ser chamada, ento, de Princi- O funcionamento bsico do automvel tambm foi definido no projeto. O mo-
pal, como referncia ao mtodo main. torista poder acelerar, frear, trocar marchas, manobrar etc. Essas aes, assim
como a respectiva resposta do carro (mtodos), permitem uma outra analogia
Nossa primeira classe ser a representao de uma pessoa segundo os critrios da com nosso assunto. O motorista (que seria no nosso caso o programador) no
orientao a objetos. Para isso, utilizaremos um diagrama de classe (UML), um precisa ter conhecimentos profundos sobre mecnica para, por exemplo, acele-
critrio que valer para os demais exemplos desse captulo (figura 64). rar o automvel. Internamente, o veculo possui um complexo mecanismo que
aciona as partes responsveis pela injeo e pela combusto. Esta, por sua vez,
Do projeto ao gera uma presso sobre outras engrenagens do motor, impulsionando as rodas e
automvel, assim fazendo o carro se deslocar processos tambm especificados no projeto. Para
como da classe o motorista, quando o objetivo velocidade, basta saber que preciso pisar
ao objeto. 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 definido 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 definem 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 finalidade
realizar tarefas. Geralmente, correspondem a uma ao do objeto. Consideran-
do-se o exemplo do automvel, os mtodos poderiam definir processos como
ligar, acelerar, frear etc.
Equipe Eesc-USP Baja Sae

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-

104 105
InFoRmtICa 4 CaPtulo 4

Figura 64
Diagrama de classe Por conveno, todo nome de classe
Nome da classe
(UML) da Pessoa comea com letra maiscula.
classe Pessoa.
- nome : String Pessoa
- endereco : String
- telefone : String Atributos O sinal de menos - indica a visibilidade do
atributo. Nesse caso, privado (private em
+ Pessoa() : void - nome : String ingls).
+ Pessoa(nome : String, endereco : String, telefone : String) : void - endereco : String
- telefone : String Por conveno, todos os nomes de atributos
+ getNome() : String
+ setNome(nome : String) : void so escritos com letras minsculas.
+ getEndereco() : String
Depois especicado o tipo de dado que
+ setEndereco(endereco : String) : void
ser armazenado no atributo
+ getTelefone() : String
+ setTelefone(telefone : String) : void
+ inserirDadosPessoa() : void
+ apresentarPessoa() : void Mtodos O sinal de mais + indica a visibilidade
do mtodo, nesse caso, pblico (public em
+ Pessoa() : void ingls).
+ Pessoa(nome : String, endereco : String, telefone : String) : void
+ getNome() : String
+ setNome(nome : String) : void Por conveno, o nome dos mtodos
+ getEndereco() : String escrito com letras minsculas.
+ setEndereco(endereco : String) : void
+ getTelefone() : String
+ setTelefone(telefone : String) : void Os nicos mtodos que tm exatamente o
+ inserirDadosPessoa() : void
+ apresentarPessoa() : void mesmo nome da classe so os construtores.
Tambm iniciam com letras maisculas.
Principal
Nomes compostos por vrias palavras
+ main(args[ ] : String) : void
comeam com letra minscula e tm
a primeira letra das demais palavras
maiscula, sem espao, trao, underline,
ma traz detalhes dos atributos e mtodos que compem a classe. A tabela ou qualquer outro separador. Por exemplo,
11 descreve os detalhes contidos nos trs compartimentos (nome, atributos apresentar Pessoa.
e mtodos) do diagrama de classe.
Todo mtodo tem parnteses na frente
4.5.1.1.4. Codificao da classe Pessoa do nome. Servem para denir os seus
parmetros. Um mtodo pode ou no ter
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), parmetros.
alm do comando class e do nome da classe. A definio da classe fica de-
Por ltimo, a denio do retorno. Se o
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 mtodo tiver retorno, especicado o
Pessoa. Perceba que parte do cdigo foi suprimida, mais precisamente a co- tipo, por exemplo, String e se no tiver
dificao dos mtodos (ficando visvel somente a assinatura ou abertura colocada a palavra void (vazio).
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.

106 107
Informtica 4 captulo 4

Figura 65
rmetros ( ). Essas especificaes, mais precisamente o nome e os parmetros (a
Codificao da
quantidade e o tipo), definem a assinatura do mtodo. Isso ser detalhado depois,
classe Pessoa. assim como as linhas de cdigo que fazem a apresentao dos dados. No trecho
ilustrado pela figura 66, observamos a codificao 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 figura
67. Essa prtica aconselhvel para a futura gerao de documentao do sistema
e tambm possibilita o esclarecimento do cdigo em pontos especficos. Isso pode
ser muito til para voc e outros programadores que trabalhem no mesmo cdigo.

Figura 67
Insero de
comentrios
no cdigo.

Quando analisamos a codificao da classe, percebemos que ali est tudo o


que foi definido no diagrama de classe. Depois da abertura da classe, vem a
declarao dos atributos (da linha 4 a 6), composta pelo modificador de acesso
(private), pela definio 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 modificador de acesso, o nome e o tipo
conforme o padro da UML). Mas as informaes so as mesmas.

Como definio de um comportamento especfico da classe, temos o mtodo


apresentarPessoa, que mostrar o contedo dos atributos em prompt (simulado no
eclipse pelo painel console). Conforme definido no diagrama, o mtodo pblico
(public), no retorna valor (void), possui o nome apresentarPessoa e no recebe pa- 4.5.1.2. Objetos
Figura 66 A partir do momento em que a classe de modelagem est completa, possvel
Codificago criar um objeto e manipul-lo. Outra vez, surgiro termos novos, explicados mais
do mtodo adiante. O importante, agora, perceber que essa a classe Principal (salva em um
apresentarPessoa. arquivo separado da classe Pessoa). Nela est definido 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

108 109
InFoRmtICa 4 CaPtulo 4

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 modifi cador 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
Classe Comando - 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-
Objeto Construtor 5678 no atributo telefone.

Em seguida, com o objeto j criado, seu mtodo apresentarPessoa ser


chamado e as mensagens, apresentadas conforme a fi gura 69.

Figura 69
Sada do mtodo
apresentarPessoa().
Objeto Mtodo

Figura 68
Codificao da sistema acessado e executado. A assinatura do mtodo main ser sempre
classe Principal. feita dessa forma.
4.5.2. modificadores de acesso
Observe a fi gura 68. Vamos linha 09, na qual realizada a criao (instancia-
o) do objeto p do tipo Pessoa. Veja como isso ocorre: Tanto os atributos quanto os mtodos devem (por clareza de cdigo) ter sua
visibilidade defi nida na declarao (para atributos) e na assinatura (para os m-
Primeiro houve a abstrao da entidade do mundo real a ser representada todos). Visibilidade, no caso, signifi ca deix-los ou no disponveis para uso em
em nosso programa (no caso, uma pessoa). Isso aconteceu na defi nio outras classes da aplicao. Nas de modelagem, a visibilidade defi ne se deter-
das informaes que deveramos armazenar (atributos) e nas aes que minado atributo ou mtodo fi car acessvel por intermdio do objeto depois de
deveramos programar (mtodos). instanciado. Por exemplo, o mtodo apresentarPessoa foi chamado (acessado) a
partir do objeto p (p.apresentarPessoa()) na classe Principal, graas ao fato de ter
Depois, desenhamos essa entidade (Pessoa), utilizando um diagrama de sido defi nido como public na classe Pessoa. Se tentarmos acessar, por exemplo,
classe (pertencente especifi cao da UML) e defi nimos a classe. o atributo email do objeto, no ser possvel. Na verdade, esse atributo no fi ca
visvel na classe Principal, porque foi defi nido como private na classe Pessoa.
Ao defi nirmos a classe, detalhamos todos os atributos (dados) e mtodos O uso de modifi cadores de acesso no obrigatrio. Se forem omitidos, a vi-
(aes) pertencentes a essa classe. 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
Uma vez defi nida a classe (o novo tipo), podemos criar (instanciar) um acessvel ou no por intermdio dos futuros objetos.
objeto para ser utilizado. Lembre-se: na classe so feitas as especifi caes
do objeto, assim como o projeto do automvel. Ns no manipulamos a 4.5.2.1. Private
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 Os atributos e mtodos defi nidos por esse modifi cador somente so visveis (po-
carro deve ser fabricado a partir do projeto. Da, poderemos manipular as dem ser acessados) dentro da classe em que foram codifi cados. Por exemplo, o
informaes sobre o cliente dentro do programa, o que equivale a dirigir atributo e-mail defi nido na classe Pessoa. Dentro dela (normalmente nos m-
o carro no mundo real. todos da classe) esse atributo pode ser manuseado (seu valor lido ou alterado).

110 111
Informtica 4 captulo 4

Porm, a partir de uma instncia da classe Pessoa, isto , de um objeto do tipo aos valores dentro dos parnteses). Esses valores sero atribudos (armazenados)
Pessoa, o atributo fica inacessvel. na sequncia em que esto escritos (o primeiro parmetro no primeiro atributo,
o segundo parmetro no segundo atributo e o terceiro parmetro no terceiro
4.5.2.2. Public atributo). O mesmo acontece no mtodo this(), no qual os valores entre parn-
teses referem-se aos atributos na mesma sequncia.
Os atributos e mtodos definidos com o modificador public so visveis em qual-
quer lugar dentro da classe e podem ser acessados sem nenhuma restrio a 4.5.4. Garbage Colletor (Coletor de lixo)
partir de um objeto instanciado.
Em um sistema orientado a objetos, vrios deles so instanciados (criados
4.5.2.3. Protected durante sua execuo). Para que se possa utilizar esse objeto, criada uma
referncia a esse endereo de memria onde ele est armazenado. Toda vez
Um terceiro tipo, o protected (protegido, em portugus), define que um atributo que fazemos uma referncia a um objeto, a JVM (mais precisamente um
ou mtodo pode ser visto dentro da prpria classe e em objetos instanciados a recurso dela) registra essa informao em uma espcie de contador. Assim,
partir de classes que pertenam ao mesmo pacote (package em ingls). feito o controle de quantas referncias esto apontando para aquele
espao da memria (objeto). Quando o contador est em zero, ou seja, no
O uso de packages ser detalhado mais adiante. h referncia, o objeto se torna um candidato a ser removido da memria.

4.5.3. Mtodos construtores Periodicamente, em intervalos calculados pela JVM, esses objetos sem refe-
rncias so retirados da memria e o espao alocado volta a ficar disponvel,
Instanciar um objeto
Outra definio que busca maior clareza de cdigo a implementao do dando lugar a novos. O recurso responsvel por essa limpeza da memria
alocar (reservar) um
construtor, um mtodo especial responsvel pela inicializao dos atributos chamado de Garbage Collector (coletor de lixo). Tem como responsa- espao em memria
de um objeto no momento de sua criao (instanciao). Se sua codificao bilidade rastrear a memria, identificar quantas referncias existem para (RAM - Random Access
for omitida, acionado o construtor default (padro), que inicializa os atri- cada objeto e executar um processo que elimine os objetos sem referncias. Memory ou memria
butos sem nenhum contedo. Em nossos exemplos, adotaremos a prtica Substitui, ento, os mtodos destrutores e o gerenciamento de ponteiros de acesso randmico).
de definir pelo menos dois construtores por classe: um que inicializar os (referncias a espaos de memria) existentes em outras linguagens.
atributos vazios e outro que possibilitar a passagem de valores a serem ar-
mazenados nos atributos. 4.5.5. O comando this
Uma classe pode ter quantos construtores forem necessrios para aplicao. E O this utilizado como uma referncia ao prprio objeto que est chaman-
todos eles tero sempre o mesmo nome da classe (inclusive com a primeira letra do um mtodo. O uso desse comando tambm deixa claro quando estamos
maiscula). Porm, com a passagem de parmetros diferentes. Os construtores nos referindo a um atributo ou mtodo da mesma classe na qual estamos
esto diretamente relacionados aos atributos. Portanto, se uma classe no tiver programando. No obrigatrio, porm, dentro do construtor que recebe
atributos, os construtores sero desnecessrios. A codificao dos construtores parmetros, por exemplo, possvel visualizar o que parmetro e o que
na classe Pessoa ficar como ilustra a figura 70. atributo. Isso acontece, apesar de os dois terem exatamente os mesmos
nomes (os atributos vm precedidos do this). Adotaremos o uso do this em
O primeiro construtor, sem parmetros (nada entre os parnteses), adiciona va- todos os nossos exemplos.
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, 4.5.6. Encapsulamento
identificados como nome, endereco e telefone (lembre-se de que a referncia
No exemplo da classe Pessoa, utilizamos mais um conceito da programao
Figura 70 orientada a objetos. Quando definimos que um atributo (ou mtodo) tem a
Codificao dos visibilidade privada (modificador de acesso private), limitamos o acesso so-
construtores na mente sua classe. Podemos imaginar que, depois de instanciado o objeto,
classe Pessoa. 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
definido em um atributo limiteDeCredito em uma classe Cliente (que d ori-

112 113
InFoRmtICa 4 CaPtulo 4

Figura 71a
gem aos clientes do sistema). Seja por descuido ou por m f, se o valor desse
O mtodo get.
atributo for alterado para um valor exorbitante, ocorrer a seguinte situao
no sistema: o cliente (do mundo real) fi car liberado para comprar at esse
valor exorbitante (tendo ou no condies para pagar). Normalmente, os em-
preendimentos comerciais defi nem 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. Enfi m, h uma regra para que esse limite de crdito seja
calculado e/ou atualizado.
4.5.6.1.2. mtodo set
Agora, imagine outra situao. Determinada classe do sistema respon-
svel pelo processo de venda dessa mesma loja. Em algum momento, ser J os mtodos responsveis por escrever (alterar) o contedo de um atributo co-
necessrio verificar se a quantidade de estoque disponvel suficiente para meam com a palavra set, seguida pelo nome desse atributo (fi gura 71b) .
atender aos pedidos. Portanto, essa classe deve ter acesso ao atributo esto-
queDisponvel do produto que est sendo vendido. Tal acesso necessrio e Figura 71b
autorizado pelo sistema. Porm, se o atributo estoqueDisponivel foi defini- O mtodo set.
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- 4.5.7. Representao do encapsulamento
sibilidade pblica (public). Significa que eles podem ser acessados a partir em um objeto do tipo Pessoa
do objeto instanciado de qualquer classe. Servem, portanto, como portas
de entrada e de sada de informaes dos atributos, por onde seus valores A fi gura 72 ilustra o encapsulamento em um objeto do tipo Pessoa. Imagine o objeto
podem ser lidos e alterados. 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)
A vantagem de abrir esse acesso via mtodo poder definir (programar) as tem acesso ao mundo externo (pelo lado de fora) e parte interna (pelo lado de dentro)
regras de leitura e escrita nesses atributos. Permite, como no exemplo da
loja, identificar se o processo que est solicitando o contedo do atributo Figura 72
estoqueDisponvel autorizado a fazer tal consulta. Ou, mais crtico ainda, Representao grfica
se permite atualizar (alterar) esse atributo depois da venda efetuada (sub- do encapsulamento.
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 Se rs
t te nome te
rs t
mtodo responsvel por essa operao. Resumindo nenhuma outra classe Ge
ou objeto pode acessar diretamente os atributos encapsulados.
endereco
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- telefone
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.

apresentarPessoa()
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 (fi gura 71a).

114 115
InFoRmtICa 4 CaPtulo 4

e funciona como uma pelcula protetora do objeto. Tem passagens padro que trans- 4.6. Entrada e sada de dados
ferem informaes de fora para dentro (setters) e de dentro para fora (getters). Alm
disso, tm algumas passagens (mtodos) com fi nalidades especfi cas e que tambm J vimos como inserir dados nos atributos por meio do construtor e tambm
podem entrar e/ou sair com informaes. Esse trfego acontece de acordo com re- como mostrar esses dados por meio do comando System.out.println(). Existem
gras de entrada e sada de informaes defi nidas nas passagens (mtodos). Em nossos ainda diferentes formas de leitura e de escrita de dados em Java. Agora, para
exemplos, sempre sero utilizados getters e setters para acessar os atributos, garantindo desenvolver exemplos mais elaborados, preciso saber como realizar a entrada
os benefcios do encapsulamento. e a sada de dados utilizando a classe JOptionPane, localizada na API Swing=,
que contm vrios mtodos com essa fi nalidade.
4.5.8. Viso geral da classe Pessoa e sua estrutura
4.6.1. Declarao import
A fi gura 73 reproduz a codifi cao completa da classe Pessoa, destacando as
camadas vistas at agora. 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
Figura 73
fi ca disponvel por padro, mas a maioria dos recursos da linguagem necessita
Codificao completa
de uma indicao para a JRE localiz-los. Isso feito pela declarao import,
da classe Pessoa.
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-
atributos
tionPane o import fi car assim como aparece na fi gura 74.

O uso do caractere especial * (asterisco) pode substituir parte do caminho espe-


construtores
cifi cado, como sugere o exemplo da fi gura 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 grfi cos disponveis no Java.

Figura 74
getters e setters (mtodos de acesso) O import, na classe
JOptionPane.

Figura 75
O uso do caractere
especial *.

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 fi gura 76.

Usar o mtodo showMessageDialog requer a informao prvia de qual


classe ele pertence (JOptionPane) e recebe, no mnimo, dois parmetros.
mtodo especco da classe Pessoa
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,

116 117
Informtica 4 captulo 4

Figura 76 Figura 78
Mtodo Alterao no mtodo
showMessageDialog. apresentarPessoa.

Figura 79
Apresentao
como no exemplo da figura 76, no qual a mensagem gerada pela primeira da mensagem em
linha ser o texto Nome:, juntando (somando as Strings) com o retorno uma nica janela.
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 gramador. A visualizao do mtodo apresentarPessoa depois da alterao
editor (pressionando enter) no faz nenhuma diferena para o compilador; ficar como ilustra a figura 79.
interessante apenas para melhorar a visibilidade do cdigo para o pro-
4.6.3. Leitura de dados (entrada)
Figura 77
Execuo Para leitura (entrada) de dados, ser usado o mtodo showInputDialog(). E,
do mtodo para testar, acrescentaremos o mtodo inserirDadosPessoa() em nossa classe
apresentarPessoa. exemplo Pessoa (figura 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 fique mais claro, poderamos reescrev-lo da


seguinte forma:

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.

Figura 80
Acrscimo do mtodo
inserirDadosPessoa().

118 119
InFoRmtICa 4 CaPtulo 4

Figura 81 Figura 82
Informaes do Retornar
Visibilidade Passagem de parmetro
cabealho de um valor do
Classe Pessoa:
um mtodo. tipo String.

Mtodo main, classe Principal:

Retorno de valor Nome do mtodo


Portanto, o mtodo est preparado para retornar um valor do tipo String e
faz isso quando executa o comando return (figura 82).
4.7. assinatura de mtodos
4.7.2. Passagem de parmetro
O cabealho de um mtodo composto por quatro informaes (figura 81).
As duas ltimas (nome e passagem de parmetros) definem sua assinatura. O mtodo setNome foi escrito para receber um valor do tipo String e arma-
Quer dizer que no possvel ter dois mtodos na mesma classe com exata- zen-lo no atributo nome. A porta de entrada de valores para dentro do m-
mente o mesmo nome e a mesma configurao de passagem de parmetros todo so os parnteses, e essas informaes (parmetros) devem ser nomeadas
(quantidade e tipo de dado na mesma sequncia). O Java e a orientao a e seus tipos defi nidos (fi gura 83).
objetos possibilitam o uso dessas caractersticas na construo dos mtodos
de maneira mais ampla, fazendo uso dos conceitos de sobrecarga, sobres- Figura 83
crita e herana. Passagem de
Mtodo main, classe Principal, a seguir. parmetro.
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. Classe Pessoa:

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 4.7.3. Retorno de valor e passagem de parmetro
fora de seu escopo (definido pelas chaves { }). Utilizaremos os mtodos de
acesso getNome() e setNome() como exemplos no detalhamento da entrada Se for necessrio, os mtodos podem ser defi nidos para receber e retornar valor.
e sada de dados nos mtodos. Para exemplifi car, modifi caremos o mtodo inserirDadosPessoa.

4.7.1. Retorno de valor 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
O mtodo getNome() l o contedo do atributo nome e retorna essa in- por parmetro. Ainda nessa mesma linha, aps a execuo, o mtodo inserir-
formao para o local onde foi solicitada. O comando return envia o valor DadosPessoa retorna uma mensagem de confi rmao armazenada na varivel
definido sua frente (no caso, o contedo do atributo nome) para fora do mensagem. E na quinta linha apresentada a mensagem pelo mtodo showMes-
mtodo pela porta de sada de informaes, definida com o tipo String. sageDialog(), como ilustra a fi gura 84.

120 121
InFoRmtICa 4 CaPtulo 4

Figura 84
Segundo a Java Language Specifi cation, as palavras null, true e false so chamadas de
Mtodo main da
valores literais, e no de palavras reservadas, porm, assim como as palavras reserva-
Classe Principal. das, no possvel utiliz-las para criar um identifi cador (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
Figura 85
tipos primitivos, tm uma pequena variao entre as diferentes linguagens de
Classe Pessoa.
programao (confi ra o quadro Tipos primitivos de dados).

TIPOS PRIMITIVOS DE DADOS


TIPO ABRANGNCIA

boolean Pode assumir o valor true (verdadeiro) ou o


valor false (falso).

O mtodo recebe os trs parmetros e os passa (tambm por parmetro) char Caractere em notao unicode de 16 bits.
para os respectivos mtodos sets, os quais armazenaro os dados nos atri- Serve para a armazenagem de dados
alfanumricos.
butos. Depois, retorna uma frase (String) de confirmao, como mostra a
Possui um valor mnimo de \u0000 e um valor
figura 85. mximo de \uffff. tambm pode ser usado
como um dado inteiro com valores na faixa
4.8. Estruturas e recursos da linguagem Java entre 0 e 65535.
byte um inteiro complemento de 2 em 8 bits com
4.8.1. Palavras reservadas do Java sinal. Ele tem um valor mnimo de -128 e um
valor mximo de 127 (inclusive).
As palavras reservadas do Java so aquelas que tm um sentido predetermi-
nado nessa linguagem. No podem ser usadas para outros fins, como por short um inteiro complemento de 2 em 16 bits
exemplo nomes de variveis ou mtodos. Confira quais so elas no quadro com sinal. Possui um valor mnimo de -32.768 e
mximo de 32.767 (inclusive).
Palavras Reservadas.
int um inteiro complemento de 2 em 32 bits com
sinal. tem valor mnimo de -2.147.483,648 e
PALAVRAS RESERVADAS mximo de 2.147.483,647 (inclusive).

abstract boolean break byte case catch long um inteiro complemento de 2 em 64 bits com
sinal.
char class const continue default do o seu valor mnimo
-9.223.372.036.854.775,808 e o mximo,
double else extends final finally oat 9.223.372.036.854.775,807 (inclusive).
oat Representa nmeros em notao de ponto
for goto if implements import instanceof utuante normalizada em preciso simples
de 32 bits em conformidade com a norma
int interface long native new package IEEE 754-1985. o menor valor positivo
representado por esse tipo 1.40239846e-46 e
private protected public return short static o maior, 3.40282347e+38

strictfp super switch synchronized this throw double Representa nmeros em notao de ponto
utuante normalizada em preciso dupla de 64
throws transient try void volatile while bits em conformidade com a norma IEEE 754-
1985. o menor valor positivo representado
assert 4.94065645841246544e-324 e o maior,
1.7976931348623157e+308

122 123
InFoRmtICa 4 CaPtulo 4

4.8.3. operadores
ARITMTICOS ATRIBUIES
+ adio = atribuio

- Subtrao += atribuio com soma

* multiplicao -= atribuio com subtrao

/ Diviso *= atribuio com multiplicao

% Resto da diviso /= atribuio com diviso

ATRIBUIES BIT A BIT


RELACIONAIS
&= atribuio de E bit a bit
> maior que

< menor que |= atribuio de ou bit a bit

>= maior ou igual a ^= atribuio de ou exclusivo bit a bit

<= menor ou igual a


<<= atribuio de deslocamento de bit esquerda
== Igual
>>= atribuio de Deslocamento de bit direita
!= Diferente com extenso de sinal

instanceof Comparao de tipo >>>= atribuio Deslocamento de bit direita


sem extenso de sinal

LGICOS
TERNRIO
&& E (and)
?: Condicional (if-then-else compacto)
|| ou (or)
! no (not) INCREMENTO
++ pr-incremento ou ps-incremento
BIT A BIT
& E (bitwise and)
DECREMENTO
| ou (bitwise or)
-- pr-decremento ou ps-decremento
^ ou exclusivo (bitwise xor)

<< Deslocamento de bit esquerda


4.8.4. Variveis e constantes
>> Deslocamento de bit direita com extenso de sinal
Em Java, a declarao de variveis feita informando o tipo de dado seguido
>>> Deslocamento de bit direita sem extenso de sinal do nome da varivel. Apesar de no ser obrigatrio, em algumas situaes
~ negao (inverso bit a bit) interessante inicializar os valores das variveis no momento da declarao
(fi gura 86).

124 125
InFoRmtICa 4 CaPtulo 4

Figura 86
CONVERSO
Declarao
de variveis. De Para Mtodos

String int Integer.parseInt()

String oat Float.parseFloat()

Perceba que nos tipos fl oat e double deve-se explicitar o formato. Caso isso no String double Double.parseDouble()
seja feito, ocorrer uma promoo de tipo (visto a seguir). Constantes em Java
so declaradas pelo comando fi nal, ilustrado na fi gura 87.
int String Integer.toString() ou String.valueof()
Figura 87
Declarao de
constantes. oat String Float.toString() ou String.valueof()

double String Double.toString() ou String.valueof


4.8.5. Converses de tipos de dados
4.8.5.1. Converso
4.8.5.2. Cast (matriz)
A transformao de um dado de um tipo em outro realizada por mtodos
especfi cos, conforme o quadro Converso. So converses explcitas entre tipos primitivos, sempre respeitando a faixa de
abrangncia de cada tipo. Basicamente, o cast feito do tipo maior para o
Exemplo: uma varivel do tipo String (fi gura 88). menor sob risco de truncamento do valor se essa ordem no for respeitada
(observe o quadro Cast).
Figura 88

CAST
Tipos Cast vlidos

Convertida para dados numricos (fi gura 89).


byte nenhuma

Figura 89
short byte

char byte e short

int byte, short e char


E variveis do tipo numrico convertidas para String (fi gura 90).

Figura 90 long byte, short, char e int

oat byte, short, char, int e long

double byte, short, char, int, long e oat

126 127
InFoRmtICa 4 CaPtulo 4

Exemplos (fi gura 91). 4.8.6. Desvios condicionais


Figura 91 4.8.6.1. If-else
A estrutura de if extremamente adaptvel, podendo assumir qualquer uma das
formas ilustradas nas fi guras 93, 94 e 95.

Figura 93

4.8.5.3. Promoo
A promoo pode ser entendida como um tipo de cast automtico (implcito),
conforme mostra o quadro Promoo.
Figura 94
PROMOO
Tipos Promoes vlidas

double nenhuma

oat double

long oat ou double

int long, oat ou double


Figura 95
char int, long, oat ou double

short int, long, oat ou double (char no)

byte short, int, long, oat ou double (char no)

boolean nenhuma

Veja alguns exemplos na fi gura 92.


O if considera o valor lgico (true ou false, literalmente verdadeiro ou falso)
Figura 92 resultante da condio. Se o tipo testado for um boolean, podemos aproveitar
seu prprio formato como condio (fi gura 96).

Figura 96

128 129
Informtica 4 captulo 4

Figura 99
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 (figura 97).

Figura 97

4.8.7.2. Do-while
O teste condicional est no final 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 (figura 100).

Figura 100

Outras classes so utilizadas como tipos (por exemplo, Date) e, visualmente,


so de fcil identificao 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 (figura 98). 4.8.7.3. For
Figura 98 O bloco de cdigo contido no for ser repetido quantas vezes a condio na
Switch case. abertura do looping determinar. No exemplo em seguida, a varivel ir de 0 a
9 (figura 101).

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 definido como uma estrutura homognea de dados. Ele pode
4.8.7. Laos de repetio ser de tipos unidimensional e bidimensional. A quantidade de valores que um
array consegue armazenar definida na sua declarao.
4.8.7.1. While
4.8.8.1. Unidimensional
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 Um array pode ser composto por uma nica dimenso (nica linha), conforme
bloco ser repetido enquanto a condio permanecer verdadeira (figura 99). mostra a figura 102.

130 131
InFoRmtICa 4 CaPtulo 4

Figura 102
Por meio de loopings, utilizando um contador (fi gura 107).
Vetor ndices
unidimensional. ndices 0 1 2 3 4
Figura 107
vetorInteiros 10 30 50 20 40
vetorInteiros
valores

nome
nome valores

A leitura (apresentao) pode ser feita de trs maneiras:


Exemplos: Acessando explicitamente o ndice (posio) desejado (fi gura 108).
A declarao pode ser feita de trs maneiras:
Em duas etapas (primeiro, defi nindo-se o tipo e, depois a dimenso, conforme Figura 108
a fi gura 103).

Figura 103

Em uma nica linha (fi gura 104).


Por loopings, utilizando um contador (fi gura 109).
Figura 104
Figura 109

Atribuindo valores s posies (fi gura 105).

Figura 105
Usando um iterador (detalhado adiante), como na fi gura 110.

Figura 110

Essa atribuio pode ser feita de duas maneiras:


Indicando explicitamente o ndice (posio) desejado (fi gura 106).

Figura 106

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 fi gura 111.

132 133
InFoRmtICa 4 CaPtulo 4

Figura 111
J a atribuio pode ser realizada de duas formas:
Vetor
bidimensional ndices Indicando explicitamente o ndice (posio) desejado (fi gura 115).
irregular. ndices 0 1 2 3 4

matrizInteiros Figura 115


matrizInteiros

nome 0 12 1 6 47 85
nome 1 4 36 62 25 3

2 32 67 74 41 valores
valores
3 8 23 9

4 17 49

Por meio de loopings, utilizando um contador (fi gura 116).


ndices
ndices
Figura 116

Exemplos:
A declarao pode ser feita de trs maneiras:
Em duas etapas (primeiro, defi nindo-se o tipo e, depois, a dimenso), como na
fi gura 112.

Figura 112
Quanto leitura (apresentao), h duas opes para faz-la:

Acessando explicitamente o ndice (posio) desejado (fi gura 117).

Figura 117

Em uma nica linha, como na fi gura 113.

Figura 113

Atribuindo valores s posies (fi gura 114).

Figura 114
Por meio de loopings, utilizando um contador (fi gura 118).

Em um dos exemplos anteriores, foi manipulada uma matriz de 3 x 3, do tipo


double, que pode ser representada pela imagem da fi gura 119.

134 135
InFoRmtICa 4 CaPtulo 4

Figura 118
uma List quando a ordem de insero ou a posio na coleo nos interessa. H al-
guns mtodos importantes, quando manipulamos Lists (confi ra o quadro Mtodos
da Interface List).

MTODOS DA INTERFACE LIST


Mtodo Descrio

add (objeto) adiciona um elemento list na ltima posio


Figura 119
Vetor bidimensional get (ndice) Retorna o elemento da posio do ndice
quadrado.
ndices
ndices iterator () Retorna um objeto do tipo Iterator
0 1 2
size () Retorna um int (inteiro) com a quantidade
matrizDouble
matrizDouble de elementos da coleo

contains (objeto) Retorna true se o elemento j existe dentro do list


nomenome 0 10.0 20.0 30.0
clear () Elimina todos os elementos do list
1 40.0 50.0 60.0 valores
valores
2 70.0 80.0 90.0 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 fi lha
(subclasse) de List e, portanto, tem todos os mtodos pertencentes List. Veremos
ndices mais sobre subclasses adiante, quando estudarmos o conceito de herana.
ndices

Para fechar essa introduo bsica sobre Collections, vamos ver, em seguida,
alguns mtodos muito teis na manipulao de ArrayList (observe o quadro
4.8.9. Collections Mtodos da Collection ArrayList).

um conjunto de classes e interfaces disponveis no pacote java.util, que faz o MTODOS DA COLLECTION ARRAYLIST
uso do import necessrio. Essas classes fornecem recursos para trabalhar com
Mtodo Descrio
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 sort (arraylist) ordena os elementos em ordem crescente
essas funcionalidades prontas.
shufe (arraylist) o oposto do sort. ao invs de ordenar, ele
O estudo das collections relativamente extenso, pois existem muitos recursos dispo- desordena (mistura) os elementos do arraylist
nveis. Por enquanto, vamos conhecer uma dessas colees, a ArrayList, responsvel
pelo manuseio de arrays. Sua grande vantagem contar com mtodos prontos. binarySearch (arraylist, valor) Pesquisa um valor no arraylist e retorna
sua posio (ndice). Se no for encontrado,
4.8.9.1. arraylist retorna um nmero inteiro negativo

Antes de nos aprofundarmos nessa coleo, vamos primeiro conhecer melhor a reverse (arraylist) Inverte a ordem dos elementos
interface List. Como o prprio nome indica, ela cria e gerencia uma lista. Isso signi-
fi ca que a ordem de insero ser mantida. A interface List mantm seus elementos frequency (arraylist, valor) Conta a quantidade de ocorrncias
indexados. Permite, portanto, que exista uma preocupao com o posicionamento do elemento especificado
de cada elemento e que tal posio seja determinada pelo ndice. Devemos utilizar

136 137
Informtica 4 captulo 4

Exemplos: Atribuio de valores (figura 123).


A declarao pode ser feita sem a definio de tipo de dado a ser armazenado e,
com isso, qualquer tipo aceito (figura 120). Figura 123

Figura 120

Ordenao crescente (figura 124).

Figura 124

Listagem do arrayInteiros j ordenado por um iterator (dado), como na figura 125.

Figura 125

Sada obtida (figura 121).

Figura 121
Sada obtida (figura 126).

Figura 126

A definio 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 (figura 122).


Pesquisa se o nmero 30 consta no arrayInteiros (figura 127).
Figura 122
Figura 127

138 139
InFoRmtICa 4 CaPtulo 4

Verifi cando o resultado da pesquisa (fi gura 128).


Pessoa
Figura 128 - codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
- telefone : String
- celular : String
+ mostrarTelefones() : void

Resultado obtido (fi gura 129).


Cliente Fornecedor Funcionario
Figura 129
- limiteCredito : double - cnpj : String - salarioBase : double
- rendaMensal : double - ie : String - salarioFinal : double
- rg : String - contato : String
- cpf : String + inserirDadosFuncionario() : void
+ inserirDadosFornecedor() : void + apresentarFuncionario() : void
+ inserirDadosCliente() : void + apresentarFornecedor() : void
+ apresentarCliente() : void

Principal

4.9. orientao a objetos (2) + main(args[ ] : String) : void

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
Figura 130
os principais conceitos de orientao a objetos, detalhando suas caractersticas A classe pessoa contm oito atributos e um mtodo, os quais so comuns para
Herana.
e aplicabilidades. clientes, fornecedores e funcionrios e, portanto, deveriam constar nas classes
Cliente, Fornecedor e Funcionario. Sem o recurso da herana, teramos que re-
4.9.1. Herana plicar esses atributos e mtodos nas trs classes, procedimento desaconselhvel
em qualquer linguagem de programao, por trazer complexidades extras na
A herana um conceito amplamente utilizado em linguagens orientadas a ob- manuteno e expanso dos sistemas. Por exemplo, vamos considerar um mto-
jetos. Alm de vantagens facilmente identifi cadas, como a reutilizao e organi- do para emisso de correspondncia que foi atualizado para comear a gerar um
zao de cdigos, a herana tambm a base para outros conceitos, como a so- histrico de remessas. Tal atualizao deveria ser feita nas trs classes envolvidas
brescrita de mtodos, classes e mtodos abstratos e polimorfi smo. Tais conceitos e, caso uma delas no fosse realizada, a atualizao do controle de remessas (ge-
so fundamentais para a modelagem de sistemas mais robustos. rao de histrico) fi caria inconsistente.

Durante a anlise dos requisitos de um sistema (solicitaes que o sistema dever No modelo acima, a classe Pessoa foi defi nida como uma superclasse e as classes
atender), podemos destacar os atributos ou os mtodos comuns a um grupo de Cliente, Fornecedor e Funcionario, como suas subclasses. Do ponto de vista da
classes e concentr-los em uma nica classe (processo conhecido como genera- funcionalidade, tudo o que foi defi nido na superclasse (atributos e mtodos) ser
lizao). Da mesma forma, possvel identifi car o que pertinente somente a herdado pelas suas subclasses. Ou seja, um objeto instanciado a partir da classe
determinada classe (conhecido como especifi cao). A primeira vantagem dessa Cliente possui 12 atributos. So eles: nome, endereo, bairro, cidade, UF, telefone
organizao evitar a duplicidade de cdigo (ter o mesmo trecho de cdigo em e celular declarados na superclasse Pessoa, alm de limiteCredito, rendaMensal,
lugares diferentes do sistema), o que traz maior agilidade e confi abilidade na RG e CPF na subclasse Cliente. H ainda trs mtodos, nos quais mostrar telefones
manuteno e expanso do sistema. foi defi nido na classe Pessoa e inserir DadosCliente e apresentarCliente foram de-
fi nidos na classe Cliente. Na utilizao desses atributos e mtodos para um objeto
Chamamos de superclasses essas classes que concentram atributos e mtodos do tipo Cliente, fi ca transparente o local onde cada um foi declarado ou defi nido.
comuns que podem ser reutilizados (herdados) e de subclasses aquelas que
reaproveitam (herdam) esses recursos. Observe as defi nies de clientes, for- Para estabelecer a herana em relao codifi cao, as superclasses continuam
necedores e funcionrios utilizados na livraria de acordo com o diagrama de com a mesma estrutura de uma classe comum (como vimos em exemplos ante-
classes (fi gura 130). riores). J as subclasses recebem as seguintes defi nies:

140 141
InFoRmtICa 4 CaPtulo 4

Abertura da classe (fi gura 131).


Produto
Figura 131 - codigo : int
- descricao : String
- genero : String
- estoqueDisponivel : int
- precoCusto : double
- precoVenda : double
O comando extends o responsvel por estabelecer a herana. inserido na
abertura da subclasse e indica o nome da superclasse, criando vnculo entre elas. + calcularPrecoVenda() : void
+ calcularPrecoVenda(cotacaoDolar : double) : void
+ calcularPrecoVenda(genero : String) : void
Construtores (fi gura 132).

Figura 132
livro Cd Dvd
- autor : String - artista : String - diretor : String
- editora : String - gravadora : String - duracao : String
- edicao : String - paisOrigem : String - censura : int
+ calcularPrecoVenda(didatico : boolean) : void + inserirDadosCd() : void + inserirDadosDvd() : void
+ inserirDadosLivro() : double + apresentarCd() : void + apresentarDvd() : void
+ apresentarLivro() : void

Principal

+ main(args[ ] : String) : void

Os construtores esto diretamente relacionados inicializao dos atributos de uma


Figura 133
classe. Partindo desse princpio e considerando o nosso exemplo, um objeto do tipo livraria so livros, CDs e DVDs, como representado no diagrama de classe
Sobrecarga do mtodo
cliente possui todos os atributos declarados na sua superclasse (Pessoa) mais os decla- na figura 133.
rados na classe Cliente. Portanto, o construtor de uma subclasse deve estar prepara- calcularPrecoVenda.
do para inicializar os atributos herdados e os declarados na prpria classe. 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
No construtor que recebe parmetros (aquele que inicializa os atributos com acrscimo em relao ao preo de custo. Se o produto em questo for importado,
algum valor), utilizamos o mtodo super() para invocar o construtor da super- necessrio considerar a cotao do dlar. Em algumas situaes (promoes, por
classe. Isso porque j foi defi nida nele a forma como esses atributos sero inicia- exemplo), preciso atualizar todos os produtos de um determinado um gnero. E, no
lizados (reutilizando o construtor j existente na superclasse), restando apenas caso especfi co dos livros didticos, o clculo do preo de venda diferente dos demais.
inicializar os atributos na subclasse.
Em outras linguagens de programao, como no possvel termos duas funes
Para acessar os atributos da superclasse, obrigatoriamente, devemos utilizar seus (blocos de cdigo equivalentes a mtodos) com o mesmo nome, nos depararamos
mtodos de acesso (getters e setters), ao contrrio dos atributos instanciados na com a necessidade de criar funes nomeadas (calcularPrecoVenda1, calcularPreco-
prpria classe, que podem ser acessados diretamente. Porm, como j comen- Venda2, calcularPrecoVenda3, calcularPrecoVenda4 ou calcularPrecoVendaNormal,
tamos antes, para garantir o conceito de encapsulamento e usufruir de seus be- calcularPrecoVendaImportado, calcularPrecoVendaPorGenero e calcularPrecoVen-
nefcios (segurana, manutenabilidade etc.), sempre devemos criar e utilizar os daLivroDidatico e assim sucessivamente). Dessa forma, alm de nomes extensos, e
mtodos getters e setters para todos os atributos. Em relao ao nosso exemplo, muitas vezes estranhos, teramos uma quantidade bem maior de nomes de funes
o mesmo se aplica s classes Fornecedor e Funcionario. para documentar no sistema.

4.9.2. Sobrecarga de mtodo (overload) Em Java, para situaes desse tipo, usamos a sobrecarga que considera a identifi ca-
o do mtodo pela assinatura e no somente pelo nome. Como j vimos, a assina-
A programao em sistemas desenvolvidos com Java distribuda e orga- tura de um mtodo composta pelo nome e pela passagem de parmetros. Assim,
nizada em mtodos. Muitas vezes, os programadores se deparam com si- possvel defi nir os mtodos com o mesmo nome (calcularPrecoVenda, como no
tuaes em que um mtodo deve ser usado para finalidades semelhantes, diagrama) e alternar a passagem de parmetros. Observe, na fi gura 134, como fi ca a
mas com dados diferentes. Por exemplo, os produtos comercializados na codifi cao dos mtodos na classe Produto.

142 143
InFoRmtICa 4 CaPtulo 4

Figura 134
O Java identifi car o mtodo que deve ser executado de acordo com a chamada
Codificao dos
realizada, como mostra o exemplo da fi gura 137.
mtodos na
classe Produto. Figura 137

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
E na classe Livro (fi gura 135): em reescrever um mtodo herdado, mudando seu comportamento, mas mantendo Figura 138
exatamente a mesma assinatura. Para exemplifi car, utilizaremos o clculo do salrio Sobrescrita
Figura 135 fi nal dos funcionrios da livraria (fi gura 138). do mtodo
Codificao do calcularSalarioFinal.
mtodos na
classe Livro.
Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
Os pontos importantes na codifi cao anterior so: - tefone : String
- celular : String
A diferenciao das assinaturas dos mtodos se baseia na quantidade e no + mostrarTelefones() : void
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, Funcionario
um objeto do tipo Livro tem quatro mtodos calcularPrecoVenda(), j CD - salarioBase : double
e DVD tm trs. - salarioFinal : double

+ inserirDadosFuncionario() : void
No mtodo main, teremos o que ilustra a fi gura 136. + calcularSalarioFinal(valorVendido : double) : void

Figura 136

Gerente vendedor temporario

- graticacao : double - valorComissao : double - comissionado : boolean

+ apresentarFuncionario() : void + apresentarFuncionario() : void + inserirDadosFuncionario() : void


+ calcularSalarioFinal(valorVendi + apresentarFuncionario() : void
do : double) : void + calcularSalarioFinal(valorVendido :
double) : void

Principal

+ main(args[ ] : String) : void

144 145
InFoRmtICa 4 CaPtulo 4

Figura 142
Na superclasse Funcionario, foi implementado o mtodo calcularSalarioFinal
considerando uma regra geral de clculo (somar 10% do valor vendido ao sal-
As classes e mtodos que vimos
rio base). Consequentemente, esse mtodo foi herdado por suas subclasses Ge-
anteriormente so chamados
rente, Vendedor e Temporario. O problema que, de acordo com as normas
de concretos. Os que estamos
da livraria, o clculo do salrio dos gerentes e dos temporrios diferente. Para
estudando agora so as classes
os vendedores, o mtodo calularSalarioFinal herdado est correto, porm, para e mtodos abstratos, que
Gerente e Temporario, no. O problema pode ser solucionado com a sobrescrita possuem algumas caractersticas
dos mtodos calcularSalarioFinal nas classes Gerente e Temporario. Na classe especficas: 1. Em UML,
Funcionario, o mtodo foi codifi cado da forma como ilustra a fi gura 139. classes e mtodos abstratos
4.9.4. Classes e mtodos abstratos so formatados em itlico. 2.
Figura 139 Uma classe concreta s pode
preciso, a princpio, conhecer os recursos utilizados na modelagem de sistemas. conter mtodos concretos.
Para entender melhor o assunto, devemos ampliar o horizonte e pensar na arqui- 3. Uma abstrata pode conter
tetura e no desenho da aplicao como um todo, assim como na manuteno e na mtodos concretos e abstratos.
expanso, atividades que podem ser realizadas por programadores (ou equipes de 4. Uma subclasse que herda um
programadores) distintas e em momentos diferentes, mas que sempre seguiro as mtodo abstrato obrigada a
J na subclasse Gerente fi ca da seguinte maneira (fi gura 140). defi nies descritas no projeto. A primeira abordagem de classe abstrata que incluir a assinatura do mtodo,
se trata de classes que no daro origem a objetos. Em outras palavras, um objeto contendo ou no implementao
Figura 140 no poder ser instanciado a partir delas. A sua fi nalidade, ento, defi nir, por (programao). 5. Enquanto
generalizao (possibilitada pela herana), os recursos (atributos e mtodos) co- no for includa a assinatura do
muns a um grupo de classes (subclasses). Analisemos a representao dos clientes mtodo abstrato herdado, a
existentes na livraria no diagrama da fi gura 143. subclasse apresentar um erro
que impedir sua compilao.

<<abstract>> Figura 143


Pessoa
- codigo : int Classes abstratas
- nome : String Pessoa e Cliente e
- endereco : String
- bairro : String mtodo abstrato
- cidade : String calcularLimiteCredito.
E na subclasse Temporario, veja a fi gura 141. - uf : String
- telefone : String
- celular : String
Figura 141 + mostrarTelefones() : void

<<abstract>>
Cliente
- limiteCredito : double

+ calcularLimiteCredito() : double
Os objetos que representaro um gerente, um vendedor e um temporrio se- ClientePF ClientePJ
ro instanciados a partir das classes Gerente, Vendedor e Temporario. Nesse - rg : String - cnpj : String
momento (da criao dos objetos), o Java considera a estrutura de cada sub- - cpf : String - ie : String
- rendaMensal : double - faturamentoAnual : double
classe, a qual d origem ao objeto. Ento, um objeto do tipo Gerente considera
a codifi cao do mtodo calcularSalarioFinal da classe Gerente; um do tipo + calcularLimiteCredito() : void + calcularLimiteCredito() : void
+ inserirDadosClientePF() : void + inserirDadosClientePJ() : void
Temporario leva em conta a codifi cao da classe Temporario, e um do tipo + apresentarClientePF() : void + apresentarClientePJ() : void
Vendedor focaliza o mtodo herdado, mas todos so invocados exatamente da
mesma forma (fi gura 142). Principal

+ main(args[ ] : String) : void


A sobrescrita de mtodos tambm proporciona vantagens relacionadas ao geren-
ciamento polimrfi co de objetos.

146 147
InFoRmtICa 4 CaPtulo 4

As classes Cliente e Pessoa, nesse contexto, servem somente para defi nir quais e
como sero os recursos (atributos e mtodos) comuns a ClientePF e ClientePJ. <<interface>>
Usuario
Os objetos que representaro os clientes da livraria sero instanciados a partir + validarLogin(login : String, senha : String) : boolean
das classes ClientePF e ClientePJ e nunca de Cliente e muito menos de Pessoa.
Ao defi nir as classes Pessoa e Cliente como abstratas, evitamos que, por uma
eventual falha de desenvolvimento, objetos sejam instanciados a partir delas, o <<abstract>>
Pessoa
que no faria sentido. Alm de classes, podemos tambm defi nir mtodos como
- codigo : int
abstratos, os quais servem para defi nir e forar, uma padronizao nas subclasses - nome : String
- endereco : String
em relao existncia e assinatura de mtodos herdados. - bairro : String
- cidade : String
- uf : String
Um mtodo abstrato no possui implementao (codifi cao). composto - tefone : String
- celular : String
somente pela assinatura, na qual so defi nidos seu nome, passagem de par- - login : String <<abstract>>
- senha : String Funcionario
metros e retorno de valor. Na codifi cao de uma subclasse que estende de
<<abstract>> - tipoUsuario : String - salarioBase : double
uma superclasse que, por sua vez, possui um mtodo abstrato, o programador Cliente
+ mostrarTelefones() : void - salarioFinal : double
obrigado a inserir, pelo menos, a assinatura desse mtodo, podendo ou no - limiteCredito : double + mostrarTelefones() : void
+ mostrarTelefones() : void + calcularSalarioFinal(valorVendido :
implement-lo (codifi c-lo). Voltando ao exemplo dos clientes da livraria apre- + calcularLimiteCredito() : double double) : void
sentado na fi gura 130, calcularLimiteCredito defi nido na classe Cliente um + validarLogin(login : String, senha :
Fornecedor
+ validarLogin(login : String, senha : String)
String) : void : double
mtodo abstrato. Dessa forma, nas classes ClientePF e ClientePJ, somos obri- - cnpj : String
gados a inclu-lo. A declarao abstract defi ne uma classe abstrata, conforme - ie : String
- contato : String
se observa na fi gura 144. + mostrarTelefones() : void

Figura 144
Figura 146
Cliente e Funcionario Implementao da
inteface Usuario
A declarao abstract tambm usada para mtodos (fi gura 145). Para utilizar o sistema da livraria, o usurio dever ser identifi cado por um login
e uma senha. Os funcionrios tero acesso ao sistema para utiliz-lo em suas pelas classes Cliente
Figura 145 rotinas de trabalho, como cadastros e atualizaes de dados dos clientes, pro- e Funcionario.
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.
A utilizao de um mtodo abstrato garante que todas as subclasses de Cliente Assim, tanto funcionrios como clientes devero ser devidamente identifi cados,
obrigatoriamente tero, pelo menos, a assinatura do mtodo calcularLimite- para ter acesso ao sistema, algo que ser realizado da mesma forma (recebendo
Credito. Isso garante no s a padronizao de modelagem (os programadores o login e a senha e retornando verdadeiro ou falso). Ento, pode-se concluir que
sero obrigados a seguir tais defi nies) como tambm a aplicao de concei- o ideal seria criar um mtodo de validao utilizado tanto por clientes como
tos polimrfi cos. por funcionrios. Mas para fazer isso nos deparamos com algumas difi culdades:

4.9.5. Interfaces Cliente e Funcionario so subclasses de Pessoa. Assim, se inclussemos o


mtodo de validao de usurio na superclasse Pessoa, os dois herdariam esse
Ainda no nvel da modelagem do sistema, as interfaces so tipos especiais mtodo e o nosso problema estaria aparentemente resolvido. Porm, a classe
de classes que servem para defi nir padres de como determinados grupos de Fornecedor tambm subclasse de Pessoa e, por isso, tambm herdaria o
classes podero ser usados, defi nindo assinaturas de mtodos pelas classes mtodo de validao. S que os fornecedores no devero acessar o sistema.
que devero ser adotados obrigatoriamente pelas classes (e subclasses) que as
implementarem. Se o mtodo de validao for includo na superclasse Cliente, suas subclasses
possuiriam o mtodo de validao. Todavia, os funcionrios pertencem a
Uma interface composta somente por mtodos abstratos (no possui atributos outro nvel hierrquico de classe (a partir da subclasse Funcionario) e no
nem mtodos concretos) e pode ser vista como uma espcie de contrato, cujas teriam acesso ao mtodo e validao.
especifi caes as classes que as assinam (implementam) se comprometem a se-
guir, ou seja, devem seguir os mtodos nela defi nidos. A fi gura 146 ilustra uma Da mesma forma, se forem includos na classe Funcionario, os clientes tam-
implementao de interface. bm no tero acesso.

148 149
Informtica 4 captulo 4

O uso de uma interface resolve o problema j que, para implement-la, as classes no necessidade. Por exemplo, para calcular os impostos a serem pagos pela livraria,
precisam ser da mesma hierarquia. Lembre-se que uma interface s possui mtodos devemos considerar que existem aqueles que incidem sobre os funcionrios e os
abstratos. Assim, a classe Cliente e a classe Funcionario no recebero o mtodo de que incidem sobre os produtos comercializados. Nesse caso, podemos criar uma
validao j codificado. Entretanto, a partir dessa implementao, teremos a certeza interface chamada Custos que defina um mtodo calcularImpostos, o qual de-
de que existir um mtodo (com a mesma assinatura) nas classes (e subclasses) Clien- ver ser implementado na classe Funcionario e na classe Produto. Veja o exem-
te e Funcionario. Veja a codificao da interface Usuario na figura 147. plo da classe Funcionario na figura 152.

Figura 147 Figura 152

4.9.6. Polimorfismo
Para interfaces, no obrigatrio o uso do comando abstract, ficando implcito
que todos os mtodos inseridos em uma interface so abstratos. A assinatura O polimorfismo a possibilidade de utilizar um objeto como se fosse um ou-
de uma interface realizada pelo comando implements da seguinte forma: tro. Embora o conceito seja esse, algumas publicaes relacionadas ao Java e
orientao de objetos fazem abordagens diferentes. Ento, podemos considerar
Classe Cliente (figura 148). basicamente trs tipos de polimorfismo: o de mtodos, o de classe, o de interface.

Figura 148 4.9.6.1. De mtodos


Muitos autores consideram polimorfismo a possibilidade de utilizar dois ou
mais mtodos com a mesma assinatura, mas com comportamentos (codifica-
Classe ClientePF (figura 149). 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
Figura 149 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 codificao) a partir da mesma chamada, sendo diferenciado
pela classe que deu origem ao objeto. Isso justificaria chamar esse recurso de
polimrfico, mas acreditamos que melhor definido como sobrescrita.

4.9.6.2. De classe
Classe Funcionario (figura 150).
Considerando uma hierarquia de classes, temos, em uma superclasse, a gene-
Figura 150 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:
Classe Gerente (figura 151). 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
Figura 151 vendedor como um gerente, porque ambos so funcionrios.

Esse mesmo princpio se aplica aos programas em Java. Se definirmos 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.
Outra importante caracterstica das interfaces que uma mesma classe pode
implementar vrias delas. Como no existe herana mltipla em Java (uma O raciocnio o seguinte: Um vendedor um funcionrio, assim como, Um
subclasse ter mais de uma superclasse), o uso de interface supre essa eventual livro um produto. A diferena que vendedor foi definido a partir de uma

150 151
InFoRmtICa 4 CaPtulo 4

especializao da classe Funcionario. Assim, pode ter atributos e mtodos espe-


<<interface>> Figura 154
cfi cos referentes a vendedores, porm, no deixa de ser um Funcionario. entidademovimentacao
Implementao
da inteface
Apesar de um livro poder ser utilizado como se fosse um Produto, no deixa
de ser um livro e de ter as caractersticas especfi cas de livro. O polimorfi s- EntidadeMovimentacao.
mo, portanto, a possibilidade de utilizar um objeto como se fosse outro e no <<abstract>>
Pessoa
transform-lo em outro. O uso do polimorfi smo de classe (ou de tipo) exem- - codigo : int
plifi cado na fi gura 153, que ilustra o processo de venda da livraria. - nome : String
<<abstract>> - endereco : String
Cliente - bairro : String
Na classe Movimentacao, h um atributo do tipo Cliente, ou seja, nele pode- - cidade : String Fornecedor
mos armazenar um objeto instanciado a partir das classes ClientePF ou Clien- - limiteCredito : double - uf : String
- tefone : String - cnpj : Spring
tePJ. Na classe ItemMovimentacao, temos um atributo do tipo Produto, o que + mostrarTelefones() : void - celular : String - ie : Spring
signifi ca poder armazenar nesse atributo um objeto categorizado a partir das + calcularLimiteCredito() : double - login : String - contato : Spring
+ validarLogin(login : String, senha : - senha : String
classes Livro, CD ou DVD. String) : void - tipoUsuario : String + mostrarTelefones() : void
+ mostrarTelefones() : void
Figura 153
Polimorfismo
de classe. movimentacao
- nf : int <<abstract>>
- cli : Cliente Funcionario
venda - data : Date
- nota : Movimentacao - itens[ ] : itemMovimentacao - salarioBase : double
- status : boolean - salarioFinal : double
+ vender() : void + mostrarTelefones() : void
+ nalizarNF(nota : Movimentacao) : void + adicionarItem(item : Movimentacao) : void + calcularSalarioFinal(valorVendido : double) : void
+ validarLogin(login : String, senha : String) : double

Figura 155
venda Polimorfismo de
Itemmovimentacao
classe e de interface.
Principal - produto : Produto + vender() : void
- qtde : int + nalizarNF(nota : Movimentacao) : void
+ main(args[ ] : String) : void - totalItem : double

+ totalizarItemVenda() : void

movimentacao
Itemmovimentacao
4.9.6.3. De interface - nf : int
Principal - produto : Produto - data : Date
Tanto uma superclasse como uma interface podem ser interpretadas como um - qtde : int - destinatario : EntidadeMovimentacao
+ main(args[ ] : String) : void - totalItem : double - itens[ ] : ItemMovimentacao
superTipo. Ou seja, possvel referenciar um objeto pela interface que sua - status : boolean
classe de origem implementa. Voltemos ao exemplo da movimentao da livra- + totalizarItemCompra() : void - tipo : String
+ totalizarItemVenda() : void
ria. Para defi nir quais classes podem ser utilizadas na movimentao de mer- + adicionarItem(item : ItemMovimentacao) : void
cadorias, criamos a interface EntidadeMovimentacao e a implementamos nas
classes Cliente e Fornecedor (fi gura 154).

A movimentao, considerando compra e venda, fi car como aparece na fi gura 155. Compra

Temos uma nica classe Movimentacao responsvel pelos dados do corpo da + comprar() : void
compra e da venda. Para armazenar o cliente (no caso de venda) ou o fornecedor + nalizarNF(nota : Movimentacao) : void
(no caso de compra), h o atributo destinatrio, do tipo EntidadeMovimenta-
cao, interface que as duas classes implementam.

152 153
Informtica 4 captulo 4

4.10. Padres de desenvolvimento de sistemas 4.10.3. Packages


Um padro para desenvolvimento de sistemas estabelece critrios de anlise, or- No decorrer do desenvolvimento de um software, muitas classes so criadas e,
ganizao, modelagem, distribuio de tarefas, manuteno, expanso e comu- logo, nos deparamos com a necessidade de organiz-las. Os packages servem
nicao entre softwares. H duas mtricas bsicas de qualidade que devem ser para agrupar as classes, normalmente por funcionalidades comuns. Alm das
seguidas por um software: coeso e acoplamento. Um software tem que ter uma vantagens vistas anteriormente, as classes so ordenadas de maneira lgica e
alta coeso, isto , todos os componentes (mtodos, classes, pacotes ou qualquer fsica, pois, para cada package, criado um diretrio em disco para salvamento.
diviso que se faz dependendo do seu tamanho) e devem possuir o mesmo nvel Como exemplo no projeto Livraria, todas as classes esto contidas no default
de responsabilidade. O ideal que cada componente esteja focado na resoluo package, como se observa na figura 156.
de um problema especfico. Alm disso, precisa haver baixo acoplamento: cada
elemento deve ser o mais independente possvel de outro. E uma alterao da Figura 156
implementao de um componente no pode afetar nenhum outro. Classes contidas no
default package.
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-
A camada de
tando a consequente reutilizao dos componentes. Isso faz com que o custo de
apresentao
determina como
manuteno da aplicao caia e a qualidade do cdigo aumente.
o usurio interage
com a aplicao e 4.10.1. Programao em trs camadas
como as informaes
so captadas e Um dos padres mais utilizados no desenvolvimento de softwares o que separa,
apresentadas. A de logicamente, uma aplicao em trs camadas: de apresentao, de negcio e de
negcio tambm dados. A vantagem desse tipo de desenvolvimento que, com a independncia das
chamada de camadas, as atualizaes e correes em uma delas podem ser feitas sem prejudicar as
Lgica empresarial, demais. No h, portanto, maior impacto sobre a aplicao como um todo.
Regras de negcio
ou Funcionalidade. 4.10.2. MVC (Model, View, Controller)
nela que ficam
armazenadas as O MVC (iniciais de modelo, viso e controlador) outro padro muito utiliza-
codificaes do do em aplicaes orientadas a objetos. Segue o mesmo princpio da separao
funcionamento de em camadas, porm, com um foco maior em como esses nveis interagem.
todo o negcio. A
de dados gerencia a Podemos ver a camada de negcios como o Model (contendo as classes de modela-
conexo com todas gem da aplicao) e a de apresentao como a View (com toda forma de interao
as fontes de dados com o usurio: interfaces grficas, pginas da web etc.). O Controller, porm,
usadas pelo aplicativo especfico dessa arquitetura. o nvel responsvel pelas solicitaes ao Model (ins- O mesmo projeto Livraria devidamente organizado em packages pode ser visua
(normalmente, um tancia e utiliza os objetos disponveis) e interao com a View (recebe, manipula e lizado nas figuras 157 e 158.
banco de dados) e
fornece os dados obtidos). A camada de dados, responsvel pela comunicao com
o abastecimento de
o banco de dados, no citada especificamente pela MVC, podendo ser visualiza- Figura 157
dados dessas
da como pertencente ao Model ou como uma camada independente. Organizao
fontes para a lgica
em packages.
de negcio.
Apesar de existir uma considervel documentao a respeito da organizao de
softwares em camadas e sobre o MVC, no h uma regra rgida e inflexvel
de distribuio das classes nessas camadas. Boa parte da deciso fica a critrio
dos projetistas de sistemas, que adaptam as vantagens dos modelos existentes
s necessidades especficas 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).

154 155
Informtica 4 captulo 4

Figura 158
lidacaoUsuario, que d origem tela anterior, para depois conferir os principais
Classes organizadas em
pontos do cdigo (consulte o quadro Principais pontos do cdigo).
pacotes (packages).
Figura 159
Tela de validao
de usurios.

Figura 160
Classe
FormValidacaoUsuario.

No eclipse, para criar um novo package, clique no menu File/ New/ Package.

4.11. Interfaces grficas


A GUI (Graphical User Interface, ou Interface Grfica com o Usurio), em Java,
um conjunto de classes para disponibilizar componentes grficos (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 grficas 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 grficas 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 figura 159, um exemplo de sua
estrutura e alguns de seus componentes, e, na figura 160, veja a classe FormVa-

156 157
Informtica 4 captulo 4

A classe FormValidacaoUsuario instanciada e exibida a partir da classe Princi-


Principais pontos do cdigo pal, reproduzida na figura 161.

Figura 161
Linha 01: importa a API AWT e a disponibiliza
Classe Principal.
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 grficos
que podemos utilizar agora, graas herana.
Ao ser executada a classe Principal, a tela reproduzida antes, na figura 159,
Linha 05 a 08: a declarao dos componentes,
ser exibida, mas no executar nenhuma ao, nem mesmo funcionar o
necessria, assim como os atributos, para classes
boto com um x no canto superior direito da janela. que, para colocar
que utilizam elementos grficos. Nesse exemplo,
eventos na janela, devemos implementar interfaces especficas para essa
usa-se Button (botes), Label (rtulos), TextField
finalidade.
(caixas de texto) e Dimension (um tipo especial,
cuja finalidade definir o tamanho - altura
e largura - dos componentes). 4.11.2. Interfaces listeners
Para controlar os eventos de um formulrio, devemos incluir na classe as
Linha 10: a assinatura do construtor da classe,
interfaces gerenciadoras de eventos, tambm chamadas de listeners. Um
ou seja, dentro desse mtodo sero definidos
listener pode ser entendido como um ouvinte ou um rastreador, que
quais componentes iro compor a tela e como.
consegue capturar um evento ocorrido no formulrio e permite vincular a
ele, uma ao (codificao). Entre os diferentes tipos de eventos que podem
Linha 12 a 15: criao dos objetos dimension
ocorrer, os mais comuns so:
que contm as dimenses (altura e largura)
usadas em cada componente.
Eventos de ao (em componentes): implementados pela interface
ActionListener.
Linha 17 a 21: alterao de algumas
propriedades do Frame (janela) como ttulo
Eventos de janela: implementados pela interface WindowListener.
(setTitle()); possibilidade de a janela ser ou
no redimensionada (setResizable()); tamanho
Eventos de teclado: implementados pela interface KeyListener.
(setSize(), fazendo uso de um objeto dimension
(dFrame) para definio desse tamanho; localizao
Eventos de mouse: implementados pela interface MouseListener.
em relao ao monitor (setLocation()), e definio
de se ser utilizado um gerenciador de layouts
Cada um dos listeners possui mtodos que capturam os eventos ocorridos. A
(setLayout(null)).
interface ActionListener possui apenas um, que :
Linha 23 a 25: instancia um objeto do tipo Label
actionPerformed().
e define seu tamanho e localizao (em relao
ao Frame). Nas linhas seguintes, so instanciados
A interface WindowListener tem sete:
os demais componentes e apresentados
seus tamanhos e sua localizao.
windowActivated(), windowDeactivated(), windowIconified(), window-
Deiconified(), windowOpened(), windowClosed() e windowClosing().
Linha 47 a 52: os componentes que foram criados
e configurados so adicionados janela (Frame)
A interface KeyListener conta com trs:
para montar a tela.
keyPressed(), keyReleased() e keyTyped().

158 159
Informtica 4 captulo 4

A interface MouseListener tem cinco: Na prxima codificao, vemos como implementar o WindowListener (figura 164).

mouseCliecked(), mouseEntered(), mouseExited(), mousePressed() e mou- Figura 164


seReleased(). Como implementar
o WindowListener.
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 figura 162, a estrutura (organizao de pa-
ckages) do projeto ValidacaoUsuario.

Figura 162
Projeto
ValidacaoUsuario.

Para que o WindowListener funcione, necessrio adicionar o Frame a ele (pelo m-


Veja como ficou a classe FormValidarUsuario aps a atualizao (figura 163) e, todo addWindowListener(this), visto na linha 86), assim como implementar os sete
em seguida, confira uma anlise da codificao. mtodos (abstratos) pertencentes ao WindowListener (linhas 90 a 110), mesmo que
s utilizando um deles (windowClosing) para fechar o formulrio (linhas 108 a 110).
Figura 163
Classe Vamos ver como o funcionamento do ActionListener, aproveitando a oportu-
FormValidarUsuario nidade para entender como fazer a interao entre um objeto (originado de uma
atualizada. 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, confira a codificao do mtodo validarLogin da classe ClientePF (figura 165).
Linha 01: de acordo com a estrutura de packages, necessrio definir
a qual classe pertence. Figura 165
Codificao
Linha 02 a 07: imports das classes que possuem os recursos para rea- do mtodo
lizar a leitura de eventos. validarLogin da
classe ClientePF.
Linha 09: incluso das duas listeners na abertura da classe pelo co-
mando implements.

160 161
Informtica 4 captulo 4

Figura 166
Quando um evento for disparado em qualquer componente adicionado ao
Importando o
ActionListener, ele ser capturado e o mtodo actionPerformed, executado.
pacote model. 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
Para fazer a interao do objeto clientePF com a tela de login, instanciamos A API Swing, localizada no pacote javax.swing, uma atualizao da AWT
o objeto na classe FormValidacaoUsuario, inicializando o login com a palavra que soluciona - ou pelo menos diminui - a dependncia do sistema ope-
aluno e a senha com 123, pelo construtor. Mais uma vez, respeitando a or- racional, caracterstica de interfaces desenvolvidas com AWT. Essa API
ganizao de packages. Para ter acesso classe ClientePF, necessrio importar desenha cada componente ou janela que necessita. Assim, permite que o
o pacote model (linha 14), conforme ilustra a figura 166. comportamento visual do programa seja o mesmo em qualquer platafor-
ma, alm de oferecer um conjunto extenso de componentes visuais. Para
O prximo passo adicionar os botes ao ActionListener, pelo mtodo testar as diferenas entre o AWT e a Swing, vamos transformar a classe
addActionListener(this), para que eles passem a ser monitorados pelo Action- FormValidarUsuario em Swing. Primeiro, vale analisar a abertura da classe
Listener (figura 167). (figura 169).

Figura 167 Linha 06 a 11: imports da API Swing.


Adicionando botes ao
ActionListener. 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.
E, por fim, implementar o mtodo actionPerformed (figura 168).

Figura 168
Implementando o
actionPermormed.

162 163
Informtica 4 captulo 4

Em relao aos listeners, a implementao explcita no mais necessria. Eles Linha 44: a incluso de um componente na interface ActionLis-
continuam sendo utilizados, mas, agora, de forma implcita. No trecho seguinte tener (deixando preparado para receber um evento), assim como
da figura 170, temos o incio do construtor e a instanciao dos componentes. a utilizao de AWT, realizada pelo mtodo addActionListener.
Porm, com a Swing criado uma ActionListener (linha 45) den-
Figura 170 tro do mtodo addActionListener e definido seu mtodo actio-
Incio do construtor nPerformed (linha 46). Com o uso do AWT, tnhamos um nico
e instanciao dos mtodo actionPerformed e, nele, identificvamos o componente
componentes. 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, verificado se o login ou a senha esto vazios (linha 50). Ento,


Utilizando a API Swing, o gerenciamento da janela ficou a cargo do componen- o mtodo validarLogin do objeto clientePF invocado, passando-se o login e a
te do tipo Conteiner, que receber e organizar todos os componentes. senha (lidos pelo formulrio) por parmetros.

Linha 26: define o ttulo da janela pelo construtor da superclasse Em relao ao exemplo AWT, o mtodo validarLogin retorna true (se os
(acessado pelo mtodo super()). valores passados forem iguais ao seus atributos login e senha) e false, se
forem diferentes. A estrutura de desvio condicional if codificada na linha
Linha 27: cria um componente nomeado como tela do tipo Conteiner. 55 considera esse retorno para apresentar uma das mensagens definidas. A
seguir (figura 172), encontra-se a codificao do mtodo validarLogin (j
Linha 28: define que no ser utilizado um gerenciador de layout. modificado) da classe ClientePF.

Linha 30 a 40: declara os componentes e define tamanho e posicionamento. Figura 172


Codificao do mtodo
O mtodo setBounds() responsvel por definir o tamanho e a localizao do com- validarLogin j modificado.
ponente pelos parmetros que recebe, na seguinte sequncia: coluna, linha, largura e
altura. Na figura 171, observe o trecho que define os eventos.
Erros de lgica: apresentam-se
na elaborao de um algoritmo
Figura 171
no apropriado para solucionar
Trecho que o problema. No causam
define os eventos. necessariamente interrupo
na execuo do programa.
Erros de execuo: mais
A API AWT e a Swing possuem vrios componentes que no foram abordados especficos se comparados
nesses exemplos. aos lgicos, decorrem
de uma operao invlida
4.12. Tratamentos de excees e causam interrupo na
execuo do programa,
Na execuo de um programa, possvel que ocorram erros de lgica e de porque este recebe um sinal
execuo, capazes de provocar a sua interrupo, de produzir resultados indicando que a operao
incorretos ou ainda de causar uma ocorrncia inesperada. no pode ser realizada.

164 165
InFoRmtICa 4 CaPtulo 4

4.12.2.1. unchecked Exception


Throwable
Uma exceo no verifi cada 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
Exception Error a ocorrncia de excees no verifi cadas pela codifi cao adequada. Todos os tipos
de exceo, que so subclasses diretas ou indiretas da classe RuntimeException, so
excees no verifi cadas. So exemplos de Unchecked Exceptions a entrada de tipos
incompatveis (Leitura de uma String em um atributo double, por exemplo); acesso
RuntimeException IOException AWTError ThreadDeath OutOfMemoryError a ndice inexistente em um array e chamada a um mtodo de um objeto nulo.

4.12.2.2. Checked Exception

ArrayIndexOutOfBoundsException InputMismatchException 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-fi nally.

ClassCastException NullPointerException ArithmeticException


4.12.2.3. throws
O Th rows delega, para o local onde o mtodo foi solicitado, a responsabilidade
Figura 173 de tratar o erro. Isso quer dizer que a obrigatoriedade de tratamento passada
Parte da hierarquia para a classe que far a chamada ao mtodo.
da classe Throwable. As linguagens de programao possuem formas para identifi car e tratar os erros
de execuo. Em Java, so detectados pela JVM e criado um objeto de uma 4.12.2.4. try-catch-finally
classe que caracteriza o erro. O programa que gerou o erro notifi cado e, caso
seja possvel trat-lo, pode-se acessar o objeto que o caracteriza. 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
Os erros so caracterizados por objetos de classes especfi cas que pertencem erro gerado ser capturado pelo catch, que possui um parmetro de exceo
hierarquia da classe Th
rowable. Uma parte dessa hierarquia pode ser visualizada (identifi cao do erro) seguido por um bloco de cdigo que o captura e, assim,
na fi gura 173. permite o tratamento. possvel defi nir vrios catch para cada try. O fi nally
opcional e, se for usado, colocado depois do ltimo catch. Havendo ou no
A classe Th rowable a superclasse da classe Exception e, portanto, tambm uma exceo (identifi cada no bloco try) o bloco fi nally sempre ser executado.
a superclasse de todas as excees. Somente objetos Th rowable podem ser uti-
lizados como mecanismos de tratamento de excees. A Th rowable tem duas Para exemplifi car a utilizao dos recursos de tratamento de excees utilizare-
subclasses: Error e Exceptions. mos o exemplo de validao de login vistos nos subcaptulos anteriores.

4.12.1. Error 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
A Error, com suas subclasses, utilizada para indicar erros graves que no se textField interpretam qualquer valor lido como String. Observe, na fi gura 174,
esperam que sejam tratados pelo programas. Errors raramente acontecem e no a codifi cao do mtodo validarLogin na classe ClientePF.
so de responsabilidade da aplicao. Exemplos de Errors so os internos da
JVM e a falta de memria. Figura 174
Codificao
4.12.2. Exception do mtodo
validarLogin na
Os erros em Java so, normalmente, chamados de exceptions. Uma exceo, classe ClientePF.
como sugere o signifi cado 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 verifi cadas)
e Checked (verifi cadas).

166 167
Informtica 4 captulo 4

Figura 175
O bloco de cdigo entre as linhas 55 e 63 pertence ao try. Se alguma exceo
Evento do
ocorrer neste trecho ela ser capturada pelo catch da linha 64. Como o possvel
componente erro que estamos tratando ocorrer na converso de String para int, um objeto
bOk na classe do tipo NumberFormatException (a classe de exceo responsvel por esse tipo
FormValidacaoUsuario. 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 finally 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 verificaes 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,
Na linha 50, a senha obtida por meio do componente tpSenha do tipo JPas- estando nessa faixa de valores o compilador no gerar uma exceo. Mas para a mi-
swordField precisa ser convertida para int antes de ser passada por parmetro nha aplicao, um valor informado fora da faixa entre 0 e 1000 uma exceo. Para
na chamada do mtodo validarLogin (linha 56). Se for digitada uma letra no esses casos, podemos utilizar a clusula throw (no confundir com throws, que tem
campo senha, a converso para int (linha 50) gerar uma exception do tipo outro sentido, estudado mais adiante), que realiza uma chamada a uma exceo (fora
NumberFormatException. Perceba que o compilador no nos obriga a tratar uma exceo). Vejamos, na figura 177, como ficar a validao com o uso do throw.
esse erro. Portanto, estamos diante de um Unchecked Exception (outra forma
de identificar o tipo da exceo considerar que NumberFormatException Na linha 58, verificado se a senha informada est fora da faixa de valores pre-
subclasse de RuntimeException). A insero da estrutura de try-catch-finally vista. Se estiver, a exception IllegalArgumentException invocada e capturada
pode tratar essa possvel exceo da forma como ilustra a figura 176. pelo catch da linha 71, onde uma mensagem ser exibida.

Figura 176 Para fechar nossos exemplos de tratamentos de exceo, vamos analisar o com-
Validao com portamento do Java (e os recursos do eclipse) em relao a Checked Exceptions
try-catch-finally.
Figura 177
Validao com
uso do throw.

168 169
Informtica 4 captulo 4

Figura 178 Figura 182


Observao de erro de Uso do throws
uma checked exception. na classe
FormValidacaoUsuario.

Figura 179
Opes de tratamento.

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.
Figura 180
Em nosso exemplo de validao de login, consideremos agora que, ao logar,
Utilizando o try-catch.
o usurio ter acesso ao contedo de um arquivo texto, nomeado como
confidencial.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 figura 178.

Parando com o ponteiro do mouse sobre a observao de erro, ser exibido o


menu suspenso ilustrado na figura 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 (figura 180).
J o throws utilizado da forma como sugere a figura 181.
Figura 181
Uso do throws na
Na assinatura do mtodo, inserida na clusula throws e na exception que de-
classe ClientePF.
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 (figura 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).

170 171
Informtica 4 captulo 4

possvel capturar uma exceo recorrendo classe Exception (classe me e , portanto, inteiramente compatvel com as classes responsveis pela conexo
das excees), ou seja, qualquer erro ser interceptado. Esse tipo de trata- e manipulao dos dados.
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 Principais funcionalidades do JDBC
de criao de nossas prprias classes de excees e a manipulao de vrias
outras exceptions. Estabelecer a conexo com o banco de dados

Executar comandos SQL


Exemplos de exceptions mais comuns
Permitir a manipulao de resultados (dados) obtidos
ArithmeticException: resultado de uma operao a partir da execuo de comandos SQL
matemtica invlida.
Gerenciar transaes (aes realizadas
NullPointerException: tentativa de acessar um objeto simultaneamente por um a um dos usurios conectados
ou mtodo antes que seja instanciado. ao SGBD)

ArrayIndexOutOfBoundsException: tentativa de Capturar e possibilitar o tratamento de excees Importante:


acessar um elemento de um vetor alm de sua relacionadas conexo e utilizao do banco. A partir desse ponto
dimenso (tamanho) original. preciso que os conceitos
relacionados estrutura
Para que um sistema (projeto) Java possa se conectar e gerenciar uma conexo com dos bancos de dados
NumberFormatException: incompatibilidade de tipos
banco de dados, deve ser configurado para ter acesso ao(s) driver(s) JDBC referen- relacionais e a linguagem
numricos.
te ao(s) banco(s) utilizado(s). A JDBC suporta quatro categorias de drivers: a de SQL j tenham sido
tipo 1, que a ponte JDBC-ODBC; a de tipo 2, API nativa parcialmente Java; a estudados e devidamente
FileNotFoundException: arquivo no encontrado.
de tipo 3, o Protocolo de rede totalmente Java; e a de tipo 4, o Protocolo nativo aprendidos. Caso ainda
totalmente Java. As caractersticas de cada um deles esto definidas a seguir. falte alguma
ClassCastException: tentativa de converso etapa para essa
incompatvel. consolidao, vale uma
Tipo 1: JDBC-ODBC bridge driver (Ponte JDBC-ODBC)
boa consulta s diversas
publicaes disponveis
4.13. Conexo com banco de dados O ODBC (Open Data Base Connectivity) o recurso padro disponibilizado pela
sobre o assunto, bem
Microsoft, responsvel pela conexo a bancos de dados na plataforma Windows. O
O MySQL um banco Por definio, um banco de dados um conjunto de informaes armaze- driver JDBC do Tipo 1 prov a comunicao entre o ODBC e a API JDBC, que como documentaes
de cdigo-fonte nadas em um meio fsico (papel, disco rgido etc.), organizadas de tal forma o padro de conexo a bancos de dados para aplicaes desenvolvidas em Java. Sua referentes ao MySQL.
aberto, gratuito e que seja possvel fazer sua manuteno (incluso, alterao e excluso) e vantagem ser ideal para integrao de aplicaes Java em ambientes que j possuem
est disponvel tanto
diferentes formas de pesquisas. Considerando os bancos de dados informa- aplicaes desenvolvidas para a plataforma Windows. H, porm, duas desvantagens:
para o Windows
tizados, os SGBDs (Sistemas Gerenciadores de Bancos de Dados) possuem no indicado para aplicaes em grande escala, pois seu desempenho cai medida
como para o Linux.
recursos para manuteno, acesso, controle de usurios, segurana, e ou- que as chamadas JDBC trafegam por meio da ponte para o driver ODBC; e o driver
O download pode
tras ferramentas de gerenciamento. O SQL (Structured Query Language, JDBC-ODBC precisa estar instalado no cliente.
ser feito diretamente
oulinguagem de consulta estruturada) uma linguagem de manipulao
do site do fabricante
(http://dev.mysql.com/
de dados que se tornou padro para SGBDRs (Sistemas Gerenciadores de Tipo 2: Native API partly Java driver (API nativa parcialmente Java)
downloads/). A verso Bancos de Dados Relacionais). Entre os sistemas de gerenciamento de SGB-
utilizada nos exemplos DRs populares esto: o Microsoft SQL Server, o Oracle, o IBM DB2, o Os drivers JDBC do Tipo 2 permitem a comunicao de aplicaes Java
deste item a 5.0. PostgreSQL e o MySQL. com os drivers nativos dos SGBDs (geralmente desenvolvidos em C ou
C++). Nesse sentido, so semelhantes aos do tipo 1, porm, criam uma pon-
4.13.1. JDBC (Java Database Connectivity) 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
a API (conjunto de classes e interfaces) responsvel pela conexo de programas que o driver nativo especfico do SGBD utilizado deve estar instalado na
desenvolvidos em Java com vrios tipos de bancos de dados. O prprio JDBC mquina cliente, o que impossibilita aplicaes web, pois necessrio ter
(confira o quadro Principais funcionalidades do JDBC) foi desenvolvido em Java acesso s mquinas clientes.

172 173
Informtica 4 captulo 4

Figura 183
Tipo 3: Net protocol all Java driver (Protocolo de rede totalmente Java) Formulrio de
O driver Tipo 3 converte as requisies do SGBD em um protocolo de rede manuteno de clientes
genrico (no vinculado a nenhum SGBD). Essas requisies so enviadas a um pessoa fsica.
servidor middle-tier, que as traduz e encaminha para um SGBD especfico. 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
configurao das mquinas clientes; indicado para aplicaes web. H uma s
desvantagem: exige a instalao e configurao 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 especfico 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 fica 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- Figura 184


nector-java-5.1.6-bin), do tipo 4. Os prprios fabricantes dos SGBDs fornecem Importaes das API
seus drivers JDBC. Existem muitos fornecedores independentes que desenvol- de conexo a banco.
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. Para estabelecer a conexo com o banco, o mtodo responsvel (getConnection)
precisa de quatro informaes: o driver JDBC que ser utilizado, o endereo do
Componentes da API Swing foram utilizados para montar o layout do for- banco desejado, o login e a senha de identificao no banco de dados. Em fun-
mulrio. Vinculados aos eventos dos botes, esto os cdigos que realizam a o da maior clareza de cdigo, declaramos quatro atributos para receber estas
captura dos dados obtidos pelo formulrio e as chamadas aos mtodos de um informaes (figura 185).
objeto nomeado como clientePF do tipo ClientePF e que ser o responsvel
pela interao com o banco de dados. Na classe ClientePF foram implemen- No exemplo, usamos o driver JDBC do MySQL, nosso banco foi criado com o
tados mtodos que realizam cada uma das operaes com o banco de dados nome livraria, est localizado no caminho padro do MySQL e no definimos
(incluso, alterao, excluso, listagem de todos os clientes pessoa fsica e pes- (no banco) nenhum login e senha especficos. Estamos considerando, ento, o
quisa de um determinado cliente). banco livraria contendo uma tabela chamada clientes.

Detalhemos, ento, esse relacionamento entre a obteno de dados pelo Figura 185
formulrio e a chamada aos mtodos do objeto clientePF. Primeiramente, Definio de parmetros
na classe ClientePF (no qual ser feita a conexo com o banco e o geren- de conexo como atributos.
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.

174 175
Informtica 4 captulo 4

Figura 187
4.13.2.1. Classe java.sql.Statement Mtodo incluir na
A classe java.sql.Statement permite a execuo dos comandos fundamentais de classe ClientePF.
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.

1.Statement.
4.13.2.2. A classe PreparedStatement
executeQuery(): J a classe java.sql.PreparedStatement contm os mtodos da classe Statement e
executa uma query
outros recursos para elaborao de query, bem como a possibilidade de passa-
e retorna um objeto
gem de parmetros.
do tipo java.sql.
ResultSet (responsvel
por armazenar dados 4.13.2.3. A classe CallableStatement
advindos de uma
consulta SQL) com
A classe java.sql.CallableStatement, por sua vez, permite executar procedimen-
o resultado obtido tos e funes armazenados no banco como, por exemplo, chamadas a stored
(utilizado com select). procedures.
2.Statement.
executeUpdate(): 4.13.3. Incluso
executa uma query e
retorna a quantidade Na Classe FormClientePF, os objetos clientePF e clientePFAuxiliar (previa-
(um valor inteiro) mente instanciados) so do tipo ClientePF e possuem os atributos referen-
de linhas afetadas tes aos dados lidos pelo formulrio, para a incluso. Os atributos do objeto
(utilizado com insert, clientePFAuxiliar so preenchidos com os valores lidos do formulrio como
update e delete). 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).

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 classe ClientePF, o mtodo incluir recebe um parmetro do tipo ClientePF, Na linha 331, criado um objeto do tipo Statement (com o nome de stmt)
tambm nomeado clientePF (o nome do parmetro, alis, poderia ser qualquer e, na linha 333, executada uma consulta ao banco para obter o ltimo
um, desde que o tipo seja respeitado) e realiza os comandos que podem ser cdigo cadastrado. Este cdigo, armazenado em um objeto do tipo Result-
visualizados em seguida, na figura 187. Set (rs), incrementado (somado mais 1) na linha 335 e usado como novo

176 177
Informtica 4 captulo 4

Figura 189
cdigo na linha 340. O mtodo next do objeto rs (ResultSet) serve para
Mtodo alterar
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 na classe ClientePF.
primeiro). Aps a utilizao do objeto rs devemos fech-lo, por meio do
mtodo close (linha 336).
Observe que todas a
Na linha 325 criado um objeto do tipo PreparedStatement, nomeado
linhas de comando
como ps e contendo null (vazio) e, na linha 339, inserido um script de
que fazem a conexo
SQL (um insert) contendo a definio de parmetros (caractere ?). Por meio
e a manipulao dos
do mtodo set (do prprio objeto ps) podemos inserir valores nesse coman-
dados no banco esto
do SQL (insert), passando por parmetro um ndice e o valor que quere-
em uma estrutura
de try e as excees
mos inserir. Por exemplo, na linha 342 est sendo includo o contedo
tratadas nos catch so do atributo nome do objeto clientePF, no terceiro parmetro do objeto ps
ClassNotFoundException (podemos entender que o terceiro caractere ? foi substitudo pelo nome).
(exceo gerada Observe que pelo prprio mtodo set do objeto ps, podemos definir o tipo
se uma das classes que ser inserido (setInt, setString, setDouble etc). Finalmente, quando o
no for localizada) e comando SQL (insert) contido no objeto ps est completo (todos os valores
SQLException (se um armazenados no objeto clientePF foram passados para ele), o mtodo exe-
comando SQL no puder cuteUpdade executado (linha 356) e os valores so includos no banco.
ser executado). No bloco
de finally, a conexo 4.13.4. Alterao
fechada.
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).
pelos valores armazenados no objeto clientePF. Essa substituio de valores
Figura 188: (alterao) ser aplicada somente ao registro cujo campo cliCod igual ao
Mtodo valor contido no atributo cdigo do objeto clientePF. Esse critrio foi defi-
acaoAlteracao nido por intermdio da clusula where do comando update.
na classe
FormClientePF. 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.

Figura 190
Mtodo acaoExclusao
na classe FormClientePF.
Na classe ClientePF, o mtodo alterar recebe um parmetro do tipo ClientePF
e realiza comandos visualizados na figura 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- Na classe ClientePF, o mtodo excluir recebe um objeto do tipo ClientePF
do SQL executado o update, substituindo os valores contidos no banco como parmetro e realiza os comandos visualizados na figura 191.

178 179
Informtica 4 captulo 4

Figura 191 Figura 193


Mtodo excluir Mtodo listar na
na classe ClientePF. classe ClientePF.

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 defi-
nido por meio da clusula where do comando delete.

4.13.6. Listagem geral


207 realizada a consulta. No looping da linha 210 a 215 (while), o rs
Na classe FormClientePF, realizada a chamada ao mtodo listar do objeto percorrido a partir de sua primeira linha (posicionado pelo mtodo next do
clientePF, como se pode ver na figura 192. 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
Figura 192 concatenado (unido) com trechos de texto que identificam uma a uma
Mtodo acaoListar na das informaes (linhas 211 e 214). Observe que rs.getString(1) equivale ao
classe FormClientePF. 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
Na classe ClientePF, executada uma consulta ao banco e o retorno so os por intermdio de concatenaes com o contedo do objeto.
campos cliCod, cliNome, cliTelefone e cliCelular de todos os registros da tabela
clientes (figura 193). 4.13.7. Pesquisa
Nesse exemplo, montaremos uma String com o retorno da consulta e a Uma pesquisa pode ser realizada de formas diferentes. O que apresentamos,
apresentaremos por meio de um showMessageDialog. Um objeto rs tem o ento, simplesmente um exemplo. Na classe FormClientePF, utilizaremos
formato de uma matriz, em que o retorno de uma consulta pode ser tratado mais um objeto do ClientePF como auxiliar na pesquisa, criado na linha
como uma tabela. Os mtodos de acesso aos dados contidos em um objeto 340 com o nome de clientePFPesquisa. O objeto clientePF instanciado
rs so gets especficos para o tipo de dado armazenado. Identifica-se o novamente dentro do mtodo somente para garantir que estar vazio. A
campo desejado pelo seu referente ndice (coluna) na linha acessada. Na manipulao desses dois objetos ilustrada na figura 194.

180 181
Informtica 4 captulo 4

Figura 194 Figura 195


Mtodo acaoPesquisar na Mtodo pesquisar
classe FormClientePF. na classe ClientePF.

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.
aparecer antes do fim, portanto, se o mtodo isLast retorna false porque o
Na classe ClientePF, o mtodo pesquisar recebe um objeto do tipo ClientePF rs est vazio. Na linha 249, testado o mtodo isLast. Se for false, apresenta
como parmetro, retorna um objeto do tipo ClientePF e realiza a pesquisa da uma mensagem, seno, armazena os dados do cliente encontrado no objeto
forma como ilustra a figura 195. clientePF (linha 253 a 267). Na linha 286, o objeto retornado com ou sem
dados dependendo do resultado da consulta.
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- Esse captulo no pretende esgotar os recursos e possibilidades de uso da lin-
tePF passado por parmetro, e executado na linha 246. Como a consulta guagem Java, tampouco das tcnicas de programao orientada a objeto. O
feita por intermdio da chave primria da tabela clientes (cdigo), somente um intuito foi passar pelas principais caractersticas dessa linguagem, suas estru-
registro ser retornado (caso seja encontrado). O mtodo next posiciona o rs turas e organizaes, alm de demonstrar as aplicaes prticas dos principais
em seu primeiro registro (que em nosso exemplo, tambm o ltimo, j que conceitos da orientao a objetos, que so perfeitamente viveis nessa lingua-
s teremos um registro de retorno). O mtodo isLast retorna true se o rs estiver gem. Ainda h muito o que ser visto tanto sobre as tcnicas de orientao a
posicionado no ltimo registro (e false, se no estiver). Se o rs estiver vazio, objeto, quanto sobre Java. Esperamos que esse seja o seu ponto de partida.

182 183
Captulo 5

Visual Studio 2008


Net Framework
Solues e projetos
InFoRmtICa 4 CaPtulo 5

Figura 196
.NET Framework.

AJAX (acrnimo
para a expresso em

O
ingls Asynchronous
Javascript And XML, que
literalmente pode ser
traduzido para Javascript
e XML Assncrono) o Visual Studio um conjunto de ferramentas de desenvol-
nome dado utilizao vimento que contm editores de cdigos, IntelliSense, assistentes e diferentes
metodolgica de
linguagens em um mesmo ambiente de desenvolvimento integrado para prin-
Javascript e XML para
cipiantes e profi ssionais. Apresenta-se em diferentes plataformas: PCs, servido-
fazer com que as pginas
res, aplicaes web e mveis. Em uma viso mais abrangente, o Visual Studio
web se tornem mais
permite o desenvolvimento rpido de aplicativos, recursos de depurao e banco
interativas.
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-
ASP.NET, sucessora
da tecnologia ASP (de
o de cdigo gerenciado para criar aplicativos cliente, servidores ou dispositi-
Active Server Pages vos mveis. formado por um conjunto variado de bibliotecas que facilitam o
ou pginas de servidor desenvolvimento de aplicaes, desde as mais simples at as mais complexas,
ativo) a plataforma da bem como a instalao e distribuio de aplicaes. Baseado em tecnologia de
Microsoft usada para mquina virtual, o .NET Framework totalmente orientado a objetos.
o desenvolvimento de Na quarta camada temos Web Services e Web Forms. O Web Service representa
aplicaes web. O .NET Framework 3.5 incrementa as verses anteriores com novas imple- a integrao entre os dados de diferentes aplicaes e plataformas, permitindo o
mentaes ASP.NET e AJAX e aumenta a integrao com o LINQ (Language envio e recepo de dados no formato XML. Tudo de maneira muito fcil. Para
Integrated Query, ou consulta integrada de linguagem) que uma nova fer- que isso ocorra, entra em cena o Web Forms, criando um ambiente de desen-
ramenta de pesquisas em base de dados, alm de suporte total para Windows volvimento semelhante s ferramentas que normalmente utilizamos, clicando e
Workfl ow Foundation (WF), Windows Communication Foundation (WCF), arrastando, assim como se faz no FrontPage da Microsoft. J o Windows Form
Windows Presentation Foundation (WPF) e Windows CardSpace. Sua estrutu- uma evoluo dos formulrios utilizados para programao.
ra composta por diferentes camadas, como podemos visualizar na fi gura 196.
Localizado na penltima camada de baixo para cima, o Common Type Sys-
O Microsoft .NET Framework
Na camada inferior, encontramos a Common Language Runtime (CLR) ou tem (CTS), que pode ser literalmente traduzido como sistema de tipo comum,
3.5 o modelo de programao tempo de execuo de linguagem comum. Sua fi nalidade executar as aplica- existe para que ocorra a integrao entre as linguagens de programao. Defi -
do Windows Vista e, segundo a es, criando um ambiente de mquina virtual e compilando as linguagens de ne como os tipos de dados sero declarados, usados e gerenciados no momento
prpria Microsoft ao anunciar programao do .NET Framework em cdigo nativo. O .NET Frameworks da execuo do aplicativo.
o lanamento, combina o Base Class, na segunda camada de baixo para cima, representa as bibliotecas de
poder do .NET Framework 2.0 classes disponveis para o desenvolvimento de aplicativos (consulte o quadro Re- No topo, aparecem as linguagens de programao utilizadas para o desenvolvimen-
com novas tecnologias para cursos de classes disponveis na pgina 188). o principal ponto de interatividade to da aplicao, como VB, C++, C# e JScript. Assim, pode-se concluir que o con-
construo de aplicativos. com o Runtime (tempo de execuo). junto de todas as camadas mencionadas representa o pacote do Visual Studio.Net.
Permite a realizao de novas
experincias, comunicao Na terceira camada ascendente, est o ADO.NET (Data e XML). O ActiveX 5.1.1. mquina virtual
integrada e sem fronteiras, Data Objects (ADO) oferece todos os recursos necessrios para a criao e ma-
alm de ser til para vrios nipulao de bancos de dados fornecidos por meio das classes System.Data, A mquina virtual serve como uma camada entre o cdigo e o sistema operacio-
processos corporativos. .Common, .OleDb, .SqlClients, SqlTypes, .Odbc e .Xml. nal. Todo cdigo escrito no .NET (Visual Basic, C# ou qualquer outra lingua-

186 187
InFoRmtICa 4 CaPtulo 5

Figura 197
gem), compilado para uma linguagem intermediria chamada CIL (Common
O Visual Studio.
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

Figura 198
Recursos de classes disponveis Janela de Projeto.

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 entre si, elaborados em diferentes linguagens e organizados no formato de pastas
de manipulao de arquivos e diretrios. semelhante ao Windows Explorer. Os arquivos de projetos (.vbproj, .csproj etc.)
e os arquivos de soluo (.sln) esto no formato XML.
System.Resources: usado para traduo do aplicativo em
diferentes idiomas e tambm para retorno de mensagem 5.2.1. Iniciando o Visual Studio Solution
de acordo com o idioma selecionado pelo usurio.
Ao iniciar o Visual Studio pela primeira vez (fi gura 197), surge a tela de Start
System.Text: suporte para a codicao e ao Page (ou pgina inicial). No menu File (arquivo), entre em New (novo) e clique
StringBuilder, para manipulao de Strings. em Project (projeto), como ilustra a fi gura 198.

System.Text.RegularExpressions: suporte Em templates (modelos), escolha o tipo de projeto a ser elaborado (Windows
para expresses regulares. Form Application ou aplicao de formulrio Windows, Console Application
ou aplicao de painel de controle etc.). Lembre-se de nomear o seu projeto e

188 189
Informtica 4 captulo 5

Figura 199 Figura 202


Definio da Solution. ToolBox.

indicar a localizao, ou seja, onde os arquivos sero gravados e o nome da sua


Solution (soluo), como mostra a figura 199. Confirme 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 fim, a template na
qual deseja trabalhar.
gramao do formulrio; Form1.Designer.cs, para programao visual do for-
5.2.2. Conhecendo o Visual Studio mulrio; e Program.cs, o programa principal, no qual encontramos o mtodo
main(), que dar incio aplicao.
O Visual Studio apresenta uma srie de janelas e guias que fazem parte da sua
IDE (Integrated Development Environment ou Ambiente de Desenvolvimento Para aplicaes em Visual Basic, ser disponibilizado o arquivo Form1.vb, que possui
Integrado). Confira algumas, a seguir. a mesma funo do Form1.cs. Confira, a seguir, janelas disponveis e suas funes:

Barra de ferramentas (toolbar), que disponibiliza os botes de comandos mais ToolBox (caixa de ferramentas): contm componentes para o desenvolvimento
utilizados (figura 200). do projeto, os quais esto divididos em guias de acordo com o tipo de aplicao.
Nesse caso, podemos verificar (figura 202) a aba de componentes da categoria
Figura 200 Common Controls (controles comuns).
Toolbar.
Form (formulrio): essa janela (figura 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 modifica-
das de acordo com o projeto. Para ativar a janela de cdigo e realizar a progra-
Solution Explorer: mostra os arquivos que fazem parte do seu projeto. seme- mao, preciso dar um duplo clique sobre o componente ou formulrio.
lhante ao Explorer do Windows, pois permite criar, excluir e importar arquivos
(figura 201). Properties (propriedades): permite alterar as propriedades dos componentes, que
podem aparecer organizadas por categoria ou em ordem alfabtica (figura 204).
Se analisarmos uma aplicao Windows Form Application em C#, dentro da
janela Solution, podemos encontrar os seguintes arquivos: Form1.cs, para pro- A janela de propriedade traz, de acordo com cada componente toolbox, uma srie de
recursos para configurao. Por exemplo, um componente Label (rtulo), utilizado
Figura 201
Solution Explorer. Figura 203
Form.

190 191
Informtica 4 captulo 5

Figura 204 Figura 207


Properties. Auto Hide.

Figura 208
Fixar janela.

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: Auto Hide: um apontador indica a posio da janela, que ficar oculta. Basta
um simples movimento do mouse sobre o ttulo dessa janela (figura 207) para
Label1.Visible = false; que ela seja aberta. Para fix-la, utilize o cone semelhante a um preguinho
(figura 208), localizado na barra de ttulo.
Code and Text Editor (editor de texto e de cdigo) a janela que utilizaremos para
implementar os cdigos de programao (figura 205). Para acess-la, basta clicar duas Podemos movimentar as janelas e coloc-las em qualquer lugar da aplicao com a
vezes sobre ela ou em qualquer componente. Outra opo usar os botes Code (c- ajuda dos guias. Para isso, clique na barra de ttulo e mantenha o boto do mouse
digo) e View (visualizar) na janela de Solution Explorer, como mostra a figura 206. pressionado, arrastando a janela para qualquer rea de seu desktop. Imediatamen-
te, surgiro as indicaes das guias (figura 209). Escolha uma delas e solte a janela.
Figura 205
Code and text Editor. Figura 209
Guias de janelas.

Figura 206
Em destaque, os botes
Code e View.

5.2.3. Gerenciador de janelas 5.2.4. Nomenclatura de componentes


O Visual Studio apresenta muitas janelas e, para facilitar o seu gerenciamento, Cada componente recebe uma numerao automtica quando inserido no pro-
existem quatro recursos. Confira quais so, a seguir. 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
Dockable: coloca a janela aberta junto janela principal do programa. prefixo relacionado ao tipo de componente e sua identificao. Por exemplo:

Hide: fecha aquela janela e, para abri-la novamente, usa o menu View. Label1 = lblPergunta

Floating: a janela fica flutuante, podendo ser deslocada para qualquer parte Label2 = lblMensagemAlerta
do desktop.

192 193
InFoRmtICa 4 CaPtulo 5

A tabela 12 mostra alguns dos vrios prefi xos utilizados na plataforma .NET. Durante essa atividade, podemos recorrer a alguns botes auxiliares (fi gura 212)
como Break, Stop e Restart.
tabela 12
PREFIXOS USADOS NA .NET
Componente Prexo Componente Prexo 5.2.7. Identificao de erros
O Visual Studio nos ajuda a identifi car ou interpretar alguns erros que po-
label lbl listBox lst dem ocorrer durante o processo de criao ou execuo do cdigo. Confi ra
textBox txt Datalist Dtl alguns, a seguir.
DataGrid dtg Repeater Rep
Erro de sintaxe: geralmente identifi cado com uma linha em vermelho su-
Button btn Checkbox Chk blinhando a expresso. No exemplo mostrado na fi gura 213, esto faltando as
aspas no fechamento da expresso.
ImageButton imb CheckBoxlist Cbl
DropDownlist ddl RadioButton Rdo Figura 213
Erro de sintaxe.
RadioButtonlist rbl PlaceHolder PhD
Image img table tbl
Panel pnl Validators Val
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
5.2.5. IntelliSense do cdigo, mesmo constando erro (fi gura 214). Isso faz com que a ltima verso
correta seja executada, ignorando a atual.
Ao digitar alguma instruo, aparecer uma srie de complementos relacionados
a ela. Quando escrevemos Console, por exemplo, so disponibilizados vrios Figura 214
mtodos. Com a ajuda da tecla Tab ou da Barra de Espao, a instruo se com- Janela de erro.
pe naturalmente (fi gura 210).

Figura 210
IntelliSense.
Instruo

Na parte inferior do Visual Studio, podemos visualizar o painel (error list) de


Opes de Erros, Warnings e Messages (fi gura 215).
complemento
Figura 215
Painel de erros.

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 (fi gura 211). Clique sobre o erro identifi cado (1, 2 etc.) para que ele seja selecionado no cdi-
go para visualizao.
Figura 211
Executando a aplicao. Erro de classe ou mtodo: comumente identifi cado com uma linha em azul
sublinhando a expresso (fi gura 216). No exemplo, a instruo est escrita de
forma errada, pois o correto WriteLine().
Figura 212
Controles de execuo. Figura 216
Erro de classe.

194 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
Informtica 4 captulo 6

Figura 217
Console Application.

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 projeto, SetCompatibleTextRenderingDefault(), o modo e propriedade como os
a partir do zero para compor a plataforma. Trata-se do primeiro compilador componentes sero visualizados, e o Run(), para execuo do formulrio.
com suporte de programao para a maioria das classes do .NET Frameworks.
Embora tenha sido feita por vrios programadores, os mritos so atribudos Form1.Designer.cs: realiza a especificao dos componentes utilizados na
principalmente a Anders Hejlsberg, muito conhecido por desenvolvedores do aplicao (figura 219). Quando um projeto comea a ser construdo, toda a
O engenheiro de software
Anders Heijsberg nasceu
compilador Delphi. estrutura dos seus componentes (tamanho, fonte, nome, localizao e outras
na Dinamarca, na cidade propriedades) fica registrada no formulrio, seguindo o mtodo chamado Ini-
de Copenhagem, em 1960. 6.1. Programao tializeComponent(), exatamente no qual encontramos a expresso Windows
Um importante marco em Form Designer generated code.
sua carreira foi ter escrito O C# requer toda a lgica de programao contida em classes. Neste captulo,
os compiladores Pascal no sero abordados, em detalhes, os conceitos de programao orientada a ob- Form1.cs: reapresenta a maior parte da nossa programao em relao aos com-
e Blue Label, quando jetos. Caso haja dvidas consulte o captulo 4. ponentes e aos eventos (figura 220). Insere-se, ento, a lgica de programao,
trabalhava na Nascon ou seja, aquilo que deve ser feito ao inicializar um formulrio (Form1_Load),
Computer. Foi, porm, 6.1.1. Console Application quando o usurio clicar em um boto e em outros procedimentos do projeto.
mais tarde, para a Borland
que desenvolveu o Turbo A aplicao do tipo Console Application (aplicao do painel de controle em Figura 218
Pascal e o Delphi, antes portugus) se assemelha s programaes da linguagem C/C++. Seu resultado Program.cs.
de ser contratado pela apresentado na janela de Prompt do DOS, na qual programamos diretamente
Microsoft, em 1996. Criou pelo mtodo Main(), s que, agora, no formato de uma classe (figura 217).
a linguagem J++ e a C#,
em cujo desenvolvimento Pode-se fazer uma analogia ao Java: no comeo do nosso cdigo, encontramos
trabalha continuamente. 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 verificar que a disposio dos cdigos tm arquivos
separados, com funes especficas, como se pode ver em seguida.

Program.cs: possui o mtodo Main() (figura 218), que executa o primeiro


formulrio (Form1). Nesse caso, EnableVisualStyles() define o estilo visual do

198 199
InFoRmtICa 4 CaPtulo 6

Figura 219 tabela 13


Form1.Designer.cs. TIPO IMPLEMENTAO Distribuio dos
Byte Inteiro de 8 bits sem sinal (0 a 255). tipos de dados.
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).
uint Inteiro de 32 bits sem sinal (0 a 4 294 967 295).
Int 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).
Ponto utuante binrio IEEE de 8 bytes (5.0 _ 10-324 a 1.7 _ 10308),
Double
15 dgitos decimais de preciso.
Ponto utuante binrio IEEE de 4 bytes (1.5 _ 10-45 a 3.4 _ 1038),
Float
7 dgitos decimais de preciso.
Ponto utuante decimal de 128 bits. (1.0 _ 10-28 a 7.9 _ 1028),
Decimal
28 dgitos decimais de preciso.
Bool Pode ter os valores true e false. no compatvel com inteiro.
Char um nico caractere unicode de 16 bits. no compatvel com inteiro.

O importante fazer corretamente as declaraes das variveis e os tipos de


dados aos quais elas pertencem, como est exemplifi cado na fi gura 221.
Figura 221
int num;
Declaraes corretas
int x, y, x;
das variveis.
float salario;
string nome;
Figura 220
string edereco, cidade, estado;
Form1.cs.
char resp;

ATENO:
RECOMENDAES PARA A BOA PRTICA No momento da
Se houver mais de uma palavra, a primeira letra da segunda deve ser programao,
maiscula: fundamental ficar alerta
nomeCliente para ver onde o cdigo
pesoMedio ser inserido. Portanto,
idadeMaxima identifique corretamente
Pode-se usar um prefi xo para expressar, no incio da varivel, o tipo o componente e o evento
de dado ao qual ela pertence: que ser agregado. As
strNomeCliente instrues bsicas de
floPesoMedio programao sero
intIdadeMaxima apresentadas, aqui,
utilizando-se o mtodo
Console Application, pois
6.2.1. alocao de memria a sua estrutura a
6.2. tipos de dados e variveis mesma para aplicaes
A alocao e a utilizao de variveis de memria podem ser realizadas de duas grficas do Windows
Os tipos de dados em C# so distribudos da forma como apresenta a tabela 13. maneiras: Stack (pilha) e Heap (amontoado). A diferena entre elas est na for- Form Application.
ma como cada uma trata as informaes.
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, Stack: Nessa rea, fi cam as variveis locais ou os parmetros de funes de valor
deve-se dar um nome nico, que identifi que o seu contedo (consulte o quadro ou referncia. Sua limpeza realizada automaticamente na sada de cada funo,
Recomendaes para a boa prtica). usando return ou no.

200 201
InFoRmtICa 4 CaPtulo 6

Figura 222
Heap: Aqui, fi cam os valores referentes aos objetos. Isso ocorre quando uma static void Main(string[] args) Usando o
classe estabelecida usando o new (construtores). Caso as funes sejam encer- {
radas ou ocorra um exception, a limpeza no acontece automaticamente e sim mtodo Readkey.
Console.WriteLine(Verificando os Operadores);
por meio do Garbage Colletor. int x = 10;
int y = 15;
6.3. operadores Console.WriteLine(Soma: + (x + y));
Console.WriteLine(Subtrao: + (x - y));
Exemplos prticos para mostrar a funcionalidade dos operadores so executados Console.WriteLine(Multiplicao: + (x * y));
no Console Application, como j foi mencionado. Console.WriteLine(Diviso: + (y / x));
Console.WriteLine(Diviso (10/3): + (x / 3));
6.3.1. operadores aritmticos Console.WriteLine(Resto da Diviso (10/3): + (x % 3));
Console.ReadKey();
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()
Figura 223
realiza a impresso sem a quebra de linha. static void Main(string[] args) Aplicao de
{ operadores aritmticos
ARITMTICOS Console.WriteLine(Operadores Reduzidos); de atribuio reduzida.
+ adio int x = 10;
- Subtrao int y = 15;
* multiplicao Console.WriteLine(Soma + igual: + (x += 2));
/ Diviso Console.WriteLine(Subtrao + igual: + ( y -= 10));
% Resto da diviso
// x est com novo valor !!!
Console.WriteLine(Multiplicao + igual: + (x *= 2));
6.3.2. operadores relacionais Console.WriteLine(Diviso + igual: + (x /= 2));
Console.WriteLine(Resto da Diviso + igual: + (x %=5));
RELACIONAIS Console.ReadKey();
}
> maior que
< menor que
>= maior ou igual a
<= menor ou igual a 6.3.4. operadores de incremento e decremento
== Igual
!= Diferente
OPERADORES
++ Incremento
6.3.3. operadores aritmticos de atribuio reduzida
-- Decremento

ARITMTICOS Observe sua aplicao na fi gura 224.


+= adio Igual
Figura 224
-= Subtrao Igual
static void Main(string[] args) Aplicao de operadores de
*= multiplicao Igual
{ incremento e decremento.
/= Diviso Igual
Console.WriteLine(Operadores Reduzidos);
%= Resto da diviso Igual
int x = 10;
int y = 10;
Outro mtodo da classe Console() utilizado neste exemplo o Readkey(), que x++;
permite ao programa realizar uma pausa, aguardando at que uma tecla seja Console.WriteLine(Incremento: + x);
pressionada. Isso necessrio por estarmos trabalhando com uma janela DOS, y--;
Console.WriteLine(Decremento: + y);
que se encerra quando o programa fi nalizado (fi gura 222). Console.ReadKey();
}
Observe sua aplicao na fi gura 223.

202 203
InFoRmtICa 4 CaPtulo 6

Figura 227
6.3.5. operadores lgicos Classe Convert.
Convert.ToUInt16(indade);

OPERADORES Convert.ToDouble(salario);

&& and Convert.ToInt16(Console.ReadLine());


|| or
! not
valor = Convert.ToInt32(numero);
Sua aplicao ilustrada na fi gura 225. teste = Convert.ToInt16(dado);
Figura 225 DICA
static void Main(string[] args) Existe um grande nmero
Aplicao de dt = Convert.ToDateTime(01/01/2010);
{ de mtodos da Classe
operadores lgicos.
Console.WriteLine(Operadores Lgicos); Convert e Parse. Para
int a = 10; conhec-los, consulte o
int b = 30; Msdn .NET Frameworks
int c = 10; 6.4. Estrutura de deciso Developer Center. http://
int d = 25; msdn.microsoft.com/
Console.WriteLine((a < d) && (b != c)); Assim como o Java, os controles de incio e fi m de cada estrutura devero ser pt-br/library/default.
controlados pelos {}. Para realizar os desvios condicionais, utilizamos a estru- aspx. Os prximos
Console.WriteLine((a > d) || (b != c));
tura if() ou switch(), traduzidos como se e troca, respectivamente. tpicos envolvem os
Console.WriteLine(! (a >= b));
conhecimentos prvios
Console.ReadKey();
de lgica de programao.
} 6.4.1. Condio verdadeiro if
Caso haja dvidas, recorra
A mesma recomendao feita para Java vale para o C#. Ou seja, quando a ins- aos conceitos tratados
truo if() apresentar uma nica instruo para a sua condio, no necessrio anteriormente.
6.3.6. Converses C#
utilizar as chaves, que se tornam opcionais. No exemplo (fi gura 228), podemos
Para realizar as converses de dados, usamos os mesmos conceitos trabalhados verifi car que a varivel x maior que o valor 10, sabendo-se que o seu valor
em Java. No entanto, dependendo da instruo adotada, o resultado obtido inicial 5. E visualizamos a expresso: A varivel X maior que 10.
poder variar. Um bom programador realiza alguns testes para verifi car qual a
Figura 228
melhor maneira de fazer a converso.
Exemplo de instruo if().
static void Main(string[] args)
6.3.7. Parse
{
A classe Parse sempre vem precedida do tipo de dados e em seguida da varivel Console.WriteLine(Estrutura IF);
ou da expresso a ser convertida (fi gura 226).
int x = 15;
Figura 226
int.Parse(idade); if (x > 10) {
Classe Parse.
float.Parse(salario);
int.Parse(Console.ReadLine()); Console.WriteLine(A varivel X maior que 10);
}
valor = Int32.Parse(numero);
Console.ReadKey();
teste = Int16.Parse(dado);
}
dt = DateTime.Parse(01/01/2010);

6.4.2. Condio verdadeiro ou falso ifelse


6.3.8. Convert
J nesse outro exemplo (fi gura 229), verifi caremos se a varivel x maior que
A classe Convert tem a sua indicao de tipo registrada aps o nome da classe, 10 ou no, sabendo-se que o seu valor inicial 5. Ser adicionada uma ex-
seguido da varivel ou da expresso (fi gura 227). presso para cada alternativa.

204 205
Informtica 4 captulo 6

Figura 229 Figura 231


Exemplo de if...else. static void Main(string[] args) static void Main(string[] args) Exemplo de mltiplos
{ { testes Switch().
Console.WriteLine(Estrutura IF); Console.WriteLine(Estrutura SWITCH);
int x = 5; int x = 3;
if (x > 10) switch (x) {
{ case 1:
Console.WriteLine(A varivel X maior que 10); Console.WriteLine(O valor de X UM);
} break;
else { case 2:
Console.WriteLine(A varivel X menor que 10); Console.WriteLine(O valor de X DOIS);
} break;
Console.ReadKey(); case 3:
} Console.WriteLine(O valor de X TRS);
break;
default:
Console.WriteLine(Qualquer outro valor);
6.4.3. Condies mltiplas if...elseif...elseif....else break;
}
Agora, verificaremos se a varivel x possui o nmero 1, 2 ou 3, sabendo-se Console.ReadKey();
que o valor inicial 3. Nesse caso, para qualquer outro valor, ser visualizada a }
expresso: O valor de X trs (figura 230).
Figura 230
Exemplo de 6.5. Estruturas de repetio usadas na linguagem
static void Main(string[] args)
condies mltiplas. { 6.5.1. While()
Console.WriteLine(Estrutura IF);
int x = 3; Usando a varivel cont, para controle do loop, obtemos os nmeros de 0 a 10.
if (x ==1) O importante em uma instruo While() a implementao de um contador
{ dentro da estrutura (figura 232).
Console.WriteLine(O valor de X UM);
} Figura 232
else if (x==2) { Exemplo de While.
static void Main(string[] args)
Console.WriteLine(O Valor de X DOIS);
} {
else if(x==3){ Console.WriteLine(Estrutura WHILE);
Console.WriteLine(O Valor de X TRS); int cont=0;
} while (cont <=10){
else { Console.WriteLine(Numero: + cont);
Console.WriteLine(Qualquer outro valor);
cont++;
}
Console.ReadKey(); }
} Console.ReadKey();
}

6.4.4. Mltiplos testes Switch()


6.5.2. Do While()
Usando o mesmo exemplo do item anterior, a sequncia de testes realizada
com a instruo switch(). Assim, cada um ser implementado com a instruo Nesse caso, repete-se a instruo para While(). Porm, o teste realizado no
break para que as outras condies no sejam executadas (figura 231). A instru- final do loop. Esse tipo de estrutura permite que as instrues que esto dentro
o default est realizando a funo da instruo else do if(). do lao de repetio sejam executadas, no mnimo, uma vez (figura 233).

206 207
Informtica 4 captulo 6

Figura 233
Observe, na figura 236 como fica o mesmo exemplo de quebra de loop com a
Do While(). static void Main(string[] args)
{ instruo break, agora dentro da instruo While().
Console.WriteLine(Estrutura DO...WHILE);
int cont=0; static void Main(string[] args) Figura 236
do { Exemplo com break
{ dentro de While().
Console.WriteLine(Numero: + cont); Console.WriteLine(Estrutura BREAK);
cont++; int num=0;
} while (cont <= 10); while (num < 1000) {
Console.ReadKey(); num +=10;
} if (num > 100){
break;}
Console.WriteLine(O nmero : + num);
6.5.3. For() }
Console.WriteLine (Mensagem aps o lao);
Diferente do While(), a instruo For() capaz de definir, em uma nica linha, Console.ReadKey();
a varivel e o seu tipo, bem como estabelecer a condio para a estrutura e indi- }
car o contador (figura 234).

Figura 234 A instruo Continue fora a execuo do loop a partir do ponto em que est.
Instruo for(). static void Main(string[] args) No exemplo (figura 237), ser forada a contagem quando a varivel num
{ possuir o valor 100. Como resultado dessa operao, o valor 100 no ser apre-
Console.WriteLine(Estrutura FOR); sentado na tela.
for(int cont=0; cont<=10; cont++)
{ Figura 237
Console.WriteLine(Numero: + cont); static void Main(string[] args)
Exemplo de uso
} {
da instruo continue.
Console.ReadKey(); Console.WriteLine(Estrutura CONTINUE);
} int num=0;
while (num < 1000){
num += 1;
6.5.4. Break e continue if (num == 100)
{
As instrues break e continue podem interferir diretamente em um lao de
continue;
repetio. No prximo exemplo (figura 235), quando a varivel cont tiver o
}
valor 5, o loop ser encerrado, executando a prxima instruo aps o fecha-
Console.WriteLine(O nmero : + num);
mento da estrutura.
}
Console.WriteLine (Mensagem aps o lao);
Figura 235
static void Main(string[] args) Console.ReadKey();
Instrues break
{ }
e continue.
Console.WriteLine(Estrutura BREAK);
int num;
for (num = 0; num < 10; num++) Na figura 238, confira outro exemplo da instruo continue, agora, dentro de
{ uma estrutura for().
if (num == 5){
break; static void Main(string[] args) Figura 238
} Exemplo de uso da instruo
Console.WriteLine (O nmero : + num); {
Console.WriteLine(Estrutura CONTINUE); continue dentro de for().
}
Console.WriteLine (Mensagem aps o lao); for (int num = 0; num <= 10; ++num)
Console.ReadKey(); {
} if (num == 5){

208 209
Informtica 4 captulo 6

Figura 239
continue; try
Converso do contedo
} {
de dois TextBox.
Console.WriteLine(O nmero : + num); double var01 = double.Parse(txtLado01.Text);
double var02 = double.Parse(txtLado02.Text);
}
double resp = var01 * var02;
Console.WriteLine (Mensagem aps o lao);
txtResp.Text = resp.ToString();
Console.ReadKey(); }
} catch
{
MessageBox.Show(Dados Incorretos);
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 No caso da implementao do cdigo com o finally, teramos uma instruo
Erros mais comuns ocorrer durante a execuo de um projeto. Seja por uma operao invlida ou ou um bloco de instrues sendo executados, independentemente da existncia
Rede ou Internet: geralmente at mesmo devido abertura de determinado arquivo inexistente. Para isso, de uma exception. Ou seja, sempre ser executado o bloco do finally, como
por problemas de conexo utilizamos uma estrutura bem familiar: o try-catch-finally (j abordado ante- possvel observar na figura 240.
(servidor, linha etc.). Drive: riormente, quando falamos de Java).
falta da unidade de disco. Path: Figura 240
caminho para a localizao try Implementao do
de arquivos em geral. Try { { cdigo com o finally.
Impressora: equipamento // instruo que pode gerar o erro de execuo
double var01 = double.Parse(txtLado01.Text);
no disponvel, sem tinta }
Catch double var02 = double.Parse(txtLado02.Text);
ou sem papel. Componente
{ double resp = var01 * var02;
no instalado: falta algum
componente de software // o que deve ser feito se ocorrer o erro txtResp.Text = resp.ToString();
ou est com erro de execuo. } }
Permisso: privilgio para acesso catch
de arquivos, dados ou rea {
de rede. Clipboard: problema Outra possibilidade incluir o finally, o que opcional, pois ele sempre ser MessageBox.Show(Dados Incorretos);
com dados transferidos para executado, ocorrendo exceo ou no.
determinada rea. }
finally {
Try { MessageBox.Show(Mensagem de Finalizao, Mensagem);
// instruo que pode gerar o erro de execuo }
}
Catch
{
6.6.1. Exception
// o que deve ser feito se ocorrer o erro
} Quando o bloco catch{} executado, poder ser disparada uma exceo. Isso
Finally significa que foi gerado um cdigo de erro e uma descrio correspondente.
{ Cada erro possui caractersticas diferentes. Com bases nessas informaes, po-
// opcional, mas executado demos especificar o nmero do erro gerado.
}

catch (Exception objeto)


O prximo exemplo (figura 239) mostra a converso do contedo de dois Text-
Box, transformando os dados digitados em nmeros do tipo float. Nesse ponto,
pode ocorrer um erro, caso o usurio no digite os dados passveis de converso, Ao modificar o exemplo anterior, sero emitidas mensagens de erro, como mos-
como letra ou smbolos. tra a figura 241.

210 211
InFoRmtICa 4 CaPtulo 6

Figura 241
// matriz do tipo double
Emisso de try
{ double[,] matriz;
mensagens de erro.
double var01 = double.Parse(txtLado01.Text); matriz = new double[2,2];
double var02 = double.Parse(txtLado02.Text); matriz[0,0] = 1;
double resp = var01 * var02; matriz[0,1] = 2;
txtResp.Text = resp.ToString(); matriz[1,0] = 3;
} matriz[1,1] = 4;
catch (Exception erro) // erro o objeto de controle MessageBox.Show(matriz[1,1].ToString());
{
MessageBox.Show(Dados Incorretos: Fornea apenas valores
// matriz do tipo inteiro
numricos);
MessageBox.Show(erro.Message); int[,] temp = { { 1, 4 }, { 2, 7 }, { 3, 5 } };
MessageBox.Show(erro.Source); MessageBox.Show(temp[1, 1].ToString());
}
finally {
MessageBox.Show(Mensagem de Finalizao, Mensagem); 6.8. Classes
}
Usando os mesmos conceitos do Java, o C# pode implementar classes espec-
fi cas para programao, as quais seguem os mesmos princpios de formao e
manipulao. Para relembrar os conceitos de programao orientados a objetos,
6.7. Vetores e matrizes observe o exemplo a seguir e, depois, confi ra a classe na fi gura 243.

Vamos ver agora, na fi gura 242, a forma de declarao, atribuio e acesso Uma classe chamada Carro tem atributos referentes ligados a marca, combus-
aos valores para diferentes tipos de vetores e matrizes. Uma boa dica, para tvel e marcha e, ainda, os mtodos movimentar(), parar() e consultar(), que
essa etapa, revisar os conceitos a respeito, no tema programao em Java. representam:

Figura 242 Movimentar(): indica a velocidade com que o veculo deve andar.
Vetores e matrizes. // vetor do tipo String
string[] j; Parar(): quando acionado, diminui em uma unidade a velocidade do veculo.
j = new string[2];
j[0] = seg; Consultar(): informa a atual velocidade do veculo.
j[1] = ter;
MessageBox.Show(j[0]); Figura 243
Diagrama de classe.
string[] semana = { dom, seg, ter, qua, qui, sex }; Carro
MessageBox.Show(semana[0]);
+ marca : String
// vetor do tipo float + com : String
float[] y;
+ marcha : int
y = new float[3];
y[0] = 10.5F;
- velocidade : int
y[1] = 7.3F;
y[2] = 1.9F; + movimentar (acelerao : int) : void
+ parar() : void
// vetor do tipo inteiro + consultar() : int
int[] x = { 10, 5, 3 };
MessageBox.Show(x[0].ToString());

212 213
InFoRmtICa 4 CaPtulo 6

Observe, ento, na fi gura 244, como fi caria a classe, seguindo o diagrama. // imprime os dados do veculo e combustivl
Console.WriteLine(Veculo: + objCarro.marca + de + objCarro.
Figura 244 marcha + marchas);
Como ficou a classe, de class Carro Console.WriteLine(Combustvel: + objCarro.comb + \n);
acordo com o diagrama. {
// atributos da classe carro // inicia a movimentao do carro com velocidade 5
public string marca; objCarro.movimentar(5);
public string comb;
public int marcha; // consulta a velocidade do veculo
private int velocidade; velocidade = objCarro.consultar();

// mtodo movimentar // visualiza a velocidade do veculo


// recebe o valor (int) que indica a acelao do veculo Console.WriteLine(Velocidade Atual: + velocidade);
public void movimentar(int aceleracao){ Console.ReadKey();
velocidade += aceleracao;
} // aumenta a velocidade do veculo
objCarro.movimentar(5);
// mtodo parar Console.WriteLine(Velocidade Atual: + objCarro.consultar());
// diminui em uma unidade toda vez que acionado Console.ReadKey();
public void parar(){
if (velocidade > 0){ // comea a parar o carro
velocidade--; // a primeira chamada diminui em 1 unidade a velocidade
} objCarro.parar();
} velocidade = objCarro.consultar();
Console.WriteLine(Velocidade Atual: + objCarro.consultar());
// mtodo consultar Console.ReadKey();
// retorna a velocidade do veculo }
public int consultar(){
return velocidade; 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 (fi guras 246 e 247).

Figura 246
Analisando o cdigo principal main(), na fi gura 245, veja o que aparece. Classe Pessoa.
Pessoa
Figura 245
Analisando o cdigo main(). static void Main(string[] args) - codigo : int
- nome : String
{ - endereco : String
// instanciando a classe Carro - bairro : String
Carro objCarro = new Carro(); cidade : String
- uf : String
- telefone : String
// atribui os valores para o OBJ - celular : String
objCarro.marca = Fusca;
objCarro.comb = Querozene; * mostrartelefones() ; void
objCarro.marcha = 4;

214 215
InFoRmtICa 4 CaPtulo 6

Figura 247
Uso de getters e setters. public class Pessoa PROPRIEDADES FORM
{
name modifica o nome
private int codigo;
text atualiza a barra de ttulo do formulrio
private string nome;
private string endereco; Backcolor Cor de fundo do formulrio
private string bairro; BackgroundImage Insere uma imagem como plano de fundo em um formulrio
private string cidade; BackgroundImagelayout ajusta a posio da imagem em relao ao formulrio
private string uf; ControlBox Desativa os botes maximizar, minimizar e fechar
private string telefone; FormBorderStyle muda as configuraes de visualizao do formulrio
private string celular; Icon Insere um cone no formulrio
maximizeBox Permite ou no ao usurio maximizar
public int setCodigo(int novoCodigo){ minimizeBox Permite ou no ao usurio minimizar
this.codigo = novoCodigo; Size Define a largura e a altura do formulrio
} WindowState Define o modo como o formulrio ser aberto: maximizado, minimizado, etc.
public int getCodigo(){
return this.codigo;
}
public String setNome(String novoNome){ 6.9.2. Button
this.nome = novoNome;
} O Button (boto), apresentado na fi gura 249, o responsvel por grande parte
public int getNome(){ da nossa programao. Ao clicar sobre esse componente, acessamos a janela de
return this.nome; 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
// o get e set dever ser construdo para os demais atributos
} boto (fi gura 250). Confi ra detalhes no quadro Propriedades Button.

Figura 249
6.9. Windows Form application componentes Button.

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 confi guradas
Figura 250
tanto via janela, como por meio de programao. Veja, a seguir, os componentes
nome do boto e evento Evento Click.
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 (fi gura 248). Confi ra os detalhes no quadro
Propriedades Form.
rea de programao
Figura 248
Form.
PROPRIEDADES BUTTON
name modifica o nome
text texto para o boto
BackColor modifica a cor do boto
BackgroundImage Insere uma imagem como plano de fundo
BackgroundImagelayout ajusta a posio da imagem em relao ao boto
Visible Define se esse boto est visvel ou no

216 217
InFoRmtICa 4 CaPtulo 6

6.9.3. textBox 6.9.5. ComboBox


O TextBox (caixa de texto) o componente responsvel por receber as informa- O ComboBox (caixa de agrupamento) permite ao usurio abrir vrias opes (fi -
es do usurio (fi gura 251), tambm o item mais comum, pois a maioria das gura 253), assim como ocorre quando escolhemos uma fonte de letra do Micro-
entradas de dados realizada por ele. Observe detalhes no quadro Propriedades soft Word. Veja mais detalhes no quadro Propriedades ComboBox, os detalhes.
TextBox.
Figura 253
Figura 251 ComboBox.
TextBox.

PROPRIEDADES TEXTBOX PROPRIEDADES COMBOBOX


name modifica o nome name modifica o nome
text Insere um texto predefinido
text Insere um texto no combo
BackColor Cor de fundo da caixa de entrada
DataSource Pode ser ligado a uma base de dados Datatable
ForeColor Cor da fonte
CharacterCasing Controla a entrada do texto, mantendo as letras Items lista de valores que o ComboBox disponibiliza ao usurio para seleo
em maiscula ou minscula
maxlength tamanho mximo em nmero de caracteres
Para a insero de itens, escolha a opo Items. Uma nova caixa de dilogo
PasswordChar Caractere utilizado para coletar senha
ser aberta: os itens devero ser colocados um abaixo do outro (one per line).
Readonly mostra o texto, mas no permite que ele seja alterado
Aps a confi rmao, teremos o ComboBox carregado com as informaes
textalign Define se o texto deve ser colocado direita, esquerda ou centralizado
(fi gura 254).

6.9.4. label Figura 254


ComboBox
Usamos o Label (rtulo) para inserir rtulos nos formulrios, como mostra a (carregado).
fi gura 252 (consulte o quadro Propriedades Label, para obter detalhes).

Figura 252
Label.

PROPRIEDADES LABEL
name modifica o nome
6.9.6. listBox
text Insere um texto predefinido

BackColor Cor de fundo da caixa de entrada, local onde Diferentemente do ComboBox, o ListBox (caixa de lista) disponibiliza
as informaes sero inseridas vrias opes aos usurios, porm, em forma de lista. Isso permite a
utilizao de barra de rolagem caso o nmero de opes ultrapasse o
ForeColor Cor da fonte
limite da caixa da janela (figura 255). Consulte o quadro Propriedades
Font Define a fonte do texto
ListBox.

218 219
InFoRmtICa 4 CaPtulo 6

Figura 255
ListBox. PROPRIEDADES CHECKBOX
name modifica o nome

text Insere a texto da opo

CheckState Deixa a opo j selecionada

Para verifi car o que foi selecionado pelo usurio, devemos realizar o teste em
cada um dos elementos. Assim, implementaremos o cdigo anterior com um
boto, para verifi cao dos itens selecionados, cuja sada ser uma caixa de di-
logo contendo todas as informaes selecionadas (fi guras 258 a e 258 b).
PROPRIEDADES LISTBOX
Figuras 258 a e 258 b
name modifica o nome
Verificao da caixa CheckBox.
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

Para carregar o ListBox (figura 256), use o mesmo procedimento do


ComboBox. O cdigo descrito refere-se apenas ao evento click, relacionado ao boto de ve-
rifi cao (confi ra na fi gura 259).
Figura 256
Figura 259
ListBox (carregado). private void btnVerificar_Click(object sender, EventArgs e) Cdigo descrito do evento
{
click, com a verificao.
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);
}
6.9.7. CheckBox
6.9.8. RadioButton
Utilizamos o controle CheckBox (caixa de seleo) para obter mltiplas opes
de resposta ou para simular um sim ou no, dependendo do escopo empre- O RadioButton (boto de seleo) diferente do CheckBox, pois pode estabe-
gado. O exemplo da fi gura 257 simula um questionrio no qual o usurio deve lecer relaes entre si, o que possibilita fornecer mltiplas opes para que se
marcar quais linguagens de programao est estudando (consulte tambm o escolha somente uma. O exemplo ilustrado nas fi guras 260 (a e b) e 261 verifi ca
quadro Propriedades CheckBox). o estado civil do usurio (confi ra tambm o quadro Propriedades RadioButton).

Figura 257 Figuras 260


CheckBox. Verificao da opo
do RadioButton.

220 221
InFoRmtICa 4 CaPtulo 6

Figura 261
O detalhamento private void btnVerificar_Click(object sender, EventArgs e) PROPRIEDADES AGRUPAMENTO
da verificao. { name modifica o nome
string frase = Seu estado Civil :;
text ttulo da caixa de grupo
if (rdbCasado.Checked == true)
frase = frase + Casado;
if (rdbSolteiro.Checked == true)
frase = frase + Solteiro; 6.10. Eventos
MessageBox.Show(frase, Titulo);
} 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,
PROPRIEDADES RADIOBUTTON duplo clique, passagem de mouse etc. Por exemplo, ao inserir um boto para fi na-
lizar a aplicao, devemos associar o cdigo a um determinado evento, no caso, o
name modifica o nome
clique. Na fi gura 264, podemos verifi car a identifi cao do boto de acordo com a
text Insere a texto da opo atribuio do seu name e com o evento que receber a programao.
CheckState Deixa a opo j selecionada
Figura 264
Nome do boto indicado Evento Listagem dos eventos Eventos.
6.9.8.1. agrupamento na propriedade name. e componentes

Em alguns momentos, ser necessrio reunir grupos de opo usando o Ra-


dioButton. Para que os controles fi quem 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 (fi gura 262). Confi ra, tambm, o quadro Proprie-
dades Agrupamento.

Figura 262
Container
GroupBox.

Para modifi car os eventos, podemos utilizar a janela de Properties (fi gura 265)
com o boto Events, semelhante a um raio.

Figura 265
Para modificao
de eventos.

Coloque o container no formulrio e, em seguida, o RadioButton dentro do


container, mas sem arrastar, apenas inserindo dentro do grupo (fi gura 263).

Figura 263
RadioButton e
GroupBox.

222 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
InFoRmtICa 4 CaPtulo 7

Na janela de desenvolvimento (fi gura 267), podemos verifi car 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.

Figura 267
Abas da janela Code.

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-
Na programao em VB (Form1.vb), envolvemos novamente os conceitos de
programao orientada a objeto, usando a mesma metodologia j apresen-
crosoft considera uma ferramenta do tipo RAD Rapid Application Develop- tada em C#, com suas classes, atributos, mtodos e o controle de eventos,
ment, que possibilita o desenvolvimento rpido de aplicativos, como o prprio como na fi gura 268.
nome indica em ingls.
Figura 268
7.1. Programao Programao em VB.

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


7.2. tipos de dados e variveis
Valem as mesmas aplicaes em C#, nas quais teremos uma janela do tipo DOS
como resposta. Os tipos de dados so tratados diretamente pelo .NET Framework. Portanto,
utilizaremos, no VB, os tipos de dados semelhantes ao C#, mas com notaes
7.1.2. Windows Form application diferentes em alguns casos (tabela 14). Siga as mesmas recomendaes especifi -
cadas anteriormente.
Ao iniciarmos uma aplicao do tipo Windows Form Application, a Soluction
tabela 14
Explorer dever fornecer o Form1.vb (fi gura 266), o qual receber a programa- TIPO IMPLEMENTAO Tipos de dados em VB.
o do nosso projeto.
Byte Inteiro de 8 bits sem sinal (0 a 255)

Figura 266 Sbyte Inteiro de 8 bits com sinal (-127 a 128)


Solution Explorer VB. 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)

Inteiro de 64 bits com sinal (-9 223 372 036 854 775 808
long
a 9 223 372 036 854 775 807)

226 227
InFoRmtICa 4 CaPtulo 7

Single Ponto Flutuante Binrio de 4 bytes


Ponto utuante binrio IEEE de 8 bytes
7.3. operadores
Double
(5.0 x10 -324 a 1.7 _ 10308), 15 dgitos decimais de preciso Os exemplos prticos para mostrar a funcionalidade dos operadores sero execu-
Ponto utuante decimal de 128 bits. tados no Console Application.
Decimal
(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 7.3.1. operadores aritmticos
Char um nico caractere unicode de 16 bits. no compatvel com inteiro
String at 2 bilhes de caracteres ARITMTICOS
Data 8 bytes intervalo 01/01/100 at 31/12/9999 + adio

- Subtrao

* multiplicao
7.2.1. atribuio DIm
/ Diviso
Para a defi nio das variveis em VB, utilizaremos a instruo DIM, o nome da \ Diviso de um valor por outro e retorna somente
varivel e o seu tipo. Confi ra no exemplo ilustrado pela fi gura 269. a parte inteira do resultado
mod Resto da Diviso
Figura 269
Dim x & Combina (concatena) Strings
Instruo DIM.
Dim y As Integer ^ Expoente (potncia)
Dim nome As String
Dim endereco, cidade, estado As String
Figura 272
Dim md = 10
Sub Main() Exemplo de operadores
Dim salario As Double
Console.WriteLine(Verificando os Operadores) aritmticos.
Dim x = 10
7.2.2. Variveis globais Dim y = 15
Console.WriteLine(Soma: & (x + y))
Podemos defi nir, dentro das rotinas tendo visibilidade local, o cdigo mostrado Console.WriteLine(Subtrao: & (x - y))
na fi gura 270. Console.WriteLine(Multiplicao: & (x * y))
Console.WriteLine(Diviso: & (y / x))
Figura 270 Console.WriteLine(Parte inteira da diviso: & (x \ 3))
Private Sub Form1_Load()

}
Cdigo para definio. Console.WriteLine(Resto da Diviso (10/3): & (x Mod 3))
Dim nome As String
Dim valor As Integer Console.WriteLine(Bom & Dia & aluno)
Visibilidade Console.WriteLine(Quadrado de trs: & 3 ^ 2)
nome =
dentro da rotina Console.ReadKey()
valor = 0
End Sub End Sub

Outra alternativa fazer o mesmo dentro da classe, para que possam ser aces- 7.3.2. operadores relacionais
sadas por outras rotinas da mesma classe. O cdigo ilustrado na fi gura 271
implementa variveis de visibilidade pblicas dentro da aplicao. RELACIONAIS
Figura 271 > maior que
Public Class Form1
Cdigo implementando
variveis.
Public frase As String
Public calc As Double } Visibilidade global < menor que

Private Sub Form1_Load() >= maior ou igual a

}
Dim nome As String
Dim valor As Integer Visibilidade dentro
<= menor ou igual a
nome =
valor = 0 da rotina = Igual
End Sub
End Class <> Diferente

228 229
InFoRmtICa 4 CaPtulo 7

Figura 274
7.3.3. operadores aritmticos de atribuio reduzida Exemplos de
x = CInt(idade)
converses.
ARITMTICOS y = CSng(salario)

+= adio Igual
z = CInt(Console.ReadLine())
-= Subtrao Igual dt = CDate(01/01/2010)
*= multiplicao Igual

/= Diviso Igual

&= Concatena Igual


7.4. Estrutura de deciso
^= Potncia Igual Para realizar os desvios condicionais, utilizamos a estrutura if() ou Select Case(),
nos formatos indicados a seguir.
Figura 273
Exemplo de Sub Main() 7.4.1. Condio Verdadeiro if
operadores Console.WriteLine(Operadores Reduzidos)
aritmticos de Dim x As Integer = 10 Neste exemplo, verifi caremos se a varivel x maior do que o valor 10,
atribuio Dim y As Integer = 15 sabendo-se que seu valor inicial 5, visualizando a expresso: A varivel X
reduzida. Dim frase As String = Bom maior do que 10 (fi gura 275).
x += 2
Figura 275
Console.WriteLine(Soma + igual: & x) Sub Main()
Exemplo de
y -= 10 Dim x As Integer = 15
verificao
Console.WriteLine(Subtrao + igual: & y) If x >= 10 Then
de varivel.
Console.WriteLine(A varivel X maior que 10)
x est com novo valor !!!
Console.ReadKey()
x *= 2
End If
Console.WriteLine(Multiplicao + igual: & x) End Sub
x /= 2
Console.WriteLine(Diviso + igual: & x)
frase &= Dia!!!! 7.4.2. Condio Verdadeiro ou Falso ifelse
Console.WriteLine(Resto da Diviso + igual: & frase) Agora, verifi caremos se a varivel x maior do que 10 ou no, considerando-
y ^= 2 se que seu valor inicial 5. Ser impressa uma expresso para cada alternativa
Console.WriteLine(Potncia + igual: & y) (fi gura 276).
Console.ReadKey()
End Sub Figura 276
Sub Main()
Expresses
Dim x As Integer = 5
diferentes para
If x >= 10 Then
7.3.4. operadores lgicos cada alternativa.
Console.WriteLine(A varivel X maior que 10)
Else
LGICOS Console.WriteLine(A varivel X menor que 10)
and and End If
Console.ReadKey()
or or
End Sub
not not

7.4.3. Condies mltiplas if...elseif...elseif....else


7.3.5. Converses em VB.nEt
Verifi caremos, agora, se a varivel x possui o nmero 1, 2 ou 3, sabendo-se
O processo de converso segue os conceitos abordados anteriormente (Java e que o valor inicial 03. Para outros valores, a expresso ser: A varivel X
C#). A lista ilustrada pela fi gura 274 sugere alguns exemplos de converses. TRS (fi gura 277).

230 231
Informtica 4 captulo 7

Figura 277 Figura 279


Verificando Sub Main() Sub Main() Instruo While().
Console.WriteLine(Estrutura WHILE)
condies mltiplas. Dim x As Integer = 3 Dim cont As Integer = 0
If x = 1 Then While (cont <= 10)
Console.WriteLine(A varivel X UM) Console.WriteLine(Numero: & cont)
ElseIf x = 2 Then cont = Cont + 1
Console.WriteLine(A varivel X DOIS) End While
ElseIf x = 3 Then Console.ReadKey()
Console.WriteLine(A varivel X TRS) End Sub
Else
Console.WriteLine(Qualquer outro valor)
End If 7.5.2. Do While()...Loop
Console.ReadKey() Representa a mesma estrutura da instruo anterior (figura 280).
End Sub
Figura 280
Private Sub Form1_Load()
Instruo
Dim cont = 0
7.4.4. Mltiplos testes Select Case() Do While()...Loop.
Do While (cont <= 10)
MsgBox(Numero: & cont)
Usando o mesmo exemplo anterior, a sequncia de testes realizada com a ins-
cont = cont + 1
truo Select Case(), a qual, dever para cada teste estar implementada junta-
Loop
mente com a instruo break (figura 278). Assim, as outras condies no sero
End Sub
executadas. A instruo Case Else realiza a funo da instruo else do if().

Figura 278 7.5.3. Do...Loop Until


Mltiplos testes. Sub Main()
Dim x As Integer = 3 Vale a mesma instruo anterior, mas, nesse caso, o teste realizado no final
Select Case x do loop (figura 281). Esse tipo de estrutura permite que as instrues dentro do
Case 1 lao de repetio sejam executadas, no mnimo, uma vez.
Console.WriteLine(O valor de X UM)
Case 2 Sub Main() Figura 281
Console.WriteLine(O valor de X DOIS) Console.WriteLine(Estrutura WHILE) Teste no fim
Dim cont As Integer = 0 do Loop.
Case 3
Do
Console.WriteLine(O valor de X TRS) Console.WriteLine(Numero: & cont)
Case Else cont = cont + 1
Console.WriteLine(Qualquer outro valor)
End Select Loop Until cont >= 10
Console.ReadKey()
Console.ReadKey() End Sub
End Sub

7.5.4. For
7.5. Estrutura de repetio
Diferentemente da instruo While(), a instruo For capaz de definir, em
Vamos conhecer agora as estruturas de repetio utilizadas na linguagem. uma nica linha, a varivel e o seu tipo, bem como estabelecer a condio para
a estrutura e indicar o contador (figura 282).
7.5.1. While()
7.5.5. For...Step
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 Contar de 0 a 10, mostrando o resultado. No entanto, dessa vez o contador
um contador dentro da estrutura (figura 279). ser incrementado de 2 em 2 (figura 283).

232 233
Informtica 4 captulo 7

Figura 282 Figura 284


Instruo For. Try Verificao de erro
Sub Main()
Dim var01, var02, resp As Double na converso de
For x = 0 To 10 var01 = CDbl(TextBox1.Text) dados das variveis.
Console.WriteLine(Nmero: & x) var02 = CDbl(TextBox2.Text)
resp = var01 * var02
Next
TextBox3.Text = resp
Console.ReadKey() Catch erro As DivideByZeroException
End Sub MsgBox(Dados Incorretos)
Finally
MsgBox(Mensagem de finalizao, Mensagem)
Figura 283 End Try
Instruo For...Step. Sub Main()
For x = 0 To 10 Step 2 7.7. Vetores e matrizes
Console.WriteLine(Nmero: & x)
Vamos agora conhecer a forma de declarao, atribuio e acesso aos valores
Next para diferentes tipos de vetores e matrizes (figura 285). Uma sugesto para con-
Console.ReadKey() solidar o conhecimento fazer uma pesquisa especfica sobre vetores e matrizes
de Lgica de Programao e Programao em Java. H muita informao dispo-
End Sub nvel, no apenas na bibliografia, como tambm em sites de busca.

Figura 285
7.6. Tratamento de erros e excees vetor de string Formas de declarao
Dim j(2) As String de vetores e matrizes.
Nas verses anteriores do Visual Basic, o tratamento de erro era controlado j(0) = seg
pela instruo On error go to, ainda mantido por questes de compatibi- j(1) = ter
lidade. Porm, prefira utilizar o try-catch-finally, que possui as mesmas MsgBox(j(0))
caractersticas estudadas anteriormente, mas com mudanas em suas linhas
de programao, como podemos verificar no exemplo a seguir: vetor de string
Dim semana() As String = {dom, seg, ter, qua, qui, sex}
MsgBox(semana(0))
Try
instrues que podem gerar o erro de execuo vetor tipo Single
Catch Dim y(3) As Single
o que deve ser feito se o erro ocorrer y(0) = 10.5
Finally y(1) = 7.3
opcional, mas executado y(2) = 1.9
End Try MsgBox(y(1))

vetor tipo Inteiro


Assim, como nas outras linguagens (Java e C#), podemos capturar os valores Dim x() As Integer = {10, 5, 3}
de erros: MsgBox(x(2))

matriz tipo double


Catch erro As DivideByZeroException Dim matriz(2, 2) As Double
matriz(0, 0) = 1
matriz(0, 1) = 2
matriz(1, 0) = 3
No prximo exemplo, a estrutura Try foi organizada para verificar se existe matriz(1, 1) = 4
erro no momento da converso de dados das variveis (figura 284).

234 235
Informtica 4 captulo 7

MsgBox(matriz(1, 1)) 7.9.3. TextBox


matriz tipo inteiro o componente que recebe as informaes do usurio, como ilustra a
Dim temp(,) As Integer = {{1, 4}, {2, 7}, {3, 5}} figura 289.
MsgBox(matriz(1, 1))
Figura 289
TextBox.
7.8. Classes
Usando os mesmos conceitos de Java, o Visual Basic pode implementar classes
especficas para programao, as quais seguem os mesmos princpios de forma-
o e manipulao, incluindo os getters e setters.

7.9. Windows Form Application componentes 7.9.4. Label


Da mesma forma que em C#, a janela ToolBox conta com vrios componentes para O Label usado para inserir rtulos nos formulrios (figura 290).
o desenvolvimento de aplicaes em VB. Para os componentes apresentados a seguir,
utilize as mesmas descries de propriedades mencionadas no captulo 6. Figura 290
Label.
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 figura 286.

Figura 286
Form. 7.9.5. ComboBox
O ComboBox permite abrir uma cortina de opes ao usurio (figura 291).

Figura 291
7.9.2. Button ComboBox.

O Button (figura 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 (figura 288).

Figura 287 a e b
Button.

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 confirmao de tal
execuo, teremos o ComboBox carregado com as informaes (figura 292).
Figura 288
Nome do boto e evento Figura 292
Evento Click.
ComboBox
carregado.

236 237
Informtica 4 captulo 7

Figura 296
7.9.6. ListBox Verificao da
caixa CheckBox.
O ListBox tambm disponibiliza vrias opes aos usurios, s que so abertas
com barra de rolagem (figura 293).

Figura 293
ListBox.

Private Sub btnVerifica_Click() Figura 297


Cdigo referente apenas
Dim frase As String
ao evento click.
frase = Voc est estudando:
If chkOpcao1.Checked = True Then
frase = frase + > C#
End If
If chkOpcao2.Checked = True Then
Para carregar o ListBox (figura 294), use o mesmo procedimento do frase = frase + > Visual Basic .NET
ComboBox. End If
If chkOpcao3.Checked = True Then
Figura 294 frase = frase + > ASP.NET
ListBox carregado. 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 (figura 298 e, com detalhes, na figura 299).

7.9.7. CheckBox Figura 298


Verificando a opo
Assim como no C#, vamos utilizar o CheckBox para indicar mltiplas do RadioButton.
opes ou questes de sim ou no. O exemplo da figura 295 o mesmo
utilizado em C#.

Figura 295
CheckBox.

Figura 299
Dim frase As String
Detalhes da opo
frase = Seu estado Civil :
do RadioButton.
If rdbCasado.Checked = True Then
frase = frase + Casado
End If
If rdbSolteiro.Checked = True Then
frase = frase + Solteiro
A figura 296 mostra como fazer a verificao de seleo por meio de um boto. End If
MsgBox(frase, , Mensagem)
O cdigo descrito na figura 297 referente apenas ao evento click, o qual est End Sub
relacionado ao boto de verificao.

238 239
InFoRmtICa 4 CaPtulo 7

7.9.8.1. agrupamento Na outra extremidade da janela Code, h a lista de todos os eventos disponveis
para o componente (fi gura 303). Ao escolher um deles, automaticamente uma
Use um container para realizar o agrupamento dos componentes RadioButton, rea de cdigo ser criada, para onde o cursor ser deslocado.
assim como no mesmo exemplo de C# (fi gura 300). Confi ra, em seguida, o
quadro Propriedades RadioButton. Figura 303
Eventos.
Figura 300
Agrupamento.

PROPRIEDADES RADIOBUTTON
name modifica 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 fi gura 301, aparecem todos os componen-
tes inseridos no formulrio, incluindo o prprio formulrio.

Figura 301
Componentes.

Clique para abrir o combo de opes (fi gura 302), franqueando o acesso aos
componentes.

Figura 302
Componentes
acionados.

240 241
Captulo 8

ASP.NET
Aplicao ASP.NET
Eventos
HTML Server Controls
e Web Server Controls

Sesses em ASP.NET
Dados via URL
InFoRmtICa 4 CaPtulo 8

O IIS um conjunto integrado


Configurao: via arquivos WebConfi g e CSS , que determinam como a apli-
de servios de rede para a
cao vai ser executada.
plataforma Windows, criado
pela Microsoft. Sua primeira
Um dos principais caminhos para criar uma interface entre o usurio e a aplicao verso surgiu com o Windows
ASP.NET o Web Form, cuja parte executvel armazenada em um assembly NTServer 4 e passou por
(.dll), porm, executada no servidor e controlada por um work process (asp- vrias atualizaes.
net_wp.exe). Funciona em parceria com o IIS, que inicia a execuo do ASP.NET A verso de 2009 o IIS 7.5
(aspnet_wp.exe) carregando o assembly do Web Form, o qual, por sua vez, cons- (disponvel no Windows Server
tri a resposta para o usurio de acordo com sua requisio e envia uma resposta 2008 R2 e Windows 7). Uma
no formato HTML (fi gura 304). de suas caractersticas mais
utilizadas a gerao de

A
Como ilustra a fi gura 304, partir da ao do usurio, o navegador cria a requi- pginas HTML dinmicas,
sio de uma pgina Web ou ativa um determinado servio. Isso faz com que a que, diferentemente de outros
SP.NET uma plataforma de desenvolvimento usada para a cons- parte lgica da pgina entre em ao. A resposta ser no formato HTML, devi- servidores web, funciona com
truo de aplicaes Web e Web Service, as quais sero executadas damente confi gurada como, por exemplo, a forma grfi ca que ser apresentada tecnologia proprietria ASP
por um servidor, que, nesse caso, o IIS (Internet Information ao usurio (formatao). (Active Server Pages, pginas
Service servio de informao de Internet) da Microsoft. No se trata apenas de servidor ativas), mas tambm
de uma tecnologia de desenvolvimento, mas de um conjunto de ferramentas que pode usar outras tecnologias com
8.1.2. Web Form
permite a integrao entre servidores Microsoft, segurana, cdigo compilado, a adio de mdulos de terceiros.
e acesso a bancos de dados via ADO.NET e ao .NET Framework, bem como Um Web Form pode conter os seguintes componentes: Server Controls (con- Para ter acesso a essa ferramenta,
suporte total ao XML. troles de servidor): TextBox, Label e Button, que permitem controlar e res- necessrio adquirir licena de
ponder a determinados eventos do servidor. HTML Controls (controles de uso. E para cada instalao ou
verso exigido um pagamento.
8.1. aplicao aSP.nEt HTML): TextArea, Table e Image, que representam os elementos padres do
Depois do lanamento da
HTML. Data Controls (controles de dados): SqlConnection, SqlCommand,
plataforma .NET em 2002,
Uma aplicao ASP.NET constituda por trs partes (fi gura 304): OleDbConnection, OleDbCommand e DataSet, que fornecero mecanismos
o IIS ganhou tambm a funo
Contedo: arquivos do tipo Web Forms, HTML, imagens, udio e vdeo, que para manipulao de arquivos XML e conexo com bancos de dados (SQL).
de gerenciar o ASP.NET, formado
determinam a aparncia de uma aplicao Web. System Components (componentes de sistema): EventoLog, Message Queue e
basicamente por dois tipos
Lgica: arquivos executveis e script, que determinam como uma aplicao res- FileSystemWatcher, os quais permitem manipular eventos do servidor.
de aplicaes: Pginas Web
ponder s aes dos usurios.
(acessadas por usurios com
8.1.3. Projeto Web application (aplicao Web) a extenso ASPX) e Web Services
Figura 304 (funes disponibilizadas
Funcionamento de Para iniciar uma Web Application, escolha, em Project Types, Visual Basic, e pela rede, chamadas
um Web Service. depois a opo Web na template ASP.NET Web Application (fi gura 305). No de aplicativos ASMX).

Figura 305
Aplicao ASP.NET.

244 245
Informtica 4 captulo 8

Figura 306 Figura 308


WebForm. ToolBox para
Aplicao Web.

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 (figura 306). Elas permitem modificar 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.6. Escrevendo a Aplicao

8.1.4. Ciclo de vida da 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
Uma aplicao Web comea no momento em que o navegador faz a requisi- Web. Para isso, preciso mudar a viso para Design (figura 308).
o na sua pgina principal. Inicialmente, executa o assembly (.dll), criando
uma instncia do Web Form. Essa, por sua vez, responder requisio do Se preferir ir diretamente ao cdigo, mude para Source, escreva e grave o seu
usurio no formato HTML, sendo destruda posteriormente. Caso o usurio cdigo e verifique o resultado final no navegador (figuras 309 a e b).
no realize nenhuma requisio, a instncia poder ser excluda depois de um
determinado tempo. Figura 309a
Verificando o
<html xmlns=http://www.w3.org/1999/xhtml >
8.1.5. Executando uma Application Service (Servio de Aplicao) resultado final.
<head runat=server>
Execute uma Application Service da mesma forma que faz em um Windows <title>Untitled Page</title>
Form Application. Dessa vez, porm, no teremos a aplicao rodando como </head>
anteriormente, mas sim uma porta lgica que ser criada para o servidor IIS. <body>
O navegador padro da mquina ser ativado para mostrar a aplicao, con- <form id=form1 runat=server>
forme ilustra a figura 307. Podemos observar que aparece na URL a expresso <div>
localhost, indicando que o servio est operando como um servidor local. O Minha Primeira Pgina em ASP</div>
nmero que surge aps essa expresso representa a porta lgica da mquina, o </form>
qual no padro e poder ser modificada a cada execuo. </body>
</html>
Toda e qualquer modificao no cdigo dever ser gravada por meio da atualiza-
o da pgina e poder ser visualizada posteriormente. Para isso, basta pressionar
Figura 309b
a tecla F5. Caso seja usado o boto break, a janela do navegador ser fechada.
Minha primeira
aplicao.
Figura 307
Servidor em
Execuo.

246 247
Informtica 4 captulo 8

8.1.7. Estruturando uma pgina ASP.NET <% Tempo.InnerText = Now()%>


<body>
Antes, as pginas em ASP utilizavam as tags <%...%> para a incluso do script,
<p id=Tempo runat=server></p>
como podemos constatar no cdigo ilustrado na figura 310.
</body>
</html>
Figura 310
Uso de tags
<html xmlns=http://www.w3.org/1999/xhtml>
<%...%>.
<head> A tag <p> tornou-se um controle do servidor. Sua identificao foi representada
<meta http-equiv=Content-Type content=text/html; charset=utf-8 /> pelo atributo id, que permitir futuras referncias por meio do cdigo execut-
<title>Exemplo em ASP 3.0</title> vel, permanecendo agora fora do HTML.
HTML Server Controls </head>
(Controles de servidor <% response.write(now()) %>
HTML): tags HTML <body> 8.1.7.2. Web Server Controls
tradicionais. </body> So semelhantes ao HTML Server Controls, pois agem como parte de um cdi-
Web Server Controls </html> go HTML. No entanto, so independentes e podem ser utilizados em aplicaes
(Controles de servidor
interativas, o que significa que eles englobam servios como, por exemplo, a
Web): novas tags ASP.
programao de eventos. Isso porque dispem de componentes de calendrio,
NET.
O resultado pode ser visto na figura 311. Lembre-se de executar o cdigo usan- gridview, treeview, entre outros. Os Web Server Controls so mais complexos
Validation Server
Controls (Controles de
do o IIS (localhost). que o HTML Server Controls e devem iniciar com <asp:.../>, como mostra o
servidor de validao): cdigo ilustrado pela figura 313.
validao da entrada Dessa forma, as tags marcadoras do ASP eram colocadas onde se desejava que
de dados. o cdigo aparecesse. Elas ficavam misturadas com o HTML, gerando um c- Figura 313
digo de difcil leitura e manuteno, que foi batizado de cdigo espaguetti. O Cdigo com uso
ASP.NET eliminou esse problema, utilizando os Server controls, ou seja, tags <html xmlns=http://www.w3.org/1999/xhtml >
de <asp:.../>.
que podem ser interpretadas diretamente pelo servidor e esto divididas em trs <head runat=server>
categorias de Server Controls. <title>Exemplo em ASP - VB</title>
</head>
Figura 311 <% Tempo.Text = Now()%>
Execuo do ASP. <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
8.1.7.1. HTML Server Controls digitar ou no. Pois os controles de validao do servidor (validation server con-
trols) permitem justamente validar essas entradas e ainda exibem mensagens.
So tags HTML padro, criadas a partir da incluso de um novo atributo Cada controle executa uma validao especfica, aps uma ao do usurio por
runat=server. Veja o exemplo no cdigo mostrado na figura 312. meio de controle Button, ImageButton, ou LinkButton.

Figura 312
<html xmlns=http://www.w3.org/1999/xhtml > 8.2. Eventos
Tags com incluso
<head runat=server>
de atributo Para que o cdigo seja executado no momento correto, podemos utilizar os
<title>Exemplo em ASP - VB</title>
runat=server. manipuladores de evento. O cdigo seguinte determinar o momento em que a
</head>
verificao da data/hora dever ser lida no servidor (figura 314). O manipulador

248 249
Informtica 4 captulo 8

Figura 315b
realizar uma sub-rotina quando determinado evento ocorrer. No exemplo an-
Detalhamento do uso
terior, o evento Page_Load executado quando uma pgina carregada. <html xmlns=http://www.w3.org/1999/xhtml >
do Server Control.
<head runat=server>
Figura 314
<title>Exemplo em ASP - VB</title>
Verificao de
<html xmlns=http://www.w3.org/1999/xhtml > </head>
data e hora.
<head runat=server> <body>
<title>Exemplo em ASP - VB</title>
<p id=lblLogin>rea Restrita - Usando Web Control</p>
</head>
<script runat=server> <p>Login:
Sub Page_Load(Sender As Object,E As EventArgs) <input id=txtLogin type=text /></p>
Tempo.Text = Now() <p id=lblSenha>
End Sub Senha:
</script>
<input id=pwdSenha type=password /></p>
<body>
<p><asp:label id=Tempo runat=server/></p> <p>
</body> <input id=btnEnviar type=button value=Enviar />
</html> &nbsp;&nbsp;&nbsp;&nbsp;
<input id=btnCancelar type=button value=Cancelar /></p>
</body>
8.3. HTML Server Controls e Web Server Controls </html>

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. Assim como ocorreu em C# e VB.NET, a janela de Properties dever ser utili-
Porm, recomendvel optar pelo HTML Controls, em caso de migrao do zada para ajustes e identificao dos componentes (figura 316).
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 Figura 316
e incorporao de recursos do Framework. Janela Properties.

8.3.1. HTML Server Controls


O exemplo ilustrado pelas figuras 315 a e b mostra uma entrada simples de login
e senha.

Figura 315a
Usando Server
Control.

8.3.2. Web Server Controls


Usando o mesmo exemplo do item anterior, agora com o Web Server Controls,
podemos verificar que no existe mudana de layout (figuras 317 a e b).

250 251
Informtica 4 captulo 8

Figura 317a Figura 318


Web Server Controls. Tela antes de pressionar
o boto Enviar.

mos que utilizar os recursos das variveis de sesso, ou seja, definir uma
chave e atribuir um valor para ela. As sesses so criadas pelo comando
Session(), que identifica as variveis criadas pelo programador. Exemplo:
Figura 317b
Detalhamento do <html xmlns=http://www.w3.org/1999/xhtml >
login e senha. <head runat=server> Session(aula) = ASP.NET
<title>Exemplo em ASP - VB</title> Session(data) = Now()
</head>

<body>
Aps a definio da palavra-chave da sesso, ser determinado o seu valor. A
<form id=form1 runat=server> recuperao dos dados ser feita da mesma forma, identificando a palavra-chave.
<p id=lblLogin>rea Restrita - Web Service Controls</p> No exemplo da figura 318, vamos criar as duas variveis mencionadas e recupe-
Login: r-las aps o clique do boto.
<asp:TextBox ID=TextBox1 runat=server></asp:TextBox>
Ao clicarmos no boto Enviar, os itens referentes a Estamos vendo uma aula de:
<p>
e Horrio: sero preenchidos de acordo com o cdigo mostrado na figura 319.
Senha:
<asp:TextBox ID=TextBox2 runat=server></asp:TextBox> Figura 319
<html xmlns=http://www.w3.org/1999/xhtml > Preenchendo itens.
</p>
<head runat=server>
<asp:Button ID=btnEnviar runat=server Text=Enviar />
<title>Session em ASP.NET</title>
&nbsp;&nbsp;&nbsp;&nbsp;
</head>
<asp:Button ID=btnCancelar runat=server Text=Cancelar />
<script runat=server>
</form>
Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
</body>
Session(aula) = ASP.NET
</html>
Session(data) = Now()
End Sub

8.4. Sesses em ASP.NET Protected Sub btnEnviar_Click(ByVal sender As Object, ByVal e As


Em alguns momentos, ser necessrio deixar um valor disponvel para System.EventArgs)
toda aplicao. Isso fcil quando se trata de programao para ambien- Mostrar1.Text = Session(aula)
te Windows, como o VB.NET. Mas, no caso de uma aplicao Web, te-

252 253
Informtica 4 captulo 8

Figura 321
Mostrar2.Text = Session(data) Link para
visualizao.
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: No cdigo principal, podemos verificar somente a criao das chaves (figura 322).
<asp:Label ID=Mostrar2 runat=server Text=></asp:Label>
</form> Figura 322
Cdigo principal com
</body> <html xmlns=http://www.w3.org/1999/xhtml >
criao das chaves.
</html> <head id=Head1 runat=server>
<title>Session em ASP.NET</title>
</head>
As variveis de sesso foram criadas no evento Page_Load e a recuperao <script runat=server>
dos valores ocorrer quando o evento btnEnviar_Click for acionado (figu- Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
ra 320). Session(aula) = ASP.NET
Session(data) = Now()
Figura 320 End Sub
Varivel Session
</script>
<body>
carregada.
<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 (figura 323).

8.4.1. Recuperando sesso em outra pgina por meio de um evento Figura 323
Resultado aps
Depois que uma sesso foi criada, podemos recuperar os valores em outra pgi- <html xmlns=http://www.w3.org/1999/xhtml >
o clique no boto.
na. Vamos utilizar o exemplo anterior e dividi-lo em duas pginas a primeira <head id=Head1 runat=server>
para criao da sesso e a segunda para visualizao. Na primeira, vamos retirar <title>Session em ASP.NET</title>
o boto e incluir um link para que o usurio seja direcionado para a prxima </head>
pgina (figura 321). <script runat=server>

254 255
Informtica 4 captulo 8

Protected Sub btnEnviar_Click(ByVal sender As Object, ByVal e As Mostrar2.Text = Session(data)


System.EventArgs) End Sub
Mostrar1.Text = Session(aula) </script>
Mostrar2.Text = Session(data)
<body>
End Sub
<form id=Form1 name=formulario runat=server>
</script>
<body> <br/> Estamos vendo uma aula de:
<form id=Form1 name=formulario runat=server> <asp:Label ID=Mostrar1 runat=server Text=></asp:Label>
Clique no Boto Para Recuperar os Dados:<br /> <br/>Horrio: Uma URL o endereo
<br/> <asp:Label ID=Mostrar2 runat=server Text=></asp:Label> de um recurso (um arquivo,
<asp:Button ID=btnEnviar runat=server Text=Enviar </form> uma impressora, etc.)
onclick=btnEnviar_Click /><br/> </body> disponvel em uma rede,
<br/> Estamos vendo uma aula de: seja internet, rede
</html>
<asp:Label ID=Mostrar1 runat=server Text=></asp:Label> corporativa ou intranet.
<br/>Horrio: A URL tem a seguinte
<asp:Label ID=Mostrar2 runat=server Text=></asp:Label> estrutura: protocolo://
</form> 8.5. Dados via URL mquina/caminho/recurso.
</body> O protocolo poder ser
Outro mecanismo para transportar informaes de uma pgina Web para outra HTTP, FTP, entre outros.
</html>
o URL (Uniform Resource Locator ou localizador de recurso universal). Pode- O campo mquina indica
se utilizar o seguinte artifcio: aps o nome do arquivo que receber as infor- o servidor que disponibiliza
8.4.2. Recuperando sesso em outra pgina automaticamente maes, digite o sinal de interrogao ? e indique as variveis e seus respectivos o documento ou recurso
contedos. Se houver mais de uma varivel, separe com o sinal de &, como no designado. E o caminho
importante que as variveis de sesso sejam recuperadas automaticamente, exemplo seguinte: especifica o local
para que possam ser utilizadas nas pginas subsequentes. Vamos utilizar o cdi- (geralmente em um
go do exemplo anterior e eliminar o boto para visualizao (figuras 324 a e b). sistema de arquivos)
Menu.aspx?op=1 onde se encontra o
Figura 324a Menu.aspx?op=1&nome=Jos&cod=3456 recurso dentro do servidor.
Recuperao direta.

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 figura 325 mostra um exemplo de menu de
opes.

Figura 325
Menu de opes.

Figura 324b
Eliminado o boto
para visualizao.
<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)

256 257
Informtica 4 captulo 8

No cdigo que estamos utilizando como exemplo, encontramos para cada link a No cdigo (figura 328), a funo Request.QueryString() realizar a captura da
identificao do arquivo e o valor a ser transferido via URL (figura 326). varivel no evento Load_Page e carregar a frase no controle Label, de acordo
com a escolha do usurio.
Figura 326
Identificao de arquivo Figura 328
e valor a transferir. <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 <!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitio- Captura da
Transitional//EN http://www.w3.org/TR/xhtml1/DTD/ nal//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional. varivel no evento
xhtml1-transitional.dtd> dtd> Load_Page.
<html xmlns=http://www.w3.org/1999/xhtml > <html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server> <head runat=server>
<title>Menu de Opes</title> <title>menu de Opes - Escolha</title>
</head> </head>
<body> <script runat=server>
<form id=form1 runat=server> Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)

<div> Dim opcao = Request.QueryString(op)


Select Case opcao
<b>Escolha uma Opo de Menu </b> <br />
Case 1
<asp:LinkButton ID=lnkOpcao01 runat=server
PostBackUrl=Menu.aspx?op=1>Opo 01</asp:LinkButton><br /> Escolha.Text = Opo UM selecionada
Case 2
<asp:LinkButton ID=lnkOpcao02 runat=server
PostBackUrl=Menu.aspx?op=2>Opo 02</asp:LinkButton><br /> Escolha.Text = Opo DOIS selecionada

<asp:LinkButton ID=lnkOpcao03 runat=server Case 3


PostBackUrl=Menu.aspx?op=3>Opo 03</asp:LinkButton><br /> Escolha.Text = Opo TRS selecionada

</div> End Select


End Sub
</form>
</script>
</body>
<body>
</html>
<form id=form1 runat=server>
<asp:Label ID=Escolha runat=server Text=></asp:Label>
No arquivo Menu.aspx, teremos como resposta a indicao da opo escolhida </form>
pelo usurio (figura 327). </body>
Figura 327 </html>
Opo escolhida
via menu.

258 259
Captulo 9

ADO.NET
DataSet
DataReader
Objetos para banco de dados
Mtodos de conexo
Consideraes nais
Referncias bibliogrcas
Glossrio
InFoRmtICa 4 CaPtulo 9

Figura 329
Estrutura geral.

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 SqlConnection, OdbcConnection, OleDbCommand e SqlCommand. Para ter-
e OleDbDataAdapter), aumentando, assim, o seu desempenho. Alm disso, o mos uma viso geral dos mecanismos de conexo, observemos a fi gura 329, que
ADO.NET possui o objeto DataSet, que a representao mais prxima do mostra toda a estrutura.
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- Os principais pacotes utilizados pelo ADO.NET so:
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 System.Data: contm as classes que representam tabelas, colunas, linhas e
dados, as quais so identifi cadas por um prefi xo, conforme mostra a tabela 14. tambm a classe DataSet de todos os provedores, alm das interfaces IDb-
Command, IDbConnection, e IDbDataAdapter, que so usadas por todos
Caso seja necessrio utilizar outros sistemas gerenciadores de banco de dados, os provedores de conexo;
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- System.Data.Commom: defi ne as classes para os provedores de dados Db-
tos representados a partir de seu prefi xo da seguinte forma: OleDbConnection, Connection e DbDataAdapter;

tabela 14 System.Data.OleDb: fonte de dados Ole Db usando o provedor .NET


Provedores de ProveDor DeSCrIo OleDb;
conexo.
ODBC Data Provider Geralmente usada para banco System.Data.Odbc: fonte de dados ODBC usando o provedor .NET
API Prexo: Odbc de dados mais antigos que utilizam ODBC;
a interface ODBC
System.Data.SqlTypes: dados especfi cos para o SQL Server.
OleDb Data Provider Conexo do tipo OleDb, como o
API Prexo: OleDb Access ou Excel Alm disso, o ADO.NET oferece classes referenciadas:

Oracle Data Provider Para implementao de Banco de Disconnected: fornece classes capazes de armazenar dados sem a depen-
API Prexo:Oracle Dados Oracle dncia da fonte de dados de determinado provedor. Por exemplo, DataTable.

SQL Data Provider Para implementao de Banco de Shared: classes que podem ser acessadas por todos os provedores;
API Prexo:Sql Dados Microsoft SQL Server
Data Providers: classes utilizadas em diferentes fontes de dados para ge-
renciamento.

262 263
InFoRmtICa 4 CaPtulo 9

tabela 16
9.1. DataSet mtoDoS DeSCrIo DataReader.
O objeto recordset (ADO), que armazena somente uma coleo de tabelas, FieldCount Nmero de colunas da linha de
tem desvantagens em relao ao DataSet, que faz parte do System.Data. O dados atual
DataSet controla uma cpia do banco de dados, representando um conjunto
de informaes em memria cach que no esto conectadas com o banco Verica se o objeto DataReader
de dados do sistema. Baseado em XML e independente da fonte de dados, IsClosed
est fechado
o DataSet pode armazenar vrias verses das tabelas. Apesar de trabalhar
no formato desconectado, o DataSet possui mecanismos que do suporte ao Read Avana para o prximo registro
modelo conectado. Entre os mtodos disponveis, podemos destacar alguns
mostrados na tabela 15. Close Fecha o objeto

tabela 15
ColeeS DeSCrIo
DataSet. 9.3. objetos para banco de dados
Tables Uma coleo de tabelas que Uma das grandes vantagens do ADO.NET so os recursos oferecidos pelos ob-
armazenam os dados atuais a serem jetos de manipulao de dados.
manipulados
9.3.1. objeto Datatable
mtoDoS DeSCrIo
O objeto DataTable pode representar uma ou mais tabelas de dados, as quais
AcceptChanges Grava todas as alteraes permanecem alocadas em memria. Pode ser manipulado por meio de mtodos,
como mostra a tabela 17.
para o DataSet

Clear Remove todas as linhas das tabelas tabela 17


mtoDoS DeSCrIo DataTable.
Faz uma cpia da estrutura,
Clone Columns Representa as colunas da tabela
mas no copia os dados

Faz uma cpia da estrutura


Copy Rows Linhas da tabela
e dos dados

Retorna uma cpia do DataSet


GetChanges
com apenas as colunas alteradas PrimaryKey Chave primria

Retorna uma representao XML


GetXmlSchema
da estrutura de um DataSet NewRow Cria uma nova linha de dados
Reverte o DataSet ao seu
Reset Faz uma cpia da estrutura e dos dados
estado original
Copy da tabela

9.2. DataReader
TableName Dene o nome da tabela
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-
Clear Limpa dos dados da tabela
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.

264 265
InFoRmtICa 4 CaPtulo 9

Figura 330
9.3.2. objeto DataView Objeto connection
SQL Server: Classe SqlConnection especfico.
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 OLE DB: Classe OleDbConnection
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.
As principais propriedades da Classe Connection podem ser observados na ta-
tabela 18 bela 19.
DataView. mtoDoS DeSCrIo
tabela 19
RowFilter Retorna a expresso usada para mtoDoS DeSCrIo Connection String.
ltrar os dados
ConnectionString Contm a string de conexo
Captura uma linha de dados
Item especca da tabela
DataBase Retorna o nome do banco de dados
Ordena os dados por meio
Sort de uma coluna
Retorna o nome da instncia do banco
DataSource
Adiciona uma nova linha de dados
Addnew
Retorna o estado atual de conexo:
State Broken, Closed, Connecting, Executing,
Table Dene qual DataView ser visualizada Fetching e Open

Delete Exclui linhas de um DataView 9.4.2. Exemplo genrico de conexo


O cdigo mostrado na fi gura 332, escrito em C#, representa os passos necess-
rios para a conexo de uma base de dados SQL Server. A partir desse ponto, as
Find Busca uma linha de informaes operaes com o banco de dados j podem ser realizadas.

Figura 332
Incluindo os namespace Cdigo
9.4. mtodos de conexo using System.Data representando
using System.Data.SqlClient passos para 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- Montando a string de conexo
cute instrues SQL no formato de parmetros. Quando o objeto Command // definindo isoladamente cada componente da conexo
realizar o retorno dos dados, deve-se criar um objeto DataAdapter, que preen- string servidor = localhost
cher um objeto DataSet ou DataTable. string username = usuario
string senha = db2009conect
9.4.1. objeto Command string banco = papelaria
// contruindo a ConnectionString
A funo do Command fazer a ligao com um banco de dados especfi co. string ConnectionString = Data Source= + servidor + ;
Por isso, esse objeto deve conter informaes necessrias para que a conexo ConnectionString += User ID= + username + ;
seja estabelecida, indicando o caminho do banco, usurio, senha etc. Como foi ConnectionString += Password= + senha + ;
mencionado anteriormente, cada provedor possui um objeto connection espe- ConnectionString += Initial Catalog= + banco;
cfi co (fi gura 330).

266 267
Informtica 4 captulo 9

Criando uma instncia do objeto Connection // imprime o primeiro campo da tabela


SqlConnection SQLConnection = new SqlConnection(); Console.WriteLine(drExemplo[0]);
}
Realizando a conexo // fecha o DataReader
SQLConnection.ConnectionString = ConnectionString; drExemplo.Close();
SQLConnection.Open(); // fecha a conexo com o banco
conexao.Close();
}
}
Outra forma de fazer essa conexo est representada no cdigo mostrado na
figura 333.

Figura 333 Para obter mais colunas, podemos utilizar o comando da forma como sugerida
Outra forma de SqlConnection conexao = new SqlConnection(Data na figura 335.
realizar conexo. Source=(localhost);Initial Catalog=papelaria; User ID=usuario;Passwor
d=db2009conect); Figura 335
Como obter mais
Console.WriteLine(drExemplo[0]);
colunas.
Console.WriteLine(drExemplo[1]);
9.4.2.1. Implementando a leitura de dados Console.WriteLine(drExemplo[2]);
Ainda seguindo o exemplo anterior, vamos elaborar uma estrutura mais com-
pleta de conexo e implementar os cdigos para leitura dos dados (figura 334).
Ou indicar o nome da coluna da qual se pretende obter a informao (fi-
Figura 334 gura 336).
Estrutura mais using System;
completa de using System.Data; Figura 336
conexo. using System.Data.SqlClient; Indicando o nome
Console.WriteLine(drExemplo[codigo]);
da coluna.
class ExemploConexao Console.WriteLine(drExemplo[nome]);
{ Console.WriteLine(drExemplo[usurname]);

static void Main()


{ Ao usar os mtodos ligados base de dados, importante verificar se a conexo
// criando a linha de conexo foi efetivamente aberta, se no ocorreu nenhum erro e fech-la no final. O pro-
SqlConnection conexao = new SqlConnection(Data cedimento evita problemas de desempenho. Portanto, recomendvel realizar
Source=(localhost);Initial Catalog=papelaria; User ID=usuario;Passwor os tratamentos de erro (Try).
d=db2009conect);
// definindo um DataReader Nullo 9.4.3. Conexo com VB.NET
SqlDataReader drExemplo = null;
// Abre o banco de dados Seguindo o mesmo princpio do item anterior, vamos fazer uma conexo com
conexao.Open(); uma base de dados Access, porm, usando o VB.NET como plataforma de
// Cria a linha de comando conexo.
SqlCommand comando = new SqlCommand(select * from Cliente,
conexao); 9.4.3.1. Base de dados
// Executa a leitura dos dados
drExemplo = comando.ExecuteReader(); Por meio do Access 2007, criamos a base de dados mostrada na figura 337 e
// faz a leitura dos dados inclumos alguns dados fictcios, para os testes iniciais. O nome do banco de
while (drExemplo.Read()) 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.

268 269
Informtica 4 captulo 9

Figura 337 Figura 340


Descrio da tabela e Registros diferentes
Public Class frmBancoDados
contedo. Private Sub btnListar_Click(ByVal sender As System.Object, ByVal e As para cada linha.
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
9.4.3.2. Criando o Form For reg = 0 To leitor.FieldCount - 1
linha = linha & - & leitor.Item(reg)
Em uma Solution do tipo Windows Form Application, foi criado para o Visual Next
Basic o layout que pode ser visto na figura 338. lstUsers.Items.Add(linha)
linha = Usurio:
O layout muito simples. Inclumos um Button com o nome de btnListar e End While
uma ListBox chamada de lstUsers. Veja, na figura 339, como fica a descrio leitor.Close()
dos componentes. conexao.Close()
Catch erro As Exception
Figura 338 MsgBox(No foi possvel realizar a operao, Erro)
Layout do Form. 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.
Figura 339 Eliminamos o ListBox do exemplo anterior e colocamos um DataGrid em seu
Nome dos lugar, como mostra a figura 341.
componentes.
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 (figura 340 ).

270 271
Informtica 4 captulo 9

No exemplo a seguir, vamos indicar passo a passo a construo do DataTable dtMinhaDataSet.Tables.Add(dtMinhaTabela)


para visualizao em um DataGrid.
Finalmente, carregamos o DataSet para dentro do DataGrid.
Definindo um DataTable (dtMinhaTabela), com o nome de MinhaTabela.
dtMinhaTabela.SetDataBinding(dtMinhaDataSet, MinhaTabela)
Dim dtMinhaTabela As DataTable = New DataTable(MinhaTabela)
Os comandos anteriores representam somente a criao do DataTable. O cdigo
Definidos dois objetos para controlar coluna e linha do DataTable. completo ficar como se apresenta na figura 342.

Dim dtColuna As DataColumn Figura 342


Imports System.Data O cdigo
Dim dtLinha As DataRow Imports System.Data.SqlClient completo.
Imports System.Data.OleDb
Aps a definio do objeto para coluna, devemos construir a coluna, ou seja,
indicar a sua nomenclatura e o tipo de dado que ela conter. Public Class frmBancoDados

dtColuna = New DataColumn() Private Sub btnListar_Click(ByVal sender As System.Object, ByVal e


As System.EventArgs) Handles btnListar.Click
dtColuna.DataType = System.Type.GetType(System.String) Dim conexao As New OleDbConnection()
conexao.ConnectionString = Provider=Microsoft.Jet.
dtColuna.ColumnName = Login OLEDB.4.0;Data Source=D:\Usuarios.mdb

dtMinhaTabela.Columns.Add(dtColuna) Dim comando As OleDbCommand = conexao.CreateCommand


comando.CommandText = Select * from operadores
dtColuna = New DataColumn() conexao.Open()

dtColuna.DataType = System.Type.GetType(System.String) Dim dtMinhaTabela As DataTable = New DataTable(MinhaTabela)


Dim dtColuna As DataColumn
dtColuna.ColumnName = Nome Dim dtLinha As DataRow

dtMinhaTabela.Columns.Add(dtColuna) montando as colunas


dtColuna = New DataColumn()
Se utilizarmos o mtodo Read(), sero carregadas as informaes, assim como dtColuna.DataType = System.Type.GetType(System.String)
ocorreu no exemplo anterior. dtColuna.ColumnName = Login
dtMinhaTabela.Columns.Add(dtColuna)
While leitor.Read()
dtColuna = New DataColumn()
dtLinha = dtMinhaTabela.NewRow dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Nome
dtLinha(Login) = leitor.Item(0) dtMinhaTabela.Columns.Add(dtColuna)

dtLinha(Nome) = leitor.Item(1) inserindo os dados


Dim leitor As OleDbDataReader = comando.ExecuteReader()
dtMinhaTabela.Rows.Add(dtLinha) While leitor.Read()
dtLinha = dtMinhaTabela.NewRow
End While dtLinha(Login) = leitor.Item(1)
dtLinha(Nome) = leitor.Item(2)
Com o DataTable carregado, vamos vincul-lo a um DataSet. dtMinhaTabela.Rows.Add(dtLinha)
End While
Dim dtMinhaDataSet As DataSet = New DataSet()

272 273
Informtica 4 captulo 9

Figura 345
inclui a tabela no dataset Incluso do mtodo
dtColuna = New DataColumn()
Dim dtMinhaDataSet As DataSet = New DataSet() ReadOnly como True.
dtColuna.DataType = System.Type.GetType(System.String)
dtMinhaDataSet.Tables.Add(dtMinhaTabela)
dtColuna.ColumnName = Login
dtColuna.ReadOnly = True
vincula o dataset1 ao datagrid1
dtMinhaTabela.Columns.Add(dtColuna)
dtgMinhaTabela.SetDataBinding(dtMinhaDataSet, MinhaTabela)
End Sub
Isso impede que o usurio faa novas incluses. Como as colunas so montadas indi-
End Class
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
9.4.3.4.1. Visual do DataGrid ou no (figura 346). Isso significa que o mtodo no permite que o valor registrado em
uma coluna seja inserido novamente na mesma coluna em outro registro.
Para melhorar o visual do DataGrid, clique na seta existente no canto superior
do DataGrid (figura 343) e escolha a opo AutoFormat. Figura 346
dtColuna = New DataColumn() Utilizao do
Figura 343 dtColuna.DataType = System.Type.GetType(System.String) mtodo Unique.
Menu DataGrid. dtColuna.ColumnName = Nome
dtColuna.ReadOnly = False
dtColuna.Unique = True
dtMinhaTabela.Columns.Add(dtColuna)

9.4.4. Utilizando um DataView


Na opo Formats, teremos vrios tipos de layout. Escolheremos um deles e O DataView permite estabelecer uma ligao com a interface de usurio por meio
confirmaremos com o boto OK (figura 344). do DataBinding, no qual podemos realizar operaes como pesquisa, navegao,
filtro, etc. O DataView retorna os dados contidos em um DataTable. possvel que
Figura 344 haja vrios DataView, que, alis, no podem ser considerados tabelas. O exemplo da
Formatando Layout figura 347 mostra dois Datagrid e dois botes. No primeiro DataGrid, carregado
DataGrid. 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 definidas dentro
da classe, para que tenham visibilidade global (figura 348).

Figura 347
Construo de
um DataView.

9.4.3.5. Travando colunas


As colunas do DataGrid esto disponveis para que o usurio possa realizar
modificaes 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 figura 345.

274 275
Informtica 4 captulo 9

Figura 348 Figura 351


Variveis definidas
Imports System.Data.OleDb O cdigo completo.
Dim conexao As String = Provider=Microsoft.Jet.OLEDB.4.0;Data Public Class frmExemplos
dentro da classe. Source=D:\Usuarios.mdb Dim conexao As String = Provider=Microsoft.Jet.OLEDB.4.0;Data
Dim comando As String= Select * from operadores Source=D:\Usuarios.mdb
Dim adpTabela As New OleDbDataAdapter(comando, conexao) Dim comando As String = Select * from operadores
Dim dsTabela1 As New DataSet() Dim adpTabela As New OleDbDataAdapter(comando, conexao)
Dim dsTabela2 As New DataSet() Dim dsTabela1 As New DataSet()
Dim dsTabela2 As New DataSet()

Assim, teremos: conexo: varivel que possui as informaes de provedor, ca- Private Sub btnCarregar_Click(ByVal sender As System.Object, ByVal
minho e nome do banco; comando: armazena a string referente instruo e As System.EventArgs) Handles btnCarregar.Click
SQL a ser executada inicialmente; adptabela: cria um objeto Adapter usando dtgLista.CaptionText = Listagem de Operadores
as variveis comando e conexo; dstabela1 e dstabela2: representa os objetos adpTabela.Fill(dsTabela1, operadores)
DataSet(), um para cada DataGrid do formulrio. dtgLista.DataSource = dsTabela1
dtgLista.DataMember = operadores
O boto referente opo Carregar dever conter o cdigo mostrado na End Sub
figura 349.
Private Sub btnOrdeNome_Click(ByVal sender As System.Object,
Figura 349 ByVal e As System.EventArgs) Handles btnOrdeNome.Click
Cdigo do boto da dtgOrdenado.CaptionText = Listagem de Operadores
dtgLista.CaptionText = Listagem de Operadores
opo Carregar. adpTabela.Fill(dsTabela2, operadores)
adpTabela.Fill(dsTabela1, operadores)
Dim dvTabela As New DataView(dsTabela2.Tables(operadores))
dtgLista.DataSource = dsTabela1
dvTabela.Sort = nome
dtgLista.DataMember = operadores
dtgOrdenado.DataSource = dvTabela
End Sub
End Class
importante observar os conceitos abaixo:

dtgLista.CaptionText: atribui o nome no DataGrid (dtgLista). Figura 352


Utilizao
adpTabela.Fill: preenche o objeto Adpter (adpTabela.Fill). do DataView.

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 figura 350.

Figura 350
Boto da ordenao
dtgOrdenado.CaptionText = Listagem de Operadores
adpTabela.Fill(dsTabela2, operadores)
dos dados.
Dim dvTabela As New DataView(dsTabela2.Tables(operadores))
dvTabela.Sort = nome
dtgOrdenado.DataSource = dvTabela

9.4.5. Conectando com ASP.NET


A diferena do DataView em relao ao DataSet (dsTabela2) est na ordenao Podemos realizar a incluso de DataGrid ou do GridView, utilizando Wizard
(.Sort) por meio do campo nome. O cdigo completo ficar como ilustra a (passo-a-passo) fornecedido pelo componente. Nos exemplos anteriores, realiza-
figura 351. Como resultado, surgir o layout mostrado na figura 352. mos a conexo por meio do Visual Basic e do C#. Agora, faremos a conexo com

276 277
Informtica 4 captulo 9

Figura 356
o banco via ASP.NET. O primeiro passo criar um projeto tipo Visual Basic e
Testando a conexo.
um template Web Aplication. No modo Design, ser adicionado o componente
SqlDataSource (figura 353).
Figura 353
Componente
SqlDataSource.

No guia do componente, escolha a opo configure, conforme a figura 354.

Figura 354
Configurao do
SqlDataSource.

Nesse ponto, ser possvel realizar um teste de conexo com o banco de dados,
O prximo passo ser criar a nova conexo usando o boto New Connection. usando o boto Test Connection. Se estiver tudo OK, aparecer uma mensa-
Aparecer uma segunda janela, na qual poderemos indicar o nome e o local gem de confirmao (figura 356).
onde se encontra a base de dados (figura 355).
Aps o teste de conexo, finalize a tela clicando em OK. Retorne janela an-
terior. Podemos disponibilizar a Connection String, como mostra a figura 357.
Figura 355
Localizao do banco
de dados. Figura 357
Visualizando
a String de
conexo.

Na continuao do processo, ser confirmada a conexo (figura 358).

Figura 358
Confirmando a
ConnectionString.

278 279
Informtica 4 captulo 9

Figura 359
Agora, podemos ver (figura 361) o cdigo que foi implementado automaticamente.
Configurando o SQL.
Figura 361
O cdigo
<asp:SqlDataSource ID=SqlDataSource1 runat=server
implementado
ConnectionString=<%$ ConnectionStrings:ConnectionString %> automaticamente.
ProviderName=<%$ ConnectionStrings:ConnectionString.Provider-
Name %>
SelectCommand=SELECT * FROM [operadores]></
asp:SqlDataSource>

O prximo passo ser a incluso de um GridView, como mostra a figura 362.

Figura 362
GridGrid View.

Uma nova janela ser aberta para a criao da instruo SQL inicial. Obser-
vando a janela de configurao podemos verificar o nome da tabela, quais os
campos a serem visualizados e a configurao das clusulas Where e Order By.
Na parte inferior da janela, nota-se a montagem da linha SQL (figura 359).

Finalizado o processo, possvel realizar o teste da Query com o banco de A partir da opo Choose Data Source, podemos apontar o SqlDataSource
dados, conforme a figura 360. (figura 363).

Figura 360 Figura 363


Teste do SQL Selecionando o
(Query). DataSource.

Finalizada essa operao, o cdigo seguinte ser o que mostra a figura 364.

Figura 364
<asp:GridView ID=GridView1 runat=server Concluda a
AutoGenerateColumns=False operao de
DataKeyNames=cod_ID DataSourceID=SqlDataSource1> selecionar o
DataSource.
<Columns>
<asp:BoundField DataField=cod_ID HeaderText=cod_ID
InsertVisible=False

280 281
Informtica 4

ReadOnly=True SortExpression=cod_ID /> Referncias bibliogrficas


<asp:BoundField DataField=login HeaderText=login FORBELLONE, Andr. Lgica de Programao - A Construo de Algoritmos
SortExpression=login /> e Estruturas de Dados. 3 edio. So Paulo: Ed. Makron Books, 2005.
<asp:BoundField DataField=nome HeaderText=nome
LEISERSON, Charles E., STEIN, Clifford, RIVEST, Ronald L. e CORMEN,
SortExpression=nome />
Thomas H. Algoritmos: Teoria e Prtica. Rio de Janeiro: Ed. Campus, 2002.
</Columns>
</asp:GridView> RAY, Eric T. Aprendendo XML. Rio de Janeiro: Ed. Campus, 2001.

FURGERI, Srgio. Ensino Didtico da Linguagem XML. So Paulo: rica,


2001.
O layout ainda no foi formatado, mas j possvel verificar o resultado pelo navega-
dor (figura 365). Nos campos destinados aos nomes aparecem os ttulos da coluna. HOLZNER, Steven. Desvendando XML. Rio de Janeiro: Campus, 2001.
E todos os dados so disponibilizados conforme composio da instruo SQL.
MARCONDES, Christian Alfim. Programando em HTML 4.0. 7. edio.
Figura 365 So Paulo: rica, 2002
Visualizao da Tabela.

Consideraes finais
O objetivo dos autores deste livro permitir que alunos e profissionais 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 profissionais da rea, boa sorte e sucesso na rea escolhida.

282 283
Glossrio
informtica Glossrio

A
ACL (Acess Control List ou lista de controle de acesso) configurao criada
para definir regras para que os usurios da rede local acessem a internet.

ADO.NET integrado plataforma .NET, o ADO.NET uma tecnologia de


B
backbones (espinhas dorsais) linhas de transmisso tronco, conectadas a ro-
teadores de alta capacidade.

backup cpia de segurana de arquivos e configuraes de um computador.


acesso a banco de dados.
badblock (bloco ruim) falhas causadas por perda do poder magntico de algu-
AJAX acrnimo para a expresso em ingls Asynchronous Javascript And ma rea na parte magntica do disco.
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 barramento (Bus) circuito integrado que faz a transmisso fsica de dados de
web se tornem mais interativas. um dispositivo a outro. Ele formado por vrias linhas ou canais, como se fos-
sem fios eltricos, que transmitem sinais eltricos tratados como bits.
anti-spywares softwares usados para eliminar programas maliciosos.
BIOS (Basic Input Output System ou sistema bsico de entrada/sada) sof-
antivrus software usado para eliminar virus de computador. tware com a funo de reconhecer, configurar e iniciar os dispositivos do com-
putador, e ainda de iniciar o sistema operacional. Ao ligar o computador, os
API (Application Programming Interface ou interface de programao de aplica- primeiros sinais que voc v na tela so da interface do BIOS.
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 bit menor poro de informao possvel em informtica. Um nico bit repre-
implementao do programa, apenas precisam de seus servios, ou seja, os progra- senta somente duas informaes, 0 ou 1.
madores podem utilizar esses recursos sem precisar saber como foram desenvolvidos.
bluetooth tecnologia que permite comunicao simples e segura entre apare-
APM (Advanced Power Management ou gerenciamento avanado de energia) lhos eletroeletrnicos.
controle que faz com que o BIOS pea fonte para desligar o computador,
aps o sistema operacional ter sido descarregado. blu-ray formato criado em 2008 para as empresas que queriam gravar seus fil-
mes em mdias mais seguras contra pirataria e que pudessem armazenar imagens
arquitetura de rede conjunto de camadas e protocolos de uma rede. 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-
ASCII sigla para American Standard Code for Information Interchange ou c- logia do CD/DVD, cujo raio vermelho, com comprimento de onda de 605nm.
digo padro americano para troca de informaes, uma tabela de codificao
de caracteres baseada no alfabeto ingls. BMP terminao usada para o formato Bitmap, que significa mapa de bits. Nesse
tipo de representao, cada ponto da imagem associado a um valor (no caso, o bit).
ASP (de Active Server Pages ou pginas de servidor ativo) plataforma da Mi-
crosoft usada para o desenvolvimento de aplicaes web. boot o termo (bota) empregado em informtica em analogia ao chute, o
pontap inicial do sistema operacional.
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 browsers (navegadores) programa que possibilita ao usurio ter acesso aos
(Internet Information Service ou Servio de Informao de Internet) da Microsoft. recursos da rede.

AT (Advanced Tecnology) padro de gabinete utilizado nos primeiros PCs da IBM. BTX (Balanced Tecnology Extended ou tecnologia balanceada estendida)
padro de gabinete com o objetivo de padronizar placas-me de menor tamanho
ATA tecnologia que permite que os dados armazenados em discos rgidos, para se- e tambm aumentar a refrigerao, facilitando a passagem do ar. A tendncia
rem utilizados pelo processador, sejam total ou parcialmente carregados para a me- que este formato substitua o ATX.
mria e transmitidos da memria para o disco, depois de serem alterados, ou criados.
buffer rea usada para armazenar dados, utilizada sempre que o computador
ATAPI tecnologia que permite que os dados armazenados em discos rgidos, para precisa ler dados de uma fonte que no tenha velocidade de transmisso constante.
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. bug problema de lgica surgido durante a execuo de um aplicativo ou siste-
ma computacional.
ATX (Advanced Tecnology Extended ou tecnologia avanada estendida)
padro de gabinete desenvolvido pela Intel em 1995, em substituio ao AT. byte tambm chamado de octeto, o byte formado por 8 bits.

286 287
informtica Glossrio

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.


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.

Representa tambm a linguagem de programao criada por Dennis Ritchie, CPD Centro de Processamento de Dados, nome obsoleto atualmente.
como base ao desenvolvimento do sistema operacional UNIX (escrito em As-
sembly originalmente). CPU (Central Processing Unit ou unidade central de processamento) refere-
se ao microprocessador, e no ao gabinete como um todo, e sua funo proces-
C++ linguagem de programao de alto nvel desenvolvida por Bjarne sar as instrues enviadas.
Stroustrup. Desde os anos 1990, uma das linguagens comerciais mais po-
pulares, mas disseminada tambm na academia por seu grande desempenho CRT (Catodic Ray Tube ou tubo de raios catdicos) tecnologia usada para mo-
e base de utilizadores. nitores com tubo.

cache considerada memria primria, ou principal, devido a velocidade de CSS sigla para Cascading Style Sheets ou estilo de pginas em cascata.

D
acesso aos dados do processador.
Data Base Administrator (DBA ou administrador de banco de dados) profis-
CD A sigla signifca Compact Disc, ou disco compacto, e foi introduzida no sional que conhece profundamente as ferramentas de administrao de banco
mercado em 1985 pela Sony e pela Philips. de dados para utiliz-las de maneira eficiente.

CD-R CD que pode ser gravado, como indica o sufixo R (de Recordable ou deb pacotes de software do Debian, distribuio Linux da qual derivou o Ubuntu.
gravvel), porm aceita somente uma gravao.
debugger (depurador) tem a funo de permitir ao usurio acompanhar a
CD-ROM O CD leva a sigla ROM para indicar que somente para leitura execuo do programa, visualizando os resultados em tempo real, em busca de
(Read-Only Memory ou memria apenas de leitura). possveis erros de lgica.

CD-RW esse formato (RW remete a Rewritable ou regravvel) permite gravar, desktop rea de trabalho.
apagar e gravar novamente vrias vezes no mesmo CD.
DIMM (Dual In-line Memory Module ou mdulo de memrias em linha dupla)
chaves em um modelo relacional, designam o conceito de item de busca, mdulo de memria formado pelos chips de memria encapsulada e soldados
ou seja, um dado que ser empregado nas consultas base de dados. Tipos um ao lado do outro sobre os dois lados de uma placa de circuito impresso.
de chaves em um modelo relacional primrias, candidatas, secundrias e
estrangeiras. disco flexvel floppy-disk ou disquete.

chips circuitos integrados. 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
CI (Circuito Integrado) componente capaz de realizar somente um determina- de uma tecnologia de fabricao antiga de discos rgidos.
do tipo de operao, com determinada quantidade de dados.
disquete (floppy-disk) o nome disco flexvel refere-se ao fato de o dispositivo
clusters blocos em que os setores do disco so divididos. ser de plstico, que pode ser magnetizado.

CMOS chip responsvel por armazenar configuraes sobre os HDs instalados distribuio para o sistema Linux nunca se fala em verso, e sim em distribui-
e seus tamanhos, data e hora, e vrias outras informaes. o. As verses se aplicam a sistemas operacionais como o Windows.

cdigo fonte texto escrito segundo as regras de determinada linguagem de DMA tecnologia implementada nas placas-me que faz com que a transmisso
programao. de dados entre o disco rgido e outras interfaces, como memria, placa de rede,
outros discos, etc. seja direta, sem sobrecarregar o processador.
compilador software que tem a funo de traduzir o cdigo fonte desenvolvido
pelo programador em um software que possa ser executado diretamente pelo DML (Data Manipulation Language ou linguagem de manipulao de dados)
usurio, ou seja, voc escreve todo cdigo fonte e depois pede para o compilador decorre do fato de os nveis de abstrao no se aplicarem somente definio
convert-lo em um programa. ou estruturao de dados, mas tambm sua manipulao.

288 289
informtica Glossrio

DNS sigla para Domain Name System ou sistema de nomes de domnio. fotogrficas, pen-drive, celulares e/ou outros dispositivos.

DOCTYPE identifica o tipo de documento. EPROM sigla para Erasable Programmable Read Only Memory (Erasable de
apagvel) memria que pode ser regravada.
download transferir dados ou arquivos de um computador remoto para o de
um usurio; baixar o arquivo. estabilizador equipamento de proteo para as variaes na voltagem que
ocorrem normalmente no fornecimento de energia eltrica e podem causar fa-
DRAM (Dynamic RAM ou memria RAM dinmica) tipo de memria empre- lhas nos equipamentos ou diminuir sua vida til.
gada como RAM nos computadores em 2009.
Ext tipo de sistema de arquivos no sistema operacional Linux, assim como o
drive dispositivo para inserir disco flexvel (disquete), CD-ROM e/ou DVD e ReiserFS, o XFS, o JFS, o GSF e o OCFS2. O Ext o padro da maioria das
leitoras de cartes Flash. distribuies, geralmente na verso Ext2 e Ext3.

driver tradutor ou software controlador que sabe os comandos que o sistema Ext2 (second extended file system ou segundo sistema extendido de arquivos) sis-
operacional pode enviar, interpreta-os e converte a solicitao de modo que o tema de arquivos que era o mais comum nas distribuies e que deu origem ao Ext3.
chip do aparelho possa reconhec-la.
Ext3 (third extended file system ou terceiro sistema extendido de arquivos)
DSP sigla em ingls para Digital Signal Processor ou processador de sinais digitais. sistema de arquivos no Linux adotado pela maioria das distribuies.

DTD sigla para Document Type Definition ou definio 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.
F
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.

DVD sigla para Digital Vdeo Disc ou disco digital de vdeo, para armazenar FAT (File Allocation Table ou tabela de alocao de arquivos) primeiro sistema
vdeos de boa qualidade e capacidades que variam de 4.7GB em uma camada de arquivos utilizado pelo Windows.
at 8.5GB em duas camadas.
filtro de linha equipamento usado para bloquear o fluxo de energia caso a ten-
DVD+R disco idntico ao DVD-R, porm tem formato diferente de gravao so aumente mais que o normal.
e leitura. Portanto, no so lidos e gravados por leitoras/gravadoras DVD-R.
fio terra ponto ou caminho no solo que serve de descarga para a corrente el-
DVD-R disco que permite uma s gravao de at 4,7GB. trica que escapa do aparelho eltrico.

DVD-RW disco que tem a mesma capacidade do DVD-R, mas pode ser grava- Firewall (significa parede corta-fogo, em traduo literal) software de segu-
do e regravado vrias vezes. rana responsvel por gerenciar as conexes de rede com destino mquina

E
local, e bloqueia o acesso de pessoas ou aplicaes no autorizadas.
EEPROM (Eletrical Erasabel Programmable Read Only Memory ou memria
somente de leitura, programvel e limpa eletricamente) memria em que se Firewire barramento com tecnologia desenvolvida pela Apple Computer em meados
pode regravar, ou seja, podemos apagar parte da memria e gravar novamente. dos anos 1990, e a principal concorrente da USB na padronizao de dispositivos.

EIDE tecnologia que permite que os dados armazenados em discos rgidos, para flash (memria) a principal mdia para armazenamento de dados em micro-
serem utilizados pelo processador, sejam total ou parcialmente carregados para a me- dispositivos, como celulares, cmeras, PDAs e notebooks, em formato de car-
mria e transmitidos da memria para o disco, depois de serem alterados, ou criados. tes de memria e pen-drives ou unidades internas no lugar do HD.

e-mail correio eletrnico. floppy-disk (disquete) o nome disco flexvel refere-se ao fato de o dispositivo
ser de plstico, que pode ser magnetizado.
energia eletroesttica corrente eltrica que escapa do aparelho eltrico quando
surge algum defeito, ou tambm para liberar a energia esttica captada do ambiente. 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-
entradas USB entradas para conexes de dispositivos como webcam, cmeras tes do computador da forma adequada.

290 291
informtica Glossrio

formatar excluir a tabela de parties de arquivos do sistema operacional e


criar uma nova.

FreeBSD sistema operacional para servidores de rede.


J
Java linguagem de programao desenvolvida nos anos 1990 por uma equipe
de programadores chefiada porJames Gosling, na Sun Microsystems, conglo-
meradonorte-americano da rea de informtica.

G
journaling (registro de dados como em um jornal) recurso do sistema de ar-
gabinete caixa normalmente metlica que organiza e fixa os seus vrios com- quivos Linux, no qual as informaes so salvas automaticamente durante a
ponentes, como HD, CD/DVD-ROM, placa-me, placas de expanso com co- execuo do sistema operacional.
nectores externos (USB, serial, vdeo, som etc.), sustenta a placa-me e protege
as placas do contato direto com pessoas, umidade, energia esttica, poeira. JPG ou JPEG (Joint Photographic Experts Group ou Grupo Reunido de Especia-
listas em Imagem) tipo de imagem.
game station assim so chamados os computadores montados para aficionados
em jogos, e precisam de placa de vdeo com processador e memria dedicados. JVM (Java Virtual Machine ou, literalmente, mquina virtual Java) programa
que carrega e executa os programas desenvolvidos em Java.

K
GIF (Graphics Interchange Format ou Formato de Intercmbio de Grficos)
formato de imagem. kernel ncleo ou gerenciador, a parte mais importante do sistema operacional.

gigabyte (GB) unidade utilizada para indicar a capacidade de armazenamento LAN (Local Area Network ou rede local) rede com mquinas que se limi-
de dados em um computador, em que 1GB equivale a 1 milho de bytes, segun- tam a conectar entre si num mesmo ambiente, de uma empresa, instituio

L
do o Sistema Internacional de Unidades (SI). ou residncia.

GUI (Graphical User Interface ou interface grfica com o usurio) em Java, laptop computador porttil.
um conjunto de classes para disponibilizar componentes grficos (objetos) como
caixas de texto, botes, listas etc. LBA (Logical Block Addressing ou Endereamento Lgico de Blocos) o m-

H
todo de traduo que permite a BIOS reconhecer HDs IDE.
hacker pessoa que usa seus profundos conhecimentos em programao para
burlar o sistema de segurana de computadores e sistemas. LCD (Liquid Crystal Displays ou tela de cristal lquido) tecnologia que utiliza a
substncia chamada cristal lquido para bloquear ou dar passagem luz.
hardware a parte fsica do computador, seus circuitos eletrnicos, cabos,
placas, dispositivos perifricos conectados, etc. 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
HD sigla em ingls para Hard Disk (disco rgido). imagem totalmente escura.

HTML (HyperText Markup Language ou linguagem de marcao de hipertex- link texto que geralmente aparece em azul, sublinhado, e que contm uma
to) linguagem utilizada para o desenvolvimento de pginas da internet. URL da pgina a qual ele se refere, que fica escondida, no visvel.

I I/O abreviao em ingls para input/output, que significa entrada/sada. Refe-


rem-se a dispositivos utilizados para a comunicao entre o sistema computa-
cional e os usurios.
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.
IDE (Integrated Development Environment ou ambiente integrado de de-
senvolvimento) programa de computador que rene recursos e ferramentas logic board (placa lgica) placa-me nos computadores da Apple.
de apoio para agilizar o desenvolvimento de softwares, como o NetBeans, e
Eclipse (Java) e o DevC++ (C++). login nome do usurio que o identifica para acessar o sistema.

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. M
Mac OS sigla de Macintosh Operating System, o primeiro sistema operacional
do mundo a permitir o uso de janelas grficas e de mouse, lanado em 1984,
como gerenciador das mquinas da Apple.

ISA (Industry Standard Arquiteture ou arquitetura padro da indstria) padro mainboard placa-me.
para conector de expanso utilizado pela IBM em seus primeiros computadores.

292 293
informtica Glossrio

malware palavra originria da expresso em ingls MALicious softWARE, nibble largamente utilizado em sistemas digitais, representa meio byte (4
que literalmente significa software malicioso. bits), a quantidade de bits que o sistema de codificao BCD (Binary-coded
decimal ou codificao binrio decimal) usa para representar valores de 0 a 15.
MAN (Metropolitan Area Network ou rede metropolitana) Rede Metropolita-
na redes que abrangem uma cidade inteira e podem se ligar a vrias LAN que n representa um recurso de computao. Qualquer elemento computacional que
estiverem dentro do seu permetro. 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.
MBR tabela de alocao, quando o disco particionado, que fica armazenada
no incio do disco rgido. Essa tabela informa a posio de incio da partio, se no-break dispositivo que mantm o abastecimento por meio de sua bateria at
est ativa e qual o seu tipo. que a energia volte ou que o computador seja desligado.

memria local de armazenamento dos dados. NTFS (New Technology File System ou nova tecnologia em sistema de arqui-
vos) sistema de arquivos utilizado pelo Windows, traz diversas caractersticas
microprocessador circuito integrado, porm programvel, capaz de realizar como segurana, capacidade de armazenamento e limitaes aprimoradas em
vrias instrues, uma de cada vez. relao s verses anteriores.

Microsoft SQL Server sistema de gerenciamento de SGBDRs (sistemas geren- ncleo quantidade de processadores internos em uma mesma CPU.

O
ciadores de bancos de dados).
OCFS2 sistema de arquivos Linux, permite utilizao simultnea e comparti-
MMS (Microsoft Media Service) protocolo proprietrio da Microsoft para lhada por mais de um computador.
transmisso de fluxo de dados em tempo real, chamado tambm de NetShow.
off-board (fora da placa) expresso para descrever se um dispositivo faz parte
modelo de referncia ISO OSI modelo apresentado pelo ISO (Internationals da placa-me ou se ser includo parte por meio de uma placa de expanso,
Standards Organization ou Organizao Internacional de Padres), com o in- especfica para a tarefa.
tuito de padronizar os protocolos em camadas, com o nome de Open System
Interconnection (OSI), ou seja, interconexo de sistemas abertos. OLED sigla para Organic Lighting Emmiting Diode ou diodo orgnico
emissor de luz.
monotarefa sistema operacional que consegue processar apenas uma instru-
o de cada vez. on-board (na placa) expresso que significa que os circuitos esto impressos
nas prprias placas, para vrios tipos de aplicaes.
motherboard placa-me.
on-line est conectado internet ou a uma rede de computadores.
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 OpenSource significa cdigo aberto, indicando que o programa pode ser uti-
qual se quer interagir e que tipo de ao se pretende realizar. lizado livremente por qualquer pessoa, independentemente da finalidade, e se
refere a sistemas como os softwares livres, Linux.

P
MSDNAA sigla para Microsoft Developer Network Academic Alliance ou
aliana acadmica da rede de desenvolvedores da Microsoft. P2P (Peer-to-Peer ou de par em par) termo usado para os softwares que fazem
transferncia de arquivos de um computador para outro.
MS-DOS sigla para Microsoft Disk Operating System ou disco de sistema
operacional Microsoft. pacote software que pode ser instalado no Linux.

multitarefa sistema operacional que consegue processar vrias instrues ao PAN sigla para Personal Area Network ou rede pessoal.
mesmo tempo e executar diversos programas simultaneamente.
parmetro elemento digitado depois do primeiro espao, ou seja, a primeira pala-
MySQL sistema de gerenciamento de SGBDRs, um banco de cdigo-fonte vra um comando e as demais, separadas por espao, so os parmetros (porque o
aberto, gratuito e est disponvel tanto para o Windows como para o Linux. espao justamente um caractere separador entre um comando e um parmetro).

N
NetBSD sistema operacional para servidores de rede. partio diviso do disco rgido.

294 295
informtica Glossrio

particionar o mesmo que dividir o disco, identificando suas partes e devidas plug and play modo pelo qual o sistema operacional pode reconhecer automa-
dimenses. ticamente o dispositivo, mesmo que este demande algum driver especfico. Os
dispositivos mais comuns como pen-drives, mouses e impressoras, podem ser
pass senha. utilizados assim que so conectados.

password caracteres digitados pelo usurio, com limitaes e uma janela para plugn play (conecte e use) tcnica que reconhece e instala muitos dispositi-
a entrada de dados. 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
pasta forma mais simples de organizar o contedo em um sistema operacional. operar com quase todos os dispositivos existentes.

PATA (vem de Parallel ATA) tecnologia que permite que os dados armazenados PMBOK - Guia do Conjunto de Conhecimentos em Gerenciamento de Proje-
em discos rgidos, para serem utilizados pelo processador, sejam total ou par- tos publicao do PMI (Project Management Institute ou Instituto de Geren-
cialmente carregados para a memria e transmitidos da memria para o disco, ciamento de Projetos), para identificar e descrever as boas prticas de projetos
depois de serem alterados, ou criados. que agreguem valor e sejam fceis de aplicar.

PC/AT o primeiro computador lanado em 1984 pela IBM, como sucessor do porta paralela conector utilizado para ligar dispositivos a computadores, principal-
modelo XP, com capacidade de apenas 20MB e tecnologia ATA. mente impressoras, caracterizando a transmisso de bits na forma paralela de envio.

PC abreviao para Personal Computer ou computador pessoal. porta serial conector que foi muito utilizado no passado para conectar mouse,
impressora, leitores de cdigo de barras e outros dispositivos de automao, co-
PCI (Peripheral Component Interconnect ou componente de interconexo de mercial e industrial, enviando os bits de forma serial.
perifricos) padro desenvolvido pela Intel em 1990 para substituir os barra-
mentos ISA e VESA Local Bus. PostgreSQL sistema de gerenciamento de SGBDRs (sistemas gerenciadores de
bancos de dados).
pen-drive pen, disco removvel, chaveiro de memria so as tradues mais
usadas para Memria USB Flash Drive, dispositivo de armazenamento com prompt de comandos do Windows aplicativo em que o usurio dispe de uma
ligao tipo USB que comeou a ser produzido no ano 2000. interface que interpreta os comandos digitados. Esses so transferidos ao sistema
operacional, que, depois de execut-los, retorna o resultado ao prompt, de ma-
perifricos so todos os dispositivos que se conectam unidade de sistema neira que o usurio o visualize.
para obter respostas ou para passar informaes para o computador. Esses
dispositivos so geralmente divididos em trs grupos perifricos de entrada, protocolo mdulo que agrupa um tipo de servio.
de sada e mistos.
protocolo RDP (Remote Desktop Protocol ou protocolo de rea de trabalho
PID (Process Identification ou cdigo do processo) nmero de controle do remota) protocolo empregado para transmisso de dados da camada de apli-
processo, junto ao percentual de uso de memria e de processador. cao. Permite transmitir udio e vdeo em vrios canais de uma transmisso da
aplicao Microsoft Terminal Service.
pilha de protocolos protocolos de uma mesma camada.
protocolo RTP/RTCP (Real Time Protocol ou protocolo de tempo real e Real
pixel Menor ponto visvel que compe uma imagem digital. Time Control Protocol ou protocolo de controle de tempo real) protocolos
utilizados em conjunto, desenvolvidos para transmitir udio em tempo real.
placa controladora placa lgica.
protocolo SMTP sigla para Simple Mail Transfer Protocol ou protocolo de
placa lgica tambm chamada de placa controladora, a placa que controla transmisso de e-mail simples.
todo o funcionamento do HD.
protocolo TCP (Transfer Control Protocol ou protocolo de transferncia com
placa-me conhecida tambm como mother-board, main-board ou, nos controle) protocolo de controle que negocia entre as partes como se dar a
computadores da Apple, como logic board (placa lgica), a placa de cir- conexo antes que um dado seja enviado e mantm o estado da conexo, mesmo
cuito impresso que liga ou interliga todos os componentes do computador. que as camadas inferiores da rede no ofeream controle de estado.
Em sites e fruns da internet, voc pode encontrar ainda a abreviao mobo
para design-las. pseudocdigo linguagem com a qual os algoritmos so desenvolvidos.

296 297
informtica Glossrio

R
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.
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
RAM sigla para Random Access Memory ou memria de acesso aleatrio. funo de prover algum servio na rede.

rede interligao de vrios computadores. setup programa de configurao que todo micro tem gravado dentro da me-
mria ROM (que, por sua vez, fica na placa-me).
registradores componentes do processador, que so unidades de memria
que, por ficarem dentro da CPU, possibilitam acesso aos dados bem mais veloz SGBDs (Sistemas Gerenciadores de Bancos de Dados) conjunto de progra-
do que ao acesso das memrias RAM ou cache. 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
ReiserFS (Reiser File System) sistema de arquivos bastante usado no Linux, administrao e a segurana dos dados que contm.
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 sistema embarcado aquele que est gravado dentro dos equipamentos.
que o torna mais rpido que o Ext3.
sistema operacional software (como o MS-DOS, o Windows 95, 98, NT, XP
reset (restabelecer) boto que reinicia o computador, como se desligasse e e Vista, MacOS-X e Linux) que faz a comunicao amigvel e segura entre o
ligasse o micro novamente. hardware e as aplicaes.

resoluo imagem definida pela quantidade de pontos, os pixels. 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
RFC (Request for Comments) especificao tcnica desenvolvida sobre um de- cach, terminais, consumo de energia.
terminado assunto por solicitao da IETF (Internet Engineering Task Force).
software a parte no fsica programas, instrues e procedimentos escritos
RGB sigla para Red, Green e Blue ou vermelho, verde e azul que determina por programadores para controlar o hardware de modo que este possa executar
uma tabela de cores no padro RGB. as tarefas de que precisamos.

rodar executar algum programa. software de compresso programas que fazem a compactao de arquivos.

ROM sigla para Read-Only Memory, que significa memria apenas de leitura. software de inteligncia artificial (IA) sistema que utiliza algoritmos no nu-
uma memria que no permite a alterao ou remoo dos dados ali gravados, mricos para resolver problemas complexos, tambm conhecido como sistema
os quais so impressos em uma nica ocasio. baseado em conhecimento.

roteadores equipamentos que fazem interconexo com vrias redes. software firmware programa implantado em um chip.

roteamento algoritmo que analisa o trfego de rede entre os pontos que esto Solaris sistema operacional para servidores de rede.
transferindo pacotes para verificar o caminho que eles esto seguindo. Repasse
e roteamento geralmente so realizados por equipamentos chamados roteadores. spywares vrus espies que copiam dados ou senhas e os enviam para um am-
biente externo sem conhecimento nem consentimento do usurio.
RTSP (Real Time Streaming Protocol ou protocolo de transmisso de fluxo de
dados em tempo real) protocolo utilizado para transmitir e controlar a trans- SQL (Structured Query Language ou, literalmente, linguagem de consulta es-
misso tanto de udio quanto de vdeo sob demanda em tempo real. truturada) linguagem de manipulao de dados que se tornou padro para

S
SGBDRs (Sistemas Gerenciadores de Bancos de Dados Relacionais).
script lista dos comandos de criao do banco de dados e de suas tabelas den-
tro do SGBD. SSH (Secure Shell) protocolo que permite conexes seguras entre mquinas Linux.

service packs pacotes de atualizaes. stored procedure (procedimento armazenado) conjunto de comandos SQL
que so compilados e guardados no servidor.
servio a maioria das atividades executadas pelo sistema operacional, ou seja,

298 299
informtica Glossrio

streaming termo usado para transmisses multimdia ininterruptas por uma tuplas linhas de uma tabela.

U
fonte a vrios clientes e ao mesmo tempo.
Ubuntu sistema operacional baseado em Linux, desenvolvido de forma cola-
swap (troca) sistema de arquivos para memria virtual no Linux/Unix. borativa pelos internautas.

Swebok (Software Engineering Body of Knowledge ou reas do conhecimento UC (Unidade de Controle) principal componente do processador, que identifi-
da engenharia de software) publicao de 2004, uma iniciativa da Socie- ca as instrues, comanda os outros componentes, controla a memria e todos
dade da Computao do Instituto de Engenharia Eltrica e Eletrnica (IEEE os outros dispositivos do computador.
Computer Society), com o propsito de criar um consenso sobre as reas de
conhecimento da engenharia de software. UDP sigla para User Datagram Protocol ou protocolo de datagrama do usurio.

T
tabela de alocao tabela chamada MBR, que fica 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-


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.

mum na linguagem de programao de computador. Ultra-ATA tecnologia que permite que os dados armazenados em discos rgi-
dos, para serem utilizados pelo processador, sejam total ou parcialmente carre-
Telnet tecnologia muito utilizada, tanto no Linux quanto no Windows, para gados para a memria e transmitidos da memria para o disco, depois de serem
acessar um PC remotamente. alterados, ou criados.

template modelo. Ultra-DMA tecnologia que permite que os dados armazenados em discos rgi-
dos, para serem utilizados pelo processador, sejam total ou parcialmente carre-
TextBox (caixa de texto) componente responsvel por receber as informaes gados para a memria e transmitidos da memria para o disco, depois de serem
do usurio e tambm o item mais comum, pois a maioria das entradas de alterados, ou criados.
dados realizada por ele.
UML (Unified Modeling Language ou linguagem de modelagem unificada)
threads tpicos, ou divises dos processos, que os sistemas operacionais mo- linguagem dedicada especificao, visualizao, construo e documentao
dernos utilizam para melhorar seu desempenho. que usa notao grfica para modelar softwares.

TI sigla para Tecnologia da Informao. unidade central de processamento o termo refere-se ao microprocessador, e
no ao gabinete como um todo, como muitas pessoas imaginam. Como seu
toolbar (barra de ferramentas) disponibiliza os botes de comandos mais utilizados. prprio nome diz, sua funo processar as instrues enviadas. O processador
est para o computador assim como crebro est para o ser humano.
ToolBox (caixa de ferramentas) contm componentes para o desenvolvimento
do projeto, os quais esto divididos em guias de acordo com o tipo de aplicao. URL (Uniform Resource Locator ou localizador de recurso universal) endere-
o de um recurso disponvel em uma rede.
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. USB sigla significa Universal Serial Bus e se refere a uma tecnologia que veio
para facilitar a ligao de maior nmero de aparelhos ao PC como cmeras,
topologia de redes modo como os computadores esto ligados entre si, os equi- joysticks, mp3 players, leitores de cartes (inclusive simultaneamente), bem
pamentos empregados e a maneira como os dados iro trafegar dentro da rede. como acelerar ainda mais a velocidade da transmisso de dados.

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). V
vetor definido 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.

trilha zero primeira trilha do sistema de arquivos do HD em que o boot est gravado. VGA sigla para Video Graphic Array ou vdeo de grficos vetorizados.

trojans nome em ingls dado a um vrus que evoca a histria grega do Cavalo VNC (Virtual Network Computing ou computao em rede virtual) tecnologia
de Troia, ou spywares. que possibilita acesso remoto de um computador a outro com interface grfica.

300 301
informtica

W
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 especficas para que todos tenham acesso internet (ambiente, equipa-
mento, navegador, ferramentas etc.).

WAN (Redes Geograficamente 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 grfica. H diversas verses Windows 95, 98,
XP, Vista, NT, 2000, 2003, 2008.

wireless (sem fio) 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 grfica que viriam a se popularizar a partir da dcada de 1990, quando a
rede foi aberta s empresas e se espalhou mundo afora.

X
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 linguagem de 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.

Z
zip ou rar formato de arquivo compactado com aplicativos especficos de
compactao.

302
Excelncia no ensino profissional
Administrador da maior rede estadual de educao profissional 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 profissionais 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 profissionais


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 beneficia 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 qualificao e requalificao 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