Você está na página 1de 154

4

Programao
de Computadores

Informtica
Habilitao tcnica em

Informtica
Volume 4

Informtica
Programao de
computadores
Ralfe Della Croce Filho
Carlos Eduardo Ribeiro

So Paulo
2010

Governador
Jos Serra

Presidente
Paulo Markun
Vice-Presidente
Fernando Jos de Almeida

Ncleo Cultura Educao


Coordenador: Fernando Jos de Almeida
Gerente: Monica Gardelli Franco
Equipe de autoria Centro Paula Souza
Coordenao geral: Ivone Marchi Lainetti Ramos
Coordenao da srie Informtica: Luis Eduardo
Fernandes Gonzalez
Autores: Carlos Eduardo Ribeiro, Evaldo Fernandes

Ru Jnior, Gustavo Dibbern Piva, Joo Paulo Lemos


Escola, Luciene Cavalcanti Rodrigues, Ralfe Della
Croce Filho, Wilson Jos de Oliveira
Reviso tcnica: Anderson Wilker Sanfins, Luis
Claudinei de Moraes, Humberto Celeste Innarelli,
Srgio Furgeri

Equipe de Edio
Coordenao geral

Alfredo Nastari
Coordenao editorial

Mirian Ibaez
Consultor tcnico

Victor Emmanuel J. S. Vicente

Vice-Governador
Alberto Goldman

Edio de texto: Marlene Jaggi


Editores assistentes: Celia Demarchi

e Wagner Donizeti Roque


Secretrio editorial: Antonio Mello
Revisores: Antonio Carlos Marques, Fabiana Lopes
Bernardino, Jos Batista de Carvalho, Lieka Felso
e Miguel Facchini
Direo de arte: Deise Bitinas
Edio de arte: Ana Onofri
Editoras assistentes: Nane Carvalho, Nicia Cecilia
Lombardi e Roberta Moreira
Assistentes: Ana Silvia Carvalho, Claudia Camargo
e Felipe Lamas
Ilustraes: Carlos Grillo
Pesquisa iconogrfica: Completo Iconografia,
Maria Magalhes e Priscila Garofalo
Fotografia: Carlos Piratininga, Eduardo Pozella (fotgrafos)
e Daniela Mller (produtora)
Tratamento de imagens: Sidnei Testa
Impresso em Vitopaper 76g, papel
sinttico de plstico reciclado, da Vitopel,
pela Grfica Ideal.

Dados Internacionais de Catalogao na Publicao (CIP)


D357
Della Croce Filho, Ralfe
Informtica, programao de computadores / Ralfe Della Croce
Filho, Carlos Eduardo Ribeiro ; revisor Srgio Furgeri ; coordenador
Luis Eduardo Fernandes Gonzalez. -- So Paulo : Fundao Padre Anchieta, 2010

(Manual de Informtica Centro Paula Souza, v. 4)

ISBN 978-85-61143-46-6

1. Sistemas operacionais (Computadores) 2. Softwares de aplicao


I. Ribeiro, Carlos Eduardo II. Furgeri, Srgio, revisor III.
Gonzalez, Luis Eduardo Fernandes, coord. IV. Ttulo
CDD 005.43

Secretrio de Desenvolvimento
Geraldo Alckmin

Presidente do Conselho Deliberativo


Yolanda Silvestre
Diretora Superintendente
Laura Lagan

Vice-Diretor Superintendente
Csar Silva
Chefe de Gabinete da Superintendncia
Elenice Belmonte R. de Castro
Coordenadora da Ps-Graduao, Extenso e
Pesquisa
Helena Gemignani Peterossi
Coordenador do Ensino Superior de Graduao
Angelo Luiz Cortelazzo
Coordenador de Ensino Mdio e Tcnico
Almrio Melquades de Arajo
Coordenador de Formao Inicial e Educao
Continuada
Celso Antonio Gaiote
Coordenador de Infraestrutura
Rubens Goldman
Coordenador de Gesto Administrativa e
Financeira
Armando Natal Maurcio
Coordenador de Recursos Humanos
Elio Loureno Bolzani
Assessora de Avaliao Institucional
Roberta Froncillo
Assessora de Comunicao
Gleise Santa Clara
Procurador Jurdico Chefe
Benedito Librio Bergamo

Sumrio

nome como caractere


idade como inteiro
salrio como flutuante

nome Joozinho
idade 15
salrio 1500

Fim

3.3. Formatao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3.4. Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

1.1. Fluxograma e pseudocdigo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.5. Cores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

1.2. Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.6. Tabelas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

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

49 Captulo 2
Estrutura de dados
Incio

93 Captulo 4
Lgica de programao aplicada
linguagem Java

4.1. A plataforma de desenvolvimento . . . . . . . . . . . . . . . . . . . . . 96


4.1.1. JRE (Java Runtime Environment). . . . . . . . . . . . . . . . . 97

2.1. Lista encadeada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

2.2. Lista circular. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.1.1.1. JVM (Java Virtual Machine). . . . . . . . . . . . . . 97

2.3. Lista duplamente encadeada. . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.1.1.2. A
 PI (Application Programming

2.4. Pilhas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

2.5. Filas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

2.6. rvores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.1.2.1. JSE (Java Standard Edition). . . . . . . . . . . . . . 98

4.1.2.2. JEE (Java Enterprise Edition) . . . . . . . . . . . 98

4.1.2.3. JME (Java Micro Edition). . . . . . . . . . . . . . . . 98

4.1.2.4. JDK (Java Development Kit) . . . . . . . . . . . 99


4.1.2.5. JSE: nosso foco . . . . . . . . . . . . . . . . . . . . . . . . . 99

57 Captulo 3
Criao de pginas Web

Capa: Luiz Felipe do


Nascimento, aluno de uma
Etec do Centro Paula Souza.
Foto: Eduardo Pozella
Edio: Deise Bitinas

Interface). . . . . . . . . . . . . . . . . . . . . . . . . . . 98

4.1.2. Ambientes de desenvolvimento. . . . . . . . . . . . . . . . . 98

3.1. Identificao do documento. . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

3.2. Estrutura do documento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.1.3. A portabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

Se

t te

rs

nome

endereco

telefone

ssoa()

21 Captulo 1
Lgica de programao

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.4. Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

4.5. Orientao a objetos (1). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

4.5.7. R
 epresentao do encapsulamento
em objeto do tipo Pessoa . . . . . . . . . . . . . . . . . . . . . . 115

4.5.8. V
 iso geral da classe
Pessoa e sua estrutura . . . . . . . . . . . . . . . . . . . . . . . . . 116

4.5.1. Componentes elementares. . . . . . . . . . . . . . . . . . . . . 104

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. D
 etalhando o

4.6.3. Leitura de dados (entrada). . . . . . . . . . . . . . . . . . . . . 119

diagrama de classe. . . . . . . . . . . 105





4.5.1.1.4. C
 odificao da

4.7. Assinatura de mtodos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

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. R
 etorno de valor

4.5.1.2. Objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

4.5.2. Modificadores de acesso. . . . . . . . . . . . . . . . . . . . . . . . 111

e passagem de parmetro . . . . . . . . . . . . . . . . . . . . . . 121


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
1

eiros

4.8.6. Desvios condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

4.10.3. Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

4.8.6.1. If-else. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

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


4.11.3. Swing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

4.11. Interfaces grficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

12

47

85

4.8.7.1. While. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

36

62

25

4.8.7.2. Do-while. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

32

67

74

41


4.8.7.3. For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
valores

4.8.8. Array (Vetor). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

23

4.8.8.1. Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . 131

4.12.2.1. Unchecked Exception. . . . . . . . . . . . . . . . 167

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

4.9. Orientao a objetos (2). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

4.12. Tratamento de excees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

4.12.1. Error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

4.12.2. Exception. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

4.13. Conexo com banco de dados. . . . . . . . . . . . . . . . . . . . . . . 172

4.9.1. Herana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

4.13.1. JDBC (Java Database Connectivity). . . . . . . . . . . 172

4.9.2. Sobrecarga de mtodo (overload) . . . . . . . . . . . . . 142

4.13.2. Implementao do acesso a dados. . . . . . . . . . . . 174

4.9.3. Sobrescrita de mtodo (override). . . . . . . . . . . . . . 145

4.13.2.1. Classe java.sql.Statement. . . . . . . . . . . . . 176

4.9.4. Classes e mtodos abstratos. . . . . . . . . . . . . . . . . . . 147

4.13.2.2. A classe PreparedStatement. . . . . . . . . 176

4.9.5. Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

4.13.2.3. A classe CallableStatement . . . . . . . . . . 176

4.9.6. Polimorfismo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

4.13.3. Incluso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

4.9.6.1. De mtodos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

4.13.4. Alterao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

4.9.6.2. De classe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

4.13.5. Excluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

4.9.6.3. De interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

4.13.6. Listagem geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

4.10. Padres de desenvolvimento de sistemas . . . . . . . . . . . 154

4.13.7. Pesquisa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

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

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

Ex
ce
p

Ru
nt
im
eE
xc
ep
tio
n

tio
T
A
n
hr
rr
IO
ay
ow
Ex
In
ab
de
ce
le
xO
pt
io
ut
n
ce
O
pt
fB
io
ou
AW
n
nd
TE
sE
xc
rr
or
ep
Er
tio
ro
Th
n
r
N
re
ul
a
dD
lP
o
I

Sumrio
185 Captulo 5
Visual Studio 2008

6.3.4. Operadores de incremento e decremento. . . . 203

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

5.1.2. Garbage collector (coletor de lixo). . . . . . . . . . . . 188

6.3.8. Convert. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

5.2. Solues e projetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

6.4. Estrutura de deciso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

5.2.1. Iniciando o Visual Studio Solution. . . . . . . . . . . . 189

6.4.1. Condio verdadeiro if . . . . . . . . . . . . . . . . . . . . . . . 205

5.2.2. Conhecendo o Visual Studio. . . . . . . . . . . . . . . . . . . 190

6.4.2. Condio verdadeiro ou falso ifelse. . . . . . . 205

5.2.3. Gerenciador de janelas. . . . . . . . . . . . . . . . . . . . . . . . . 192

6.4.3. C
 ondies mltiplas

5.2.4. Nomenclatura de componentes . . . . . . . . . . . . . . . 193

5.2.5. IntelliSense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

5.2.6. Executando a aplicao. . . . . . . . . . . . . . . . . . . . . . . . . 194

5.2.7. Identificao de erros . . . . . . . . . . . . . . . . . . . . . . . . . . 195

6.5.1. While(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

6.5.2. Do While(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

6.5.3. For() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

6.5.4. Break e continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

197 Captulo 6
C Sharp

6.1. Programao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

6.5. Estruturas de repetio usadas na linguagem . . . . . . . . 207

6.6.1. Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

6.1.2. Windows Form Application. . . . . . . . . . . . . . . . . . . . 198

6.7. Vetores e matrizes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

6.2. Tipos de dados e variveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

6.8. Classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

6.2.1. Alocao de memria . . . . . . . . . . . . . . . . . . . . . . . . . . 201

6.9. W
 indows Form

// aumenta a velocidade do vec


objCarro.movimentar(5);
Console.WriteLine(Velocidade
Console.ReadKey();

// comea a parar o carro


// a primeira chamada diminui
objCarro.parar();
velocidade = objCarro.consulta
Console.WriteLine(Velocidade
Console.ReadKey();

Application componentes. . . . . . . . . . . . . . . . . . . . . . . . . . . 216

6.3. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

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

6.9.4. Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

de atribuio reduzida . . . . . . . . . . . . . . . . . . . . . . . . . . . 202

// visualiza a velocidade do vec


Console.WriteLine(Velocidade
Console.ReadKey();

6.6. Tratamento de erros / excees. . . . . . . . . . . . . . . . . . . . . . 210

// consulta a velocidade do vec


velocidade = objCarro.consulta

6.4.4. Mltiplos testes Switch() . . . . . . . . . . . . . . . . . . . . 206

6.1.1. Console Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

// inicia a movimentao do car


objCarro.movimentar(5);

if...elseif...elseif....else. . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

// imprime os dados do veculo


Console.WriteLine(Veculo: +
marcha + marchas);
Console.WriteLine(Combustv

Sumrio

6.9.5. ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

6.9.6. ListBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219

6.9.7. CheckBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

6.9.8. RadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

7.4.4. Mltiplos testes Select Case(). . . . . . . . . . . . . . . . 232

7.5. Estrutura de repetio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

7.5.1. While(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

6.10. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

7.5.2. Do While()...Loop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

7.5.3. Do...Loop Until. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

7.5.4. For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

7.5.5. For...Step. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

225 Captulo 7
Visual Basic.NET

if...elseif...elseif....else. . . . . . . . . . . . . . . . . . . . . . . . . . 231

6.9.8.1. Agrupamento . . . . . . . . . . . . . . . . . . . . . . . . . . 222

7.4.3. C
 ondies Mltiplas

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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.1. Programao

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

7.4. Estrutura de deciso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

7.4.1. Condio Verdadeiro if. . . . . . . . . . . . . . . . . . . . . . . 231

7.4.2. Condio Verdadeiro ou Falso ifelse . . . . . . 231

vel X

i
r
a

UM

I S )
A v
O
(
b
x
e
D
u
n
i
S
X
Dim 1 240
Then WriteL

7.10. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vel
i
=
.
r
e

x
l
a
v
S)
so
If

TR
Con 2 Then Line(A



el X

rite
x=
riv

r )
a
seIf nsole.W
l
v
E

va lo
o
Co 3 Then Line(A
r
t

ou

te
=

quer
If x ole.Wri
l
e

a
s
l
u
s
E

Q
Con
ine(

L
e

t
i

.Wr

Else onsole

C


y( )

If
d Ke
a
d

e
n
R
E
e.

nsol

n( )
7.9.8.1. Agrupamento . . . . . . . . . . . . . . . . . . . . . . . . . .
Inte
Ma i
A s240

3
g er =

Sumrio
243 Captulo 8
ASP.NET

261 CAPTULO 9
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

8.1.7.2. Web Server Controls . . . . . . . . . . . . . . . . . 249

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

8.4. Sesses em ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

por meio de um evento . . . . . . . . . . . . . . . . . . . . . . . . 254



9.4.3. Conexo com VB.NET. . . . . . . . . . . . . . . . . . . . . . . . . 269

8.4.1. R
 ecuperando sesso em outra pgina

9.4.2.1. Implementando a leitura de dados. . . . 268

9.4.3.4.1. Visual do DataGrid . . . . . . . . . . 274

9.4.3.5. Travando colunas. . . . . . . . . . . . . . . . . . . . . . 274

9.4.4. Utilizando um DataView. . . . . . . . . . . . . . . . . . . . . . . . 275

9.4.5. Conectando com ASP.NET . . . . . . . . . . . . . . . . . . . . 277

8.4.2. R
 ecuperando 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

lgica computacional um dos primeiros passos para quem


pretende entrar no mundo da computao. Normalmente,
no percebemos sua aplicao para resolver diferentes nveis
de problemas nem sua relao com outras reas da cincia. Isso porque,
em geral, a lgica computacional est associada lgica matemtica
(FORBELONE, 2005). um recurso que permite a criao de alternativas viveis e tecnicamente corretas, eficientes e rpidas. Antes de
resolver um problema, no entanto, temos de saber interpret-lo. Assim,
evitam-se resultados indesejveis ou desvios de percurso, da mesma maneira que surge a oportunidade de eliminar eventuais dvidas, definindo o melhor algoritmo, que pode ser o pseudocdigo ou o f luxograma.
A maioria das atividades que executamos resultado de uma sequncia de passos lgicos. Por exemplo, amarrar o cadaro de um tnis, abrir uma porta,
trocar uma lmpada ou fazer aquele delicioso bolo de chocolate. A sequncia
das etapas, ou melhor, das operaes a executar, determinada pelo algoritmo
de forma lgica. Uma maneira mais simples de dizer isso que a sucesso de
aes faz todo o sentido. Usando o mesmo exemplo do bolo, o comeo de tudo
reunir os ingredientes e us-los na sequncia certa. assim tambm com as
operaes de clculos, representadas pelo pseudocdigo a partir de comandos
no formato de texto (exatamente como uma receita) ou pelo fluxograma de
forma grfica. E o fato de ser constitudo por smbolos geomtricos facilita o
processo de visualizao das operaes.

Algoritmo
detalhado
da latinha.

1 - Pegar o refrigerante
com a mo esquerda.

2 - Segurar o lacre com


a mo direita.

4 Eliminar o lacre.

5 Posicionar a lata
corretamente na boca.

7 - Ingerir o lquido.

8 - Voltar a lata na
posio original.

3 - Remover o lacre.

6 - Inclinar a lata.

1.1. Fluxograma e pseudocdigo


Para entender melhor o conceito, vamos elaborar, resumidamente, um algoritmo que represente os passos necessrios para que algum tome um
refrigerante em uma lata: 1. pegar o recipiente; 2. abrir a tampa; 3. tomar
o contedo (veja quadro Algortimo com os passos necessrios da latinha). A
partir dessa mesma situao, possvel inserir mais operaes em nosso
algoritmo, deixando-o mais detalhado (observe o quadro Algoritmo detalhado da latinha).
22

23

Informtica 4

captulo 1

Entre os diferentes smbolos que constituem a estrutura de um fluxograma, os


mais comuns esto includos na tabela 1.
Tabela 1

Aproveitando o mesmo exemplo da latinha de refrigerante, vamos reescrever os passos lgicos por meio de um fluxograma (figura 1).

Simbologia do fluxograma
smbolo

nome e funo

Incio

NOME = TERMINAL
FUNO = Indica INCIO ou FIM
de um processamento

Incio
Pegar a
latinha

NOME = PROCESSAMENTO
FUNO = Definio de variveis ou
processamentos em geral (Clculos)

Abrir a
tampa

NOME = ENTRADA MANUAL


FUNO = Entrada de dados via
teclado, idntico ao comando LEIA

Tomar o
refrigerante

NOME = DISPLAY
FUNO = Sada de Dados, mostra
um texto e/ou varivel na tela,
idntico ao comando ESCREVA
NOME = DOCUMENTO
FUNO = Sada de Dados, envia
um texto e/ou varivel para a impressora,
usado em relatrios. Idntico ao
comando IMPRIMA
NOME = DECISO
FUNO = Deciso a ser tomada,
retornando verdadeiro ou falso,
idntico ao comando SE

Remover o
lacre

Eliminar o
lacre

Segurar o
lacre

Posicionar a
lata na boca

Voltar a lata
na posio
original

Pegar o
refrigerante

Inclinar a
lata

Ingerir o
lquido

Existem muitos softwares destinados construo de fluxogramas, mas possvel faz-los tambm com o uso do Microsoft Word. Os exemplos desse material
foram elaborados pelo Microsoft Visio.

NOME = CONECTOR
FUNO = Desvia o fluxo para uma outra
pgina, sendo interligados pelo conector
NOME = ENTRADA/SADA
FUNO = Leitura de gravao
de arquivos

Programa nome_do_programa

Declare

Fluxograma
dos passos
lgicos.

Fim

Ttulo do Algoritmo

{declarao de variveis}

Incio


NOME = LOOP
FUNO = Realiza o controle de loop

Figura 1

Pseudocdigo
Os algoritmos so desenvolvidos em uma linguagem denominada pseudocdigo ou, como preferem alguns autores, portugus estruturado. Podem ser
criados sem o formalismo das linguagens de programao, mas obedecem a
uma regra bsica de estruturao: cabealho, declarao e instrues, conforme o seguinte modelo:

NOME = SETA
FUNO = Indica a direo do fluxo

24

Fim

{instrues e comandos}

Declaraes de
variveis
Comandos e
instrues ordenados
de forma lgica

25

Informtica 4

captulo 1

Um algoritmo deve ter como caracterstica um nmero finito de passos, descritos de forma precisa e que possam ser executados em um determinado tempo. Pode permitir zero ou mais entradas de dados e gerar sadas de dados
refinados. Para construir um algoritmo, preciso usar informaes claras e
objetivas, geralmente compostas de um verbo ou de uma frase direta.

1.2. Tipos de dados


A manipulao de dados em um algoritmo ou at mesmo nas linguagens
de programao s possvel com base em algumas regras fundamentais
para a definio dos tipos de dados. preciso diferenciar um dado com
nmeros ou outros tipos de caracteres.

Numricos inteiros
Esse tipo de dado representado por nmeros no fracionados positivos ou negativos, como: 10, 50, -56, -1.000 etc.

nome

Joozinho

idade

minha_idade

15

pag_final

R$ 1.479,00

No pseudocdigo (figura 2), as constantes ou variveis devero estar relacionadas com os seus respectivos tipos de dados:

Programa variveis

Numricos flutuantes

Declare

So representados por nmeros fracionados positivos ou negativos, por exemplo:


10.5, -45.78, 178.67 etc.

nome como caractere

idade como inteiro

salrio como flutuante

Incio

nome Joozinho

idade 15

salrio 1.500,00

Fim

Caracteres ou literais
o maior conjunto de dados. So representados por letras, nmeros, smbolos e espao em branco, sempre entre aspas. Exemplo: cadeira, 100,
R$ 10.00, 11h00 etc.

1.3. Constantes e variveis


As constantes so expresses que recebem um valor qualquer que no ser
modificado durante o processo de execuo do algoritmo. J as variveis
tero um valor passvel de modificao a qualquer momento. Um exemplo
de constante o valor de Pi (3,14). E uma varivel que todos conhecemos
bem pode ser a temperatura do dia, registrada de hora em hora.

Atribuio e declarao
Atribuir um valor qualquer para uma constante ou uma varivel requer
o uso do sinal de ou =. Isso quer dizer que o valor na frente do sinal ser armazenado no elemento anterior ao sinal de atribuio. Veja:
nome Joozinho

idade 10

pi 3.14

Independentemente do tipo de dado adotado caracteres variados (Joozinho),


nmeros inteiros (10) ou flutuantes (3.14) , o processo de atribuio o mesmo.
Mas a declarao requer cuidado. Por isso, procure escolher o nome da varivel de
acordo com o tipo de dado que ser recepcionado, inicie sempre com letras o nome
26

de sua varivel ou constante e no utilize espao em branco ou caracteres especiais,


com exceo do underline (_). Exemplos:

Figura 2
Estrutura de
pseudocdigo.
Incio

nome como caractere


idade como inteiro
salrio como flutuante

nome Joozinho
idade 15
salrio 1500

Fim

1.4. Operadores
Os operadores so utilizados pelos pseudocdigos. O mesmo acontece com as
linguagens de programao, cuja funo realizar as diferentes operaes de
aritmtica e de lgica em um ambiente computacional.

Aritmticos
Esse grupo tem como responsabilidade realizar as operaes aritmticas
(tabela 2) de um pseudocdigo. As operaes sero realizadas de acordo
com a prioridade, ou seja, parnteses, potncia, multiplicao, diviso e,
por ltimo, soma e subtrao.
27

Informtica 4

captulo 1

Tabela 2

Operadores aritmticos

+ Adio de nmeros flutuantes ou inteiros

Concatenao de valores literais (caracteres)

Subtrao de nmeros flutuantes ou inteiros

* Multiplicao de nmeros flutuantes ou inteiros

** Potncia de nmeros flutuantes e inteiros

Diviso de nmeros flutuantes e inteiros

Para compreender o processo lgico de dados, observe as tabelas abaixo, mostrando os valores originais e os resultados adquiridos a partir dos operadores
lgicos. Esse tipo de quadro conhecido como Tabela Verdade (tabela 5).
Tabela 5

No // Not


Valor Entrada 01
Verdadeiro
Falso

Resultado
Falso
Verdadeiro

chave 1

E // And

Relacionais
Os operadores relacionais (tabela 3) permitem a execuo de testes entre constantes e variveis.

Valor Entrada 01

Verdadeiro

Verdadeiro

Falso

Falso

Tabela 3

operadores relacionais

Igual

<>

Diferente

> Maior

< Menor

<= Menor igual

>= Maior igual

Lgicos e Tabela Verdade


Os operadores lgicos (tabela 4 ) executam funes especiais dentro dos pseudocdigos, quando relacionados aos testes condicionais ou a outros valores lgicos.

Valor Entrada 02
Verdadeiro
Falso
Verdadeiro
Falso

Lgica E

Resultado
Verdadeiro
Falso
Falso
Falso

Ou // Or
Valor Entrada 01

Verdadeiro

Verdadeiro

Falso

Falso

Valor Entrada 02
Verdadeiro
Falso
Verdadeiro
Falso

chave 2

Resultado
Verdadeiro
Verdadeiro
Verdadeiro
Falso

lmpada

bateria

lgica ou

Simulao dos operadores


E e OU

1.5. Comandos
Uma ao para o computador definida com um comando que executa determinada operao (mostrar os dados e realizar um clculo, por exemplo). Essas
aes sero representadas nos pseudocdigos por meio de expresses predefinidas na lgica computacional.

Comando Escreva()
Tabela 4

operadores lgicos
No / Not

Inverte o resultado de uma expresso

Retorna verdadeiro caso todas as

E / And


Ou / Or

28

condies retornem verdadeiro


Retorna verdadeiro quando uma das
condies retorna verdadeiro

utilizado para mostrar a sada de dados (figura 3), ou seja, quando uma mensagem ou resultado de uma operao dever ser exibida ao usurio. Para que
seja possvel a visualizao do dado, alguns cuidados so fundamentais: as expresses devem aparecer entre aspas, exceto as variveis e valores (inteiros ou
flutuantes).

Escreva(bom dia)

valor 10

Escreva(valor)

Escreva(56)

Figura 3
Comando Escreva().
Mensagem ou
varivel

29

Informtica 4

captulo 1

O pseudocdigo a seguir representa um exemplo mais completo, assim como o


fluxograma, na sequncia (figura 4):

Programa exemplo_escreva

Declare

nome como caractere

mdia, nota1, nota2 como flutuante

Inicio

nome Fulaninho

nota1 10.0

nota2 2.0

media (nota1 + nota2)/2

Ao contrrio do comando Escreva(), o Leia() permite a insero de dados pela


interao com o usurio. Eles sero armazenados em variveis devidamente definidas (figura 5).
Figura 5

Leia(nome)

Leia(nota1)

Leia(nota2)

Leia(temp)

Entrada de Dados.

Entrada de dados

Ao realizar uma entrada de dados, o ideal que o usurio seja notificado sobre
o tipo de informao que dever ser inserida. Veja como:

Escreva(Sua nota final :)

Escreva(mdia)

Fim

Figura 4
Fluxograma Escreva.
Incio

nome como caractere


mdia, nota1, nota2 como
flutuante

nome Fulaninho
nota1 10.0
nota2 2.0

mdia (nota1+nota2)/2

30

Comando Leia()

Fim

mdia

Sua nota
final

Programa exemplo_leia

Declare

nome como caractere

mdia, nota1, nota2 como flutuante

Incio

Escreva(calculando a mdia)

Escreva(Qual o seu nome?)

Leia(nome)

Escreva(Qual a sua nota 1?)

Leia(nota1)

Escreva(Qual a sua nota 2?)

Leia(nota2)

media (nota1 + nota2)/2

Escreva(Sua mdia final :)

Escreva(media)

Fim

31

Informtica 4

captulo 1

Observe na figura 6, a mesma representao, no formato de fluxograma:

No prximo exemplo, para estabelecer a condio vamos utilizar os operadores


lgicos j vistos.

Qual a sua
nota 1

Incio

nome como caractere


mdia, nota1, nota2
como flutuante

nota1

Se (mdia >= 7.00) Ento

mdia

Escreva(Voc est aprovado!!!! )

Fim-Se

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


nome

Qual a sua
nota 2

Sua mdia
final

Fim

Podemos organizar o comando Se(), para criar desvios condicionais de verdadeiro ou falso no mesmo teste (figura 8):
Figura 8


Calculando a
mdia

Qual o seu
nome?

nota2

Se...Seno...Fim-Se.

Se (condio) Ento
{comando(s) condio verdadeira}

mdia =

(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 atividades de forma sequencial. Mas, s vezes, devemos definir 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 (figura 7).

Figura 7
Se...Fim-Se.

No

Como ficaria a repetio do teste com a varivel mdia.


Se (condio) Ento

Fim-Se

Sim

Escreva(Voc est aprovado!!!! )

Seno

32

Se (media >= 7.00) Ento

{comando(s)}

Sim

Escreva(Voc est reprovado!!!! )

Fim-Se

33

Informtica 4

captulo 1

Figura 9

Vamos organizar todo o pseudocdigo, apresentando-o, tambm, no formato


de fluxograma (figura 9).

Programa exemplo_teste

Declare

nome como caractere

media, nota1, nota2 como flutuante

Incio

nome como caractere


mdia, nota1, nota2
como flutuante

Calculando
a mdia

Qual o seu
nome?

Qual a sua
nota 02?

nota1

Qual a sua
nota 01?

nome

nota2

(nota1 + nota2)/2

Sua mdia
final

mdia

mdia =

Incio

Aprovado
Fim

Fim do
programa

Sim

mdia >=7.00

Escreva(calculando a mdia)

Escreva(Digite o seu primeiro nome.)

Leia(nome)

Escreva(Qual a sua nota 01?)

Leia(nota1)

Escreva(Qual a sua nota 02?)

Leia(nota2)

Em alguns momentos, haver necessidade de testar a mesma varivel diversas


vezes, como acontece no menu de opes. Para isso, utilizamos o comando Selecione Caso da seguinte forma (figura 10):

mdia (nota1 + nota2)/2

Selecione Caso {varivel}

Escreva(Sua nota final :)

Caso condio 01

Escreva(mdia)

Fim

Escreva(Aprovado)

Seno

Reprovado

No

Estrutura de deciso
Selecione Caso...Seno...Fim-Selecione

Se (media >= 7.00) Ento

34

Exemplo de teste.

Escreva(Reprovado)

Fim-Se

Escreva(Fim de programa)

{comando(s)}

Sim
No

{comando(s)}

Seno

{comando(s)}

Caso condio 03

Selecione Caso.

Caso condio 02

Figura 10

Sim

{comando(s)}

Fim-Selecione

35

Informtica 4

captulo 1

preciso descobrir, em determinada situao, se o usurio escolheu os nmeros


1, 2 ou 3. Qualquer outro diferente, dever gerar a mensagem nmero invlido (figura 11):

Leia(nmero)

Figura 12
Para <varivel> = <vlr.inicial> At <vlr.final> Passo <arg> Faa

Caso 1

Escreva(Voc escolheu o nmero 01)

Para...Fim-Para.

{comando(s)}

Fim-Para

Caso 2

Cont = Inicial at
Final

Escreva(Voc escolheu o nmero 02)

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

Escreva(x) // Sero visualizados os nmeros: 1,2,3,4 e 5.

Fim-Para

Selecione caso.

No

nmero

Alm dos desvios sequenciais, possvel criar desvios em loop, ou seja, repetir
trechos do algoritmo sobre determinada condio e controlar a forma com que
os loops sero executados. O comando Para...Fim-Para permite que uma varivel
realize a contagem do nmero de loops a executar, conforme a indicao inicial
e final dessa contagem (figura 12), e tambm identifique o formato em que essa
tarefa ser realizada.

Selecione Caso nmero

Estrutura de repetio Para...Fim-Para

01

No

Voc escolheu
o nmero 01

No

03

02
Sim


Para num = 3 At 6 Faa

Escreva(num) // Sero visualizados os nmeros: 3,4,5 e 6.

Fim-Para

Sim

Voc escolheu
o nmero 02

Sim

Voc escolheu
o nmero 03

Nmero
invlido


Para vlr = 0 At 10 Passo 2 Faa

Escreva(vlr) // Sero visualizados os nmeros: 0,2,4,6,8 e10.

Fim-Para


Para cont = 3 At 0 Passo -1 Faa

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

Fim-Para

36

37

Informtica 4

captulo 1

Figura 13
Enquanto...
Fim-Enquanto.

Estrutura de repetio Enquanto...Fim-Enquanto

Estrutura de repetio Repita...At que

Assim como o comando Para...Fim-Para permite realizar loop, a instruo Enquanto...Fim-Enquanto executa o mesmo processo (figura 13). Mas preciso
lembrar que esse comando no realiza a contagem automaticamente. Por isso,
necessrio implementar um contador de passos.

O comando Repita tem a mesma finalidade do comando Enquanto, quando


o assunto funcionalidade. A nica diferena a localizao da condio de
teste, que ocorre no final da cadeia de loop (figura 14), garantindo a execuo
dos comandos no mnimo uma vez.


Enquanto (condio) Faa

{comando(s)}

Fim-Enquanto


Repita

{comando(s)}

At que (condio)

Figura 14
Repita...Fim-Repita.

Condio
comando(s)

Comando(s)
Repita (condio)

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


comando Enquanto.

x1

Enquanto (x<=5) Faa

Escreva(x) // Sero visualizados os nmeros: 1,2,3,4 e 5.

xx+1

Fim-Enquanto

num 3

Enquanto (num <=6) Faa

Escreva(num) // Sero visualizados os nmeros: 3,4,5 e 6.

num num + 1

Fim-Enquanto

vlr 0

Enquanto (vlr <=10) Faa

Escreva(vlr) // Sero visualizados os nmeros: 0,2,4,6,8 e 10.

vlr vlr + 2

Fim-Enquanto

cont 3

Enquanto (cont >=0) Faa

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

cont cont -1

Fim-Enquanto

38


x1

Repita

Escreva(x) // Sero visualizados os nmeros: 1,2,3,4 e 5.

xx+1

At que (x<=5)


num 3

Repita

Escreva(num) // Sero visualizados os nmeros: 3,4,5 e 6.

num num + 1

At que (x<=6)

vlr 0

Repita

Escreva(vlr) // Sero visualizados os nmeros: 0,2,4,6,8 e 10.

vlr = vlr + 2

At que (vlr <=10)


cont 3

Repita

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

cont cont -1

At que (cont >=0)

39

Informtica 4

captulo 1

1.6. Vetor
Definido tambm como matriz unidimensional, um vetor (tabelas 6 e 7) uma
varivel que possui vrios dados, acessados por meio de uma posio relativa,
seguindo a mesma regra da concepo e atribuio das variveis.
Tabela 6
Vetor de Letras.

J G

10


Programa vetores

Declare

vet como conjunto[1..5] de inteiro

Incio

vet[1] 90

vet[2] 1

vet[3] 100

vet[4] 4 - 1

vet[5] 21

Fim
Para realizar o acesso posio de um vetor, preciso identificar a posio que
est entre os sinais de [], logo aps o nome do vetor:

Tabela 7
Vetor de Nmeros.

10

10

56

-4

60

99

-10

Escreva(vet[3])

Leia(vet[2])

Trabalhando com vetor


No exemplo anterior, podemos verificar que cada elemento de um vetor caracterizado por uma posio relativa. Observando o vetor de letras, teremos:

Posio 1 valor A

Posio 5 valor R

Posio 8 valor Q

A entrada de dados em um vetor realizada por intermdio de seu identificador. Para isso, utiliza-se um contador crescente ou decrescente, de acordo com
a necessidade. Vamos carregar 10 informaes numricas dentro de um vetor.

vet como conjunto[1..10] de inteiro

Para i = 1 At 10 Faa

Escreva(Digite um valor na posio, i, do vetor)

Leia(vet[i])

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

Em um pseudocdigo, realizamos a declarao de um vetor da seguinte forma:



Programa vetores

Declare

vet como conjunto[n..n1] de <tipo>

Incio

{comandos ou bloco de comandos}

Fim
O nome do vetor representado pela expresso vet, cujo conjunto de informaes identificado por n, posio inicial, e n1, posio final, ou seja,
um vetor de 10 posies poder ser representado como [1..10]. E o tipo de
informao que este vetor dever receber.
40


Para i = 1 At 10 Faa

Escreva(Valor da posio:, i, do vetor , vet[i])

Fim-Para
Vamos reunir os conceitos de leitura e impresso no mesmo algoritmo.

Programa vetor_dados

Declare

vet como conjunto[1..10] de inteiro

i como inteiro

Incio

Para i = 1 At 10 Faa

Escreva(Digite um valor na posio, i, do vetor)

41

Informtica 4

captulo 1


Leia(vet[i])

Fim-Para

Para I = 1 At 10 Faa

Escreva(Valor da posio:, i, do vetor , vet[i])

Fim-Para

Fim
Outro exemplo para analisar:

Programa mdia

Declare

vetor como conjunto[1..8] de inteiro

soma, mdia como flutuante

ct como inteiro

Incio

soma = 0

Para ct = 1 At 8 Faa

Escreva(Digite um valor na posio, ct, do vetor)

Leia(vetor[ct])

soma soma + vetor[ct]

Fim-Para

mdia soma / 8
---- ou ---- mdia soma / ct

Escreva(A mdia final :, mdia)

Fim

1.7. Matriz
A matriz, ao contrrio do vetor, multidimensional. Nesse caso, os dados so
armazenados ou lidos de acordo com a relao entre os eixos, e seu ndice representado por dois ou mais valores. Uma matriz 3x2, por exemplo, possui trs
linhas por duas colunas. Portanto, qualquer referncia aos dados dever apontar
para ambas as posies da forma matriz[2,1], indicando que a informao referenciada est na linha 2 e na coluna 1 da matriz. Graficamente, tem-se:

matriz[2,1]

1
2
1 9 20
2 10 6
3 2 11

matriz 3x2

Para implementao, realizamos a declarao da matriz da seguinte forma:




42

Programa matriz
Declare


mat como conjunto[1..5][1..3] de inteiro

Incio

{comando ou bloco de comandos}

Fim
Assim como os vetores, para a atribuio de valores em uma matriz, devemos
identificar a linha e a coluna.

Programa matriz

Declare

mat como conjunto[1..2][1..2] de inteiro

Incio

mat[1,1] 19

mat[1,2] 2

mat[2,1] 77

mat[2,2] 16

Fim

Trabalhando com matriz


A leitura e a impresso das matrizes seguem o mesmo esquema dos vetores. Mas
ser necessrio utilizar dois contadores: um para identificar a linha e outro, para
coluna. Vejamos o exemplo de uma matriz 2x2.

Programa matriz

Declare

matriz como conjunto[1..2][1..2] de flutuante

lin, col como inteiro

Incio

Para lin = 1 At 2 Faa

Para col = 1 At 2 Faa

Escreva(Linha, lin, da matriz)

Escreva(Coluna, col, da matriz)

Escreva(Qual o valor?)

Leia(matriz[lin,col])

Fim-Para

Fim-Para

Escreva(Visualizando os dados da matriz:)

Para lin = 1 At 2 Faa

Para col = 1 At 2 Faa

Escreva(Linha, lin, da matriz)

Escreva(Coluna, col, da matriz)

Escreva(O valor :)

Escreva(matriz[lin, col])

Fim-para

Fim-para
Fim
43

Informtica 4

captulo 1

Outro exemplo:

Programa soma

Declare

a,b,c como conjunto[1..8][1..4] de flutuante

ln, cl como inteiro

Incio

Para ln = 1 At 8 Faa

Para cl = 1 At 4 Faa

Escreva(Digite o valor para a Matriz A:)

Leia(a[ln, cl])

Escreva(Digite o valor para a Matriz B:)

Leia(b[ln, cl])

Escreva(Valores somados para a Matriz C:)

c[ln, cl] = a[ln, cl] + b[ln, cl]

Escreva(c[ln, cl])

Fim-Para

Fim-Para

Fim

1.8. Programao modular


Uma das tcnicas bem empregadas para o desenvolvimento de programas a
modulao de parte do cdigo. Isso significa que o programa principal quebrado em partes menores. E cada parte representa uma unidade funcional. Essas
sub-rotinas so identificadas como procedimentos ou funes. Permitem que
parte do cdigo seja reaproveitada em outra parte do cdigo principal ou, at
mesmo, em projetos diferentes, por outros programadores.

Procedimento
Um procedimento, assim como o programa principal, formado por toda a estrutura 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
retorna ao programa principal.

Procedimento nome-do-procedimento ( parmetro:tipo )

Declare {variveis}

{comando ou bloco de comando

Fim-Procedimento
O nome-do-procedimento faz a identificao do programa e por essa expresso que ele ser referenciado. Logo aps essa etapa, encontramos os parmetros e a definio de seu tipo, os quais representam variveis que recebero
valores no momento da chamada. Assim como o cdigo principal, o procedimento possui as variveis locais de manipulao de dados e os comandos
necessrios para a sua execuo.
44


Programa procedimento

Declare

op como caractere

Procedimento bomdia

Escreva(Bom dia!!!!!)

Fim-procedimento

Incio

Escreva(Deseja ver nossa mensagem? (S/N))

Leia(op)

Se op = S Ou op = s Ento

bomdia
// chamada ou procedimento

Fim-Se

Fim

Variveis locais ou globais


As variveis locais so consideradas apenas em uma sub-rotina (procedimento
ou funo). Dessa forma, so desconhecidas pelo algoritmo principal, ao contrrio das globais, que so consideradas por todo o algoritmo.

Programa tipos_variveis

Declare

a, b como INTEIRO // so variveis do tipo global

Procedimento teste

Declare

x, y como inteiro // so variveis locais

// esta rea reconhece (a),(b),(x) e (y)

Fim-procedimento

Incio

// esta rea reconhece (a) e (b).

Fim

O quadro em seguida mostra o campo de visualizaes das variveis, conforme


o pseudocdigo apresentado anteriormente.

Programa tipos_variaveis
Visualizao das variveis
(a) e (b)

Procedimento teste
Visualizao das variveis (a),(b),(x) e (y)

Acompanhe um exemplo para o clculo da rea do quadrado usando o procedimento.


45

Informtica 4

captulo 1

Funo

Programa quadrado

Declare

op como caractere

Procedimento quadrado

Declare

lado, rea como inteiro

Escreva(Digite um nmero inteiro:)

Leia(lado)

rea lado * lado

Escreva(A rea do quadrado :, rea)

Fim-Procedimento

Incio

Escreva(Gostaria de saber a rea de um quadrado (S/N)?)

Leia(op)

Se op = S Ou op = s Ento

quadrado

Fim-Se

Fim

Passagem de parmetro
A passagem de parmetros por valor utilizada para que as sub-rotinas possam
receber informaes e realizar qualquer tipo de manipulao fora do pseudocdigo principal.

Programa quadrado

Declare

op como caracter

lado como inteiro

Procedimento quadrado (ld como inteiro)

Declare

area como inteiro

rea ld * ld

Escreva(A rea do quadrado :, area)

Fim-Procedimento

Incio

Escreva(Gostaria de saber a rea de um quadrado (S/N)?)

Leia(op)

Se op = S Ou op = s Ento

Escreva(Digite o valor:)

Leia(lado)

quadrado(lado)


Fim

46

Uma funo tem as mesmas caractersticas estruturais de um procedimento, no


que diz respeito a fatores como funcionalidade, visualizao de variveis e chamadas. Mas a sua principal vantagem a possibilidade de retorno de valores em
tempo real. Isso quer dizer que, quando chamamos determinada funo, podemos receber valores em tempo real, armazenando o resultado em uma varivel.

Funo nome-da-funo ( parmetros:tipo ) : <tipo-de-retorno>

Declare {variveis}

{comando ou bloco de comandos}

Fim-Funo
Diferentemente do procedimento, preciso fazer a identificao do tipo de valor
a ser retornado.

Programa quadrado

Declare

op como caractere

lado como inteiro

Funo quadrado (ld como inteiro): inteiro

Declare

rea como inteiro

rea ld * ld

Fim-Funo

Incio

Escreva(Gostaria de saber a rea de um quadrado (S/N)?)

Leia(op)

Se op = S Ou op = s Ento

Escreva(Digite o valor:)

Leia(lado)

Escreva(A rea do quadrado :)

Escreva(quadrado(lado))

Fim-Se

Fim

Fim-Se

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

estrutura de dados define de que maneira os tipos primitivos


sero organizados (FORBELLONE, 2005): por meio de lista,
pilhas, filas 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 identificao e ao desenvolvimento de modelos para a resoluo de problemas. Na prtica,
significa criar representaes concretas que podem atuar sobre modelos.

2.1. Lista encadeada


Um espao de memria reservado para os dados, quando so inseridos em uma
lista encadeada. Ento, o espao ocupado por uma lista, na memria, expresso
pela quantidade de elementos contidos ali dentro. Para que se possa percorrer
todos os elementos, deve-se armazenar junto a cada um deles um ponteiro
que indique o elemento seguinte (figura 15).

Figura 16
Insero de elemento.

Cada elemento da lista identificado como um n. Utilizam-se os ponteiros para


percorrer todos os ns da lista. O ltimo elemento dever apontar para NULL
(em linguagem de programao de computador, a palavra usada para se referir
a um dispositivo nulo). Para a criao de uma lista, considera-se o primeiro ponteiro existente. Uma lista vazia deve ser criada com o ponteiro indicando NULL,
permitindo inseres no final. Essa lista deve ser alocada em uma posio de
memria, com encadeamento para o prximo elemento (figura 16).
Retirar um elemento da lista um processo um pouco mais complexo, pois
podemos encontrar diferentes situaes, como eliminar o primeiro elemento da
lista ou um elemento intermedirio (figura 17).
Outras funes agregadas s listas so: busca de elementos e verificao para
saber se ela est vazia ou no.

Figura 17
Eliminao de um elemento.

Figura 15
Lista encadeada.

incio

50

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

51

Informtica 4

captulo 2

Figura 18
Lista circular.

INFO 001 II posio 01

25
15

INFO 002 II posio 02

40
15

15

10
INFO 003 II posio 03

Tabela 8

2.4. Pilhas

Em uma lista circular o ltimo elemento dever apontar para o primeiro (figura
18). Para percorrer a lista preciso visitar todos os seus elementos, a partir de um
ponteiro inicial, at chegar a ele novamente. Caso o ponteiro inicial seja NULL,
a lista ser considerada vazia.

A pilha uma estrutura bem simples, muitas vezes encontrada dentro do hard
ware. A ideia acessar o primeiro elemento a partir do topo da pilha. Assim, um
novo elemento inserido na pilha vai direto para o topo e, logicamente, o nico
que pode ser retirado. Portanto, o primeiro que sai o ltimo que entrou. Temos, nesse caso, o LIFO (do ingls last in, first out, ou ltimo dentro, primeiro
fora). H duas operaes bsicas, para trabalhar com as pilhas: push (empilhar)
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 duplamente encadeada so dois ponteiros: um mostrando o elemento seguinte e
outro, o anterior. A partir de um elemento podemos acessar ambos os lados
(figura 19).

Outra estrutura a fila, que apresenta a ordem de sada dos elementos de


forma diferente do que acontece em uma pilha. Na fila, o primeiro elemento
que entra o primeiro a sair: FIFO (first in, first out, ou seja, primeiro dentro,
primeiro fora). possvel inserir um novo elemento no final da fila e retirar o
primeiro (tabela 9).

2.2. Lista circular

Figura 19
Lista duplamente
encadeada.

INFO 001 II posio 01

INFO 001 II posio 01

INFO 001 II posio 01

II posio 02

II posio 02

II posio 02

Tabela 9
Entrada e sada
de uma fila.

10
20

35

10

20
10

52

Push e pop
em uma pilha.

15

10
15

15

20

35

53

Informtica 4

captulo 2

Figura 20

Figura 22

rvore e
seus ns.

Esquema da
rvore Binria.

raiz

2.6. rvores
Os tpicos anteriores representam a disposio de dados lineares. As rvores,
por sua vez, permitem que os dados sejam dispostos de forma hierrquica, como
uma estrutura de diretrios. Toda rvore possui um n r, denominado raiz.
Os demais ns so identificados como internos ou filhos (figura 20).

rvores binrias

sae

sad

Na rvore binria cada n tem zero, um ou, no mximo, dois filhos. Ento,
possvel definir uma rvore binria como vazia ou um n raiz com duas subrvores uma na direita (sad) e outra na esquerda (sae) (figura 22).

rvore genrica
Na rvore binria h restrio quanto ao nmero de ns: no mximo dois. Esse
limite no acontece nas rvores genricas (figura 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 (figura 21).
Figura 21
rvore binria.

54

55

Captulo 3

Criao de
pginas Web
Identificao 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 respectivas regras, conforme se pode observar na sequncia:
HTML 4.01 Transacional: possui toda a qualidade do HTML 4.01. Porm
usa elementos desaprovados ou obsoletos.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//
ENhttp://www.w3.org/TR/html4/loose.dtd>

HTML (iniciais da expresso em ingls HyperText Markup


Language ou Linguagem de Marcao de Hipertexto) vem
sendo utilizado para o desenvolvimento de pginas da internet
desde a sua concepo no Conselho Europeu de Pesquisas Nucleares, o CERN
(em ingls, European Council for Nuclear Research), em 1991. Divulgada em
dezembro de 1999, a ltima especificao do W3C (Word Wide Web Consortium ou Consrcio da Rede de Alcance Mundial) recomenda a verso 4.01
como padro de desenvolvimento do HTML, que sofreu nova reformulao
com base na estrutura de documentos XML (Extensible Markup Language).
Surgiu, assim, o XHTML (eXtensible HyperText Markup Language ou Linguagem de Marcao de Texto Extensvel), considerada o novo padro de desenvolvimento web.

Pgina de HTML do
Centro Paula Souza.

DICA

Para validar o tipo de


documento que est
sendo desenvolvido,
utilize o validador do
W3C no link: http://
validator.w3.org/.

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


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

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

XHTML 1.0 Frameset: usa molduras (FRAMES) e tambm transitrio.


<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Frameset//
ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd>

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

O W3C

Fundado em 1994,
o W3C (World Wide
Web Consortium)
ou Consrcio da
Rede Mundial de
Computadores)
formado por empresas
de tecnologia
de diferentes partes
do mundo
que trabalham
para criar padres
e diretrizes para
a interpretao de
contedos da web.
O grupo desenvolve
protocolos, promove
fruns abertos, entre
outras aes. Mais
informaes podem
ser obtidas no site
http://www w3c.br.

O documento HTML ou XHTML recebe as extenses .htm ou .html, associadas aos navegadores.
58

59

Informtica 4

captulo 3

3.2. Estrutura do documento


Para indicar as marcaes do documento, denominadas tag, devemos utilizar os
sinais de < e >. Para que ele seja validado, deve ter a seguinte estrutura bsica:

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


Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
<title>Ttulo do Documento</title>
</head>
<body>
</body>
</html>
DOCTYPE: 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.
HEAD: nessa tag, sero inseridas informaes como ttulo, palavra-chave, tipo
de caractere etc.
META: define informaes complementares, tais como: o tipo de documento e
da verso de caracteres utilizada. No Brasil, devemos adotar o cdigo iso-88591, que representa o conjunto de caracteres dos pases latinos.
TITLE: a informao que aparece na aba do navegador (figura 24).
BODY: o corpo da pgina, onde sero inseridas as demais tags de marcao.
O importante para os padres XHTML no deixar nenhuma tag aberta. Ou
seja, <body> abre e </body> fecha, assim como as tag isoladas. Por exemplo, o
<br> para o HTML e <br/> para o XHTML.

3.3. Formatao
As pginas devem ser criadas conforme as recomendaes do W3C, evitando,
principalmente na formatao, o uso de tags desaprovadas. Portanto, deve-se

utilizar o CSS (Cascading Style Sheet ou Estilo Pginas em Cascata), para fazer
a formatao correta do documento. A insero dessa formatao realizada por
meio da tag <style> e poder ser aplicada em trs nveis diferentes:
Nvel Local quando h necessidade de formatar uma tag especial.
Nvel Geral quando as formataes sero usadas em todo o documento.
Nvel Global quando possvel associar os estilos de formatao com
outros documentos ou projetos.
Todas as aplicaes so corretas e nada impede o uso dos trs mtodos no mesmo documento.

Regras

Escreva todas
as tags e atributos
em letras minsculas
e os atributos
entre aspas.

Tag uma palavra-chave (relevante) associada a uma informao, que muito comum na linguagem de programao de computador. possvel atribuir
propriedades de formatao s tags, que devero estar entre {}, observando
{propriedade:valor}. Se houver mais de uma declarao, deve-se separ-las por ;



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

No estilo determinado para a tag <body>, duas propriedades foram selecionadas: a cor de fundo estilo skyblue e a cor amarela das letras (figura 25).

Formatao de nvel local


Para a formatao diretamente na tag, devemos utilizar a tag <style> e os parmetros de formatao entre aspas. O resultado pode ser observado na figura 26.

<body style=background:skyblue>
Figura 25
Regras de formatao.

Figura 24
Ttulo do
documento.

60

61

Informtica 4

captulo 3

Figura 26

No exemplo anterior, a tag <link> identifica o documento a ser adicionado ao


documento principal, no caso, o estilo.css. Veja o cdigo a seguir:

Formatao na tag.

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

Formatao de nvel geral


A tag <style> deve ficar no incio do documento e conter todos os parmetros
de formatao.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=utf-8>
<title>Formao No Documento</title>
<style type=text/css>
body {background:skyblue}
</style>
</head>
<body>
Minha Primeira Pgina em HTML
</body>
</html>

Formatao de nvel global


Nesse caso, devemos criar dentro do documento HTML um link (cdigo abaixo) para identificar um documento de formatao CSS.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=utf-8>
<title>Formatao com Arquivo Externo</title>
<link href=estilo.css rel=stylesheet type=text/css>
</head>
<body>
Minha Primeira Pgina em HTML
</body>
</html>

62

Classes e identificadores
As classes permitem que vrios estilos sejam aplicados na mesma tag. Dessa
forma, devemos colocar o class junto tag.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
<title>Utilizao de Classes</title>
<style type=text/css>
p.um {background:blue;
color:yellow}
p.dois {background:yellow;
color:blue}
</style>
</head>
<body>
<p class=um> Minha pgina, usando a classe um </p>
<p class=dois> Minha pgina, usando a classe dois </p>
</body>
</html>
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 figura 27.
Usamos os identificadores quando no queremos vincular a formatao a
uma determinada tag. Os identificadores so nomes definidos pelos programadores, geralmente associados ao estilo de formatao a ser utilizada.
Figura 27
Classes em CSS.

63

Informtica 4

captulo 3

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


Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>
<title>Utilizao de Identificador</title>
<style type=text/css>
#titulo {color:red}
#texto {color:blue}
</style>
</head>
<body>
<div id=titulo> HTML </div>
<div id=texto> Minha Primeira Pgina em HTML</div>
</body>
</html>

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
do identificador. O resultado pode ser conferido na figura 28.
O programador pode utilizar classe ou identificador. No h restries. O importante seguir as especificaes corretas para o desenvolvimento de um documento padronizado e validado pelo W3C.

<p> Minha Primeira pgina HTML <br> Na Linha de Baixo </p>

Se no tivermos a formatao de texto includa, o resultado ser o texto padro


do navegador (figura 29).
Figura 29
Texto padro.

Fonte
Uma fonte de letra poder ser modificada conforme a sua famlia (Verdana,
Arial, Times etc.), tamanho, estilo (itlico, regular, etc.) e peso (negrito).

Font-Size
Este tpico indica o tamanho da fonte, definido com base em determinada
unidade de medida. As unidades mais comuns para os padres web so pontos
(pt) e pixel (px).

Figura 28
Identificador.

3.4. Texto
A insero de texto realizada diretamente no corpo do documento, geralmente
utilizando a tag <p> </p> para identificar o incio e o fim do pargrafo respectivamente. Por exemplo:

<p> Minha Primeira Pgina HTML </p>

Outra tag que dever ser levada em considerao a <br>, que realiza a quebra
automtica do texto para outra linha.
64

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


Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=utf-8>
<title>Formatao de Texto</title>
<style type=text/css>
#titulo {font-size:12pt}
#texto1 {font-size:12px}
#texto2 {font-size:10px}
</style>
</head>
<body>
<div id=titulo>Formatando Fontes </div>
<div id=texto1>Texto usando a primeira formatao </div>
<div id=texto2>Texto usando a segunda formatao </div>
</body>
</html>

65

Informtica 4

captulo 3

Para o identificador ttulo, a referncia est em pontos. E para os demais, em


pixel. Observe que os dois primeiros identificadores tm o mesmo tamanho,
mas o resultado final mostra diferenas (figura 30).
Figura 30
Font-Size.
A expresso acessibilidade
refere-se possibilidade
de qualquer pessoa,
independentemente de suas
capacidades fsico-motoras
e perceptivas, culturais
ou sociais, usufruir dos
benefcios de uma vida em
sociedade. Acessibilidade
na web, ou e-acessibilidade,
refere-se especificamente
ao direito de ingressar na
rede sem qualquer tipo
de barreira arquitetnica,
seja na arquitetura dos
equipamentos e programas,
na linguagem adotada ou
no visual das informaes.
Dentro desse conceito surgiu
o WAI (Web Accessibility
Initiative ou Iniciativa para
Acessibilidade na Rede),
um projeto internacional
criado por grupos de pessoas
dedicadas a desenvolver
condies especficas para
que todos tenham acesso
internet (ambiente,
equipamento, navegador,
ferramentas etc.).

Font-Family
preciso escolher com cuidado o tipo de letra a ser utilizado. As fontes menos comuns podem at ser bonitas, mas tambm so as que mais tm chance de provocar
a desconfigurao visual de um projeto. Portanto, procure utilizar fontes-padro
e, de preferncia, de boa visualizao, seguindo as normas de acessibilidade.
Um recurso interessante para a definio das fontes a criao de uma lista. Se
no acharmos a primeira fonte listada, partimos para a segunda, e assim sucessivamente. Se no encontrarmos nenhuma fonte, a alternativa recorrer fontepadro do navegador. Nesse caso, o resultado ser outro (figura 31).
<style type=text/css>
#titulo {font-size:12pt;
font-family:Geneva, Arial, Helvetica, sans-serif}
#texto1 {font-size:12px;
font-family:Arial, Helvetica, sans-serif}
#texto2 {font-size:10px;
font-family:Times New Roman, Times, serif}
</style>

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


Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>
<title>Formatao de Texto</title>
<style type=text/css>
#titulo {font-size:12pt;
font-family:Geneva, Arial, Helvetica, sans-serif}
#texto1 {font-size:12px;
font-family:Arial, Helvetica, sans-serif}
#texto2 {font-size:10px;
font-family:Times New Roman, Times, serif}
.estilo {font-style: italic;
font-size:20px}
</style>
</head>
<body>
<div id=titulo>Formatando <span class=estilo>Fontes </span></div>
<div id=texto1>Texto usando a primeira formatao </div>
<div id=texto2>Texto usando a segunda formatao </div>
</body>
</html>

Dica

Utilize a tag
<div> quando for
trabalhar com os
identificadores
e a tag<span>
para as classes.

A figura 32 mostra o resultado final.


Figura 32
Font-Style.

Figura 31
Font-Family.

Font-Weight

Font-Style
Um dos estilos mais usados o itlico. Aqui, vamos usar uma classe na tag
<span> para a ativao.
66

A expresso identifica o peso da fonte e notado quando utilizamos determinada fonte em negrito. Para efeito de comparao, uma fonte normal tem valor
400 e seu negrito, 700. Mas esses valores podem sofrer mudanas conforme as
famlias de fontes escolhidas. Os valores mais comuns so 100, 200, 300, 400,
500, 600, 700, 800 e 900. Fazendo algumas modificaes no exemplo anterior,
podemos obter outro resultado (figura 33).
67

Informtica 4

captulo 3

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

O resultado final pode ser conferido na figura 34.


Figura 34
Text-Decoration.

Figura 33
Font-Weight.

Text-Transform
Modifica a configurao da letra diferenciando caracteres maisculos de minsculos.

Text-Decoration
O Text-Decoration, ou decorao de texto, representado por uma linha junto ao
texto. O mais comum o sublinhado, usado em palavras que indicam um link.
Nesse exemplo, vamos incorporar uma facilidade do CSS, que a formatao de
vrios identificadores em uma nica linha, e depois formataes especficas.

<!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>
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN

http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Formatao de Texto</title>
<style type=text/css>
#estilo1, #estilo2, #estilo3, #estilo4 {font-size:15pt}
#estilo1 {text-decoration: line-through}
#estilo2 {text-decoration: none}
#estilo3 {text-decoration: overline}
#estilo4 {text-decoration: underline}
</style>
</head>
<body>
<div id=estilo1>Texto Decorado - Estilo 01</div>
<div id=estilo2>Texto Decorado - Estilo 02</div>
<div id=estilo3>Texto Decorado - Estilo 03</div>
<div id=estilo4>Texto Decorado - Estilo 04</div>
</body>
</html>

68

<title>Formatao de Texto</title>

<style type=text/css>

#estilo1, #estilo2, #estilo3, #estilo4 {font-size:15pt}

#estilo1 {text-transform: capitalize}

#estilo2 {text-transform: lowercase}

#estilo3 {text-transform: none}

#estilo4 {text-transform: uppercase}

</style>

</head>

<body>

<div id=estilo1>Preste Muita Ateno nas Letras da Frase - Estilo 01</div>

<div id=estilo2>Preste Muita Ateno nas Letras da Frase - Estilo 02</div>

<div id=estilo3>Preste Muita Ateno nas Letras da Frase - Estilo 03</div>

<div id=estilo4>Preste Muita Ateno nas Letras da Frase - Estilo 04</div>

</body>

</html>

O resultado final (figura 35) mostra o efeito de capitalize para a primeira letra
de cada palavra em maiscula, lowercase para todas as minsculas, none para o
original e uppercase para todas as maisculas.
69

Informtica 4

captulo 3

Figura 35

Existe outra opo chamada vertical-align, que faz o alinhamento no topo,


no meio e na parte de baixo da pgina. Pode ser adotada quando o texto
estiver dentro de uma tabela. Os parmetros so, respectivamente: top,
middle e bottom.

Text-Transform.

3.5. Cores

Text-Align

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 conceito de harmonia das tonalidades, que podem ser identificadas por meio das
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.

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


Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Formatao de Texto</title>
<style type=text/css>
#estilo1, #estilo2, #estilo3 {font-size:15pt}
#estilo1 {text-align: center}
#estilo2 {text-align: left}
#estilo3 {text-align: right}
</style>
</head>
<body>
<div id=estilo1>Alinhado no Centro da Pgina - Estilo 01</div>
<div id=estilo2>Alinhado Esquerda da Pgina - Estilo 02</div>
<div id=estilo3>Alinhado Direita da Pgina - Estilo 03</div>
</body>
</html>

Conhecimento
das cores

#texto {color:blue}

Para obter mais opes de cores, podemos utilizar as referncias em hexadecimal, cujos valores representam o sistema RGB (do ingls Red, Green e
Blue, ou seja, vermelho, verde e azul). Cada par de valores em hexadecimal
representa a fora de um elemento no sistema RGB (tabela 10).
R

COR

DESCRIO

00

00

00

#000000

preto

FF

FF

FF

#FFFFFF

branco

FF

00

00

#FF0000

vermelho

CF

CF

CF

#CFCFCF

tonalidade de cinza

Tabela 10 Hexadecimal.
Nesse exemplo, o alinhamento serve de referncia para uma pgina da web (figura 36).
Figura 36
Text-Align.

A variao entre os valores de cada elemento em hexadecimal ir produzir


uma tonalidade de cor diferente.

70

A representao
hexadecimal das cores
foi adotada porque
a decimal fica muito
extensa. Se 0 igual
a 0 em hexadecimal,
10 equivale a A, 125 a 7D
e 255 a FF. A cor, assim,
pode variar de 00 a FF,
que so combinados para
se obter intensidade,
tonalidades. Como
o branco a mistura
de todas as cores,
representado por seis
F. J o preto, que
ausncia de cor (na
verdade, de reflexo de
luz), representa-se com
seis 0. bom lembrar
que o conhecimento das
cores remete a 1665. Foi
quando Isaac Newton,
aos 23 anos e de frias
foradas no campo
para fugir da peste
que assolava a Europa,
conseguiu separar as
cores da luz branca do
Sol por meio de um
prisma e algumas lentes.

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


acessando qualquer um dos sites de busca.

71

Informtica 4

captulo 3

3.6. Tabelas
A tabela um dos recursos mais usados para organizar as informaes em uma
pgina. Mas para mont-la precisamos de uma srie de marcaes que nos permitiro organizar a sua estrutura.
TABLE Identifica o incio e o fim da tabela.
TR Linhas da tabela.
TD Colunas da tabela.
TH Representa a coluna da tabela para ttulos, formatando o texto em
negrito.
A estrutura da tabela dever obedecer composio de suas linhas e colunas. O
exemplo da figura 37 mostra uma tabela 2x2.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Tabela</title>
</head>
<body>
<table border=1px>
<tr> <td> linha 01 - coluna 01 </td>
<td> linha 01 - coluna 02 </td> </tr>
<tr> <td> linha 02 - coluna 01 </td>
<td> linha 02 - coluna 02 </td> </tr>
</table>
</body>
</html>
Nesse primeiro momento de desenvolvimento interessante manter a borda da
tabela, porque facilita a verificao de sua estrutura (figura 37).
Figura 37
Tabela 2x2.

72

Outro efeito interessante pode ser obtido pela incluso de uma tabela dentro da
outra. Porm preciso observar a estrutura de cada uma delas para que no falte
nenhuma tag (palavra-chave) (figura 38).
<table border=1px>
<tr> <td>
<table border=1px>

<tr> <td> linha 01 - coluna 01 </td> </tr>

<tr> <td> linha 02 - coluna 01 </td> </tr>
</table>
</td>
<td>
<table border=1px>

<tr> <td> linha 01 - coluna 02 </td> </tr>

<tr> <td> linha 02 - coluna 02 </td> </tr>
</table>
</td></tr>
<tr> <td> coluna 01 </td>
<td> coluna 02 </td> </tr>
</table>
Figura 38
Tabelas internas.

Vamos associar a tabela aos recursos do CSS (Cascading Style Sheets ou Estilo Pginas
em Cascata), por meio das classes e dos identificadores, para formatao e alinhamento do texto, alm de aplicao de cores utilizando o exemplo anterior (figura 39).
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Tabela</title>
<style type=text/css>
table

{color: #0033CC}
td

{ text-align:center}
.coluna1
{background:#FF3300;


color:#FFFF00}

73

Informtica 4

captulo 3

#coluna2
{background: #33FF33;


color: #6633FF}
</style>
</head>
<body>
<table border=1px>
<tr> <td>
<table border=1px>
<tr> <td> linha 01 - coluna 01 </td> </tr>
<tr> <td class=coluna1> linha 02 - coluna 01 </td> </tr>
</table>
</td>
<td>
<table border=1px>
<tr> <td id=coluna2> linha 01 - coluna 02 </td> </tr>
<tr> <td> linha 02 - coluna 02 </td> </tr>
</table>
</td></tr>
<tr> <td style=font-size:24px> coluna 01 </td>
<td style=font-size: 8px> coluna 02 </td> </tr>
</table>
</body>
</html>

Figura 39
Tabela formatada.

No <style>, a coluna (TD) est defina como 350px. Se analisarmos a estrutura


da tabela, veremos que ela constituda por duas colunas. Portanto, a tabela ter
700px (2 x 350px de cada coluna) de comprimento. Mas, se verificarmos sua
definio, teremos 400px. O resultado final ser, ento, uma tabela de 400px.

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

Transitional//EN

http://www.w3.org/TR/html4/loose.dtd>

<html>

<head>

<meta http-equiv=Content-Type content=text/html;

charset=iso-8859-1>

<title>Tabela</title>

<style type=text/css>

table {text-align:center}

.coluna1 {width:200px}

coluna2 {width:400px}

</style>

</head>

<body>

<table border=1 width=600px>

<tr> <td class=coluna1> linha 01 - coluna 01 </td>

<td class=coluna2> linha 01 - coluna 02 </td> </tr>

<tr> <td> linha 02 - coluna 01 </td> <td> linha 02 -

tr {height:60px}

coluna 02 </td> </tr>

Tamanho da tabela, linha e coluna


A identificao de medidas para a tabela pode ser feita a partir dela mesma, da
linha ou da coluna. preciso ter cuidado, no entanto, para que uma medida
obtida no anule a outra. Veja o seguinte cdigo:

74

<style type=text/css>

td {width:350px}

</style>

</head>

<body>

<table border=1 width=400px >

<tr> <td> linha 01 - coluna 01 </td> <td> linha 01 - coluna 02 </td> </tr>

<tr> <td> linha 02 - coluna 01 </td> <td> linha 02 - coluna 02 </td> </tr>

</table>

</table>

</body>

</html>

Nesse exemplo, se somarmos as colunas, obteremos valores coerentes em relao


ao tamanho da tabela (200+400=600px). Outro ponto importante a formatao do tamanho da coluna, que deve ser feita somente na primeira linha, pois as
demais seguiro essa definio (figura 40).
Figura 40
Tabela tamanho.

75

Informtica 4

captulo 3

Estilo de bordas

3.7. Imagens

Ao utilizar o CSS, poderemos realizar diferentes aplicaes nas bordas das tabelas. Os exemplos abaixo mostram os diferentes efeitos em um nico cdigo.

Os navegadores esto habilitados para abrir diferentes tipos de imagens


(BMP, JPG, GIF, entre outros), alm de contar com os GIFs para pequenas
animaes existentes no site. Essas imagens podero ser inseridas pela tag
<img>, que, alm da incluso da imagem, oferece outros parmetros de formatao, como altura, largura e texto explicativo.

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


Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Tabela</title>
<style type=text/css>
table {background-color: #FFCC66;

width:500px;

border-style:solid;

border-top-width: 15px;

border-bottom-width: 5px;

border-left-width: 5px;

border-right-width: 10px;

border-top-color: #00CC00;

border-bottom-color: #3333FF;

border-left-color: #FFFF00;

border-right-color: #FF0000}
</style>
</head>
<body>
<table>
<tr> <td> linha 01 - coluna 01 </td> <td> linha 01 - coluna 02 </td> </tr>
<tr> <td> linha 02 - coluna 01 </td> <td> linha 02 - coluna 02 </td> </tr>
</table>
</body>
</html>
O resultado (figura 41) no est seguindo nenhum padro de design.

Dica: substitua o termo solid (slido) de border-style (estilo da


borda), pelas palavras: none (nenhuma), dotted (pontilhada), dashed
(tracejada), double (dupla), groove (encaixe ou ranhura), ridge
(serrilhado), inset (insero) ou outset (incio).

Figura 41

<img src=programador.jpg width=100px height=100px


alt=Programador> </img>

SRC: Indica o arquivo para visualizao (caminho do arquivo, nome completo


e extenso).
Width e Height: largura e altura da imagem.
ALT: permite incluir um texto alternativo caso a imagem no aparea no site.
Geralmente, as imagens so redimensionadas para um site, ou seja, raramente
elas aparecem em seu tamanho natural. Portanto, os valores de largura e altura
devero ser bem analisados para que no ocorra distoro na imagem.

BMP a
terminao usada
para a unidade
Bitmap, que
significa mapa de
bits. Nesse tipo de
representao, cada
ponto da imagem
associado a
um valor (no caso, o
bit). JPG (ou JPEG):
Joint Photographic
Experts Group
ou Grupo Reunido
de Especialistas
em Imagem.
GIF: Graphics
Interchange Format
ou Formato de
Intercmbio de
Grficos.

Vamos utilizar o cdigo a seguir para reproduzir uma imagem correta e outras
duas com distoro (largura e altura).
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Imagem</title>
</head>
<body>
<img src=programador.jpg width=100px height=100px
alt=Programador>
<img src=programador.jpg width=100px height=50px
alt=Programador>
<img src=programador.jpg width=50px height=100px
alt=Programador>
</body>
</html>

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

3.8. Links

Imagem distorcida.

Os links so responsveis pela navegabilidade entre as pginas da web. Permitem 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.
Programador

Para acessar links de outros sites, devemos informar toda a URL (Uniform Resource Locator ou Localizador de Recursos Universal), para que a pgina seja
localizada (figura 45).
Figura 45
Link para o
Centro Paula Souza.

Organizar os documentos que seguiro para um servidor da web para ser publicados 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>

Bordas na imagem
A aplicao de bordas na imagem ser feita pelo CSS diretamente na tag (figura 44).
<img src=../Imagens/programador.jpg width=100px
height=100px alt=Programador style=border:solid; border-
width:10px>
Figura 44
Imagem com borda.

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


Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Link</title>
</head>
<body>
<a href=http://www.centropaulasouza.sp.gov.br/>
Centro Paula Souza </a>
</body>
</html>

Links entre documentos


A boa navegabilidade no site determinada pelos links e pelas opes de retorno
ao ponto inicial. Esse caminho de volta pode ser feito pelo prprio navegador
ou por outros links.
78

79

Informtica 4

captulo 3

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


Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Link</title>
</head>
<body>
<p>Menu de opes</p>
<a href=pag_um.html> Pgina 01 </a> <br>
<a href=pag_dois.html> Pgina 02 </a>
</body>
</html>
O cdigo acima cria um menu de opes para o usurio, que poder escolher
entre duas pginas (figura 46).
Figura 46
Menu de usurio.

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


os links funcionem e sejam de fcil acesso. Por isso, devem ficar no mesmo diretrio do arquivo principal (menu.html) (figura 47).

Figura 47
Pgina 01.

Links para outros tipos de documentos


So utilizados, tambm, os links para indicar documentos para download, os
quais ficam automticos, caso o padro no seja web (figura 48).

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


Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Link</title>
</head>
<body>
<p>Lista de exerccio em HTML para prxima aula<p>
<a href=html.doc> Baixar </a>
</body>
</html>
Figura 48
Download.

<!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 intuitiva. H, porm, problemas recorrentes, como a eliminao das marcaes
do tipo ativo e visitado, normalmente representadas pela mudana de cores.
Outro obstculo enfrentado pelo internauta so as bordas das imagens acessadas
por meio de links. O cdigo a seguir apresenta uma soluo para esses problemas (figura 49).

Um formulrio usado para receber informaes do usurio. Esses dados, que


depois podero ser tratados por outra aplicao, como ASP, PHP ou Java, so
enviados por meio de dois mtodos:

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


Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Link</title>
<style type=text/css>
a:link {text-decoration:none}
a:visited {text-decoration:none}
a:active {text-decoration:none}
a:hover {text-decoration:none}
a img {border-width:0}
.texto {color:#33CC33}
</style>
</head>
<body>
<p>Lista de exerccio em HTML para prxima aula<p>
<a href=html.doc> <img src=../Imagens/down.png width=40px
height=35px alt=down></a> <br>
<a href=http://www.centropaulasouza.sp.gov.br/>
<span class=texto>Centro Paula Souza </span></a>
</body>
</html>
Figura 49
Link e imagem com
formatao CSS.

GET: as informaes seguem via URL ao servidor e ficam visveis ao usurio.


Exemplo, a pesquisa realizada no Google para encontrar a expresso Centro
Paula Souza:

http://www.google.com.br/search?hl=pt-BR&source=hp&q=centro&meta=&aq=f&oq=

POST: as informaes so enviadas depois que a URL for ativada. Isso significa
que o servidor sabe que, depois de receber uma ativao de URL, deve aguardar a entrada de novos dados, os quais, portanto, no so visualizados na web
(MARCONDES, 2002).
Todo formulrio tem a tag <form>, que identifica o incio, e </form>, para sinalizar o fim. Somente o que est entre essas tags ser considerado dado vlido
para envio.

<form action= method=post name=cadastro></form>


</form>

O formulrio pode receber uma identificao feita por name (nome). Isso ajudar no tratamento dos dados, futuramente. Temos ainda a action (ao) do
formulrio, que indica a aplicao servidora que receber os dados. Por exemplo:

<form action=verifica.aspx method=post name=cadastro>


<form action=cadastro.php method=post name=cadastro>

Entrada de texto
A forma mais simples de entrada de dados a do tipo text (texto), que permite
a abertura da caixa de entrada para que o usurio possa digitar as suas informaes. Alm disso, admite um valor padro j includo pelo value (valor),
limita a quantidade de caracteres a serem digitados maxlength (comprimento
mximo) e o tamanho da janela de entrada size.

<input type=text value=seu nome aqui size=40 maxlength=35> </p>

Na entrada, vemos que a expresso seu nome aqui j est na caixa de texto,
que, apesar de ter tamanho 40, aceita somente 35 caracteres (figura 50).
82

83

Informtica 4

captulo 3

Figura 50

As informaes da caixa select so carregadas diretamente no formulrio.


Com a utilizao, posterior, de linguagens de programao como ASP, PHP ou
Java, certamente isso acontecer dinmicamente (figura 53).

Entrada tipo texto.

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>


Senha <input type=password value= size=8 maxlength=8> </p>

Figura 51
Entrada de
login e senha.

Comentrio
Para entrada de textos maiores, utilizamos a tag <textarea>, que permite criar
uma janela com especificaes de linha e coluna.

Outro recurso a opo pr-selecionada, acessada por meio da expresso selected (selecionada) em um dos itens definidos por option.





<p> Estado: <select name=cidade>


<option selected> - - Cidade - - </option>
<option>So Paulo</option>
<option>Rio de Janeiro</option>
<option>Distrito Federal</option>
</select> </p>

A opo indicada j aparece selecionada (figura 54).

<p> Descrio da Funo:<br>


<textarea name=func rows=5 cols=40></textarea> </p>

Figura 54
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

Botes checkbox

Textarea Comentrio.

Opo select
Representa as caixas tipo combos, presentes na maioria das aplicaes, nas quais
uma srie de opes fica disponvel para o usurio.




84

<p> Estado: <select name=cidade>


<option>So Paulo</option>
<option>Rio de Janeiro</option>
<option>Distrito Federal</option>
</select> </p>

Os botes checkbox (que significa verificao da caixa) permitem que o usurio escolha entre sim ou no. So usados normalmente para perguntas simples que oferecem apenas essas duas alternativas como resposta. Em propriedades, podemos indicar a palavra name, que ser fundamental para o controle
dos dados para validao, assim como o checked (controlado) para opes j
selecionadas.





<p> Possui carteira de Trabalho:


<input type=checkbox name=carteira></p>
<p> Possui meio de conduo prpria:
<input type=checkbox name=conduzir></p>
<p> Deseja receber nossas informaes por e-mail?:
<input type=checkbox name=conduzir checked> Sim, desejo.</p>

85

Informtica 4

captulo 3

Na opo referente recepo de e-mails, o boto checkbox foi previamente


assinalado (figura 55).

BUTTON (boto): no executa funo nenhuma, exceto quando programado.


Significa que preciso desenvolver um cdigo a ser relacionado com o boto.
No caso dos formulrios, os mais importante so os Reset e Submit, que sero
responsveis, respectivamente, pela eliminao das informaes e pelo envio de
dados. Mas preciso que o value (valor), seja informado, para que ocorra a
emisso da identificao padro.

Figura 55
Botes checkbox.

Botes de Radio
Os botes de Radio so semelhantes ao checkbox, porm permitem que mais de
uma opo seja fornecida ao usurio e apenas uma selecionada. O mais importante manter o mesmo name nos controles, para que possa ser criado vnculo
entre eles.







<p>Estado Civil:<br>
<input type=radio name=civil> Solteiro
<input type=radio name=civil> Casado
<input type=radio name=civil> Outros </p>
<p>Jornada de Trabalho:<br>
<input type=radio name=trab checked> Manh
<input type=radio name=trab> Tarde
<input type=radio name= trab> Noite </p>

Na opo referente jornada de trabalho, assim como no checkbox, uma opo


foi pr-selecionada (figura 56).
Figura 56
Botes de Radio.

Botes
Utilizamos os botes para indicar o tipo de ao a ser realizada com os dados do
formulrio. Existem trs tipos de botes com funes especficas:
RESET (restabelecer): limpa todas as informaes do formulrio e no envia
mais nada.
SUBMIT (envio): manda as informaes de acordo com as condies do method (mtodo) e do action do formulrio.
86

<input type=reset value=Limpar>


<input type=submit value=Enviar>

O layout dos botes est na figura 57.


Figura 57
Botes Reset
e Submit.

Formulrio
At aqui apresentamos os elementos comuns para a elaborao de um formulrio.
Agora, o momento de colocar todos os recursos em um nico documento.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01
Transitional//EN
http://www.w3.org/TR/html4/loose.dtd>
<html>
<head>
<meta http-equiv=Content-Type content=text/html;
charset=iso-8859-1>
<title>Cadastro de Cliente</title>
<style type=text/css>
.titulo {color:#33CC33;

font-size:24px}
p {font-family:Verdana, Arial, Helvetica, sans-serif;

font-weight:600;

font-size:10px}
</style>
</head>
<body>
<span class=titulo>Cadastro de Cliente</span>
<form action= method=post name=cadastro></form>

<p> Nome completo
<input type=text value=seu nome aqui size=40 maxlength=35> </p>
<p> Login <input type=text value= size=20 maxlength=20>
Senha <input type=password value= size=8 maxlength=8> </p>

87

Informtica 4

captulo 3

<p> Descrio da Funo:<br>


<textarea name=func rows=5 cols=40></textarea> </p>
<p> Estado: <select name=cidade>
<option selected> - - Cidade - - </option>
<option>So Paulo</option>
<option>Rio de Janeiro</option>
<option>Distrito Federal</option>
</select> </p>
<p> Possui carteira de Trabalho:
<input type=checkbox name=carteira></p>
<p> Possui meio de conduo prprio:
<input type=checkbox name=conduzir></p>
<p> Deseja receber nossas informaes por e-mail?:
<input type=checkbox name=conduzir checked> Sim, desejo.</p>
<p>Estado Civil:<br>
<input type=radio name=civil> Solteiro
<input type=radio name=civil> Casado
<input type=radio name=civil> Outros </p>
<p>Jornada de Trabalho:<br>
<input type=radio name=trab checked> Manh
<input type=radio name=trab> Tarde
<input type=radio name=trab> Noite </p>
<input type=reset value=Limpar>
<input type=submit value=Enviar>
</form>
</body>
</html>

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


Figura 58
Formatao
de borda.

3.10. XML
A XML (eXtensible Markup Language ou Linguagem de Marcao Extensiva),
assim como o HTML, uma linguagem de marcao que permite a manipulao dos dados de forma mais precisa. Isso assegura informaes uniformes
e independentes de aplicao ou de fornecedor que, dessa forma, podem ser
utilizadas em diferentes nveis de aplicao. J a XML, dependendo do nvel de
anlise (RAY, 2001), considerada um modelo de gerenciamento de informaes e ainda pode ser formatada ou filtrada.
A XML no apenas mais uma linguagem de marcao como a HTML, que
especifica a formatao de uma palavra ou um trecho de texto. A XML permite
a definio de tags personalizadas. Isso ajuda a tornar o documento mais inteligente, j que o texto armazenado entre as tags ganha um significado especfico
(FURGERI, 2001). Possibilita, tambm, que o documento seja criado com uma
estrutura facilmente compreendida por seres humanos e mquinas. A afirmao
fica bem clara no exemplo seguinte, no qual fcil reconhecer que 5,20 se
refere ao preo do produto.






<pedido>

<produto>


<codigo>MF45-KJ90</codigo>


<descritivo>Parafuso de 15mm</descritivo >


<valor>5,20</valor>

</produto>
<pedido>

As tags so representadas em formato de rvore, semelhante disposio de


pastas nos diretrios (figura 59).
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
maneira rpida para verificar se a estrutura do documento est correta abri-lo
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
certo, ser possvel visualizar claramente o contedo (figura 60).

A identificao do documento deve aparecer logo no incio, o que facilitar a


leitura por parte de outros aplicativos. Pode ser da seguinte forma:

<?xml version=1.0 ?>

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


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

Figura 60
Verificao de
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.

No navegador Internet Explorer, vemos os sinais de + e -, que permitem a


expanso ou contrao do nvel de detalhamento das informaes. Mas no
podemos esquecer que o documento XML deve, obrigatoriamente, levar em
conta que:
Precisa de uma tag raiz, denominada root.

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


<pedido>
<produto>

<codigo>MF45-KJ90</codigo>

<descritivo>Parafuso de 15mm</descritivo >

<valor>5,20</valor>
</produto>
<produto>

<codigo>KJ-25489-B</codigo>

<descritivo>Prego de 10mm</descritivo >

<valor>1,40</valor>
</produto>
<produto>

<codigo>MMZ-1010-GR</codigo>

<descritivo>Pito de 18mm</descritivo >

<valor>2,60</valor>
</produto>
</pedido>

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 todas as especificaes do W3C. Alm disso, esse tipo de documento possui tags
distribudas corretamente. Isto , para toda tag de abertura existe a sua correspondente 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 (Unified 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 grficas
Tratamento de excees
Conexo com bancos de dados

Informtica 4

captulo 4

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

Figura 62

Smalltalk-80,
ou simplesmente
Smalltalk, uma
linguagem de
programao
puramente orientada
objetos. Isso significa
que em Smalltalk tudo
objeto: os nmeros,
as classes, os mtodos,
os blocos de cdigo
etc. Tecnicamente,
todo elemento
um objeto de
primeira ordem.

Logotipo do Java, com


a xcara estilizada.

ava uma linguagem de programao desenvolvida nos anos 1990 por


uma equipe de programadores chefiada por James Gosling, na Sun
Microsystems, conglomerado norte-americano da rea de informtica
(leia o quadro Quem quem no mundo Java). Para conhec-la mais profundamente, preciso voltar um pouco no tempo e saber quais foram suas antecessoras: a
BCPL e B, a C e a C++ (confira no quadro A evoluo da linguagem de programao). Por trs de todo o sucesso do Java est um projeto de pesquisa corporativa
batizado de Green, financiado em 1991 pela norte-americana Sun Microsystems.
A Sun, cujo nome faz referncia Standford University, fabrica computadores,
semicondutores e softwares. Tem sede no Silicon Valley (Vale do Silcio), em Santa
Clara, Califrnia (EUA) e subsidirias em Hillsboro, no estado do Oregon (EUA),
e em Linlithgow, na Esccia. Gosling e a equipe que tocou o projeto para a Sun
apostavam na convergncia dos computadores com outros equipamentos e eletrodomsticos e produziram um controle remoto com interface grfica touchscreen
(toque na tela) batizado de *7 (Star Seven) (figura 61). Para o desenvolvimento de
parte do sistema operacional e dos aplicativos do *7, foi criada uma linguagem de
programao baseada no C++ e no smalltalk, chamada de Oak (carvalho, em

ingls), em homenagem a uma rvore que podia ser vista da janela da sede da Sun.
Descobriu-se mais tarde que j havia uma linguagem de programao chamada
Oak, o que implicava a necessidade de se buscar outro nome para a desenvolvida
na empresa e assim nasceu o nome Java. H, porm, outras verses para a origem
do nome. Uma delas diz que foi escolhido quando a equipe visitou uma cafeteria
local que tinha o nome Java, em referncia cidade de origem de um tipo de caf
importado pelo estabelecimento. Essa verso explica a xcara estilizada estampada
no logo do Java (figura 62).
O projeto Green passou por algumas dificuldades. O mercado de dispositivos eletrnicos inteligentes, voltado para o consumo popular, no incio da dcada de 1990,
no se desenvolvia to rpido como a Sun havia previsto. Por isso, corria o risco de
ser cancelado. Por uma feliz coincidncia, a www (World Wide Web, rede mundial

Quem quem no mundo Java


Programador canadense conhecido
como o pai da linguagem Java.
Em 1977, tornou-se bacharel em
Cincia da Computao pela
Universidade de
Calgary, no Canad,
e em 1983, PhD
em Cincia da
Computao
pela Universidade
Carnegie Mellon,
nos Estados
Unidos.

94

Kenneth Thompson
(ou Ken Thompson) - cientista
computacional conhecido por sua
influncia no sistema operacional
UNIX. Nasceu em 1943 em Nova
Orleans, Louisiana, EUA, e tem
mestrado pela UC Berkeley. Foi o
criador da linguagem B, em 1969, no
centro de pesquisas da AT&T Bell
Labs, onde nasceram tecnologias
consideradas revolucionrias (desde cabos de telefone, transistores,
LEDs e lasers at linguagem de programao C e o sistema
operativo Unix, que hoje de propriedade do The Open Group,
consrcio formado por empresas de informtica).

Bjarne
Stroustrup

Dennis MacAlistair Ritchie


um cientista da computao notvel por sua
participao no desenvolvimento de linguagens
e sistemas. Nascido em Bronxville, Nova
Yorque (EUA), formou-se em Fsica
e Matemtica Aplicada pela
Universidade de Harvard.
Em 1983, Richie e Ken
Thompson receberam
o prmio Turing pelo
desenvolvimento da teoria
de sistemas operacionais
genricos e, especialmente, pela
implementao do sistema UNIX.

Fotos: divulgao

James Gosling

Cientista da
computao
dinamarqus e
professor catedrtico
da Universidade
do Texas, EUA.
Conhecido como o
pai da linguagem de
programao C++.

95

Informtica 4

captulo 4

de computadores) se popularizou em 1993 e a Sun viu o Java ser utilizado para


adicionar contedo dinmico s pginas da web, como interatividade e animaes.
Alm de salvar o projeto Green, a expanso da World Wide Web deu incio
ao desenvolvimento do Java como uma linguagem comercial. Essa mudana j
trazia a ideia de estimular a interatividade entre os ambientes computacionais
(mainframes, PCs etc.), os eletrodomsticos (que cada vez mais tm programao embarcada), equipamentos eletrnicos (que evoluiriam para os dispositivos
mveis) e a ento recm-nascida internet.
A Sun anunciou o Java formalmente durante uma conferncia, em maio de
1995. A linguagem chamou a ateno da comunidade de negcios, devido ao
enorme interesse que a web despertava na poca. Alm disso, tambm tinha o
grande apelo da portabilidade: Write once, Run anywhere.
Por isso, o Java passou a ser utilizado para desenvolver aplicativos corporativos
de grande porte e aprimorar a funcionalidade de servidores web (os computadores que fornecem o contedo http://www.sis.pitt.edu/~mbsclass/hall_of_fame/
images/thompson.jpg que vemos em nossos navegadores da internet). Essa linguagem tambm passou a ser usada no desenvolvimento de aplicativos para
dispositivos mveis (telefones celulares, pagers e PDAs, por exemplo).

4.1. A plataforma de desenvolvimento


O Java e as tecnologias envolvidas na orientao a objetos tm uma caracterstica
peculiar que provoca confuso e dvidas entre a maioria das pessoas que comeam a estudar o assunto. H um universo de siglas e acrnimos que permeiam
todas as fases do desenvolvimento e tambm formam uma verdadeira sopa de le-

trinhas. Mas vamos nos ater ao ambiente de desenvolvimento JSE. O Java comeou na verso 1.0 (parece bvio, mas nesse caso a sequncia de verses no to
previsvel assim). Na verso 1.2, houve uma grande quantidade de atualizaes e
correes e um significativo aumento nas APIs (banco de recursos da linguagem,
que ser descrito mais adiante). Nessa etapa, a Sun resolveu trocar a nomenclatura de Java para Java2, para diminuir a confuso entre Java e Javascript e divulgar
as melhorias trazidas pela nova verso. Mas que fique bem claro: no h verso
do Java 2.0. O 2 foi incorporado ao nome (exemplo: Java2 1.2). Depois, vieram
o Java2 1.3 e 1.4. No Java 1.5, a Sun alterou novamente o nome para Java 5. At
a verso 1.4, existia uma terceira numerao (1.3.1, 1.4.1, 1.4.2 etc.), indicando
correes de erros e melhorias. A partir do Java 5, comearam a surgir diversas
atualizaes, como Java 5 update 7, e Java6 1.6 update 16.

4.1.1. JRE (Java Runtime Environment)


Os ambientes de desenvolvimento Java contm um pacote (conjunto de softwares que se complementam e interagem para determinada finalidade) chamado JRE
(Java Runtime Environment). Ele executado como um aplicativo do sistema operacional e interpreta a execuo de programas Java de forma performtica, segura
e em escalas. A JRE composta pela JVM (Java Virtual Machine, ou mquina
virtual Java), por um conjunto de APIs (Application Programming Interface ou
interface de programao de aplicaes) e por alguns pacotes de desenvolvimento.

4.1.1.1. JVM (Java Virtual Machine)


A mquina virtual Java, traduo literal da sigla em ingls JVM, um programa
que carrega e executa os programas desenvolvidos em Java, convertendo os bytecodes (cdigo fonte pr-compilado)em cdigo executvel de mquina.

A evoluo da linguagem de programao

96

BCPL

C++

Acrnimo para Basic Combined


Programming Language (Linguagem
de Programao Bsica Combinada),
a BCPL uma linguagem de
programao voltada para o
desenvolvimento de softwares
para sistemas operacionais e
compiladores. Foi criada por Martin
Richards em 1966 e utilizada, anos
depois, por Ken Thompson para
desenvolver a B e, depois, a C.

Sucessora da BCPL, a B foi


desenvolvida no famoso centro de
pesquisas da AT&T Bell Labs em
1969 um trabalho capitaneado por
Ken Thompson com contribuies de
Dennis Ritchie. Ken Thompson utilizou
a linguagem B para criar as primeiras
verses do sistema operacional UNIX.
Hoje obsoleta, mas seu valor
incontestvel por ter sido a precursora
da C. Por isso, uma das mais
populares no mundo.

uma linguagem de programao compilada,


estruturada, imperativa, processual, de alto
nvel e padronizada. Foi criada em 1972,
por Dennis Ritchie, tambm no AT&T Bell
Labs, como base para o desenvolvimento
do sistema operacional UNIX (escrito em
Assembly originalmente). A maior parte do
cdigo empregado na criao dos sistemas
operacionais de equipamentos, como
desktops, laptops, estaes de trabalho e
pequenos servidores, escrita em C ou C+ +.

De alto nvel, com facilidades para o uso em baixo nvel, uma


liguagem comercial multiparadigma e de uso geral. Muito popular,
desde os anos 1990, tambm est entre as preferidas nos meios
universitrios em virtude de seu grande desempenho e enorme
base de usurios. Foi desenvolvida por Bjarne Stroustrup
(primeiramente, com o nome C with Classes, que significa C
com classes em portugus), em 1983, no Bell Labs, como um
elemento adicional linguagem C. A linguagem C++ oferece
vrios recursos que complementam e aprimoram a linguagem
C. Sua principal caracterstica, no entanto, est na adoo da
programao orientada a objetos, tcnica de programao que
abordada em todo este captulo.

97

Informtica 4

captulo 4

A plataforma
Java Micro Editon
indicada para
aparelhos como
o Personal Digital
Assistant.

A JVM responsvel pelo gerenciamento dos programas Java, medida


que so executados, simulam uma CPU e a memria (da o nome mquina
virtual). Graas JVM, os programas escritos em Java podem funcionar
em qualquer plataforma de hardware e software que possua uma verso da
JVM. Ou seja, cada sistema operacional compatvel com o Java possui sua
prpria verso de JVM, tornando os programas desenvolvidos em Java independentes em relao plataforma (hardware e software) onde esto sendo
executados. Configura-se, assim, uma das principais caractersticas da linguagem Java: a portabilidade.

4.1.1.2. API (Application Programming Interface)

divulga

A interface de programao de aplicao, traduo literal da sigla em ingls API,


um conjunto de recursos (classes e interfaces) com funcionalidades padro, j
implementados, e que possuem ampla documentao. Assim, os programadores
podem utilizar esses recursos sem precisar saber como foram desenvolvidos.

4.1.2. Ambientes de desenvolvimento


4.1.2.1. JSE (Java Standard Edition)
Em portugus, a edio Java padro. Contm todo o ambiente necessrio para
a criao e execuo de aplicaes Java, incluindo a mquina virtual Java (JVM),
ocompilador Java (JRE), um conjunto de APIs e outras ferramentas utilitrias.
voltada para o desenvolvimento de aplicaes desktop e web de pequeno porte, executadas em PCs e em servidores. O JSE considerado o ambiente principal, j que
serviu de base para o desenvolvimento do JEE (Java Enterprise Edition ou edio Java
corporativa) e do JME (Java Micro Edition ou edio Java micro, voltada para microdispositivos). Por ser a plataforma mais abrangente do Java, a JSE a mais indicada
para quem quer aprender a linguagem.
Servidores de
aplicao so
programas que
fornecem uma
srie de recursos
para suporte
de aplicaes
corporativas,
na web, de
forma segura e
consistente.

4.1.2.2. JEE (Java Enterprise Edition)


A plataforma JEE (sigla em ingls, que literalmente significa edio empresarial Java) contm bibliotecas que oferecem facilidades para a implementao
de softwares Java distribudos, tolerantes a falhas. Voltada para aplicaes multicamadas baseadas em componentes que so executados em um servidor de
aplicaes, a JEE considerada, mais do que uma linguagem, um padro de
desenvolvimento. Nela, o desenvolvedor de software segue obrigatoriamente
determinadas regras para que seu sistema possa se comunicar com outros de
maneira automtica. Destina-se a aplicaes corporativas de grande porte e que
usam frequentemente o EJB (Enterprise Java Beans, um padro com estrutura
de aplicaes distribudas) e servidores de aplicao. Outro recurso desse ambiente so as aplicaes que rodam no lado servidor em uma arquitetura cliente/
servidor, conhecidas como servlets.

4.1.2.3. JME (Java Micro Edition)


A plataforma Java Micro Edition (literalmente, edio Java micro, voltada para
microdispositivos) permite o desenvolvimento de softwares para sistemas e apli98

caes embarcadas, ou seja, aquelas que rodam em um dispositivo especfico.


bastante indicada para aparelhos compactos, como telefone celular, PDA
(Personal Digital Assistant ou assistente digital pessoal), controles remotos etc.
Contm configuraes e bibliotecas desenvolvidas especialmente para os portteis. Com esse instrumento, o desenvolvedor tem mais facilidade para lidar com
as limitaes de processamento e memria do equipamento.

4.1.2.4. JDK (Java Development Kit)


A JDK (ou JSDK Java Software Development Kit, kit de desenvolvimento de
programas Java) o ambiente completo de desenvolvimento Java. Existe um
JDK para cada ambiente (JSE, JEE e JME). Esse kit deve ser instalado na mquina para possibilitar a criao de aplicaes Java.

4.1.2.5. JSE: nosso foco


O JSE o mais indicado para os programadores iniciantes (ou mesmo veteranos
de outras linguagens) e ser o foco de todos os exemplos deste captulo. Mas,
apesar dos diferentes ambientes de desenvolvimento, trata-se da mesma linguagem de programao. Portanto, a maioria dos recursos que sero abordados
comum e perfeitamente aplicvel a outros ambientes, principalmente no que diz
respeito orientao a objetos.

4.1.3. A portabilidade
Em primeiro lugar, preciso entender o que um programa compilado e um
programa interpretado. Compilao o processo de converso do cdigo fonte
(texto escrito segundo as regras de determinada linguagem de programao)
para a linguagem de mquina (programa pronto para ser executado). Nesse processo, so feitas vrias referncias (e consequentemente suas dependncias) em
99

Informtica 4

captulo 4

Cdigo fonte
Java (.java)

JVM
Windows

Windows

Bytecodes
(.class)

JVM
Linux

Linux

JVM
Solaris

Solaris

Figura 63
Portabilidade Java.

Cdigo fonte Java


um arquivo de texto
escrito de acordo
com as regras da
linguagem Java
e salvo com a
extenso .java. J a
expresso bytecode
se refere a um
arquivo convertido
em linguagem de
mquina e salvo
com o mesmo nome
do cdigo fonte,
porm com
a extenso.class.

relao ao sistema operacional no qual o programa gerado. J em um programa interpretado a execuo ocorre por meio da leitura, interpretao e execuo
direta do cdigo fonte (no existe o processo de compilao).
Na comparao entre esses dois modelos de desenvolvimento, possvel perceber que os programas compilados oferecem melhor desempenho (velocidade de
execuo), enquanto os interpretados so bem mais lentos. Em contrapartida, os
compilados so totalmente dependentes da plataforma e do sistema operacional
em que foram gerados, ao contrrio dos interpretados.
O Java se aproveita do que h de bom nos dois modelos e descarta os pontos negativos de cada um, por meio da JVM. Um cdigo fonte Java pr-compilado e
convertido em bytecode pela JRE (e no pelo sistema operacional). O bytecode
gerado por meio de recursos da JRE e executado sobre a JVM, ou seja, sem
interao direta com o sistema operacional da mquina em que foi desenvolvido.
No entanto, a JVM precisa interagir com o sistema operacional e, por isso, tem
verses para diferentes sistemas operacionais.
Como tudo passa pela JVM, essa plataforma pode tirar mtricas, decidir qual
o melhor lugar para alocar ou suprimir memria, entre outras funes que antes
ficavam sob a responsabilidade do sistema operacional. A figura 63 mostra como a
portabilidade em aplicaes Java alcanada e qual o papel da JVM nesse contexto.

4.2. Origem da orientao a objetos


No mundo em que vivemos, de constante utilizao e atualizao de recursos
tecnolgicos, os softwares ganharam um espao que vem aumentando vertiginosamente e em diversos setores da sociedade. Existem programas especficos
para uso comercial, industrial, administrativo, financeiro, governamental, militar, cientfico, de entretenimento etc. Para atender a essa demanda cada vez
maior e mais exigente, as reas de desenvolvimento e manuteno de softwares
precisam criar aplicaes cada vez mais complexas.
100

A orientao a objetos surgiu da necessidade de elaborar programas mais independentes, de forma gil, segura e descentralizada, permitindo que equipes de programadores localizadas em qualquer parte do mundo trabalhem no mesmo projeto. Essa
tcnica de desenvolvimento de softwares, mais prxima do ponto de vista humano,
torna mais simples e natural o processo de anlise de problemas cotidianos e a construo de aplicaes para solucion-los. Para que isso seja possvel, preciso quebrar
paradigmas em relao ao modelo procedural, que tem como base a execuo de
rotinas ou funes sequenciadas e ordenadas para atender aos requisitos funcionais de
uma aplicao. Nele, as regras (codificao) ficam 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 elementos como programao, banco de dados, conectividade em rede, gerenciamento
de memria, segurana etc. Isso aumenta significativamente a complexidade na elaborao e expanso desses softwares.
O modelo orientado a objetos tem como base a execuo de mtodos (pequenas funes) que atuam diretamente sobre os dados de um objeto, levando em conta o modo
como o usurio enxerga os elementos tratados no mundo real. Nessa tcnica, o desenvolvedor cria uma representao do que se pretende gerenciar no sistema (um cliente,
um produto, um funcionrio, por exemplo) exatamente como acontece no mundo
real. Assim, esses elementos podem interagir, trocando informaes e adotando aes
que definem os processos a serem gerenciados pelo sistema. Por exemplo, no processo
de venda de uma empresa podem ocorrer os seguintes passos: um cliente compra
um ou vrios produtos; o cliente atendido por um vendedor; o vendedor tem
direito a comisso.
Ao analisarmos esses processos no mundo real, destacamos como entidades envolvidas os seguintes elementos: cliente, vendedor e produto, assim como a venda e o
clculo e comisso. A partir da anlise orientada a objetos, representamos essas entidades dentro da nossa aplicao com as mesmas caractersticas adotadas no mundo
real (nome, endereo e telefone de um cliente, etc. alm de suas atitudes tpicas numa
transao comercial (cotao, compra, pagamento etc.).

4.2.1. Abstrao
Abstrao a capacidade do ser humano de se concentrar nos aspectos essenciais
de um contexto qualquer, ignorando caractersticas menos importantes ou acidentais. Outra definio: habilidade mental que permite visualizar os problemas do
mundo real com vrios graus de detalhe, dependendo do contexto do problema.
Para o programador que utiliza orientao a objetos, a abstrao a habilidade de extrair do mundo real os elementos (entidades, caractersticas, comportamentos, procedimentos) que realmente interessam para a aplicao desenvolvida.
Por exemplo, as informaes relevantes a respeito de um CD para uma aplicao
usada no gerenciamento de uma loja que vende CDs, so diferentes das de uma
aplicao para o gerenciamento de uma fbrica, que produz CDs.

4.3. UML (Unified Modeling Language)


A UML, sigla em ingls de linguagem modular unificada, dedicada especificao, visualizao, construo e documentao que usa notao grfica para
101

Informtica 4

captulo 4

modelar softwares. Muito utilizada em empresas que desenvolvem aplicaes


orientadas a objetos, tambm est presente em vrias publicaes relacionadas
com a linguagem Java (alm de ser um instrumento interessante para elaborao
de exerccios em aula). Por isso, escolhemos um de seus diagramas (de classes) para ilustrar nossos exemplos. bom frisar, no entanto, que os recursos da
UML vo muito alm desses diagramas.

www.java.sun.com/docs/codeconv/) que define sua prpria conveno de nomenclatura, cuja utilizao ser destacada durante a elaborao dos cdigos fonte.
Tal como ocorre com os conceitos, deixar de us-la no gera erros de lgica, de
compilao ou de execuo. Seguiremos, entretanto, risca as recomendaes de
conceitos e convenes, para que sejam conhecidas em profundidade e tambm
em nome da implantao de boas prticas de programao.

4.4. Eclipse
A Eclipse Foundation
uma organizao
sem fins lucrativos que
hospeda osprojetos
Eclipsee ajuda a manter
tanto uma comunidade
de openSource (grupo
que desenvolve
softwares com cdigo
de fonte aberto)
como um conjunto de
produtos e servios
complementares. O
projeto Eclipse foi
originalmente criado
pela IBM em novembro
de 2001 e apoiado
por um consrcio
de fornecedores de
software. (Para mais
informaes
sobre o Eclipse, acesse:
htpp://www.eclipse.org).

IDE (Integrated Development Environment, ou ambiente integrado de desenvolvimento) um programa de computador que rene recursos e ferramentas
de apoio para agilizar o desenvolvimento de softwares. Aqui, trataremos da IDE
Eclipse Classic 3.5.0, comumente conhecida por Galileo (as verses mais recentes
ficam disponveis para download no site htpp://www.eclipse.org/downloads/.)
O Eclipse mantido pela Eclipse Foundation, que possui projetos que se concentram na criao de uma plataforma de desenvolvimento composta por quadros extensveis e ferramentas para construo, implantao e gerenciamento de
softwares em todo o seu ciclo de vida.

O projeto da Livraria Duke


A partir desse ponto, vamos
desenvolver um controle de estoque e
movimentao para uma livraria fictcia,
chamada Duke. Todos os exemplos
criados a seguir sero reaproveitados
para a construo desse projeto.
Para o software da empresa, temos a
manuteno dos dados (em banco) e o
levantamento dos seguintes requisitos:

Controle de clientes: vendas.


Controle de funcionrios: clculo de salrios.
Controle de produtos: compras, vendas e estoques disponveis.
Controle de fornecedores: compras realizadas de cada fornecedor.
Controle de compra e venda: o sistema manter um registro de todas.
as movimentaes realizadas de acordo com as regras da livraria.

4.5. Orientao a objetos (1)


Uma vez familiarizados com uma parte do universo das siglas e com os ambientes de desenvolvimento relacionados linguagem Java, o momento de
aprofundar o conhecimento do tema e das boas prticas de programao, na
construo de softwares orientados a objetos. Para isso, nosso foco de estudo
ser a construo de um projeto. Para comear, importante entender diversos
conceitos que ajudaro a estruturar e a padronizar os programas desenvolvidos
com essa tcnica. A construo de softwares independentes, de fcil expanso,
de alto nvel de reusabilidade (a possibilidade de reutilizar trechos de um programa) e que viabilizam a interao entre programas e plataformas diferentes,
depende dessa padronizao, graas adoo dos conceitos da orientao a objetos. Deixar de usar esses conceitos no gera, necessariamente, erros de compilao, 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 programas (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, fisicamente), 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 especfica (disponvel no site http://

102

103

Informtica 4

captulo 4

4.5.1. Componentes elementares


4.5.1.1. Classes
Em Java, tudo definido e organizado em classes (a prpria linguagem estruturada dessa forma). Inclusive, existem autores que defendem ser correto chamar
a orientao a objeto de orientao a classes. As classes exercem diversos papis
em programas Java, a princpo vamos nos ater a duas abordagens:
Classes de modelagem: so as que daro origem a objetos. Ou, ainda,
so as que definem novos (e personalizados) tipos de dados.
Classe Principal: ter, por enquanto, a finalidade de implementar o mtodo main (principal). Poderia ter qualquer nome, desde que respeitadas
as regras de nomenclatura de classes. Ser chamada, ento, de Principal, como referncia ao mtodo main.
Nossa primeira classe ser a representao de uma pessoa segundo os critrios da
orientao a objetos. Para isso, utilizaremos um diagrama de classe (UML), um
critrio que valer para os demais exemplos desse captulo (figura 64).
Do projeto ao
automvel, assim
como da classe
ao objeto.

As classes de modelagem podem ser comparadas a moldes ou formas que definem as caractersticas e os comportamentos dos objetos criados a partir delas.
Vale traar um paralelo com o projeto de um automvel. Os engenheiros definem as medidas, a quantidade de portas, a potncia do motor, a capacidade em
relao ao nmero de passageiros, a localizao do estepe, dentre outras descries necessrias para a fabricao de um veculo.
Durante a elaborao do projeto, bvio que o automvel ainda no existe. Porm, quando for fabricado, todas as especificaes previamente definidas no desenho tero de ser seguidas risca. Os diferentes modelos desse mesmo veculo tero
detalhes diferenciais, como cor da lataria, tipo das rodas, material do banco, acessrios etc. Nada, entretanto, que altere as caractersticas originais, como um todo.
Sero informaes acrescentadas aos elementos j definidos no projeto (atributos).
O funcionamento bsico do automvel tambm foi definido no projeto. O motorista poder acelerar, frear, trocar marchas, manobrar etc. Essas aes, assim
como a respectiva resposta do carro (mtodos), permitem uma outra analogia
com nosso assunto. O motorista (que seria no nosso caso o programador) no
precisa ter conhecimentos profundos sobre mecnica para, por exemplo, acelerar o automvel. Internamente, o veculo possui um complexo mecanismo que
aciona as partes responsveis pela injeo e pela combusto. Esta, por sua vez,
gera uma presso sobre outras engrenagens do motor, impulsionando as rodas e
fazendo o carro se deslocar processos tambm especificados no projeto. Para
o motorista, quando o objetivo velocidade, basta saber que preciso pisar
no pedal do acelerador e que quanto mais presso for feita mais rpido andar 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 assinatura 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.

Equipe Eesc-USP Baja Sae

4.5.1.1.2. Mtodos

104

Mtodos so blocos de cdigo que pertencem a uma classe e tm por finalidade


realizar tarefas. Geralmente, correspondem a uma ao do objeto. Considerando-se o exemplo do automvel, os mtodos poderiam definir processos como
ligar, acelerar, frear etc.

4.5.1.1.3. Detalhando o diagrama de classe


Na descrio das informaes contidas no diagrama de classe, novos termos
aparecero. Nesse momento, porm, o importante perceber que o diagra105

Informtica 4

captulo 4

Figura 64
Diagrama de classe
(UML) da
classe Pessoa.

Pessoa

Nome da classe

Pessoa

- nome : String
- endereco : String
- telefone : String

Atributos

+ Pessoa() : void
+ Pessoa(nome : String, endereco : String, telefone : String) : void
+ getNome() : String
+ setNome(nome : String) : void
+ getEndereco() : String
+ setEndereco(endereco : String) : void
+ getTelefone() : String
+ setTelefone(telefone : String) : void
+ inserirDadosPessoa() : void
+ apresentarPessoa() : void

- nome : String
- endereco : String
- telefone : String

+ main(args[ ] : String) : void

ma traz detalhes dos atributos e mtodos que compem a classe. A tabela


11 descreve os detalhes contidos nos trs compartimentos (nome, atributos
e mtodos) do diagrama de classe.

4.5.1.1.4. Codificao da classe Pessoa


A abertura de uma classe definida com seu modificador de acesso (detalhado a seguir), que, por sua vez, d a visibilidade (nesse caso, pblica),
alm do comando class e do nome da classe. A definio da classe fica delimitada entre as chaves { }, que estabelecem o incio e o fim de um bloco
de cdigo da linha 1 a 57. Observe, na figura 65, a codificao da classe
Pessoa. Perceba que parte do cdigo foi suprimida, mais precisamente a codificao dos mtodos (ficando visvel somente a assinatura ou abertura
dos mtodos), os quais sero detalhados mais adiante. possvel perceber
as partes ocultas no cdigo por meio de um sinal de + na frente do nmero
da linha.
106

O sinal de menos - indica a visibilidade do


atributo. Nesse caso, privado (private em
ingls).
Por conveno, todos os nomes de atributos
so escritos com letras minsculas.
Depois especificado o tipo de dado que
ser armazenado no atributo

Mtodos
+ Pessoa() : void
+ Pessoa(nome : String, endereco : String, telefone : String) : void
+ getNome() : String
+ setNome(nome : String) : void
+ getEndereco() : String
+ setEndereco(endereco : String) : void
+ getTelefone() : String
+ setTelefone(telefone : String) : void
+ inserirDadosPessoa() : void
+ apresentarPessoa() : void

Principal

Por conveno, todo nome de classe


comea com letra maiscula.

O sinal de mais + indica a visibilidade


do mtodo, nesse caso, pblico (public em
ingls).
Por conveno, o nome dos mtodos
escrito com letras minsculas.
Os nicos mtodos que tm exatamente o
mesmo nome da classe so os construtores.
Tambm iniciam com letras maisculas.
Nomes compostos por vrias palavras
comeam com letra minscula e tm
a primeira letra das demais palavras
maiscula, sem espao, trao, underline,
ou qualquer outro separador. Por exemplo,
apresentar Pessoa.
Todo mtodo tem parnteses na frente
do nome. Servem para definir os seus
parmetros. Um mtodo pode ou no ter
parmetros.
Por ltimo, a definio do retorno. Se o
mtodo tiver retorno, especificado o
tipo, por exemplo, String e se no tiver
colocada a palavra void (vazio).

Tabela 11 Detalhes dos trs compartimentos do diagrama de classe.


107

Informtica 4

captulo 4

Figura 65

rmetros ( ). Essas especificaes, mais precisamente o nome e os parmetros (a


quantidade e o tipo), definem a assinatura do mtodo. Isso ser detalhado depois,
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.

Codificao da
classe Pessoa.

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 paFigura 66
Codificago
do mtodo
apresentarPessoa.

4.5.1.2. Objetos
A partir do momento em que a classe de modelagem est completa, possvel
criar um objeto e manipul-lo. Outra vez, surgiro termos novos, explicados mais
adiante. O importante, agora, perceber que essa a classe Principal (salva em um
arquivo separado da classe Pessoa). Nela est 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 modificador static (esttico), na classe Math do Java,
por exemplo.

Classe

Comando

Objeto

Construtor

Para a criao do objeto na linha 09, primeiramente, informado o tipo


(Pessoa), depois o nome do novo objeto (nesse caso, p), = new (novo
- comando que cria uma instncia da classe que chamamos de objeto).
Depois, utilizado um mtodo construtor (o nico tipo de mtodo que
tem o mesmo nome da classe, inclusive com letra maiscula), que permite
a insero de dados (informaes) nos atributos j no momento de sua
criao. O objeto p do tipo Pessoa foi criado e contm os valores Bart
no atributo nome, Rua: 01, n 123 no atributo endereo e (19) 12345678 no atributo telefone.
Em seguida, com o objeto j criado, seu mtodo apresentarPessoa ser
chamado e as mensagens, apresentadas conforme a figura 69.
Figura 69

Objeto

Sada do mtodo
apresentarPessoa().

Mtodo

Figura 68
Codificao da
classe Principal.

sistema acessado e executado. A assinatura do mtodo main ser sempre


feita dessa forma.
Observe a figura 68. Vamos linha 09, na qual realizada a criao (instanciao) do objeto p do tipo Pessoa. Veja como isso ocorre:
Primeiro houve a abstrao da entidade do mundo real a ser representada
em nosso programa (no caso, uma pessoa). Isso aconteceu na definio
das informaes que deveramos armazenar (atributos) e nas aes que
deveramos programar (mtodos).
Depois, desenhamos essa entidade (Pessoa), utilizando um diagrama de
classe (pertencente especificao da UML) e definimos a classe.
Ao definirmos a classe, detalhamos todos os atributos (dados) e mtodos
(aes) pertencentes a essa classe.
Uma vez definida a classe (o novo tipo), podemos criar (instanciar) um
objeto para ser utilizado. Lembre-se: na classe so feitas as especificaes
do objeto, assim como o projeto do automvel. Ns no manipulamos a
classe, da mesma forma que no dirigimos o projeto do automvel. Devemos instanciar (criar um objeto) a partir da classe criada, assim como o
carro deve ser fabricado a partir do projeto. Da, poderemos manipular as
informaes sobre o cliente dentro do programa, o que equivale a dirigir
o carro no mundo real.

110

4.5.2. Modificadores de acesso


Tanto os atributos quanto os mtodos devem (por clareza de cdigo) ter sua
visibilidade definida na declarao (para atributos) e na assinatura (para os mtodos). Visibilidade, no caso, significa deix-los ou no disponveis para uso em
outras classes da aplicao. Nas de modelagem, a visibilidade define se determinado atributo ou mtodo ficar acessvel por intermdio do objeto depois de
instanciado. Por exemplo, o mtodo apresentarPessoa foi chamado (acessado) a
partir do objeto p (p.apresentarPessoa()) na classe Principal, graas ao fato de ter
sido definido como public na classe Pessoa. Se tentarmos acessar, por exemplo,
o atributo email do objeto, no ser possvel. Na verdade, esse atributo no fica
visvel na classe Principal, porque foi definido como private na classe Pessoa.
O uso de modificadores de acesso no obrigatrio. Se forem omitidos, a visibilidade default (padro) adotada a protected (protegido) visvel dentro do
mesmo pacote. Porm, seu uso deixa o cdigo mais claro em relao ao que est
acessvel ou no por intermdio dos futuros objetos.

4.5.2.1. Private
Os atributos e mtodos definidos por esse modificador somente so visveis (podem ser acessados) dentro da classe em que foram codificados. Por exemplo, o
atributo e-mail definido na classe Pessoa. Dentro dela (normalmente nos mtodos da classe) esse atributo pode ser manuseado (seu valor lido ou alterado).
111

Informtica 4

captulo 4

Porm, a partir de uma instncia da classe Pessoa, isto , de um objeto do tipo


Pessoa, o atributo fica inacessvel.

4.5.2.2. Public
Os atributos e mtodos definidos com o modificador public so visveis em qualquer lugar dentro da classe e podem ser acessados sem nenhuma restrio a
partir de um objeto instanciado.

4.5.2.3. Protected
Um terceiro tipo, o protected (protegido, em portugus), define que um atributo
ou mtodo pode ser visto dentro da prpria classe e em objetos instanciados a
partir de classes que pertenam ao mesmo pacote (package em ingls).
O uso de packages ser detalhado mais adiante.

4.5.3. Mtodos construtores


Outra definio que busca maior clareza de cdigo a implementao do
construtor, um mtodo especial responsvel pela inicializao dos atributos
de um objeto no momento de sua criao (instanciao). Se sua codificao
for omitida, acionado o construtor default (padro), que inicializa os atributos sem nenhum contedo. Em nossos exemplos, adotaremos a prtica
de definir pelo menos dois construtores por classe: um que inicializar os
atributos vazios e outro que possibilitar a passagem de valores a serem armazenados nos atributos.
Uma classe pode ter quantos construtores forem necessrios para aplicao. E
todos eles tero sempre o mesmo nome da classe (inclusive com a primeira letra
maiscula). Porm, com a passagem de parmetros diferentes. Os construtores
esto diretamente relacionados aos atributos. Portanto, se uma classe no tiver
atributos, os construtores sero desnecessrios. A codificao dos construtores
na classe Pessoa ficar como ilustra a figura 70.
O primeiro construtor, sem parmetros (nada entre os parnteses), adiciona vazio 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,
identificados como nome, endereco e telefone (lembre-se de que a referncia
Figura 70
Codificao dos
construtores na
classe Pessoa.

aos valores dentro dos parnteses). Esses valores sero atribudos (armazenados)
na sequncia em que esto escritos (o primeiro parmetro no primeiro atributo,
o segundo parmetro no segundo atributo e o terceiro parmetro no terceiro
atributo). O mesmo acontece no mtodo this(), no qual os valores entre parnteses referem-se aos atributos na mesma sequncia.

4.5.4. Garbage Colletor (Coletor de lixo)


Em um sistema orientado a objetos, vrios deles so instanciados (criados
durante sua execuo). Para que se possa utilizar esse objeto, criada uma
referncia a esse endereo de memria onde ele est armazenado. Toda vez
que fazemos uma referncia a um objeto, a JVM (mais precisamente um
recurso dela) registra essa informao em uma espcie de contador. Assim,
feito o controle de quantas referncias esto apontando para aquele
espao da memria (objeto). Quando o contador est em zero, ou seja, no
h referncia, o objeto se torna um candidato a ser removido da memria.
Periodicamente, em intervalos calculados pela JVM, esses objetos sem referncias so retirados da memria e o espao alocado volta a ficar disponvel,
dando lugar a novos. O recurso responsvel por essa limpeza da memria
chamado de Garbage Collector (coletor de lixo). Tem como responsabilidade rastrear a memria, identificar quantas referncias existem para
cada objeto e executar um processo que elimine os objetos sem referncias.
Substitui, ento, os mtodos destrutores e o gerenciamento de ponteiros
(referncias a espaos de memria) existentes em outras linguagens.

Instanciar um objeto
alocar (reservar) um
espao em memria
(RAM - Random Access
Memory ou memria
de acesso randmico).

4.5.5. O comando this


O this utilizado como uma referncia ao prprio objeto que est chamando um mtodo. O uso desse comando tambm deixa claro quando estamos
nos referindo a um atributo ou mtodo da mesma classe na qual estamos
programando. No obrigatrio, porm, dentro do construtor que recebe
parmetros, por exemplo, possvel visualizar o que parmetro e o que
atributo. Isso acontece, apesar de os dois terem exatamente os mesmos
nomes (os atributos vm precedidos do this). Adotaremos o uso do this em
todos os nossos exemplos.

4.5.6. Encapsulamento
No exemplo da classe Pessoa, utilizamos mais um conceito da programao
orientada a objetos. Quando definimos que um atributo (ou mtodo) tem a
visibilidade privada (modificador de acesso private), limitamos o acesso somente sua classe. Podemos imaginar que, depois de instanciado o objeto,
esse atributo fica protegido (encapsulado) dentro desse objeto. Assim, no
possvel acess-lo de nenhuma outra classe ou objeto. Tal caracterstica
extremamente importante para proteger atributos que no devem ter seus
contedos vulnerveis a acessos indevidos.
Imagine que o valor mximo que um cliente pode comprar em uma loja est
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
atributo for alterado para um valor exorbitante, ocorrer a seguinte situao
no sistema: o cliente (do mundo real) ficar liberado para comprar at esse
valor exorbitante (tendo ou no condies para pagar). Normalmente, os empreendimentos comerciais definem limites de crdito para seus clientes, tomando por base a renda mensal de cada um, o tempo de cadastro, o histrico
de pagamentos etc. Enfim, h uma regra para que esse limite de crdito seja
calculado e/ou atualizado.
Agora, imagine outra situao. Determinada classe do sistema responsvel pelo processo de venda dessa mesma loja. Em algum momento, ser
necessrio verificar se a quantidade de estoque disponvel suficiente para
atender aos pedidos. Portanto, essa classe deve ter acesso ao atributo estoqueDisponvel do produto que est sendo vendido. Tal acesso necessrio e
autorizado pelo sistema. Porm, se o atributo estoqueDisponivel foi definido como privado, esse acesso no ser possvel. A soluo para o problema
definir mtodos de acesso para os atributos.

O mtodo get.

4.5.6.1.2. Mtodo set


J os mtodos responsveis por escrever (alterar) o contedo de um atributo comeam com a palavra set, seguida pelo nome desse atributo (figura 71b) .
Figura 71b
O mtodo set.

4.5.6.1. Mtodos de acesso

A vantagem de abrir esse acesso via mtodo poder definir (programar) as


regras de leitura e escrita nesses atributos. Permite, como no exemplo da
loja, identificar se o processo que est solicitando o contedo do atributo
estoqueDisponvel autorizado a fazer tal consulta. Ou, mais crtico ainda,
se permite atualizar (alterar) esse atributo depois da venda efetuada (subtraindo a quantidade vendida), liberar a leitura do atributo limiteDeCredito e bloquear a sua escrita (alterao). O clculo do limite fica a cargo do
mtodo responsvel por essa operao. Resumindo nenhuma outra classe
ou objeto pode acessar diretamente os atributos encapsulados.
Se isso for necessrio, deve-se pedir ao objeto para que ele mostre ou altere o valor de um de seus atributos mediante suas prprias regras (definidas
nos mtodos de acesso). Apesar de no ser obrigatrio, adotaremos a definio de um mtodo de leitura e de um mtodo de escrita para cada atributo
da classe. Voltando ao exemplo da classe Pessoa, para acessar o atributo
nome, temos os seguintes mtodos de acesso: get e set.

4.5.6.1.1. Mtodo get


Por padro do prprio Java, os mtodos que leem e mostram (retornam) o contedo de um atributo comeam com a palavra get, seguida pelo nome desse
atributo (figura 71a).
114

4.5.7. R
 epresentao do encapsulamento
em um objeto do tipo Pessoa
A figura 72 ilustra o encapsulamento em um objeto do tipo Pessoa. Imagine o objeto
como uma esfera, que possui na parte interna (azul) os atributos (privados) que no
tm acesso ao mundo externo (restante da aplicao). J a camada externa (amarela)
tem acesso ao mundo externo (pelo lado de fora) e parte interna (pelo lado de dentro)
Figura 72
Representao grfica
do encapsulamento.

Se

t te

rs

nome

t
Ge

te

rs

endereco

telefone

apresentarPessoa()

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 acessibilidade pblica (public). Significa que eles podem ser acessados a partir
do objeto instanciado de qualquer classe. Servem, portanto, como portas
de entrada e de sada de informaes dos atributos, por onde seus valores
podem ser lidos e alterados.

115

Informtica 4

captulo 4

e funciona como uma pelcula protetora do objeto. Tem passagens padro que transferem informaes de fora para dentro (setters) e de dentro para fora (getters). Alm
disso, tm algumas passagens (mtodos) com finalidades especficas e que tambm
podem entrar e/ou sair com informaes. Esse trfego acontece de acordo com regras de entrada e sada de informaes definidas nas passagens (mtodos). Em nossos
exemplos, sempre sero utilizados getters e setters para acessar os atributos, garantindo
os benefcios do encapsulamento.

4.5.8. Viso geral da classe Pessoa e sua estrutura


A figura 73 reproduz a codificao completa da classe Pessoa, destacando as
camadas vistas at agora.
Figura 73
Codificao completa
da classe Pessoa.

atributos

construtores

4.6. Entrada e sada de dados


J vimos como inserir dados nos atributos por meio do construtor e tambm
como mostrar esses dados por meio do comando System.out.println(). Existem
ainda diferentes formas de leitura e de escrita de dados em Java. Agora, para
desenvolver exemplos mais elaborados, preciso saber como realizar a entrada
e a sada de dados utilizando a classe JOptionPane, localizada na API Swing=,
que contm vrios mtodos com essa finalidade.

4.6.1. Declarao import


Os comandos utilizados nas classes devem estar acessveis para que a JRE consiga interpret-los e execut-los. Desse modo, um conjunto de comandos bsicos
fica disponvel por padro, mas a maioria dos recursos da linguagem necessita
de uma indicao para a JRE localiz-los. Isso feito pela declarao import,
que deve ser inserida no comeo da classe (antes da abertura) e composta pelo
caminho a partir da API at o local do recurso desejado. No caso da classe JOptionPane o import ficar assim como aparece na figura 74.
O uso do caractere especial * (asterisco) pode substituir parte do caminho especificado, como sugere o exemplo da figura 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 grficos 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 figura 76.

mtodo especfico da classe Pessoa

116

Usar o mtodo showMessageDialog requer a informao prvia de qual


classe ele pertence (JOptionPane) e recebe, no mnimo, dois parmetros.
O primeiro um componente do tipo object que, por ora, usaremos null.
J o segundo a mensagem propriamente dita, que pode ser composta por
trechos de texto literal, com contedo de variveis, ou retorno de mtodos,
117

Informtica 4

captulo 4

Figura 78

Figura 76

Alterao no mtodo
apresentarPessoa.

Mtodo
showMessageDialog.

Figura 79
Apresentao
da mensagem em
uma nica janela.

como no exemplo da figura 76, no qual a mensagem gerada pela primeira


linha ser o texto Nome:, juntando (somando as Strings) com o retorno
do mtodo getNome(), ou seja, o contedo do atributo nome. A execuo
do mtodo apresentarPessoa ficar como ilustra a sequncia da figura 77.
possvel realizar a apresentao da mensagem em uma nica janela, concatenando 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 quebra de linha na exibio da mensagem. Vale lembrar que quebrar a linha no
editor (pressionando enter) no faz nenhuma diferena para o compilador;
interessante apenas para melhorar a visibilidade do cdigo para o proFigura 77
Execuo
do mtodo
apresentarPessoa.

gramador. A visualizao do mtodo apresentarPessoa depois da alterao


ficar como ilustra a figura 79.

4.6.3. Leitura de dados (entrada)


Para leitura (entrada) de dados, ser usado o mtodo showInputDialog(). E,
para testar, acrescentaremos o mtodo inserirDadosPessoa() em nossa classe
exemplo Pessoa (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
Informaes do
cabealho de
um mtodo.

Figura 82
Visibilidade

Passagem de parmetro
Classe Pessoa:

Retornar
um valor do
tipo String.

Mtodo main, classe Principal:

Retorno de valor

Nome do mtodo

4.7. Assinatura de mtodos


O cabealho de um mtodo composto por quatro informaes (figura 81).
As duas ltimas (nome e passagem de parmetros) definem sua assinatura.
Quer dizer que no possvel ter dois mtodos na mesma classe com exatamente o mesmo nome e a mesma configurao de passagem de parmetros
(quantidade e tipo de dado na mesma sequncia). O Java e a orientao a
objetos possibilitam o uso dessas caractersticas na construo dos mtodos
de maneira mais ampla, fazendo uso dos conceitos de sobrecarga, sobrescrita e herana.
Agora, importantssimo entender a estrutura de um mtodo. Toda a regra
codificada (programada) em Java se localiza em mtodos. Saber utilizar as
possibilidades de obteno (passagem de parmetros) e de disponibilizao
(retorno) de dados nos mtodos vital no s para escrever novos cdigos
como tambm para compreender os j desenvolvidos.
No mtodo inserirDadosPessoa(), exemplificado anteriormente, ele no
retorna valor e no recebe parmetros. Constatamos isso pelo uso da palavra void (vazio) e pela ausncia de definies entre os parnteses ().
Conclumos, ento, que se houver a necessidade de ler ou de apresentar
informaes, essas aes sero realizadas pelo prprio mtodo. Em outras
palavras, esse mtodo no espera e no envia nenhuma informao para
fora de seu escopo (definido pelas chaves { }). Utilizaremos os mtodos de
acesso getNome() e setNome() como exemplos no detalhamento da entrada
e sada de dados nos mtodos.

4.7.1. Retorno de valor


O mtodo getNome() l o contedo do atributo nome e retorna essa informao para o local onde foi solicitada. O comando return envia o valor
definido sua frente (no caso, o contedo do atributo nome) para fora do
mtodo pela porta de sada de informaes, definida com o tipo String.
120

Portanto, o mtodo est preparado para retornar um valor do tipo String e


faz isso quando executa o comando return (figura 82).

4.7.2. Passagem de parmetro


O mtodo setNome foi escrito para receber um valor do tipo String e armazen-lo no atributo nome. A porta de entrada de valores para dentro do mtodo so os parnteses, e essas informaes (parmetros) devem ser nomeadas
e seus tipos definidos (figura 83).
Figura 83
Mtodo main, classe Principal, a seguir.

Passagem de
parmetro.

Classe Pessoa:

4.7.3. Retorno de valor e passagem de parmetro


Se for necessrio, os mtodos podem ser definidos para receber e retornar valor.
Para exemplificar, modificaremos o mtodo inserirDadosPessoa.
As trs primeiras linhas armazenam os valores lidos em variveis. Na quarta linha, usa-se o mtodo inserirDadosPessoa do objeto p e as variveis so passadas
por parmetro. Ainda nessa mesma linha, aps a execuo, o mtodo inserirDadosPessoa retorna uma mensagem de confirmao armazenada na varivel
mensagem. E na quinta linha apresentada a mensagem pelo mtodo showMessageDialog(), como ilustra a figura 84.
121

Informtica 4

captulo 4

Figura 84

Segundo a Java Language Specification, as palavras null, true e false so chamadas de


valores literais, e no de palavras reservadas, porm, assim como as palavras reservadas, no possvel utiliz-las para criar um identificador (varivel, mtodo etc.).

Mtodo main da
Classe Principal.

4.8.2. Tipos de dados


As informaes manipuladas nos programas so chamadas de dados, os quais
so organizados em tipos. Os tipos de dados bsicos, tambm conhecidos como
tipos primitivos, tm uma pequena variao entre as diferentes linguagens de
programao (confira o quadro Tipos primitivos de dados).

Figura 85
Classe Pessoa.

Tipos primitivos de dados

O mtodo recebe os trs parmetros e os passa (tambm por parmetro)


para os respectivos mtodos sets, os quais armazenaro os dados nos atributos. Depois, retorna uma frase (String) de confirmao, como mostra a
figura 85.

Tipo

Abrangncia

boolean

Pode assumir o valor true (verdadeiro) ou o


valor false (falso).

char

Caractere em notao Unicode de 16 bits.


Serve para a armazenagem de dados
alfanumricos.
Possui um valor mnimo de \u0000 e um valor
mximo de \uffff. Tambm pode ser usado
como um dado inteiro com valores na faixa
entre 0 e 65535.

byte

um inteiro complemento de 2 em 8 bits com


sinal. Ele tem um valor mnimo de -128 e um
valor mximo de 127 (inclusive).

short

um inteiro complemento de 2 em 16 bits


com sinal. Possui um valor mnimo de -32.768 e
mximo de 32.767 (inclusive).

int

um inteiro complemento de 2 em 32 bits com


sinal. Tem valor mnimo de -2.147.483,648 e
mximo de 2.147.483,647 (inclusive).

long

um inteiro complemento de 2 em 64 bits com


sinal.
O seu valor mnimo
-9.223.372.036.854.775,808 e o mximo,
9.223.372.036.854.775,807 (inclusive).

float

Representa nmeros em notao de ponto


flutuante normalizada em preciso simples
de 32 bits em conformidade com a norma
IEEE 754-1985. O menor valor positivo
representado por esse tipo 1.40239846e-46 e
o maior, 3.40282347e+38

double

Representa nmeros em notao de ponto


flutuante normalizada em preciso dupla de 64
bits em conformidade com a norma IEEE 7541985. O menor valor positivo representado
4.94065645841246544e-324 e o maior,
1.7976931348623157e+308

4.8. Estruturas e recursos da linguagem Java


4.8.1. Palavras reservadas do Java
As palavras reservadas do Java so aquelas que tm um sentido predeterminado nessa linguagem. No podem ser usadas para outros fins, como por
exemplo nomes de variveis ou mtodos. Confira quais so elas no quadro
Palavras Reservadas.

palavras reservadas
abstract

boolean

break

byte

case

catch

char

class

const

continue

default

do

double

else

extends

final

finally

float

for

goto

if

implements import

instanceof

int

interface

long

native

new

package

private

protected

public

return

short

static

strictfp

super

switch

synchronized this

throw

throws

transient

try

void

while

assert

122

volatile

123

Informtica 4

captulo 4

4.8.3. Operadores
Atribuies

Aritmticos
+

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

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

>>=

!=

Diferente

Atribuio de Deslocamento de bit direita


com extenso de sinal

instanceof

Comparao de tipo

>>>=

Atribuio Deslocamento de bit direita


sem extenso de sinal

>

Maior que

<

Lgicos
&&

E (and)

||

Ou (or)

No (not)

Ternrio
?:

Incremento
++

Bit a Bit

124

Condicional (if-then-else compacto)

&

E (bitwise and)

Ou (bitwise or)

Ou exclusivo (bitwise xor)

<<

Deslocamento de bit esquerda

>>

Deslocamento de bit direita com extenso de sinal

>>>

Deslocamento de bit direita sem extenso de sinal

Negao (inverso bit a bit)

pr-incremento ou ps-incremento

Decremento
--

pr-decremento ou ps-decremento

4.8.4. Variveis e constantes


Em Java, a declarao de variveis feita informando o tipo de dado seguido
do nome da varivel. Apesar de no ser obrigatrio, em algumas situaes
interessante inicializar os valores das variveis no momento da declarao
(figura 86).
125

Informtica 4

captulo 4

Figura 86

Converso

Declarao
de variveis.

Perceba que nos tipos float e double deve-se explicitar o formato. Caso isso no
seja feito, ocorrer uma promoo de tipo (visto a seguir). Constantes em Java
so declaradas pelo comando final, ilustrado na figura 87.
Figura 87
Declarao de
constantes.

4.8.5. Converses de tipos de dados


4.8.5.1. Converso
A transformao de um dado de um tipo em outro realizada por mtodos
especficos, conforme o quadro Converso.
Exemplo: uma varivel do tipo String (figura 88).
Figura 88

De

Para

Mtodos

String

int

Integer.parseInt()

String

float

Float.parseFloat()

String

double

Double.parseDouble()

int

String

Integer.toString() ou String.valueOf()

float

String

Float.toString() ou String.valueOf()

double

String

Double.toString() ou String.valueOf

4.8.5.2. Cast (matriz)


So converses explcitas entre tipos primitivos, sempre respeitando a faixa de
abrangncia de cada tipo. Basicamente, o cast feito do tipo maior para o
menor sob risco de truncamento do valor se essa ordem no for respeitada
(observe o quadro Cast).

CAST

Convertida para dados numricos (figura 89).

Tipos

Cast vlidos

byte

nenhuma

short

byte

char

byte e short

int

byte, short e char

long

byte, short, char e int

float

byte, short, char, int e long

double

byte, short, char, int, long e float

Figura 89

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


Figura 90

126

127

Informtica 4

captulo 4

4.8.6. Desvios condicionais

Exemplos (figura 91).


Figura 91

4.8.6.1. If-else
A estrutura de if extremamente adaptvel, podendo assumir qualquer uma das
formas ilustradas nas figuras 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

float

double

long

float ou double

int

long, float ou double

char

int, long, float ou double

short

int, long, float ou double (char no)

byte

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

boolean

nenhuma

Veja alguns exemplos na figura 92.


Figura 92

Figura 95

O if considera o valor lgico (true ou false, literalmente verdadeiro ou falso)


resultante da condio. Se o tipo testado for um boolean, podemos aproveitar
seu prprio formato como condio (figura 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 verdadeira, 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).
Figura 98

4.8.7.3. For
O bloco de cdigo contido no for ser repetido quantas vezes a condio na
abertura do looping determinar. No exemplo em seguida, a varivel ir de 0 a
9 (figura 101).

Switch case.

Figura 101

4.8.8. Array (Vetor)

4.8.7. Laos de repetio


4.8.7.1. While
O teste condicional est no comeo do looping, ou seja, se a condio no for
verdadeira, o bloco de cdigo contido no while no ser executado. Se for, esse
bloco ser repetido enquanto a condio permanecer verdadeira (figura 99).
130

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
ser de tipos unidimensional e bidimensional. A quantidade de valores que um
array consegue armazenar definida na sua declarao.

4.8.8.1. Unidimensional
Um array pode ser composto por uma nica dimenso (nica linha), conforme
mostra a figura 102.
131

Informtica 4

captulo 4

Figura 102
Vetor
unidimensional.

ndices

ndices
vetorInteiros

vetorInteiros

Por meio de loopings, utilizando um contador (figura 107).

10

30

50

20

40

Figura 107

valores

nome

nome

valores

Exemplos:
A declarao pode ser feita de trs maneiras:
Em duas etapas (primeiro, definindo-se o tipo e, depois a dimenso, conforme
a figura 103).

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


Acessando explicitamente o ndice (posio) desejado (figura 108).
Figura 108

Figura 103

Em uma nica linha (figura 104).


Figura 104

Por loopings, utilizando um contador (figura 109).


Figura 109

Atribuindo valores s posies (figura 105).


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

Essa atribuio pode ser feita de duas maneiras:


Indicando explicitamente o ndice (posio) desejado (figura 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 irregulares (quantidade de linhas diferente para cada coluna), conforme figura 111.
132

133

Informtica 4

captulo 4

Figura 111
Vetor
bidimensional
irregular.

J a atribuio pode ser realizada de duas formas:


ndices

ndices

Indicando explicitamente o ndice (posio) desejado (figura 115).

Figura 115

matrizInteiros

matrizInteiros
nome

nome

12

47

85

36

62

25

32

67

74

41

23

17

valores
valores

49

ndices
ndices

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


Figura 116

Exemplos:
A declarao pode ser feita de trs maneiras:
Em duas etapas (primeiro, definindo-se o tipo e, depois, a dimenso), como na
figura 112.
Figura 112
Quanto leitura (apresentao), h duas opes para faz-la:
Acessando explicitamente o ndice (posio) desejado (figura 117).
Figura 117

Em uma nica linha, como na figura 113.


Figura 113

Atribuindo valores s posies (figura 114).


Figura 114
Por meio de loopings, utilizando um contador (figura 118).
Em um dos exemplos anteriores, foi manipulada uma matriz de 3 x 3, do tipo
double, que pode ser representada pela imagem da figura 119.
134

135

Informtica 4

captulo 4

Figura 118

uma List quando a ordem de insero ou a posio na coleo nos interessa. H alguns mtodos importantes, quando manipulamos Lists (confira o quadro Mtodos
da Interface List).

mtodos da Interface List

Figura 119
Vetor bidimensional
quadrado.

ndices

ndices

matrizDouble
matrizDouble
nomenome

10.0

20.0

30.0

40.0

50.0

60.0

70.0

80.0

90.0

valores
valores

Mtodo

Descrio

add (objeto)

Adiciona um elemento List na ltima posio

get (ndice)

Retorna o elemento da posio do ndice

iterator ()

Retorna um objeto do tipo Iterator

size ()

Retorna um int (inteiro) com a quantidade


de elementos da coleo

contains (objeto)

Retorna true se o elemento j existe dentro do List

clear ()

Elimina todos os elementos do List

ndices

Um ArrayList pode ser entendido como um array dinmico: ele aumenta ou diminui sua dimenso medida em que utilizado. Alm disso, possvel armazenar
dados (e objetos) de diferentes tipos no mesmo ArrayList. A classe ArrayList filha
(subclasse) de List e, portanto, tem todos os mtodos pertencentes List. Veremos
mais sobre subclasses adiante, quando estudarmos o conceito de herana.

4.8.9. Collections

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

ndices

um conjunto de classes e interfaces disponveis no pacote java.util, que faz o


uso do import necessrio. Essas classes fornecem recursos para trabalhar com
conjuntos de elementos (colees). Na verdade, todas as funcionalidades encontradas nas collections poderiam ser feitas manualmente, com a utilizao de
recursos normais da linguagem. A vantagem das collections que elas j trazem
essas funcionalidades prontas.
O estudo das collections relativamente extenso, pois existem muitos recursos disponveis. Por enquanto, vamos conhecer uma dessas colees, a ArrayList, responsvel
pelo manuseio de arrays. Sua grande vantagem contar com mtodos prontos.

mtodos da collection arraylist


Mtodo

Descrio

sort (ArrayList)

Ordena os elementos em ordem crescente

shuffle (ArrayList)

o oposto do sort. Ao invs de ordenar, ele


desordena (mistura) os elementos do ArrayList

binarySearch (ArrayList, valor)

Pesquisa um valor no ArrayList e retorna


sua posio (ndice). Se no for encontrado,
retorna um nmero inteiro negativo

reverse (ArrayList)

Inverte a ordem dos elementos

frequency (ArrayList, valor)

Conta a quantidade de ocorrncias


do elemento especificado

4.8.9.1. ArrayList
Antes de nos aprofundarmos nessa coleo, vamos primeiro conhecer melhor a
interface List. Como o prprio nome indica, ela cria e gerencia uma lista. Isso significa que a ordem de insero ser mantida. A interface List mantm seus elementos
indexados. Permite, portanto, que exista uma preocupao com o posicionamento
de cada elemento e que tal posio seja determinada pelo ndice. Devemos utilizar
136

137

Informtica 4

captulo 4

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

Atribuio de valores (figura 123).


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).
Figura 122

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


Figura 127

138

139

Informtica 4

captulo 4

Verificando o resultado da pesquisa (figura 128).

Pessoa

Figura 128

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

Resultado obtido (figura 129).


Cliente

Figura 129

- limiteCredito : double
- rendaMensal : double
- rg : String
- cpf : String
+ inserirDadosCliente() : void
+ apresentarCliente() : void

Fornecedor
- cnpj : String
- ie : String
- contato : String
+ inserirDadosFornecedor() : void
+ apresentarFornecedor() : void

Funcionario
- salarioBase : double
- salarioFinal : double
+ inserirDadosFuncionario() : void
+ apresentarFuncionario() : void

Principal

4.9. Orientao a objetos (2)


Uma vez estudados os fundamentos e sintaxes bsicas para a construo de objetos, e que devem ser muito bem assimilados, o objeto de estudo, em seguida, so
os principais conceitos de orientao a objetos, detalhando suas caractersticas
e aplicabilidades.

4.9.1. Herana
A herana um conceito amplamente utilizado em linguagens orientadas a objetos. Alm de vantagens facilmente identificadas, como a reutilizao e organizao de cdigos, a herana tambm a base para outros conceitos, como a sobrescrita de mtodos, classes e mtodos abstratos e polimorfismo. Tais conceitos
so fundamentais para a modelagem de sistemas mais robustos.
Durante a anlise dos requisitos de um sistema (solicitaes que o sistema dever
atender), podemos destacar os atributos ou os mtodos comuns a um grupo de
classes e concentr-los em uma nica classe (processo conhecido como generalizao). Da mesma forma, possvel identificar o que pertinente somente a
determinada classe (conhecido como especificao). A primeira vantagem dessa
organizao evitar a duplicidade de cdigo (ter o mesmo trecho de cdigo em
lugares diferentes do sistema), o que traz maior agilidade e confiabilidade na
manuteno e expanso do sistema.
Chamamos de superclasses essas classes que concentram atributos e mtodos
comuns que podem ser reutilizados (herdados) e de subclasses aquelas que
reaproveitam (herdam) esses recursos. Observe as definies de clientes, fornecedores e funcionrios utilizados na livraria de acordo com o diagrama de
classes (figura 130).
140

+ main(args[ ] : String) : void

A classe pessoa contm oito atributos e um mtodo, os quais so comuns para


clientes, fornecedores e funcionrios e, portanto, deveriam constar nas classes
Cliente, Fornecedor e Funcionario. Sem o recurso da herana, teramos que replicar esses atributos e mtodos nas trs classes, procedimento desaconselhvel
em qualquer linguagem de programao, por trazer complexidades extras na
manuteno e expanso dos sistemas. Por exemplo, vamos considerar um mtodo para emisso de correspondncia que foi atualizado para comear a gerar um
histrico de remessas. Tal atualizao deveria ser feita nas trs classes envolvidas
e, caso uma delas no fosse realizada, a atualizao do controle de remessas (gerao de histrico) ficaria inconsistente.

Figura 130
Herana.

No modelo acima, a classe Pessoa foi definida como uma superclasse e as classes
Cliente, Fornecedor e Funcionario, como suas subclasses. Do ponto de vista da
funcionalidade, tudo o que foi definido na superclasse (atributos e mtodos) ser
herdado pelas suas subclasses. Ou seja, um objeto instanciado a partir da classe
Cliente possui 12 atributos. So eles: nome, endereo, bairro, cidade, UF, telefone
e celular declarados na superclasse Pessoa, alm de limiteCredito, rendaMensal,
RG e CPF na subclasse Cliente. H ainda trs mtodos, nos quais mostrar telefones
foi definido na classe Pessoa e inserir DadosCliente e apresentarCliente foram definidos na classe Cliente. Na utilizao desses atributos e mtodos para um objeto
do tipo Cliente, fica transparente o local onde cada um foi declarado ou definido.
Para estabelecer a herana em relao codificao, as superclasses continuam
com a mesma estrutura de uma classe comum (como vimos em exemplos anteriores). J as subclasses recebem as seguintes definies:
141

Informtica 4

captulo 4

Abertura da classe (figura 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 (figura 132).


Figura 132

Livro

Dvd

Cd

- autor : String
- editora : String
- edicao : String

- artista : String
- gravadora : String
- paisOrigem : String

- diretor : String
- duracao : String
- censura : int

+ calcularPrecoVenda(didatico : boolean) : void


+ inserirDadosLivro() : double
+ apresentarLivro() : void

+ inserirDadosCd() : void
+ apresentarCd() : void

+ inserirDadosDvd() : void
+ apresentarDvd() : void

Principal
+ main(args[ ] : String) : void

Os construtores esto diretamente relacionados inicializao dos atributos de uma


classe. Partindo desse princpio e considerando o nosso exemplo, um objeto do tipo
cliente possui todos os atributos declarados na sua superclasse (Pessoa) mais os declarados na classe Cliente. Portanto, o construtor de uma subclasse deve estar preparado para inicializar os atributos herdados e os declarados na prpria classe.
No construtor que recebe parmetros (aquele que inicializa os atributos com
algum valor), utilizamos o mtodo super() para invocar o construtor da superclasse. Isso porque j foi definida nele a forma como esses atributos sero inicializados (reutilizando o construtor j existente na superclasse), restando apenas
inicializar os atributos na subclasse.
Para acessar os atributos da superclasse, obrigatoriamente, devemos utilizar seus
mtodos de acesso (getters e setters), ao contrrio dos atributos instanciados na
prpria classe, que podem ser acessados diretamente. Porm, como j comentamos antes, para garantir o conceito de encapsulamento e usufruir de seus benefcios (segurana, manutenabilidade etc.), sempre devemos criar e utilizar os
mtodos getters e setters para todos os atributos. Em relao ao nosso exemplo,
o mesmo se aplica s classes Fornecedor e Funcionario.

4.9.2. Sobrecarga de mtodo (overload)


A programao em sistemas desenvolvidos com Java distribuda e organizada em mtodos. Muitas vezes, os programadores se deparam com situaes em que um mtodo deve ser usado para finalidades semelhantes,
mas com dados diferentes. Por exemplo, os produtos comercializados na
142

livraria so livros, CDs e DVDs, como representado no diagrama de classe


na figura 133.

Figura 133
Sobrecarga do mtodo
calcularPrecoVenda.

O clculo do preo de venda dos produtos da livraria depende de alguns fatores: em


determinadas pocas do ano, todos os produtos recebem a mesma porcentagem de
acrscimo em relao ao preo de custo. Se o produto em questo for importado,
necessrio considerar a cotao do dlar. Em algumas situaes (promoes, por
exemplo), preciso atualizar todos os produtos de um determinado um gnero. E, no
caso especfico dos livros didticos, o clculo do preo de venda diferente dos demais.
Em outras linguagens de programao, como no possvel termos duas funes
(blocos de cdigo equivalentes a mtodos) com o mesmo nome, nos depararamos
com a necessidade de criar funes nomeadas (calcularPrecoVenda1, calcularPrecoVenda2, calcularPrecoVenda3, calcularPrecoVenda4 ou calcularPrecoVendaNormal,
calcularPrecoVendaImportado, calcularPrecoVendaPorGenero e calcularPrecoVendaLivroDidatico e assim sucessivamente). Dessa forma, alm de nomes extensos, e
muitas vezes estranhos, teramos uma quantidade bem maior de nomes de funes
para documentar no sistema.
Em Java, para situaes desse tipo, usamos a sobrecarga que considera a identificao do mtodo pela assinatura e no somente pelo nome. Como j vimos, a assinatura de um mtodo composta pelo nome e pela passagem de parmetros. Assim,
possvel definir os mtodos com o mesmo nome (calcularPrecoVenda, como no
diagrama) e alternar a passagem de parmetros. Observe, na figura 134, como fica a
codificao dos mtodos na classe Produto.
143

Informtica 4

captulo 4

Figura 134

O Java identificar o mtodo que deve ser executado de acordo com a chamada
realizada, como mostra o exemplo da figura 137.

Codificao dos
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)


E na classe Livro (figura 135):
Figura 135

A sobrescrita de mtodos est diretamente relacionada com a herana e consiste


em reescrever um mtodo herdado, mudando seu comportamento, mas mantendo
exatamente a mesma assinatura. Para exemplificar, utilizaremos o clculo do salrio
final dos funcionrios da livraria (figura 138).

Codificao do
mtodos na
classe Livro.

Figura 138
Sobrescrita
do mtodo
calcularSalarioFinal.

Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
- tefone : String
- celular : String

Os pontos importantes na codificao anterior so:


A diferenciao das assinaturas dos mtodos se baseia na quantidade e no
tipo de dado dos parmetros.

+ mostrarTelefones() : void

A sobrecarga pode ser realizada na mesma classe ou em subclasses, e os conceitos de herana so aplicados na utilizao dos objetos. Em nosso exemplo,
um objeto do tipo Livro tem quatro mtodos calcularPrecoVenda(), j CD
e DVD tm trs.

Funcionario
- salarioBase : double
- salarioFinal : double
+ inserirDadosFuncionario() : void
+ calcularSalarioFinal(valorVendido : double) : void

No mtodo main, teremos o que ilustra a figura 136.


Figura 136
Gerente

Vendedor

Temporario

- gratificacao : double

- valorComissao : double

- comissionado : boolean

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

+ apresentarFuncionario() : void

+ inserirDadosFuncionario() : void
+ apresentarFuncionario() : 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 salrio base). Consequentemente, esse mtodo foi herdado por suas subclasses Gerente, Vendedor e Temporario. O problema que, de acordo com as normas
da livraria, o clculo do salrio dos gerentes e dos temporrios diferente. Para
os vendedores, o mtodo calularSalarioFinal herdado est correto, porm, para
Gerente e Temporario, no. O problema pode ser solucionado com a sobrescrita
dos mtodos calcularSalarioFinal nas classes Gerente e Temporario. Na classe
Funcionario, o mtodo foi codificado da forma como ilustra a figura 139.

4.9.4. Classes e mtodos abstratos

Figura 139

J na subclasse Gerente fica da seguinte maneira (figura 140).


Figura 140

preciso, a princpio, conhecer os recursos utilizados na modelagem de sistemas.


Para entender melhor o assunto, devemos ampliar o horizonte e pensar na arquitetura e no desenho da aplicao como um todo, assim como na manuteno e na
expanso, atividades que podem ser realizadas por programadores (ou equipes de
programadores) distintas e em momentos diferentes, mas que sempre seguiro as
definies descritas no projeto. A primeira abordagem de classe abstrata que
se trata de classes que no daro origem a objetos. Em outras palavras, um objeto
no poder ser instanciado a partir delas. A sua finalidade, ento, definir, por
generalizao (possibilitada pela herana), os recursos (atributos e mtodos) comuns a um grupo de classes (subclasses). Analisemos a representao dos clientes
existentes na livraria no diagrama da figura 143.
<<abstract>>
Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
- telefone : String
- celular : String

E na subclasse Temporario, veja a figura 141.


Figura 141

As classes e mtodos que vimos


anteriormente so chamados
de concretos. Os que estamos
estudando agora so as classes
e mtodos abstratos, que
possuem algumas caractersticas
especficas: 1. Em UML,
classes e mtodos abstratos
so formatados em itlico. 2.
Uma classe concreta s pode
conter mtodos concretos.
3. Uma abstrata pode conter
mtodos concretos e abstratos.
4. Uma subclasse que herda um
mtodo abstrato obrigada a
incluir a assinatura do mtodo,
contendo ou no implementao
(programao). 5. Enquanto
no for includa a assinatura do
mtodo abstrato herdado, a
subclasse apresentar um erro
que impedir sua compilao.

Figura 143
Classes abstratas
Pessoa e Cliente e
mtodo abstrato
calcularLimiteCredito.

+ mostrarTelefones() : void

<<abstract>>
Cliente
- limiteCredito : double
+ calcularLimiteCredito() : double

Os objetos que representaro um gerente, um vendedor e um temporrio sero instanciados a partir das classes Gerente, Vendedor e Temporario. Nesse
momento (da criao dos objetos), o Java considera a estrutura de cada subclasse, a qual d origem ao objeto. Ento, um objeto do tipo Gerente considera
a codificao do mtodo calcularSalarioFinal da classe Gerente; um do tipo
Temporario leva em conta a codificao da classe Temporario, e um do tipo
Vendedor focaliza o mtodo herdado, mas todos so invocados exatamente da
mesma forma (figura 142).
A sobrescrita de mtodos tambm proporciona vantagens relacionadas ao gerenciamento polimrfico de objetos.
146

ClientePJ

ClientePF
- rg : String
- cpf : String
- rendaMensal : double

- cnpj : String
- ie : String
- faturamentoAnual : double

+ calcularLimiteCredito() : void
+ inserirDadosClientePF() : void
+ apresentarClientePF() : void

+ calcularLimiteCredito() : void
+ inserirDadosClientePJ() : void
+ apresentarClientePJ() : void
Principal
+ main(args[ ] : String) : void

147

Informtica 4

captulo 4

As classes Cliente e Pessoa, nesse contexto, servem somente para definir quais e
como sero os recursos (atributos e mtodos) comuns a ClientePF e ClientePJ.
Os objetos que representaro os clientes da livraria sero instanciados a partir
das classes ClientePF e ClientePJ e nunca de Cliente e muito menos de Pessoa.
Ao definir as classes Pessoa e Cliente como abstratas, evitamos que, por uma
eventual falha de desenvolvimento, objetos sejam instanciados a partir delas, o
que no faria sentido. Alm de classes, podemos tambm definir mtodos como
abstratos, os quais servem para definir e forar, uma padronizao nas subclasses
em relao existncia e assinatura de mtodos herdados.
Um mtodo abstrato no possui implementao (codificao). composto
somente pela assinatura, na qual so definidos seu nome, passagem de parmetros e retorno de valor. Na codificao de uma subclasse que estende de
uma superclasse que, por sua vez, possui um mtodo abstrato, o programador
obrigado a inserir, pelo menos, a assinatura desse mtodo, podendo ou no
implement-lo (codific-lo). Voltando ao exemplo dos clientes da livraria apresentado na figura 130, calcularLimiteCredito definido na classe Cliente um
mtodo abstrato. Dessa forma, nas classes ClientePF e ClientePJ, somos obrigados a inclu-lo. A declarao abstract define uma classe abstrata, conforme
se observa na figura 144.

<<interface>>
Usuario
+ validarLogin(login : String, senha : String) : boolean

<<abstract>>
Cliente
- limiteCredito : double
+ mostrarTelefones() : void
+ calcularLimiteCredito() : double
+ validarLogin(login : String, senha :
String) : void

<<abstract>>
Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
- tefone : String
- celular : String
- login : String
- senha : String
- tipoUsuario : String
+ mostrarTelefones() : void

Fornecedor
- cnpj : String
- ie : String
- contato : String
+ mostrarTelefones() : void

<<abstract>>
Funcionario
- salarioBase : double
- salarioFinal : double
+ mostrarTelefones() : void
+ calcularSalarioFinal(valorVendido :
double) : void
+ validarLogin(login : String, senha : String)
: double

Figura 144

Cliente e Funcionario
A declarao abstract tambm usada para mtodos (figura 145).
Figura 145

A utilizao de um mtodo abstrato garante que todas as subclasses de Cliente


obrigatoriamente tero, pelo menos, a assinatura do mtodo calcularLimiteCredito. Isso garante no s a padronizao de modelagem (os programadores
sero obrigados a seguir tais definies) como tambm a aplicao de conceitos polimrficos.

4.9.5. Interfaces
Ainda no nvel da modelagem do sistema, as interfaces so tipos especiais
de classes que servem para definir padres de como determinados grupos de
classes podero ser usados, definindo assinaturas de mtodos pelas classes
que devero ser adotados obrigatoriamente pelas classes (e subclasses) que as
implementarem.
Uma interface composta somente por mtodos abstratos (no possui atributos
nem mtodos concretos) e pode ser vista como uma espcie de contrato, cujas
especificaes as classes que as assinam (implementam) se comprometem a seguir, ou seja, devem seguir os mtodos nela definidos. A figura 146 ilustra uma
implementao de interface.
148

Para utilizar o sistema da livraria, o usurio dever ser identificado por um login
e uma senha. Os funcionrios tero acesso ao sistema para utiliz-lo em suas
rotinas de trabalho, como cadastros e atualizaes de dados dos clientes, produtos, movimentao, entre outros recursos disponveis no sistema, cujo acesso tambm ser permitido aos clientes, para que possam visualizar promoes
especiais e tambm entrar em contato com a livraria, pelo seu site na internet.
Assim, tanto funcionrios como clientes devero ser devidamente identificados,
para ter acesso ao sistema, algo que ser realizado da mesma forma (recebendo
o login e a senha e retornando verdadeiro ou falso). Ento, pode-se concluir que
o ideal seria criar um mtodo de validao utilizado tanto por clientes como
por funcionrios. Mas para fazer isso nos deparamos com algumas dificuldades:

Figura 146
Implementao da
inteface Usuario
pelas classes Cliente
e Funcionario.

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


mtodo de validao de usurio na superclasse Pessoa, os dois herdariam esse
mtodo e o nosso problema estaria aparentemente resolvido. Porm, a classe
Fornecedor tambm subclasse de Pessoa e, por isso, tambm herdaria o
mtodo de validao. S que os fornecedores no devero acessar o sistema.
Se o mtodo de validao for includo na superclasse Cliente, suas subclasses
possuiriam o mtodo de validao. Todavia, os funcionrios pertencem a
outro nvel hierrquico de classe (a partir da subclasse Funcionario) e no
teriam acesso ao mtodo e validao.
Da mesma forma, se forem includos na classe Funcionario, os clientes tambm no tero acesso.
149

Informtica 4

captulo 4

O uso de uma interface resolve o problema j que, para implement-la, as classes no


precisam ser da mesma hierarquia. Lembre-se que uma interface s possui mtodos
abstratos. Assim, a classe Cliente e a classe Funcionario no recebero o mtodo de
validao j codificado. Entretanto, a partir dessa implementao, teremos a certeza
de que existir um mtodo (com a mesma assinatura) nas classes (e subclasses) Cliente e Funcionario. Veja a codificao da interface Usuario na figura 147.

necessidade. Por exemplo, para calcular os impostos a serem pagos pela livraria,
devemos considerar que existem aqueles que incidem sobre os funcionrios e os
que incidem sobre os produtos comercializados. Nesse caso, podemos criar uma
interface chamada Custos que defina um mtodo calcularImpostos, o qual dever ser implementado na classe Funcionario e na classe Produto. Veja o exemplo da classe Funcionario na figura 152.

Figura 147

Figura 152

Para interfaces, no obrigatrio o uso do comando abstract, ficando implcito


que todos os mtodos inseridos em uma interface so abstratos. A assinatura
de uma interface realizada pelo comando implements da seguinte forma:
Classe Cliente (figura 148).

O polimorfismo a possibilidade de utilizar um objeto como se fosse um outro. Embora o conceito seja esse, algumas publicaes relacionadas ao Java e
orientao de objetos fazem abordagens diferentes. Ento, podemos considerar
basicamente trs tipos de polimorfismo: o de mtodos, o de classe, o de interface.

Figura 148

4.9.6.1. De mtodos

Figura 149

Muitos autores consideram polimorfismo a possibilidade de utilizar dois ou


mais mtodos com a mesma assinatura, mas com comportamentos (codificao) diferentes. Basta lembrar que j abordamos um recurso da linguagem Java
que permite exatamente isso: a sobrescrita. A questo no avaliar se essa viso
est correta ou no. Mesmo porque, de certa forma, a sobrescrita possibilita o
uso de um mtodo que pode assumir vrias formas (executar tarefas diferentes,
de acordo com sua 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.

Classe ClientePF (figura 149).

Classe Funcionario (figura 150).


Figura 150

Classe Gerente (figura 151).


Figura 151

Outra importante caracterstica das interfaces que uma mesma classe pode
implementar vrias delas. Como no existe herana mltipla em Java (uma
subclasse ter mais de uma superclasse), o uso de interface supre essa eventual
150

4.9.6. Polimorfismo

4.9.6.2. De classe
Considerando uma hierarquia de classes, temos, em uma superclasse, a generalizao de um tipo e, em suas subclasses, a especializao do mesmo tipo.
Imagine a seguinte situao: se colocarmos uma cesta disposio dos clientes
da livraria e nela estiver escrito Coloque aqui seus produtos, estes produtos
podem ser livros, CDs ou DVDs. Ou ainda, todos eles juntos. Outro exemplo:
na livraria, existe uma porta de acesso ao estoque e nela h uma placa com o
aviso Entrada permitida somente para funcionrios. Tanto pode entrar um
vendedor como um gerente, porque ambos so funcionrios.
Esse mesmo princpio se aplica aos programas em Java. Se 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 forma, se um mtodo espera um objeto do tipo Funcionario, possvel passar um objeto
instanciado a partir da classe Vendedor, por exemplo, que ser aceito sem problemas.
O raciocnio o seguinte: Um vendedor um funcionrio, assim como, Um
livro um produto. A diferena que vendedor foi definido a partir de uma
151

Informtica 4

captulo 4

especializao da classe Funcionario. Assim, pode ter atributos e mtodos especficos referentes a vendedores, porm, no deixa de ser um Funcionario.
Apesar de um livro poder ser utilizado como se fosse um Produto, no deixa
de ser um livro e de ter as caractersticas especficas de livro. O polimorfismo, portanto, a possibilidade de utilizar um objeto como se fosse outro e no
transform-lo em outro. O uso do polimorfismo de classe (ou de tipo) exemplificado na figura 153, que ilustra o processo de venda da livraria.
Na classe Movimentacao, h um atributo do tipo Cliente, ou seja, nele podemos armazenar um objeto instanciado a partir das classes ClientePF ou ClientePJ. Na classe ItemMovimentacao, temos um atributo do tipo Produto, o que
significa poder armazenar nesse atributo um objeto categorizado a partir das
classes Livro, CD ou DVD.

<<interface>>
EntidadeMovimentacao

<<abstract>>
Cliente
- limiteCredito : double
+ mostrarTelefones() : void
+ calcularLimiteCredito() : double
+ validarLogin(login : String, senha :
String) : void

Figura 153
Polimorfismo
de classe.
Venda
- nota : Movimentacao
+ vender() : void
+ finalizarNF(nota : Movimentacao) : void

Movimentacao
- nf : int
- cli : Cliente
- data : Date
- itens[ ] : itemMovimentacao
- status : boolean

<<abstract>>
Pessoa
- codigo : int
- nome : String
- endereco : String
- bairro : String
- cidade : String
- uf : String
- tefone : String
- celular : String
- login : String
- senha : String
- tipoUsuario : String
+ mostrarTelefones() : void

Figura 154
Implementao
da inteface
EntidadeMovimentacao.

Fornecedor
- cnpj : Spring
- ie : Spring
- contato : Spring
+ mostrarTelefones() : void

<<abstract>>
Funcionario
- salarioBase : double
- salarioFinal : double
+ mostrarTelefones() : void
+ calcularSalarioFinal(valorVendido : double) : void
+ validarLogin(login : String, senha : String) : double

+ adicionarItem(item : Movimentacao) : void

Figura 155
Principal
+ main(args[ ] : String) : void

Venda

ItemMovimentacao
- produto : Produto
- qtde : int
- totalItem : double

+ vender() : void
+ finalizarNF(nota : Movimentacao) : void

Polimorfismo de
classe e de interface.

+ totalizarItemVenda() : void

4.9.6.3. De interface
Tanto uma superclasse como uma interface podem ser interpretadas como um
superTipo. Ou seja, possvel referenciar um objeto pela interface que sua
classe de origem implementa. Voltemos ao exemplo da movimentao da livraria. Para definir quais classes podem ser utilizadas na movimentao de mercadorias, criamos a interface EntidadeMovimentacao e a implementamos nas
classes Cliente e Fornecedor (figura 154).
A movimentao, considerando compra e venda, ficar como aparece na figura 155.
Temos uma nica classe Movimentacao responsvel pelos dados do corpo da
compra e da venda. Para armazenar o cliente (no caso de venda) ou o fornecedor
(no caso de compra), h o atributo destinatrio, do tipo EntidadeMovimentacao, interface que as duas classes implementam.
152

ItemMovimentacao
Principal
+ main(args[ ] : String) : void

- produto : Produto
- qtde : int
- totalItem : double
+ totalizarItemCompra() : void
+ totalizarItemVenda() : void

Movimentacao
- nf : int
- data : Date
- destinatario : EntidadeMovimentacao
- itens[ ] : ItemMovimentacao
- status : boolean
- tipo : String
+ adicionarItem(item : ItemMovimentacao) : void

Compra
+ comprar() : void
+ finalizarNF(nota : Movimentacao) : void

153

Informtica 4

captulo 4

A camada de
apresentao
determina como
o usurio interage
com a aplicao e
como as informaes
so captadas e
apresentadas. A de
negcio tambm
chamada de
Lgica empresarial,
Regras de negcio
ou Funcionalidade.
nela que ficam
armazenadas as
codificaes do
funcionamento de
todo o negcio. A
de dados gerencia a
conexo com todas
as fontes de dados
usadas pelo aplicativo
(normalmente, um
banco de dados) e
o abastecimento de
dados dessas
fontes para a lgica
de negcio.

154

4.10. Padres de desenvolvimento de sistemas

4.10.3. Packages

Um padro para desenvolvimento de sistemas estabelece critrios de anlise, organizao, modelagem, distribuio de tarefas, manuteno, expanso e comunicao entre softwares. H duas mtricas bsicas de qualidade que devem ser
seguidas por um software: coeso e acoplamento. Um software tem que ter uma
alta coeso, isto , todos os componentes (mtodos, classes, pacotes ou qualquer
diviso que se faz dependendo do seu tamanho) e devem possuir o mesmo nvel
de responsabilidade. O ideal que cada componente esteja focado na resoluo
de um problema especfico. Alm disso, precisa haver baixo acoplamento: cada
elemento deve ser o mais independente possvel de outro. E uma alterao da
implementao de um componente no pode afetar nenhum outro.

No decorrer do desenvolvimento de um software, muitas classes so criadas e,


logo, nos deparamos com a necessidade de organiz-las. Os packages servem
para agrupar as classes, normalmente por funcionalidades comuns. Alm das
vantagens vistas anteriormente, as classes so ordenadas de maneira lgica e
fsica, pois, para cada package, criado um diretrio em disco para salvamento.
Como exemplo no projeto Livraria, todas as classes esto contidas no default
package, como se observa na figura 156.
Figura 156
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 possibilitando a consequente reutilizao dos componentes. Isso faz com que o custo de
manuteno da aplicao caia e a qualidade do cdigo aumente.

4.10.1. Programao em trs camadas


Um dos padres mais utilizados no desenvolvimento de softwares o que separa,
logicamente, uma aplicao em trs camadas: de apresentao, de negcio e de
dados. A vantagem desse tipo de desenvolvimento que, com a independncia das
camadas, as atualizaes e correes em uma delas podem ser feitas sem prejudicar as
demais. No h, portanto, maior impacto sobre a aplicao como um todo.

4.10.2. MVC (Model, View, Controller)


O MVC (iniciais de modelo, viso e controlador) outro padro muito utilizado em aplicaes orientadas a objetos. Segue o mesmo princpio da separao
em camadas, porm, com um foco maior em como esses nveis interagem.
Podemos ver a camada de negcios como o Model (contendo as classes de modelagem da aplicao) e a de apresentao como a View (com toda forma de interao
com o usurio: interfaces grficas, pginas da web etc.). O Controller, porm,
especfico dessa arquitetura. o nvel responsvel pelas solicitaes ao Model (instancia e utiliza os objetos disponveis) e interao com a View (recebe, manipula e
fornece os dados obtidos). A camada de dados, responsvel pela comunicao com
o banco de dados, no citada especificamente pela MVC, podendo ser visualizada como pertencente ao Model ou como uma camada independente.

O mesmo projeto Livraria devidamente organizado em packages pode ser visua


lizado nas figuras 157 e 158.
Figura 157
Organizao
em packages.

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 recursos do sistema por funcionalidade e, em Java, esse agrupamento feito em
packages (pacotes).
155

Informtica 4

captulo 4

Figura 158

lidacaoUsuario, que d origem tela anterior, para depois conferir os principais


pontos do cdigo (consulte o quadro Principais pontos do cdigo).

Classes organizadas em
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), localizada no pacote java.awt, que faz uso dos recursos de cada sistema operacional 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 FormVa156

157

Informtica 4

captulo 4

Principais pontos do cdigo

A classe FormValidacaoUsuario instanciada e exibida a partir da classe Principal, reproduzida na figura 161.
Figura 161

Linha 01: importa a API AWT e a disponibiliza


para uso.

Classe Principal.

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.
Linha 05 a 08: a declarao dos componentes,
necessria, assim como os atributos, para classes
que utilizam elementos grficos. Nesse exemplo,
usa-se Button (botes), Label (rtulos), TextField
(caixas de texto) e Dimension (um tipo especial,
cuja finalidade definir o tamanho - altura
e largura - dos componentes).
Linha 10: a assinatura do construtor da classe,
ou seja, dentro desse mtodo sero definidos
quais componentes iro compor a tela e como.
Linha 12 a 15: criao dos objetos dimension
que contm as dimenses (altura e largura)
usadas em cada componente.
Linha 17 a 21: alterao de algumas
propriedades do Frame (janela) como ttulo
(setTitle()); possibilidade de a janela ser ou
no redimensionada (setResizable()); tamanho
(setSize(), fazendo uso de um objeto dimension
(dFrame) para definio desse tamanho; localizao
em relao ao monitor (setLocation()), e definio
de se ser utilizado um gerenciador de layouts
(setLayout(null)).
Linha 23 a 25: instancia um objeto do tipo Label
e define seu tamanho e localizao (em relao
ao Frame). Nas linhas seguintes, so instanciados
os demais componentes e apresentados
seus tamanhos e sua localizao.
Linha 47 a 52: os componentes que foram criados
e configurados so adicionados janela (Frame)
para montar a tela.

Ao ser executada a classe Principal, a tela reproduzida antes, na figura 159,


ser exibida, mas no executar nenhuma ao, nem mesmo funcionar o
boto com um x no canto superior direito da janela. que, para colocar
eventos na janela, devemos implementar interfaces especficas para essa
finalidade.

4.11.2. Interfaces listeners


Para controlar os eventos de um formulrio, devemos incluir na classe as
interfaces gerenciadoras de eventos, tambm chamadas de listeners. Um
listener pode ser entendido como um ouvinte ou um rastreador, que
consegue capturar um evento ocorrido no formulrio e permite vincular a
ele, uma ao (codificao). Entre os diferentes tipos de eventos que podem
ocorrer, os mais comuns so:
E
 ventos de ao (em componentes): implementados pela interface
ActionListener.
Eventos de janela: implementados pela interface WindowListener.
Eventos de teclado: implementados pela interface KeyListener.
Eventos de mouse: implementados pela interface MouseListener.
Cada um dos listeners possui mtodos que capturam os eventos ocorridos. A
interface ActionListener possui apenas um, que :
actionPerformed().
A interface WindowListener tem sete:
windowActivated(), windowDeactivated(), windowIconified(), windowDeiconified(), windowOpened(), windowClosed() e windowClosing().
A interface KeyListener conta com trs:
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).


Figura 164

mouseCliecked(), mouseEntered(), mouseExited(), mousePressed() e mouseReleased().

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. Portanto, ao implement-los, todos os seus mtodos devem estar inseridos na classe. 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 packages) do projeto ValidacaoUsuario.
Figura 162
Projeto
ValidacaoUsuario.

Veja como ficou a classe FormValidarUsuario aps a atualizao (figura 163) e,


em seguida, confira uma anlise da codificao.
Figura 163
Classe
FormValidarUsuario
atualizada.

Linha 01: de acordo com a estrutura de packages, necessrio definir


a qual classe pertence.
Linha 02 a 07: imports das classes que possuem os recursos para realizar a leitura de eventos.
Linha 09: incluso das duas listeners na abertura da classe pelo comando implements.
160

Para que o WindowListener funcione, necessrio adicionar o Frame a ele (pelo mtodo addWindowListener(this), visto na linha 86), assim como implementar os sete
mtodos (abstratos) pertencentes ao WindowListener (linhas 90 a 110), mesmo que
s utilizando um deles (windowClosing) para fechar o formulrio (linhas 108 a 110).
Vamos ver como o funcionamento do ActionListener, aproveitando a oportunidade para entender como fazer a interao entre um objeto (originado de uma
classe de modelagem, como foi possvel observar nos exemplos anteriores) e o
formulrio, que agora exerce a tarefa de se comunicar com o usurio (camada
view). O objeto em questo do tipo ClientePF e possui, entre outros atributos,
um login e uma senha. Esse objeto tambm conta com um mtodo chamado
validarLogin, que recebe duas Strings por parmetro (login e senha) e as compara
com seus atributos (login e senha). Se forem iguais, apresentar uma mensagem
Cliente autorizado!, caso contrrio, mostrar Login desconhecido!. Em seguida, confira a codificao do mtodo validarLogin da classe ClientePF (figura 165).
Figura 165
Codificao
do mtodo
validarLogin da
classe ClientePF.

161

Informtica 4

captulo 4

Figura 166

Quando um evento for disparado em qualquer componente adicionado ao


ActionListener, ele ser capturado e o mtodo actionPerformed, executado.
Resta, agora, identificar qual componente sofreu o processo. Para isso, utilizaremos 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 estejam, o mtodo validarLogin do objeto clientePF acionado, passando por
parmetro o que foi digitado nos textfields tf Login e tfSenha. Os componentes textFields possuem um mtodo getText() para recuperar o que foi
digitado nele e um mtodo setText() que altera o seu valor.

Importando o
pacote model.

4.11.3. Swing
Para fazer a interao do objeto clientePF com a tela de login, instanciamos
o objeto na classe FormValidacaoUsuario, inicializando o login com a palavra
aluno e a senha com 123, pelo construtor. Mais uma vez, respeitando a organizao de packages. Para ter acesso classe ClientePF, necessrio importar
o pacote model (linha 14), conforme ilustra a figura 166.
O prximo passo adicionar os botes ao ActionListener, pelo mtodo
addActionListener(this), para que eles passem a ser monitorados pelo ActionListener (figura 167).

A API Swing, localizada no pacote javax.swing, uma atualizao da AWT


que soluciona - ou pelo menos diminui - a dependncia do sistema operacional, caracterstica de interfaces desenvolvidas com AWT. Essa API
desenha cada componente ou janela que necessita. Assim, permite que o
comportamento visual do programa seja o mesmo em qualquer plataforma, alm de oferecer um conjunto extenso de componentes visuais. Para
testar as diferenas entre o AWT e a Swing, vamos transformar a classe
FormValidarUsuario em Swing. Primeiro, vale analisar a abertura da classe
(figura 169).
Linha 06 a 11: imports da API Swing.

Figura 167
Adicionando botes ao
ActionListener.

Linha 15: a herana agora estabelecida com uma classe JFrame.


Visualmente, a diferena de nomenclaturas de componentes do AWT em relao 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

E, por fim, implementar o mtodo actionPerformed (figura 168).

A classe
FormValidacaoUsuario
utilizando o swing.

Figura 168
Implementando o
actionPermormed.

162

163

Informtica 4

captulo 4

Em relao aos listeners, a implementao explcita no mais necessria. Eles


continuam sendo utilizados, mas, agora, de forma implcita. No trecho seguinte
da figura 170, temos o incio do construtor e a instanciao dos componentes.
Figura 170
Incio do construtor
e instanciao dos
componentes.

Linha 44: a incluso de um componente na interface ActionListener (deixando preparado para receber um evento), assim como
a utilizao de AWT, realizada pelo mtodo addActionListener.
Porm, com a Swing criado uma ActionListener (linha 45) dentro do mtodo addActionListener e definido seu mtodo actionPerformed (linha 46). Com o uso do AWT, tnhamos um nico
mtodo actionPerformed e, nele, identificvamos o componente
que sofreu um evento. Com a Swing, h a definio de um Action
Listener e de um mtodo actionPerformed para cada componente
que pode sofrer um evento.
Em relao s instrues definidas no evento, vale observar o que vem mais
adiante.
Linha 48: para leitura da senha foi utilizado um componente do
tipo JPasswordField, que substitui a senha digitada por outros caracteres (asteriscos ou bolinhas, por exemplo). Para recuperar a senha,
necessrio converter esses caracteres para String, permitindo que
sejam utilizados.

Utilizando a API Swing, o gerenciamento da janela ficou a cargo do componente do tipo Conteiner, que receber e organizar todos os componentes.
Linha 26: define o ttulo da janela pelo construtor da superclasse
(acessado pelo mtodo super()).
Linha 27: cria um componente nomeado como tela do tipo Conteiner.
Linha 28: define que no ser utilizado um gerenciador de layout.

Na sequncia, verificado se o login ou a senha esto vazios (linha 50). Ento,


o mtodo validarLogin do objeto clientePF invocado, passando-se o login e a
senha (lidos pelo formulrio) por parmetros.
Em relao ao exemplo AWT, o mtodo validarLogin retorna true (se os
valores passados forem iguais ao seus atributos login e senha) e false, se
forem diferentes. A estrutura de desvio condicional if codificada na linha
55 considera esse retorno para apresentar uma das mensagens definidas. A
seguir (figura 172), encontra-se a codificao do mtodo validarLogin (j
modificado) da classe ClientePF.

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

Figura 172
Codificao do mtodo
validarLogin j modificado.

O mtodo setBounds() responsvel por definir o tamanho e a localizao do componente pelos parmetros que recebe, na seguinte sequncia: coluna, linha, largura e
altura. Na figura 171, observe o trecho que define os eventos.
Figura 171
Trecho que
define os eventos.

A API AWT e a Swing possuem vrios componentes que no foram abordados


nesses exemplos.

4.12. Tratamentos de excees


Na execuo de um programa, possvel que ocorram erros de lgica e de
execuo, capazes de provocar a sua interrupo, de produzir resultados
incorretos ou ainda de causar uma ocorrncia inesperada.
164

Erros de lgica: apresentam-se


na elaborao de um algoritmo
no apropriado para solucionar
o problema. No causam
necessariamente interrupo
na execuo do programa.
Erros de execuo: mais
especficos se comparados
aos lgicos, decorrem
de uma operao invlida
e causam interrupo na
execuo do programa,
porque este recebe um sinal
indicando que a operao
no pode ser realizada.

165

Informtica 4

captulo 4

4.12.2.1. Unchecked Exception


Throwable

Error

Exception
RuntimeException

IOException

AWTError

ThreadDeath

OutOfMemoryError

Uma exceo no verificada aquela em que o compilador Java no checa o cdigo


para determinar se ela foi capturada ou declarada. Em outras palavras, o programador no obrigado a inserir o tratamento de erro. De modo geral, pode-se impedir
a ocorrncia de excees no verificadas pela codificao adequada. Todos os tipos
de exceo, que so subclasses diretas ou indiretas da classe RuntimeException, so
excees no verificadas. So exemplos de Unchecked Exceptions a entrada de tipos
incompatveis (Leitura de uma String em um atributo double, por exemplo); acesso
a ndice inexistente em um array e chamada a um mtodo de um objeto nulo.

4.12.2.2. Checked Exception


ArrayIndexOutOfBoundsException

ClassCastException

InputMismatchException

NullPointerException

ArithmeticException

Figura 173
Parte da hierarquia
da classe Throwable.

As linguagens de programao possuem formas para identificar e tratar os erros


de execuo. Em Java, so detectados pela JVM e criado um objeto de uma
classe que caracteriza o erro. O programa que gerou o erro notificado e, caso
seja possvel trat-lo, pode-se acessar o objeto que o caracteriza.
Os erros so caracterizados por objetos de classes especficas que pertencem
hierarquia da classe Throwable. Uma parte dessa hierarquia pode ser visualizada
na figura 173.
A classe Throwable a superclasse da classe Exception e, portanto, tambm
a superclasse de todas as excees. Somente objetos Throwable podem ser utilizados como mecanismos de tratamento de excees. A Throwable tem duas
subclasses: Error e Exceptions.

4.12.1. Error
A Error, com suas subclasses, utilizada para indicar erros graves que no se
esperam que sejam tratados pelo programas. Errors raramente acontecem e no
so de responsabilidade da aplicao. Exemplos de Errors so os internos da
JVM e a falta de memria.

4.12.2. Exception
Os erros em Java so, normalmente, chamados de exceptions. Uma exceo,
como sugere o significado da palavra, uma situao que normalmente no
ocorre (ou no deveria ocorrer), algo estranho ou inesperado provocado no sistema. O Java distingue duas categorias de excees: Unchecked (no verificadas)
e Checked (verificadas).
166

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-finally.

4.12.2.3. Throws
O Throws delega, para o local onde o mtodo foi solicitado, a responsabilidade
de tratar o erro. Isso quer dizer que a obrigatoriedade de tratamento passada
para a classe que far a chamada ao mtodo.

4.12.2.4. Try-catch-finally
a principal estrutura para captura de erros em Java. O cdigo tentar (try)
executar o bloco de cdigo que pode gerar uma exceo e, caso isso ocorra, o
erro gerado ser capturado pelo catch, que possui um parmetro de exceo
(identificao do erro) seguido por um bloco de cdigo que o captura e, assim,
permite o tratamento. possvel definir vrios catch para cada try. O finally
opcional e, se for usado, colocado depois do ltimo catch. Havendo ou no
uma exceo (identificada no bloco try) o bloco finally sempre ser executado.
Para exemplificar a utilizao dos recursos de tratamento de excees utilizaremos o exemplo de validao de login vistos nos subcaptulos anteriores.
Consideremos que na classe ClientePF o atributo senha do tipo int e, portanto, para armazenar um valor nele preciso convert-lo, j que os componentes
textField interpretam qualquer valor lido como String. Observe, na figura 174,
a codificao do mtodo validarLogin na classe ClientePF.
Figura 174
Codificao
do mtodo
validarLogin na
classe ClientePF.

167

Informtica 4

captulo 4

Figura 175

O bloco de cdigo entre as linhas 55 e 63 pertence ao try. Se alguma exceo


ocorrer neste trecho ela ser capturada pelo catch da linha 64. Como o possvel
erro que estamos tratando ocorrer na converso de String para int, um objeto
do tipo NumberFormatException (a classe de exceo responsvel por esse tipo
de erro) apreende o erro e passado por parmetro para o catch. Dentro do
catch (linha 65) apresentada uma mensagem explicativa para o usurio e o
programa continua sua execuo. Pelo objeto erro (parmetro do tipo NumberFormatException 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.

Evento do
componente
bOk na classe
FormValidacaoUsuario.

Na linha 50, a senha obtida por meio do componente tpSenha do tipo JPasswordField precisa ser convertida para int antes de ser passada por parmetro
na chamada do mtodo validarLogin (linha 56). Se for digitada uma letra no
campo senha, a converso para int (linha 50) gerar uma exception do tipo
NumberFormatException. Perceba que o compilador no nos obriga a tratar
esse erro. Portanto, estamos diante de um Unchecked Exception (outra forma
de identificar o tipo da exceo considerar que NumberFormatException
subclasse de RuntimeException). A insero da estrutura de try-catch-finally
pode tratar essa possvel exceo da forma como ilustra a figura 176.
Figura 176
Validao com
try-catch-finally.

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, consideremos que, para ser vlida, a senha (do exemplo de validao de login) deve estar entre
0 e 1000. Essa uma regra da aplicao, porm, analisando o tipo int no qual a senha
armazenada, a faixa de abrangncia vai de -2.147.483,648 a 2.147.483,647, ou seja,
estando nessa faixa de valores o compilador no gerar uma exceo. Mas para a minha aplicao, um valor informado fora da faixa entre 0 e 1000 uma exceo. Para
esses casos, podemos utilizar a clusula throw (no confundir com throws, que tem
outro sentido, estudado mais adiante), que realiza uma chamada a uma exceo (fora
uma exceo). Vejamos, na figura 177, como ficar a validao com o uso do throw.
Na linha 58, verificado se a senha informada est fora da faixa de valores prevista. Se estiver, a exception IllegalArgumentException invocada e capturada
pelo catch da linha 71, onde uma mensagem ser exibida.
Para fechar nossos exemplos de tratamentos de exceo, vamos analisar o comportamento do Java (e os recursos do eclipse) em relao a Checked Exceptions
Figura 177
Validao com
uso do throw.

168

169

Informtica 4

captulo 4

Figura 178

Figura 182

Observao de erro de
uma checked exception.

Uso do throws
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 FileNotFoundException pode ser gerada e essa uma Checked Exception.
Figura 180
Utilizando o try-catch.

Em nosso exemplo de validao de login, consideremos agora que, ao logar,


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.

Figura 181
Uso do throws na
classe ClientePF.

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 responsabilidade 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.
Na assinatura do mtodo, inserida na clusula throws e na exception que dever 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


das excees), ou seja, qualquer erro ser interceptado. Esse tipo de tratamento desaconselhvel e deve sempre que possvel ser evitado devido falta de especificao do erro ocorrido. As formas de tratamento de excees
em Java no foram esgotadas nesse captulo, existindo ainda a possibilidade
de criao de nossas prprias classes de excees e a manipulao de vrias
outras exceptions.

Exemplos de exceptions mais comuns


ArithmeticException: resultado de uma operao
matemtica invlida.
NullPointerException: tentativa de acessar um objeto
ou mtodo antes que seja instanciado.
ArrayIndexOutOfBoundsException: tentativa de
acessar um elemento de um vetor alm de sua
dimenso (tamanho) original.
NumberFormatException: incompatibilidade de tipos
numricos.
FileNotFoundException: arquivo no encontrado.
ClassCastException: tentativa de converso
incompatvel.

4.13. Conexo com banco de dados


O MySQL um banco
de cdigo-fonte
aberto, gratuito e
est disponvel tanto
para o Windows
como para o Linux.
O download pode
ser feito diretamente
do site do fabricante
(http://dev.mysql.com/
downloads/). A verso
utilizada nos exemplos
deste item a 5.0.

Por definio, um banco de dados um conjunto de informaes armazenadas em um meio fsico (papel, disco rgido etc.), organizadas de tal forma
que seja possvel fazer sua manuteno (incluso, alterao e excluso) e
diferentes formas de pesquisas. Considerando os bancos de dados informatizados, os SGBDs (Sistemas Gerenciadores de Bancos de Dados) possuem
recursos para manuteno, acesso, controle de usurios, segurana, e outras ferramentas de gerenciamento. O SQL (Structured Query Language,
oulinguagem de consulta estruturada) uma linguagem de manipulao
de dados que se tornou padro para SGBDRs (Sistemas Gerenciadores de
Bancos de Dados Relacionais). Entre os sistemas de gerenciamento de SGBDRs populares esto: o Microsoft SQL Server, o Oracle, o IBM DB2, o
PostgreSQL e o MySQL.

4.13.1. JDBC (Java Database Connectivity)


a API (conjunto de classes e interfaces) responsvel pela conexo de programas
desenvolvidos em Java com vrios tipos de bancos de dados. O prprio JDBC
(confira o quadro Principais funcionalidades do JDBC) foi desenvolvido em Java
172

e , portanto, inteiramente compatvel com as classes responsveis pela conexo


e manipulao dos dados.

Principais funcionalidades do JDBC


Estabelecer a conexo com o banco de dados
Executar comandos SQL
Permitir a manipulao de resultados (dados) obtidos
a partir da execuo de comandos SQL
Gerenciar transaes (aes realizadas
simultaneamente por um a um dos usurios conectados
ao SGBD)
Capturar e possibilitar o tratamento de excees
relacionadas conexo e utilizao do banco.
Para que um sistema (projeto) Java possa se conectar e gerenciar uma conexo com
banco de dados, deve ser configurado para ter acesso ao(s) driver(s) JDBC referente ao(s) banco(s) utilizado(s). A JDBC suporta quatro categorias de drivers: a de
tipo 1, que a ponte JDBC-ODBC; a de tipo 2, API nativa parcialmente Java; a
de tipo 3, o Protocolo de rede totalmente Java; e a de tipo 4, o Protocolo nativo
totalmente Java. As caractersticas de cada um deles esto definidas a seguir.

Tipo 1: JDBC-ODBC bridge driver (Ponte JDBC-ODBC)


O ODBC (Open Data Base Connectivity) o recurso padro disponibilizado pela
Microsoft, responsvel pela conexo a bancos de dados na plataforma Windows. O
driver JDBC do Tipo 1 prov a comunicao entre o ODBC e a API JDBC, que
o padro de conexo a bancos de dados para aplicaes desenvolvidas em Java. Sua
vantagem ser ideal para integrao de aplicaes Java em ambientes que j possuem
aplicaes desenvolvidas para a plataforma Windows. H, porm, duas desvantagens:
no indicado para aplicaes em grande escala, pois seu desempenho cai medida
que as chamadas JDBC trafegam por meio da ponte para o driver ODBC; e o driver
JDBC-ODBC precisa estar instalado no cliente.

Importante:

A partir desse ponto


preciso que os conceitos
relacionados estrutura
dos bancos de dados
relacionais e a linguagem
SQL j tenham sido
estudados e devidamente
aprendidos. Caso ainda
falte alguma
etapa para essa
consolidao, vale uma
boa consulta s diversas
publicaes disponveis
sobre o assunto, bem
como documentaes
referentes ao MySQL.

Tipo 2: Native API partly Java driver (API nativa parcialmente Java)
Os drivers JDBC do Tipo 2 permitem a comunicao de aplicaes Java
com os drivers nativos dos SGBDs (geralmente desenvolvidos em C ou
C++). Nesse sentido, so semelhantes aos do tipo 1, porm, criam uma ponte entre os drivers nativos de cada SGBD com as aplicaes Java. Sua vantagem ter um desempenho melhor que o driver de Tipo 1. J a desvantagem
que o driver nativo especfico do SGBD utilizado deve estar instalado na
mquina cliente, o que impossibilita aplicaes web, pois necessrio ter
acesso s mquinas clientes.
173

Informtica 4

captulo 4

Figura 183

Tipo 3: Net protocol all Java driver (Protocolo de rede totalmente Java)

Formulrio de
manuteno de clientes
pessoa fsica.

O driver Tipo 3 converte as requisies do SGBD em um protocolo de rede


genrico (no vinculado a nenhum SGBD). Essas requisies so enviadas a um
servidor middle-tier, que as traduz e encaminha para um SGBD especfico. O
middle-tier funciona como camada intermediria, que implementa certas regras 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 requisies 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 direta com o SGBD, a aplicao fica independente de plataforma e de instalaes
na mquina cliente; e tambm um drive ideal para aplicaes web. A desvantagem que cada SGBD tem seu prprio driver e nem todos so gratuitos.
Figura 184

Nos exemplos a seguir, o driver usado o com.mysql.jdbc.Driver (mysql-connector-java-5.1.6-bin), do tipo 4. Os prprios fabricantes dos SGBDs fornecem
seus drivers JDBC. Existem muitos fornecedores independentes que desenvolvem e disponibilizam drivers JDBC de vrios SGBDs.

Importaes das API


de conexo a banco.

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 exemplificar a conexo e o gerenciamento de dados em um banco MySQL. A classe
FormClientePF gera o formulrio visualizado na figura 183.
Componentes da API Swing foram utilizados para montar o layout do formulrio. Vinculados aos eventos dos botes, esto os cdigos que realizam a
captura dos dados obtidos pelo formulrio e as chamadas aos mtodos de um
objeto nomeado como clientePF do tipo ClientePF e que ser o responsvel
pela interao com o banco de dados. Na classe ClientePF foram implementados mtodos que realizam cada uma das operaes com o banco de dados
(incluso, alterao, excluso, listagem de todos os clientes pessoa fsica e pesquisa de um determinado cliente).
Detalhemos, ento, esse relacionamento entre a obteno de dados pelo
formulrio e a chamada aos mtodos do objeto clientePF. Primeiramente,
na classe ClientePF (no qual ser feita a conexo com o banco e o gerenciamento 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

Para estabelecer a conexo com o banco, o mtodo responsvel (getConnection)


precisa de quatro informaes: o driver JDBC que ser utilizado, o endereo do
banco desejado, o login e a senha de identificao no banco de dados. Em funo da maior clareza de cdigo, declaramos quatro atributos para receber estas
informaes (figura 185).
No exemplo, usamos o driver JDBC do MySQL, nosso banco foi criado com o
nome livraria, est localizado no caminho padro do MySQL e no definimos
(no banco) nenhum login e senha especficos. Estamos considerando, ento, o
banco livraria contendo uma tabela chamada clientes.
Figura 185
Definio de parmetros
de conexo como atributos.

175

Informtica 4

captulo 4

Figura 187

4.13.2.1. Classe java.sql.Statement

Mtodo incluir na
classe ClientePF.

A classe java.sql.Statement permite a execuo dos comandos fundamentais de


SQL. O mtodoConnection.createStatement() utilizado para criar um objetodo tipo Statement, que representa uma query (um comando SQL). Existem
dois mtodos de execuo de query na classe Statement.
1.Statement.
executeQuery():
executa uma query
e retorna um objeto
do tipo java.sql.
ResultSet (responsvel
por armazenar dados
advindos de uma
consulta SQL) com
o resultado obtido
(utilizado com select).
2.Statement.
executeUpdate():
executa uma query e
retorna a quantidade
(um valor inteiro)
de linhas afetadas
(utilizado com insert,
update e delete).

4.13.2.2. A classe PreparedStatement


J a classe java.sql.PreparedStatement contm os mtodos da classe Statement e
outros recursos para elaborao de query, bem como a possibilidade de passagem de parmetros.

4.13.2.3. A classe CallableStatement


A classe java.sql.CallableStatement, por sua vez, permite executar procedimentos e funes armazenados no banco como, por exemplo, chamadas a stored
procedures.

4.13.3. Incluso
Na Classe FormClientePF, os objetos clientePF e clientePFAuxiliar (previamente instanciados) so do tipo ClientePF e possuem os atributos referentes aos dados lidos pelo formulrio, para a incluso. Os atributos do objeto
clientePFAuxiliar so preenchidos com os valores lidos do formulrio como
se observa nas linhas 289 a 302, ilustrada na figura 186.
Com os dados j armazenados em seus atributos, o objeto clientePFAuxiliar 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 inicializado. Carregado o driver, o mtodo Class.forName() ir registr-lo no java.
sql.DriverManager. Na linha 328, a classe DriverManager abre uma conexo 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 conexo estabelecida.
Na classe ClientePF, o mtodo incluir recebe um parmetro do tipo ClientePF,
tambm nomeado clientePF (o nome do parmetro, alis, poderia ser qualquer
um, desde que o tipo seja respeitado) e realiza os comandos que podem ser
visualizados em seguida, na figura 187.

176

Na linha 331, criado um objeto do tipo Statement (com o nome de stmt)


e, na linha 333, executada uma consulta ao banco para obter o ltimo
cdigo cadastrado. Este cdigo, armazenado em um objeto do tipo ResultSet (rs), incrementado (somado mais 1) na linha 335 e usado como novo
177

Informtica 4

captulo 4

Figura 189

cdigo na linha 340. O mtodo next do objeto rs (ResultSet) serve para


posicion-lo no primeiro registro e para passar para o prximo registro (no
caso da linha 334, como s haver um registro como retorno, ele fica no
primeiro). Aps a utilizao do objeto rs devemos fech-lo, por meio do
mtodo close (linha 336).
Observe que todas a
linhas de comando
que fazem a conexo
e a manipulao dos
dados no banco esto
em uma estrutura
de try e as excees
tratadas nos catch so
ClassNotFoundException
(exceo gerada
se uma das classes
no for localizada) e
SQLException (se um
comando SQL no puder
ser executado). No bloco
de finally, a conexo
fechada.

Mtodo alterar
na classe ClientePF.

Na linha 325 criado um objeto do tipo PreparedStatement, nomeado


como ps e contendo null (vazio) e, na linha 339, inserido um script de
SQL (um insert) contendo a definio de parmetros (caractere ?). Por meio
do mtodo set (do prprio objeto ps) podemos inserir valores nesse comando SQL (insert), passando por parmetro um ndice e o valor que queremos inserir. Por exemplo, na linha 342 est sendo includo o contedo
do atributo nome do objeto clientePF, no terceiro parmetro do objeto ps
(podemos entender que o terceiro caractere ? foi substitudo pelo nome).
Observe que pelo prprio mtodo set do objeto ps, podemos definir o tipo
que ser inserido (setInt, setString, setDouble etc). Finalmente, quando o
comando SQL (insert) contido no objeto ps est completo (todos os valores
armazenados no objeto clientePF foram passados para ele), o mtodo executeUpdade executado (linha 356) e os valores so includos no banco.

4.13.4. Alterao
Na classe FormClientePF, para a alterao, os atributos do objeto clientePFAuxiliar 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 clientePFAuxiliar passado por parmetro para o mtodo alterar do objeto clientePF
(na linha 325).

Figura 188:
Mtodo
acaoAlteracao
na classe
FormClientePF.

pelos valores armazenados no objeto clientePF. Essa substituio de valores


(alterao) ser aplicada somente ao registro cujo campo cliCod igual ao
valor contido no atributo cdigo do objeto clientePF. Esse critrio foi definido por intermdio da clusula where do comando update.

4.13.5. Excluso
Na classe FormClientePF necessrio obter somente o cdigo do cliente a
ser excludo. Tal cdigo armazenado no objeto clientePFAuxiliar, que
passado por parmetro para o mtodo excluir do objeto clientePF, como se
pode visualizar na figura 190.
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 comando SQL executado o update, substituindo os valores contidos no banco
178

Na classe ClientePF, o mtodo excluir recebe um objeto do tipo ClientePF


como parmetro e realiza os comandos visualizados na figura 191.
179

Informtica 4

captulo 4

Figura 191

Figura 193

Mtodo excluir
na classe ClientePF.

Mtodo listar na
classe ClientePF.

As instrues de conexo e preparao do comando SQL so as mesmas utilizadas 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 definido por meio da clusula where do comando delete.

4.13.6. Listagem geral


Na classe FormClientePF, realizada a chamada ao mtodo listar do objeto
clientePF, como se pode ver na figura 192.
Figura 192
Mtodo acaoListar na
classe FormClientePF.

Na classe ClientePF, executada uma consulta ao banco e o retorno so os


campos cliCod, cliNome, cliTelefone e cliCelular de todos os registros da tabela
clientes (figura 193).
Nesse exemplo, montaremos uma String com o retorno da consulta e a
apresentaremos por meio de um showMessageDialog. Um objeto rs tem o
formato de uma matriz, em que o retorno de uma consulta pode ser tratado
como uma tabela. Os mtodos de acesso aos dados contidos em um objeto
rs so gets especficos para o tipo de dado armazenado. Identifica-se o
campo desejado pelo seu referente ndice (coluna) na linha acessada. Na
180

207 realizada a consulta. No looping da linha 210 a 215 (while), o rs


percorrido a partir de sua primeira linha (posicionado pelo mtodo next do
rs) e passando linha a linha (por meio do mesmo mtodo next) at o fim
do rs (ltimo cliente retornado). A cada linha, o contedo de cada coluna
concatenado (unido) com trechos de texto que identificam uma a uma
das informaes (linhas 211 e 214). Observe que rs.getString(1) equivale ao
cdigo que por sua vez do tipo int, mas, como a inteno montar uma
String de mensagem, o valor pode ser recuperado j convertido por meio do
mtodo rs.getString(1).toString() (linha 211). Na linha 217, a varivel do
tipo String, nomeada como relacao (declarada na linha 209), montada
por intermdio de concatenaes com o contedo do objeto.

4.13.7. Pesquisa
Uma pesquisa pode ser realizada de formas diferentes. O que apresentamos,
ento, simplesmente um exemplo. Na classe FormClientePF, utilizaremos
mais um objeto do ClientePF como auxiliar na pesquisa, criado na linha
340 com o nome de clientePFPesquisa. O objeto clientePF instanciado
novamente dentro do mtodo somente para garantir que estar vazio. A
manipulao desses dois objetos ilustrada na figura 194.
181

Informtica 4

captulo 4

Figura 194

Figura 195

Mtodo acaoPesquisar na
classe FormClientePF.

Mtodo pesquisar
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 objeto 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 encontrar, retorna um objeto preenchido com os demais dados, caso contrrio
retorna um objeto como foi passado por parmetro, ou seja, somente com
o cdigo preenchido.
O retorno da pesquisa armazenado no objeto clientePFPesquisa (ainda na
linha 344), e seu atributo nome testado na linha 346. Imaginando que
nome um dado obrigatrio e que no existir um cliente cadastrado sem
nome, se o atributo nome de clientePFPesquisa estiver em branco porque
o cliente no foi encontrado e, ento, executado um mtodo que limpar
os campos do formulrio, seno os valores contidos em clientePFPesquisa
so carregados no formulrio.
Na classe ClientePF, o mtodo pesquisar recebe um objeto do tipo ClientePF
como parmetro, retorna um objeto do tipo ClientePF e realiza a pesquisa da
forma como ilustra a figura 195.
Na linha 242 montado o comando SQL (select) que far a consulta. Esse
comando leva em considerao o contedo do atributo cdigo do objeto clientePF passado por parmetro, e executado na linha 246. Como a consulta
feita por intermdio da chave primria da tabela clientes (cdigo), somente um
registro ser retornado (caso seja encontrado). O mtodo next posiciona o rs
em seu primeiro registro (que em nosso exemplo, tambm o ltimo, j que
s teremos um registro de retorno). O mtodo isLast retorna true se o rs estiver
posicionado no ltimo registro (e false, se no estiver). Se o rs estiver vazio,
182

aparecer antes do fim, portanto, se o mtodo isLast retorna false porque o


rs est vazio. Na linha 249, testado o mtodo isLast. Se for false, apresenta
uma mensagem, seno, armazena os dados do cliente encontrado no objeto
clientePF (linha 253 a 267). Na linha 286, o objeto retornado com ou sem
dados dependendo do resultado da consulta.
Esse captulo no pretende esgotar os recursos e possibilidades de uso da linguagem Java, tampouco das tcnicas de programao orientada a objeto. O
intuito foi passar pelas principais caractersticas dessa linguagem, suas estruturas e organizaes, alm de demonstrar as aplicaes prticas dos principais
conceitos da orientao a objetos, que so perfeitamente viveis nessa linguagem. Ainda h muito o que ser visto tanto sobre as tcnicas de orientao a
objeto, quanto sobre Java. Esperamos que esse seja o seu ponto de partida.
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
ingls Asynchronous
Javascript And XML, que
literalmente pode ser
traduzido para Javascript
e XML Assncrono) o
nome dado utilizao
metodolgica de
Javascript e XML para
fazer com que as pginas
web se tornem mais
interativas.

Visual Studio um conjunto de ferramentas de desenvolvimento que contm editores de cdigos, IntelliSense, assistentes e diferentes
linguagens em um mesmo ambiente de desenvolvimento integrado para principiantes e profissionais. Apresenta-se em diferentes plataformas: PCs, servidores, aplicaes web e mveis. Em uma viso mais abrangente, o Visual Studio
permite o desenvolvimento rpido de aplicativos, recursos de depurao e banco
de dados, sem depender dos recursos oferecidos pelo Framework 3.5. Auxilia no
desenvolvimento Web habilitado para o AJAX, contando ainda com os recursos
do ASP.NET.

5.1. .NET Framework


ASP.NET, sucessora
da tecnologia ASP (de
Active Server Pages
ou pginas de servidor
ativo) a plataforma da
Microsoft usada para
o desenvolvimento de
aplicaes web.

O Microsoft .NET Framework


3.5 o modelo de programao
do Windows Vista e, segundo a
prpria Microsoft ao anunciar
o lanamento, combina o
poder do .NET Framework 2.0
com novas tecnologias para
construo de aplicativos.
Permite a realizao de novas
experincias, comunicao
integrada e sem fronteiras,
alm de ser til para vrios
processos corporativos.

186

Desenvolvido pela Microsoft, o .NET Framework um modelo de programao de cdigo gerenciado para criar aplicativos cliente, servidores ou dispositivos mveis. formado por um conjunto variado de bibliotecas que facilitam o
desenvolvimento de aplicaes, desde as mais simples at as mais complexas,
bem como a instalao e distribuio de aplicaes. Baseado em tecnologia de
mquina virtual, o .NET Framework totalmente orientado a objetos.
O .NET Framework 3.5 incrementa as verses anteriores com novas implementaes ASP.NET e AJAX e aumenta a integrao com o LINQ (Language
Integrated Query, ou consulta integrada de linguagem) que uma nova ferramenta de pesquisas em base de dados, alm de suporte total para Windows
Workflow Foundation (WF), Windows Communication Foundation (WCF),
Windows Presentation Foundation (WPF) e Windows CardSpace. Sua estrutura composta por diferentes camadas, como podemos visualizar na figura 196.
Na camada inferior, encontramos a Common Language Runtime (CLR) ou
tempo de execuo de linguagem comum. Sua finalidade executar as aplicaes, criando um ambiente de mquina virtual e compilando as linguagens de
programao do .NET Framework em cdigo nativo. O .NET Frameworks
Base Class, na segunda camada de baixo para cima, representa as bibliotecas de
classes disponveis para o desenvolvimento de aplicativos (consulte o quadro Recursos de classes disponveis na pgina 188). o principal ponto de interatividade
com o Runtime (tempo de execuo).
Na terceira camada ascendente, est o ADO.NET (Data e XML). O ActiveX
Data Objects (ADO) oferece todos os recursos necessrios para a criao e manipulao de bancos de dados fornecidos por meio das classes System.Data,
.Common, .OleDb, .SqlClients, SqlTypes, .Odbc e .Xml.

Na quarta camada temos Web Services e Web Forms. O Web Service representa
a integrao entre os dados de diferentes aplicaes e plataformas, permitindo o
envio e recepo de dados no formato XML. Tudo de maneira muito fcil. Para
que isso ocorra, entra em cena o Web Forms, criando um ambiente de desenvolvimento semelhante s ferramentas que normalmente utilizamos, clicando e
arrastando, assim como se faz no FrontPage da Microsoft. J o Windows Form
uma evoluo dos formulrios utilizados para programao.
Localizado na penltima camada de baixo para cima, o Common Type System (CTS), que pode ser literalmente traduzido como sistema de tipo comum,
existe para que ocorra a integrao entre as linguagens de programao. Define como os tipos de dados sero declarados, usados e gerenciados no momento
da execuo do aplicativo.
No topo, aparecem as linguagens de programao utilizadas para o desenvolvimento da aplicao, como VB, C++, C# e JScript. Assim, pode-se concluir que o conjunto de todas as camadas mencionadas representa o pacote do Visual Studio.Net.

5.1.1. Mquina virtual


A mquina virtual serve como uma camada entre o cdigo e o sistema operacional. Todo cdigo escrito no .NET (Visual Basic, C# ou qualquer outra lingua187

Informtica 4

captulo 5

Figura 197

gem), compilado para uma linguagem intermediria chamada CIL (Common


Intermediate Language ou linguagem intermediria comum), que distribuda
e executada pelos diferentes clientes da aplicao.

O Visual Studio.

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 projeto que funciona como um repositrio para gerenciamento dos cdigos fonte,
conexes com bancos, arquivos e referncias. Ele representa uma pasta da Soluo (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: define containers como listas,
filas, matrizes etc.
System.Diagnostics: todas as classes necessrias
para fazer diagnsticos.
System.Globalization: suporte para a globalizao, ou
seja, essa classe integra toda a plataforma do Framework.
System.IO: suporte para o FileSystem, usando classes
de manipulao de arquivos e diretrios.
System.Resources: usado para traduo do aplicativo em
diferentes idiomas e tambm para retorno de mensagem
de acordo com o idioma selecionado pelo usurio.
System.Text: suporte para a codificao e ao
StringBuilder, para manipulao de Strings.
System.Text.RegularExpressions: suporte
para expresses regulares.

188

entre si, elaborados em diferentes linguagens e organizados no formato de pastas


semelhante ao Windows Explorer. Os arquivos de projetos (.vbproj, .csproj etc.)
e os arquivos de soluo (.sln) esto no formato XML.

5.2.1. Iniciando o Visual Studio Solution


Ao iniciar o Visual Studio pela primeira vez (figura 197), surge a tela de Start
Page (ou pgina inicial). No menu File (arquivo), entre em New (novo) e clique
em Project (projeto), como ilustra a figura 198.
Em templates (modelos), escolha o tipo de projeto a ser elaborado (Windows
Form Application ou aplicao de formulrio Windows, Console Application
ou aplicao de painel de controle etc.). Lembre-se de nomear o seu projeto e
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.

5.2.2. Conhecendo o Visual Studio


O Visual Studio apresenta uma srie de janelas e guias que fazem parte da sua
IDE (Integrated Development Environment ou Ambiente de Desenvolvimento
Integrado). Confira algumas, a seguir.
Barra de ferramentas (toolbar), que disponibiliza os botes de comandos mais
utilizados (figura 200).
Figura 200

gramao do formulrio; Form1.Designer.cs, para programao visual do formulrio; e Program.cs, o programa principal, no qual encontramos o mtodo
main(), que dar incio aplicao.
Para aplicaes em Visual Basic, ser disponibilizado o arquivo Form1.vb, que possui
a mesma funo do Form1.cs. Confira, a seguir, janelas disponveis e suas funes:
ToolBox (caixa de ferramentas): contm componentes para o desenvolvimento
do projeto, os quais esto divididos em guias de acordo com o tipo de aplicao.
Nesse caso, podemos verificar (figura 202) a aba de componentes da categoria
Common Controls (controles comuns).

Toolbar.

Solution Explorer: mostra os arquivos que fazem parte do seu projeto. semelhante ao Explorer do Windows, pois permite criar, excluir e importar arquivos
(figura 201).
Se analisarmos uma aplicao Windows Form Application em C#, dentro da
janela Solution, podemos encontrar os seguintes arquivos: Form1.cs, para proFigura 201
Solution Explorer.

Form (formulrio): essa janela (figura 203) receber os componentes da toolbox e a programao correspondente. Os componentes sero arrastados sobre
o Form para compor a interface do usurio e tero suas propriedades modificadas de acordo com o projeto. Para ativar a janela de cdigo e realizar a programao, preciso dar um duplo clique sobre o componente ou formulrio.
Properties (propriedades): permite alterar as propriedades dos componentes, que
podem aparecer organizadas por categoria ou em ordem alfabtica (figura 204).
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 203
Form.

190

191

Informtica 4

captulo 5

Figura 207

Figura 204

Auto Hide.

Properties.

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 notao de ponto, conforme o seguinte cdigo, que oculta o Label:

Label1.Visible = false;

Code and Text Editor (editor de texto e de cdigo) a janela que utilizaremos para
implementar os cdigos de programao (figura 205). Para acess-la, basta clicar duas
vezes sobre ela ou em qualquer componente. Outra opo usar os botes Code (cdigo) e View (visualizar) na janela de Solution Explorer, como mostra a figura 206.
Figura 205

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
que ela seja aberta. Para fix-la, utilize o cone semelhante a um preguinho
(figura 208), localizado na barra de ttulo.
Podemos movimentar as janelas e coloc-las em qualquer lugar da aplicao com a
ajuda dos guias. Para isso, clique na barra de ttulo e mantenha o boto do mouse
pressionado, arrastando a janela para qualquer rea de seu desktop. Imediatamente, surgiro as indicaes das guias (figura 209). Escolha uma delas e solte a janela.
Figura 209

Code and text Editor.

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,


existem quatro recursos. Confira quais so, a seguir.

Cada componente recebe uma numerao automtica quando inserido no projeto (Label1, Label2, Label3 etc.). No h problemas em manter esses nomes,
mas, para deixar o cdigo mais legvel e padronizado, o melhor utilizar um
prefixo relacionado ao tipo de componente e sua identificao. Por exemplo:

Dockable: coloca a janela aberta junto janela principal do programa.

192

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
do desktop.

Label2 = lblMensagemAlerta

193

Informtica 4

captulo 5

A tabela 12 mostra alguns dos vrios prefixos utilizados na plataforma .NET.


Tabela 12

prefixos usados na .net


Componente

Prefixo

Componente

Prefixo

5.2.7. Identificao de erros

Label

lbl

ListBox

Lst

TextBox

txt

DataList

Dtl

O Visual Studio nos ajuda a identificar ou interpretar alguns erros que podem ocorrer durante o processo de criao ou execuo do cdigo. Confira
alguns, a seguir.

DataGrid

dtg

Repeater

Rep

Button

btn

Checkbox

Chk

ImageButton

imb

CheckBoxList

Cbl

DropDownList

ddl

RadioButton

Rdo

RadioButtonList

rbl

PlaceHolder

PhD

Image

img

Table

Tbl

Panel

pnl

Validators

Val

5.2.5. IntelliSense
Ao digitar alguma instruo, aparecer uma srie de complementos relacionados
a ela. Quando escrevemos Console, por exemplo, so disponibilizados vrios
mtodos. Com a ajuda da tecla Tab ou da Barra de Espao, a instruo se compe naturalmente (figura 210).
Figura 210
IntelliSense.

Durante essa atividade, podemos recorrer a alguns botes auxiliares (figura 212)
como Break, Stop e Restart.

Erro de sintaxe: geralmente identificado com uma linha em vermelho sublinhando a expresso. No exemplo mostrado na figura 213, esto faltando as
aspas no fechamento da expresso.
Figura 213
Erro de sintaxe.

Erro antes da execuo: quando o cdigo apresenta algum erro e uma execuo forada, uma caixa de dilogo solicita ao usurio que continue a execuo
do cdigo, mesmo constando erro (figura 214). Isso faz com que a ltima verso
correta seja executada, ignorando a atual.
Figura 214
Janela de erro.

Instruo

Opes de
complemento

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


Erros, Warnings e Messages (figura 215).
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 (figura 211).
Figura 211
Executando a aplicao.

Figura 212
Controles de execuo.

Clique sobre o erro identificado (1, 2 etc.) para que ele seja selecionado no cdigo para visualizao.
Erro de classe ou mtodo: comumente identificado com uma linha em azul
sublinhando a expresso (figura 216). No exemplo, a instruo est escrita de
forma errada, pois o correto WriteLine().
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.

O engenheiro de software
Anders Heijsberg nasceu
na Dinamarca, na cidade
de Copenhagem, em 1960.
Um importante marco em
sua carreira foi ter escrito
os compiladores Pascal
e Blue Label, quando
trabalhava na Nascon
Computer. Foi, porm,
mais tarde, para a Borland
que desenvolveu o Turbo
Pascal e o Delphi, antes
de ser contratado pela
Microsoft, em 1996. Criou
a linguagem J++ e a C#,
em cujo desenvolvimento
trabalha continuamente.

onsiderada como a mais importante linguagem de desenvolvimento da Microsoft dentro da Plataforma .NET Framework, a C#
vem ganhando inmeros adeptos (programadores de outras linguagens) em virtude de sua caracterstica e semelhana ao C, C++ ou Java. A
linguagem de programao C# orientada a objetos e foi criada praticamente
a partir do zero para compor a plataforma. Trata-se do primeiro compilador
com suporte de programao para a maioria das classes do .NET Frameworks.
Embora tenha sido feita por vrios programadores, os mritos so atribudos
principalmente a Anders Hejlsberg, muito conhecido por desenvolvedores do
compilador Delphi.

6.1. Programao
O C# requer toda a lgica de programao contida em classes. Neste captulo,
no sero abordados, em detalhes, os conceitos de programao orientada a objetos. Caso haja dvidas consulte o captulo 4.

6.1.1. Console Application


A aplicao do tipo Console Application (aplicao do painel de controle em
portugus) se assemelha s programaes da linguagem C/C++. Seu resultado
apresentado na janela de Prompt do DOS, na qual programamos diretamente
pelo mtodo Main(), s que, agora, no formato de uma classe (figura 217).

projeto,SetCompatibleTextRenderingDefault(), o modo e propriedade como os


componentes sero visualizados, e o Run(), para execuo do formulrio.
Form1.Designer.cs: realiza a especificao dos componentes utilizados na
aplicao (figura 219). Quando um projeto comea a ser construdo, toda a
estrutura dos seus componentes (tamanho, fonte, nome, localizao e outras
propriedades) fica registrada no formulrio, seguindo o mtodo chamado InitializeComponent(), exatamente no qual encontramos a expresso Windows
Form Designer generated code.
Form1.cs: reapresenta a maior parte da nossa programao em relao aos componentes e aos eventos (figura 220). Insere-se, ento, a lgica de programao,
ou seja, aquilo que deve ser feito ao inicializar um formulrio (Form1_Load),
quando o usurio clicar em um boto e em outros procedimentos do projeto.
Figura 218
Program.cs.

Pode-se fazer uma analogia ao Java: no comeo do nosso cdigo, encontramos


os usings (import), a classe principal Program e o mtodo Main() com a implementao do cdigo em C#.

6.1.2. Windows Form Application


No Windows Form Application (aplicao de formulrios de Windows), a estrutura 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

tipo

Form1.Designer.cs.

Byte
Sbyte
Ushort
Short
Uint
Int
Ulong
Long
Double
Float
Decimal
Bool
Char

Implementao
Inteiro de 8 bits sem sinal (0 a 255).
Inteiro de 8 bits com sinal (-127 a 128).
Inteiro de 16 bits sem sinal (0 a 65 535).
Inteiro de 16 bits com sinal (-32 768 a 32 767).
Inteiro de 32 bits sem sinal (0 a 4 294 967 295).
Inteiro de 32 bits com sinal (-2 147 483 648 a 2 147 483 647).
Inteiro de 64 bits sem sinal (0 a 18 446 744 073 709 551 615).
Inteiro de 64 bits com sinal (-9 223 372 036 854 775 808 a 9 223 372 036 854 775 807).
Ponto flutuante binrio IEEE de 8 bytes (5.0 _ 10-324 a 1.7 _ 10308),
15 dgitos decimais de preciso.
Ponto flutuante binrio IEEE de 4 bytes (1.5 _ 10-45 a 3.4 _ 1038),
7 dgitos decimais de preciso.
Ponto flutuante decimal de 128 bits. (1.0 _ 10-28 a 7.9 _ 1028),
28 dgitos decimais de preciso.
Pode ter os valores true e false. No compatvel com inteiro.
Um nico caractere Unicode de 16 bits. No compatvel com inteiro.

Tabela 13
Distribuio dos
tipos de dados.

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


dados aos quais elas pertencem, como est exemplificado na figura 221.





Figura 220
Form1.cs.

int num;
int x, y, x;
float salario;
string nome;
string edereco, cidade, estado;
char resp;

Recomendaes para a boa prtica


Se houver mais de uma palavra, a primeira letra da segunda deve ser
maiscula:

nomeCliente

pesoMedio

idadeMaxima
Pode-se usar um prefixo para expressar, no incio da varivel, o tipo
de dado ao qual ela pertence:

strNomeCliente

floPesoMedio

intIdadeMaxima

6.2. Tipos de dados e variveis


Os tipos de dados em C# so distribudos da forma como apresenta a tabela 13.
Utilizamos as variveis para armazenar diferentes tipos de dados (nmeros, palavras, data etc.), como j foi mostrado antes. Para a criao de uma varivel,
deve-se dar um nome nico, que identifique o seu contedo (consulte o quadro
Recomendaes para a boa prtica).
200

6.2.1. Alocao de memria


A alocao e a utilizao de variveis de memria podem ser realizadas de duas
maneiras: Stack (pilha) e Heap (amontoado). A diferena entre elas est na forma como cada uma trata as informaes.

Figura 221
Declaraes corretas
das variveis.

Ateno:

No momento da
programao,
fundamental ficar alerta
para ver onde o cdigo
ser inserido. Portanto,
identifique corretamente
o componente e o evento
que ser agregado. As
instrues bsicas de
programao sero
apresentadas, aqui,
utilizando-se o mtodo
Console Application, pois
a sua estrutura a
mesma para aplicaes
grficas do Windows
Form Application.

Stack: Nessa rea, ficam as variveis locais ou os parmetros de funes de valor


ou referncia. Sua limpeza realizada automaticamente na sada de cada funo,
usando return ou no.
201

Informtica 4

captulo 6

Heap: Aqui, ficam os valores referentes aos objetos. Isso ocorre quando uma
classe estabelecida usando o new (construtores). Caso as funes sejam encerradas ou ocorra um exception, a limpeza no acontece automaticamente e sim
por meio do Garbage Colletor.

6.3. Operadores
Exemplos prticos para mostrar a funcionalidade dos operadores so executados
no Console Application, como j foi mencionado.

6.3.1. Operadores aritmticos


Para visualizar o efeito dos operadores (indicados no quadro Aritmticos), utilize
a classe Console(), a qual, pelo mtodo WriteLine(), revela uma expresso ou
um contedo de uma varivel com a quebra de linha automtica. J o Write()
realiza a impresso sem a quebra de linha.

aritmticos




+ Adio
-
Subtrao
* Multiplicao
/
Diviso
%
Resto da diviso

6.3.2. Operadores relacionais


Relacionais





> Maior que


< Menor que
>= Maior ou igual a
<= Menor ou igual a
==
Igual
!=
Diferente

6.3.3. Operadores aritmticos de atribuio reduzida


Aritmticos




+= Adio Igual
-=
Subtrao Igual
*= Multiplicao Igual
/=
Diviso Igual
%=
Resto da diviso Igual

Outro mtodo da classe Console() utilizado neste exemplo o Readkey(), que


permite ao programa realizar uma pausa, aguardando at que uma tecla seja
pressionada. Isso necessrio por estarmos trabalhando com uma janela DOS,
que se encerra quando o programa finalizado (figura 222).
Observe sua aplicao na figura 223.
202

static void Main(string[] args)


{

Console.WriteLine(Verificando os Operadores);

int x = 10;

int y = 15;

Console.WriteLine(Soma: + (x + y));

Console.WriteLine(Subtrao: + (x - y));

Console.WriteLine(Multiplicao: + (x * y));

Console.WriteLine(Diviso: + (y / x));

Console.WriteLine(Diviso (10/3): + (x / 3));

Console.WriteLine(Resto da Diviso (10/3): + (x % 3));

Console.ReadKey();
}

static void Main(string[] args)


{

Console.WriteLine(Operadores Reduzidos);

int x = 10;

int y = 15;

Console.WriteLine(Soma + igual: + (x += 2));

Console.WriteLine(Subtrao + igual: + ( y -= 10));

// x est com novo valor !!!

Console.WriteLine(Multiplicao + igual: + (x *= 2));

Console.WriteLine(Diviso + igual: + (x /= 2));

Console.WriteLine(Resto da Diviso + igual: + (x %=5));

Console.ReadKey();
}

Figura 222
Usando o
mtodo Readkey.

Figura 223
Aplicao de
operadores aritmticos
de atribuio reduzida.

6.3.4. Operadores de incremento e decremento


Operadores

++
- -

Incremento
Decremento

Observe sua aplicao na figura 224.












static void Main(string[] args)


{

Console.WriteLine(Operadores Reduzidos);

int x = 10;

int y = 10;

x++;

Console.WriteLine(Incremento: + x);

y--;

Console.WriteLine(Decremento: + y);

Console.ReadKey();
}

Figura 224
Aplicao de operadores de
incremento e decremento.

203

Informtica 4

captulo 6

6.3.5. Operadores lgicos


Operadores


&& And
|| Or
! Not

Sua aplicao ilustrada na figura 225.


Figura 225
Aplicao de
operadores lgicos.

static void Main(string[] args)


{

Console.WriteLine(Operadores Lgicos);

int a = 10;

int b = 30;

int c = 10;

int d = 25;

Console.WriteLine((a < d) && (b != c));

Console.WriteLine((a > d) || (b != c));

Console.WriteLine(! (a >= b));

Console.ReadKey();
}

6.3.6. Converses C#
Para realizar as converses de dados, usamos os mesmos conceitos trabalhados
em Java. No entanto, dependendo da instruo adotada, o resultado obtido
poder variar. Um bom programador realiza alguns testes para verificar qual a
melhor maneira de fazer a converso.

6.3.7. Parse
A classe Parse sempre vem precedida do tipo de dados e em seguida da varivel
ou da expresso a ser convertida (figura 226).
Figura 226
Classe Parse.

int.Parse(idade);
float.Parse(salario);
int.Parse(Console.ReadLine());

valor = Int32.Parse(numero);
teste = Int16.Parse(dado);

dt = DateTime.Parse(01/01/2010);

6.3.8. Convert
A classe Convert tem a sua indicao de tipo registrada aps o nome da classe,
seguido da varivel ou da expresso (figura 227).
204

Figura 227

Convert.ToUInt16(indade);

Convert.ToDouble(salario);

Convert.ToInt16(Console.ReadLine());

valor = Convert.ToInt32(numero);

teste = Convert.ToInt16(dado);

dt = Convert.ToDateTime(01/01/2010);

6.4. Estrutura de deciso


Assim como o Java, os controles de incio e fim de cada estrutura devero ser
controlados pelos {}. Para realizar os desvios condicionais, utilizamos a estrutura if() ou switch(), traduzidos como se e troca, respectivamente.

6.4.1. Condio verdadeiro if


A mesma recomendao feita para Java vale para o C#. Ou seja, quando a instruo if() apresentar uma nica instruo para a sua condio, no necessrio
utilizar as chaves, que se tornam opcionais. No exemplo (figura 228), podemos
verificar que a varivel x maior que o valor 10, sabendo-se que o seu valor
inicial 5. E visualizamos a expresso: A varivel X maior que 10.

Classe Convert.

Dica

Existe um grande nmero


de mtodos da Classe
Convert e Parse. Para
conhec-los, consulte o
Msdn .NET Frameworks
Developer Center. http://
msdn.microsoft.com/
pt-br/library/default.
aspx. Os prximos
tpicos envolvem os
conhecimentos prvios
de lgica de programao.
Caso haja dvidas, recorra
aos conceitos tratados
anteriormente.

Figura 228
Exemplo de instruo if().

static void Main(string[] args)

Console.WriteLine(Estrutura IF);

int x = 15;

if (x > 10) {

Console.ReadKey();

Console.WriteLine(A varivel X maior que 10);

6.4.2. Condio verdadeiro ou falso ifelse


J nesse outro exemplo (figura 229), verificaremos se a varivel x maior que
10 ou no, sabendo-se que o seu valor inicial 5. Ser adicionada uma expresso para cada alternativa.
205

Informtica 4

captulo 6

Figura 229
Exemplo de if...else.

static void Main(string[] args)


{

Console.WriteLine(Estrutura IF);

int x = 5;

if (x > 10)

{


Console.WriteLine(A varivel X maior que 10);

}

else {


Console.WriteLine(A varivel X menor que 10);

}

Console.ReadKey();
}

6.4.3. Condies mltiplas if...elseif...elseif....else


Agora, verificaremos se a varivel x possui o nmero 1, 2 ou 3, sabendo-se
que o valor inicial 3. Nesse caso, para qualquer outro valor, ser visualizada a
expresso: O valor de X trs (figura 230).
Figura 230
Exemplo de
condies mltiplas.


{
















}

static void Main(string[] args)


Console.WriteLine(Estrutura IF);
int x = 3;
if (x ==1)
{

Console.WriteLine(O valor de X UM);
}
else if (x==2) {

Console.WriteLine(O Valor de X DOIS);
}
else if(x==3){

Console.WriteLine(O Valor de X TRS);
}
else {

Console.WriteLine(Qualquer outro valor);
}
Console.ReadKey();

6.4.4. Mltiplos testes Switch()


Usando o mesmo exemplo do item anterior, a sequncia de testes realizada
com a instruo switch(). Assim, cada um ser implementado com a instruo
break para que as outras condies no sejam executadas (figura 231). A instruo default est realizando a funo da instruo else do if().
206

static void Main(string[] args)


{

Console.WriteLine(Estrutura SWITCH);

int x = 3;

switch (x) {


case 1:


Console.WriteLine(O valor de X UM);


break;


case 2:


Console.WriteLine(O valor de X DOIS);


break;


case 3:


Console.WriteLine(O valor de X TRS);


break;


default:


Console.WriteLine(Qualquer outro valor);


break;

}

Console.ReadKey();
}

Figura 231
Exemplo de mltiplos
testes Switch().

6.5. Estruturas de repetio usadas na linguagem


6.5.1. While()
Usando a varivel cont, para controle do loop, obtemos os nmeros de 0 a 10.
O importante em uma instruo While() a implementao de um contador
dentro da estrutura (figura 232).
Figura 232









static void Main(string[] args)


{

Console.WriteLine(Estrutura WHILE);

int cont=0;

while (cont <=10){


Console.WriteLine(Numero: + cont);


cont++;

}

Console.ReadKey();
}

Exemplo de While.

6.5.2. Do While()
Nesse caso, repete-se a instruo para While(). Porm, o teste realizado no
final do loop. Esse tipo de estrutura permite que as instrues que esto dentro
do lao de repetio sejam executadas, no mnimo, uma vez (figura 233).
207

Informtica 4

captulo 6

Figura 233
Do While().

static void Main(string[] args)


{

Console.WriteLine(Estrutura DO...WHILE);

int cont=0;

do

{


Console.WriteLine(Numero: + cont);


cont++;

} while (cont <= 10);

Console.ReadKey();
}

6.5.3. For()
Diferente do While(), a instruo For() capaz de definir, em uma nica linha,
a varivel e o seu tipo, bem como estabelecer a condio para a estrutura e indicar o contador (figura 234).
Figura 234
Instruo for().

static void Main(string[] args)


{

Console.WriteLine(Estrutura FOR);

for(int cont=0; cont<=10; cont++)

{


Console.WriteLine(Numero: + cont);

}

Console.ReadKey();
}

6.5.4. Break e continue


As instrues break e continue podem interferir diretamente em um lao de
repetio. No prximo exemplo (figura 235), quando a varivel cont tiver o
valor 5, o loop ser encerrado, executando a prxima instruo aps o fechamento da estrutura.
Figura 235
Instrues break
e continue.

208

static void Main(string[] args)


{

Console.WriteLine(Estrutura BREAK);

int num;

for (num = 0; num < 10; num++)

{


if (num == 5){


break;


}


Console.WriteLine (O nmero : + num);

}


Console.WriteLine (Mensagem aps o lao);


Console.ReadKey();
}

Observe, na figura 236 como fica o mesmo exemplo de quebra de loop com a
instruo break, agora dentro da instruo While().












static void Main(string[] args)


{

Console.WriteLine(Estrutura BREAK);

int num=0;

while (num < 1000) {

num +=10;

if (num > 100){


break;}


Console.WriteLine(O nmero : + num);

}

Console.WriteLine (Mensagem aps o lao);

Console.ReadKey();
}

Figura 236
Exemplo com break
dentro de While().

A instruo Continue fora a execuo do loop a partir do ponto em que est.


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 apresentado na tela.














static void Main(string[] args)


{

Console.WriteLine(Estrutura CONTINUE);

int num=0;

while (num < 1000){


num += 1;


if (num == 100)


{


continue;


}


Console.WriteLine(O nmero : + num);

}


Console.WriteLine (Mensagem aps o lao);


Console.ReadKey();
}

Figura 237
Exemplo de uso
da instruo continue.

Na figura 238, confira outro exemplo da instruo continue, agora, dentro de


uma estrutura for().





static void Main(string[] args)


{

Console.WriteLine(Estrutura CONTINUE);

for (int num = 0; num <= 10; ++num)

{


if (num == 5){

Figura 238
Exemplo de uso da instruo
continue dentro de for().

209

Informtica 4

captulo 6


}

Console.WriteLine(O nmero : + num);
}
Console.WriteLine (Mensagem aps o lao);
Console.ReadKey();

continue;

6.6. Tratamento de erros / excees


Erros mais comuns

Rede ou Internet: geralmente


por problemas de conexo
(servidor, linha etc.). Drive:
falta da unidade de disco. Path:
caminho para a localizao
de arquivos em geral.
Impressora: equipamento
no disponvel, sem tinta
ou sem papel. Componente
no instalado: falta algum
componente de software
ou est com erro de execuo.
Permisso: privilgio para acesso
de arquivos, dados ou rea
de rede. Clipboard: problema
com dados transferidos para
determinada rea.

Uma das tarefas mais importantes dos programadores saber realizar o tratamento de erros (consulte o quadro Erros mais comuns) e excees que podem
ocorrer durante a execuo de um projeto. Seja por uma operao invlida ou
at mesmo devido abertura de determinado arquivo inexistente. Para isso,
utilizamos uma estrutura bem familiar: o try-catch-finally (j abordado anteriormente, quando falamos de Java).






Try {



}
Catch

{



}

// instruo que pode gerar o erro de execuo

// o que deve ser feito se ocorrer o erro

Outra possibilidade incluir o finally, o que opcional, pois ele sempre ser
executado, ocorrendo exceo ou no.










Try {



}
Catch

{



}
Finally

{



}

// instruo que pode gerar o erro de execuo

// o que deve ser feito se ocorrer o erro

// opcional, mas executado

210

Figura 239
Converso do contedo
de dois TextBox.

No caso da implementao do cdigo com o finally, teramos uma instruo


ou um bloco de instrues sendo executados, independentemente da existncia
de uma exception. Ou seja, sempre ser executado o bloco do finally, como
possvel observar na figura 240.
Figura 240













try
{

double var01 = double.Parse(txtLado01.Text);

double var02 = double.Parse(txtLado02.Text);

double resp = var01 * var02;

txtResp.Text = resp.ToString();
}
catch
{

MessageBox.Show(Dados Incorretos);
}
finally {

MessageBox.Show(Mensagem de Finalizao, Mensagem);
}

Implementao do
cdigo com o finally.

6.6.1. Exception
Quando o bloco catch{} executado, poder ser disparada uma exceo. Isso
significa que foi gerado um cdigo de erro e uma descrio correspondente.
Cada erro possui caractersticas diferentes. Com bases nessas informaes, podemos especificar o nmero do erro gerado.

O prximo exemplo (figura 239) mostra a converso do contedo de dois TextBox, 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,
como letra ou smbolos.

try
{

double var01 = double.Parse(txtLado01.Text);

double var02 = double.Parse(txtLado02.Text);

double resp = var01 * var02;

txtResp.Text = resp.ToString();
}
catch
{

MessageBox.Show(Dados Incorretos);
}

catch (Exception objeto)

Ao modificar o exemplo anterior, sero emitidas mensagens de erro, como mostra a figura 241.
211

Informtica 4

captulo 6

Figura 241
Emisso de
mensagens de erro.

Figura 242
Vetores e matrizes.

212



try

{


double var01 = double.Parse(txtLado01.Text);


double var02 = double.Parse(txtLado02.Text);


double resp = var01 * var02;


txtResp.Text = resp.ToString();

}

catch (Exception erro) // erro o objeto de controle

{


MessageBox.Show(Dados Incorretos: Fornea apenas valores
numricos);


MessageBox.Show(erro.Message);


MessageBox.Show(erro.Source);

}

finally {


MessageBox.Show(Mensagem de Finalizao, Mensagem);

}

// matriz do tipo double


double[,] matriz;
matriz = new double[2,2];
matriz[0,0] = 1;
matriz[0,1] = 2;
matriz[1,0] = 3;
matriz[1,1] = 4;
MessageBox.Show(matriz[1,1].ToString());

// matriz do tipo inteiro


int[,] temp = { { 1, 4 }, { 2, 7 }, { 3, 5 } };
MessageBox.Show(temp[1, 1].ToString());

6.8. Classes

6.7. Vetores e matrizes

Usando os mesmos conceitos do Java, o C# pode implementar classes especficas para programao, as quais seguem os mesmos princpios de formao e
manipulao. Para relembrar os conceitos de programao orientados a objetos,
observe o exemplo a seguir e, depois, confira a classe na figura 243.

Vamos ver agora, na figura 242, a forma de declarao, atribuio e acesso


aos valores para diferentes tipos de vetores e matrizes. Uma boa dica, para
essa etapa, revisar os conceitos a respeito, no tema programao em Java.

Uma classe chamada Carro tem atributos referentes ligados a marca, combustvel e marcha e, ainda, os mtodos movimentar(), parar() e consultar(), que
representam:

// vetor do tipo String


string[] j;
j = new string[2];
j[0] = seg;
j[1] = ter;
MessageBox.Show(j[0]);

string[] semana = { dom, seg, ter, qua, qui, sex };


MessageBox.Show(semana[0]);

// vetor do tipo float


float[] y;
y = new float[3];
y[0] = 10.5F;
y[1] = 7.3F;
y[2] = 1.9F;

// vetor do tipo inteiro


int[] x = { 10, 5, 3 };
MessageBox.Show(x[0].ToString());

Movimentar(): indica a velocidade com que o veculo deve andar.


Parar(): quando acionado, diminui em uma unidade a velocidade do veculo.
Consultar(): informa a atual velocidade do veculo.
Figura 243
Diagrama de classe.

Carro
+ marca : String
+ com : String
+ marcha : int
- velocidade : int
+ movimentar (acelerao : int) : void
+ parar() : void
+ consultar() : int

213

Informtica 4

captulo 6

Observe, ento, na figura 244, como ficaria a classe, seguindo o diagrama.


Figura 244
Como ficou a classe, de
acordo com o diagrama.

class Carro
{
// atributos da classe carro
public string marca;
public string comb;
public int marcha;
private int velocidade;
// mtodo movimentar
// recebe o valor (int) que indica a acelao do veculo
public void movimentar(int aceleracao){
velocidade += aceleracao;
}
// mtodo parar
// diminui em uma unidade toda vez que acionado
public void parar(){
if (velocidade > 0){
velocidade--;
}
}
// mtodo consultar
// retorna a velocidade do veculo
public int consultar(){
return velocidade;
}
}

// imprime os dados do veculo e combustivl


Console.WriteLine(Veculo: + objCarro.marca + de + objCarro.
marcha + marchas);
Console.WriteLine(Combustvel: + objCarro.comb + \n);
// inicia a movimentao do carro com velocidade 5
objCarro.movimentar(5);
// consulta a velocidade do veculo
velocidade = objCarro.consultar();
// visualiza a velocidade do veculo
Console.WriteLine(Velocidade Atual: + velocidade);
Console.ReadKey();
// aumenta a velocidade do veculo
objCarro.movimentar(5);
Console.WriteLine(Velocidade Atual: + objCarro.consultar());
Console.ReadKey();

// comea a parar o carro
// a primeira chamada diminui em 1 unidade a velocidade
objCarro.parar();
velocidade = objCarro.consultar();
Console.WriteLine(Velocidade Atual: + objCarro.consultar());
Console.ReadKey();
}
Assim como em Java, importante seguir as boas prticas de programao.
Uma delas utilizar os getters e setters. Vamos usar uma classe criada no captulo anterior para compor outro exemplo (figuras 246 e 247).
Figura 246

Analisando o cdigo principal main(), na figura 245, veja o que aparece.


Pessoa

Figura 245
Analisando o cdigo main().

static void Main(string[] args)


{
// instanciando a classe Carro
Carro objCarro = new Carro();
// atribui os valores para o OBJ
objCarro.marca = Fusca;
objCarro.comb = Querozene;
objCarro.marcha = 4;

214

Classe Pessoa.

- codigo : int
- nome : String
- endereco : String
- bairro : String
cidade : String
- uf : String
- telefone : String
- celular : String
* mostrarTelefones() ; void

215

Informtica 4

captulo 6

Figura 247
Uso de getters e setters.

public class Pessoa


{

private int codigo;

private string nome;

private string endereco;

private string bairro;

private string cidade;

private string uf;

private string telefone;

private string celular;













}

public int setCodigo(int novoCodigo){



this.codigo = novoCodigo;
}
public int getCodigo(){

return this.codigo;
}
public String setNome(String novoNome){

this.nome = novoNome;
}
public int getNome(){

return this.nome;
}
// o get e set dever ser construdo para os demais atributos

Propriedades Form
Name Modifica o nome
Text Atualiza a barra de ttulo do formulrio

Backcolor

Cor de fundo do formulrio

BackgroundImage

Insere uma imagem como plano de fundo em um formulrio

BackgroundImageLayout Ajusta a posio da imagem em relao ao formulrio

ControlBox

FormBorderStyle Muda as configuraes de visualizao do formulrio

Icon

Desativa os botes maximizar, minimizar e fechar


Insere um cone no formulrio

MaximizeBox Permite ou no ao usurio maximizar


MinimizeBox Permite ou no ao usurio minimizar

Size

Define a largura e a altura do formulrio

WindowState

Define o modo como o formulrio ser aberto: maximizado, minimizado, etc.

6.9.2. Button
O Button (boto), apresentado na figura 249, o responsvel por grande parte
da nossa programao. Ao clicar sobre esse componente, acessamos a janela de
cdigos, na qual o primeiro evento est previamente selecionado, nesse caso
click. Isso indica que o cdigo ser executado quando dermos o clique sobre o
boto (figura 250). Confira 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 ToolBox (caixa de ferramentas). Essa janela apresenta uma srie de componentes
e, cada um deles, uma variedade de propriedades que podem ser configuradas
tanto via janela, como por meio de programao. Veja, a seguir, os componentes
mais comuns para a elaborao de um projeto.

Nome do boto e evento

Figura 250
Evento Click.

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 principal para os nossos componentes (figura 248). Confira os detalhes no quadro
Propriedades Form.

rea de programao

Figura 248
Form.

Propriedades Button
Name Modifica o nome
Text Texto para o boto

216

BackColor Modifica a cor do boto

BackgroundImage

BackgroundImageLayout Ajusta a posio da imagem em relao ao boto

Visible

Insere uma imagem como plano de fundo


Define se esse boto est visvel ou no

217

Informtica 4

captulo 6

6.9.3. TextBox

6.9.5. ComboBox

O TextBox (caixa de texto) o componente responsvel por receber as informaes do usurio (figura 251), tambm o item mais comum, pois a maioria das
entradas de dados realizada por ele. Observe detalhes no quadro Propriedades
TextBox.

O ComboBox (caixa de agrupamento) permite ao usurio abrir vrias opes (figura 253), assim como ocorre quando escolhemos uma fonte de letra do Microsoft Word. Veja mais detalhes no quadro Propriedades ComboBox, os detalhes.
Figura 253

Figura 251

ComboBox.

TextBox.

Propriedades Textbox
Name Modifica o nome
Text

Insere um texto predefinido

BackColor

Cor de fundo da caixa de entrada

ForeColor

Cor da fonte

CharacterCasing

Controla a entrada do texto, mantendo as letras

Caractere utilizado para coletar senha

ReadOnly Mostra o texto, mas no permite que ele seja alterado

TextAlign

Name Modifica o nome


Text

Insere um texto no combo

DataSource Pode ser ligado a uma base de dados DataTable

Items Lista de valores que o ComboBox disponibiliza ao usurio para seleo

em maiscula ou minscula

MaxLength Tamanho mximo em nmero de caracteres


PasswordChar

Propriedades ComboBox

Define se o texto deve ser colocado direita, esquerda ou centralizado

Para a insero de itens, escolha a opo Items. Uma nova caixa de dilogo
ser aberta: os itens devero ser colocados um abaixo do outro (one per line).
Aps a confirmao, teremos o ComboBox carregado com as informaes
(figura 254).
Figura 254

6.9.4. Label

ComboBox
(carregado).

Usamos o Label (rtulo) para inserir rtulos nos formulrios, como mostra a
figura 252 (consulte o quadro Propriedades Label, para obter detalhes).
Figura 252
Label.

Propriedades Label
Name Modifica o nome

218

Text

Insere um texto predefinido

Cor de fundo da caixa de entrada, local onde

BackColor

as informaes sero inseridas

ForeColor

Cor da fonte

Font

Define a fonte do texto

6.9.6. ListBox
Diferentemente do ComboBox, o ListBox (caixa de lista) disponibiliza
vrias opes aos usurios, porm, em forma de lista. Isso permite a
utilizao de barra de rolagem caso o nmero de opes ultrapasse o
limite da caixa da janela (figura 255). Consulte o quadro Propriedades
ListBox.
219

Informtica 4

captulo 6

Figura 255

Propriedades CheckBox

ListBox.

Name Modifica o nome


Text

Insere a texto da opo

Deixa a opo j selecionada

CheckState

Para verificar o que foi selecionado pelo usurio, devemos realizar o teste em
cada um dos elementos. Assim, implementaremos o cdigo anterior com um
boto, para verificao dos itens selecionados, cuja sada ser uma caixa de dilogo contendo todas as informaes selecionadas (figuras 258 a e 258 b).

Propriedades ListBox

Figuras 258 a e 258 b

Name Modifica o nome


DataSource Pode ser ligado a uma base de dados DataTable

Items Lista de valores que o ComboBox disponibiliza ao usurio para seleo

SelectionMode Permite escolher um ou mais itens de uma s vez

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


ComboBox.
Figura 256
ListBox (carregado).

Utilizamos o controle CheckBox (caixa de seleo) para obter mltiplas opes


de resposta ou para simular um sim ou no, dependendo do escopo empregado. O exemplo da figura 257 simula um questionrio no qual o usurio deve
marcar quais linguagens de programao est estudando (consulte tambm o
quadro Propriedades CheckBox).

CheckBox.

220

O cdigo descrito refere-se apenas ao evento click, relacionado ao boto de verificao (confira na figura 259).










6.9.7. CheckBox

Figura 257

Verificao da caixa CheckBox.

private void btnVerificar_Click(object sender, EventArgs e)


{

string frase = Voc est estudando: ;

if (chkOpcao1.Checked == true)


frase = frase + > C#;

if (chkOpcao2.Checked == true)


frase = frase + > Visual Basic .NET;

if (chkOpcao3.Checked == true)


frase = frase + > ASP.NET;

MessageBox.Show(frase, Mensagem);
}

Figura 259
Cdigo descrito do evento
click, com a verificao.

6.9.8. RadioButton
O RadioButton (boto de seleo) diferente do CheckBox, pois pode estabelecer relaes entre si, o que possibilita fornecer mltiplas opes para que se
escolha somente uma. O exemplo ilustrado nas figuras 260 (a e b) e 261 verifica
o estado civil do usurio (confira tambm o quadro Propriedades RadioButton).
Figuras 260
Verificao da opo
do RadioButton.

221

Informtica 4

captulo 6

Figura 261
O detalhamento
da verificao.

private void btnVerificar_Click(object sender, EventArgs e)


{

string frase = Seu estado Civil :;

if (rdbCasado.Checked == true)


frase = frase + Casado;

if (rdbSolteiro.Checked == true)


frase = frase + Solteiro;

MessageBox.Show(frase, Titulo);
}

Propriedades RadioButton
Name Modifica o nome
Text

Insere a texto da opo

Deixa a opo j selecionada

CheckState

6.9.8.1. Agrupamento

Propriedades Agrupamento
Name Modifica o nome
Text Ttulo da caixa de grupo

6.10. Eventos
Para cada componente inserido na aplicao, incluindo o formulrio, podemos
manipular eventos distintos. O evento a forma com que a classe se manifesta
quando o usurio interage com os componentes do formulrio: com um clique,
duplo clique, passagem de mouse etc. Por exemplo, ao inserir um boto para finalizar a aplicao, devemos associar o cdigo a um determinado evento, no caso, o
clique. Na figura 264, podemos verificar a identificao do boto de acordo com a
atribuio do seu name e com o evento que receber a programao.
Figura 264
Nome do boto indicado
na propriedade name.

Evento

Listagem dos eventos


e componentes

Eventos.

Em alguns momentos, ser necessrio reunir grupos de opo usando o RadioButton. Para que os controles fiquem vinculados, mas dentro de um determinado 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 (figura 262). Confira, tambm, o quadro Propriedades Agrupamento.
Figura 262
Container
GroupBox.

Para modificar os eventos, podemos utilizar a janela de Properties (figura 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 (figura 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 (figura 267), podemos verificar 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.

Visual Basic.NET mais uma ferramenta que compe o Visual


Studio. Ele permite criar aplicativos Windows Cliente, Servidor, 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 Microsoft considera uma ferramenta do tipo RAD Rapid Application Development, que possibilita o desenvolvimento rpido de aplicativos, como o prprio
nome indica em ingls.

Na programao em VB (Form1.vb), envolvemos novamente os conceitos de


programao orientada a objeto, usando a mesma metodologia j apresentada em C#, com suas classes, atributos, mtodos e o controle de eventos,
como na figura 268.
Figura 268

7.1. Programao

Programao em VB.

A programao em Visual Basic, ou simplesmente VB, exige os mesmos cuidados j apresentados anteriormente. importante, porm, fazer uma recordao
sucinta.

7.1.1. Console Application


Valem as mesmas aplicaes em C#, nas quais teremos uma janela do tipo DOS
como resposta.

7.1.2. Windows Form Application


Ao iniciarmos uma aplicao do tipo Windows Form Application, a Soluction
Explorer dever fornecer o Form1.vb (figura 266), o qual receber a programao do nosso projeto.
Figura 266
Solution Explorer VB.

7.2. Tipos de dados e variveis


Os tipos de dados so tratados diretamente pelo .NET Framework. Portanto,
utilizaremos, no VB, os tipos de dados semelhantes ao C#, mas com notaes
diferentes em alguns casos (tabela 14). Siga as mesmas recomendaes especificadas anteriormente.

Tipo

Implementao

Byte

Inteiro de 8 bits sem sinal (0 a 255)

Sbyte

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

Ushort

Inteiro de 16 bits sem sinal (0 a 65 535)

Short

Inteiro de 16 bits com sinal (-32 768 a 32 767)

Uinteger

Inteiro de 32 bits sem sinal (0 a 4 294 967 295)

Inteiro de 32 bits com sinal (-2 147 483 648 a 2 147 483 647)

Integer

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

226

Tabela 14
Tipos de dados em VB.

a 9 223 372 036 854 775 807)

227

Informtica 4

captulo 7

Single Ponto Flutuante Binrio de 4 bytes

Ponto flutuante binrio IEEE de 8 bytes


Double

(5.0 x10 -324 a 1.7 _ 10308), 15 dgitos decimais de preciso

Ponto flutuante decimal de 128 bits.


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

Char Um nico caractere Unicode de 16 bits. No compatvel com inteiro

String At 2 bilhes de caracteres

Data

8 bytes intervalo 01/01/100 at 31/12/9999

7.2.1. Atribuio DIM


Para a definio das variveis em VB, utilizaremos a instruo Dim, o nome da
varivel e o seu tipo. Confira no exemplo ilustrado pela figura 269.
Figura 269
Instruo Dim.

Dim x
Dim y As Integer
Dim nome As String
Dim endereco, cidade, estado As String
Dim md = 10
Dim salario As Double

Podemos definir, dentro das rotinas tendo visibilidade local, o cdigo mostrado
na figura 270.

Cdigo para definio.

Private Sub Form1_Load()



Dim nome As String

Dim valor As Integer

nome =

valor = 0
End Sub

Visibilidade
dentro da rotina

Outra alternativa fazer o mesmo dentro da classe, para que possam ser acessadas por outras rotinas da mesma classe. O cdigo ilustrado na figura 271
implementa variveis de visibilidade pblicas dentro da aplicao.
Figura 271
Cdigo implementando
variveis.

228

Public Class Form1



Public frase As String

Public calc As Double

Private Sub Form1_Load()


Dim nome As String


Dim valor As Integer


nome =


valor = 0

End Sub
End Class

Visibilidade global

Os exemplos prticos para mostrar a funcionalidade dos operadores sero executados no Console Application.

7.3.1. Operadores aritmticos


Aritmticos

+ Adio

* Multiplicao

Subtrao

Diviso

Diviso de um valor por outro e retorna somente


a parte inteira do resultado

Mod

Resto da Diviso

&

Combina (concatena) Strings

Expoente (potncia)

Figura 272

7.2.2. Variveis globais

Figura 270

7.3. Operadores

Visibilidade dentro
da rotina

Sub Main()

Console.WriteLine(Verificando os Operadores)

Dim x = 10

Dim y = 15

Console.WriteLine(Soma: & (x + y))

Console.WriteLine(Subtrao: & (x - y))

Console.WriteLine(Multiplicao: & (x * y))

Console.WriteLine(Diviso: & (y / x))

Console.WriteLine(Parte inteira da diviso: & (x \ 3))

Console.WriteLine(Resto da Diviso (10/3): & (x Mod 3))

Console.WriteLine(Bom & Dia & aluno)

Console.WriteLine(Quadrado de trs: & 3 ^ 2)

Console.ReadKey()
End Sub

Exemplo de operadores
aritmticos.

7.3.2. Operadores relacionais


Relacionais

> Maior que

< Menor que

>= Maior ou igual a

<= Menor ou igual a

Igual

<>

Diferente

229

Informtica 4

captulo 7

7.3.3. Operadores aritmticos de atribuio reduzida


Aritmticos

+= Adio Igual

-=

*= Multiplicao Igual

/=

Diviso Igual

&=

Concatena Igual

^= Potncia Igual

Subtrao Igual

Figura 273
Exemplo de
operadores
aritmticos de
atribuio
reduzida.

Sub Main()

Console.WriteLine(Operadores Reduzidos)

Dim x As Integer = 10

Dim y As Integer = 15

Dim frase As String = Bom

x += 2

Console.WriteLine(Soma + igual: & x)

y -= 10

Console.WriteLine(Subtrao + igual: & y)

x est com novo valor !!!

x *= 2

Console.WriteLine(Multiplicao + igual: & x)

x /= 2

Console.WriteLine(Diviso + igual: & x)

frase &= Dia!!!!

Console.WriteLine(Resto da Diviso + igual: & frase)

y ^= 2

Console.WriteLine(Potncia + igual: & y)

Console.ReadKey()
End Sub

7.3.4. Operadores lgicos


Lgicos
And And
Or Or

not Not

7.3.5. Converses em VB.NET


O processo de converso segue os conceitos abordados anteriormente (Java e
C#). A lista ilustrada pela figura 274 sugere alguns exemplos de converses.
230

Figura 274

x = CInt(idade)

y = CSng(salario)

z = CInt(Console.ReadLine())

dt = CDate(01/01/2010)

Exemplos de
converses.

7.4. Estrutura de deciso


Para realizar os desvios condicionais, utilizamos a estrutura if() ou Select Case(),
nos formatos indicados a seguir.

7.4.1. Condio Verdadeiro if


Neste exemplo, verificaremos se a varivel x maior do que o valor 10,
sabendo-se que seu valor inicial 5, visualizando a expresso: A varivel X
maior do que 10 (figura 275).






Sub Main()

Dim x As Integer = 15

If x >= 10 Then


Console.WriteLine(A varivel X maior que 10)


Console.ReadKey()

End If
End Sub

Figura 275
Exemplo de
verificao
de varivel.

7.4.2. Condio Verdadeiro ou Falso ifelse


Agora, verificaremos se a varivel x maior do que 10 ou no, considerandose que seu valor inicial 5. Ser impressa uma expresso para cada alternativa
(figura 276).








Sub Main()

Dim x As Integer = 5

If x >= 10 Then


Console.WriteLine(A varivel X maior que 10)

Else


Console.WriteLine(A varivel X menor que 10)

End If

Console.ReadKey()
End Sub

Figura 276
Expresses
diferentes para
cada alternativa.

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


Verificaremos, agora, se a varivel x possui o nmero 1, 2 ou 3, sabendo-se
que o valor inicial 03. Para outros valores, a expresso ser: A varivel X
TRS (figura 277).
231

Informtica 4

captulo 7

Figura 277
Verificando
condies mltiplas.

Sub Main()

Dim x As Integer = 3

If x = 1 Then


Console.WriteLine(A varivel X UM)

ElseIf x = 2 Then


Console.WriteLine(A varivel X DOIS)

ElseIf x = 3 Then


Console.WriteLine(A varivel X TRS)

Else


Console.WriteLine(Qualquer outro valor)

End If

Console.ReadKey()
End Sub

7.4.4. Mltiplos testes Select Case()


Usando o mesmo exemplo anterior, a sequncia de testes realizada com a instruo Select Case(), a qual, dever para cada teste estar implementada juntamente com a instruo break (figura 278). Assim, as outras condies no sero
executadas. A instruo Case Else realiza a funo da instruo else do if().
Figura 278
Mltiplos testes.

Sub Main()

Dim x As Integer = 3

Select Case x


Case 1


Console.WriteLine(O valor de X UM)


Case 2


Console.WriteLine(O valor de X DOIS)


Case 3


Console.WriteLine(O valor de X TRS)


Case Else


Console.WriteLine(Qualquer outro valor)

End Select

Console.ReadKey()
End Sub

7.5. Estrutura de repetio


Vamos conhecer agora as estruturas de repetio utilizadas na linguagem.

7.5.1. While()
Usando a varivel cont para controle do loop, sero visualizados os nmeros
de 0 at 10. O importante em uma instruo While() a implementao de
um contador dentro da estrutura (figura 279).
232

Sub Main()

Console.WriteLine(Estrutura WHILE)

Dim cont As Integer = 0

While (cont <= 10)


Console.WriteLine(Numero: & cont)


cont = Cont + 1

End While

Console.ReadKey()
End Sub

Figura 279
Instruo While().

7.5.2. Do While()...Loop
Representa a mesma estrutura da instruo anterior (figura 280).






Private Sub Form1_Load()



Dim cont = 0

Do While (cont <= 10)


MsgBox(Numero: & cont)


cont = cont + 1

Loop
End Sub

Figura 280
Instruo
Do While()...Loop.

7.5.3. Do...Loop Until


Vale a mesma instruo anterior, mas, nesse caso, o teste realizado no final
do loop (figura 281). Esse tipo de estrutura permite que as instrues dentro do
lao de repetio sejam executadas, no mnimo, uma vez.





Sub Main()

Console.WriteLine(Estrutura WHILE)

Dim cont As Integer = 0

Do


Console.WriteLine(Numero: & cont)


cont = cont + 1


Loop Until cont >= 10

Console.ReadKey()
End Sub

Figura 281
Teste no fim
do Loop.

7.5.4. For
Diferentemente da instruo While(), a instruo For capaz de definir, em
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.5. For...Step
Contar de 0 a 10, mostrando o resultado. No entanto, dessa vez o contador
ser incrementado de 2 em 2 (figura 283).
233

Informtica 4

captulo 7

Figura 282
Instruo For.

Sub Main()

For x = 0 To 10

Next

Console.ReadKey()

End Sub

Sub Main()

For x = 0 To 10 Step 2

Next

Console.ReadKey()

End Sub

Console.WriteLine(Nmero: & x)

Figura 283
Instruo For...Step.

Console.WriteLine(Nmero: & x)

Try

Dim var01, var02, resp As Double

var01 = CDbl(TextBox1.Text)

var02 = CDbl(TextBox2.Text)

resp = var01 * var02

TextBox3.Text = resp
Catch erro As DivideByZeroException

MsgBox(Dados Incorretos)
Finally

MsgBox(Mensagem de finalizao, Mensagem)
End Try

Figura 284
Verificao de erro
na converso de
dados das variveis.

7.7. Vetores e matrizes


Vamos agora conhecer a forma de declarao, atribuio e acesso aos valores
para diferentes tipos de vetores e matrizes (figura 285). Uma sugesto para consolidar o conhecimento fazer uma pesquisa especfica sobre vetores e matrizes
de Lgica de Programao e Programao em Java. H muita informao disponvel, no apenas na bibliografia, como tambm em sites de busca.
Figura 285

7.6. Tratamento de erros e excees


Nas verses anteriores do Visual Basic, o tratamento de erro era controlado
pela instruo On error go to, ainda mantido por questes de compatibilidade. Porm, prefira utilizar o try-catch-finally, que possui as mesmas
caractersticas estudadas anteriormente, mas com mudanas em suas linhas
de programao, como podemos verificar no exemplo a seguir:






Try

instrues que podem gerar o erro de execuo
Catch

o que deve ser feito se o erro ocorrer
Finally

opcional, mas executado
End Try

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

Catch erro As DivideByZeroException

No prximo exemplo, a estrutura Try foi organizada para verificar se existe


erro no momento da converso de dados das variveis (figura 284).
234

vetor de string
Dim j(2) As String
j(0) = seg
j(1) = ter
MsgBox(j(0))

vetor de string
Dim semana() As String = {dom, seg, ter, qua, qui, sex}
MsgBox(semana(0))

vetor tipo Single


Dim y(3) As Single
y(0) = 10.5
y(1) = 7.3
y(2) = 1.9
MsgBox(y(1))

vetor tipo Inteiro


Dim x() As Integer = {10, 5, 3}
MsgBox(x(2))

matriz tipo double


Dim matriz(2, 2) As Double
matriz(0, 0) = 1
matriz(0, 1) = 2
matriz(1, 0) = 3
matriz(1, 1) = 4

Formas de declarao
de vetores e matrizes.

235

Informtica 4

captulo 7

MsgBox(matriz(1, 1))

7.9.3. TextBox

matriz tipo inteiro


Dim temp(,) As Integer = {{1, 4}, {2, 7}, {3, 5}}
MsgBox(matriz(1, 1))

o componente que recebe as informaes do usurio, como ilustra a


figura 289.
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 formao 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 desenvolvimento de aplicaes em VB. Para os componentes apresentados a seguir,
utilize as mesmas descries de propriedades mencionadas no captulo 6.

O Label usado para inserir rtulos nos formulrios (figura 290).


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 componentes, 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
ComboBox.

7.9.2. Button
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 devero 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
Evento Click.

236

Nome do boto e evento

Figura 292
ComboBox
carregado.

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.

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


ComboBox.
Figura 294
ListBox carregado.

Private Sub btnVerifica_Click()



Dim frase As String

frase = Voc est estudando:

If chkOpcao1.Checked = True Then


frase = frase + > C#

End If

If chkOpcao2.Checked = True Then


frase = frase + > Visual Basic .NET

End If

If chkOpcao3.Checked = True Then


frase = frase + > ASP.NET

End If

MsgBox(frase, , Mensagem)
End Sub

Figura 297
Cdigo referente apenas
ao evento click.

7.9.8. RadioButton
Vamos utilizar o mesmo exemplo do C# e solicitar ao usurio a escolha do estado civil (figura 298 e, com detalhes, na figura 299).
Figura 298

7.9.7. CheckBox

Verificando a opo
do RadioButton.

Assim como no C#, vamos utilizar o CheckBox para indicar mltiplas


opes ou questes de sim ou no. O exemplo da figura 295 o mesmo
utilizado em C#.
Figura 295
CheckBox.

A figura 296 mostra como fazer a verificao de seleo por meio de um boto.
O cdigo descrito na figura 297 referente apenas ao evento click, o qual est
relacionado ao boto de verificao.
238

Dim frase As String


frase = Seu estado Civil :
If rdbCasado.Checked = True Then

frase = frase + Casado
End If
If rdbSolteiro.Checked = True Then

frase = frase + Solteiro
End If

MsgBox(frase, , Mensagem)
End Sub

Figura 299
Detalhes da opo
do RadioButton.

239

Informtica 4

captulo 7

7.9.8.1. Agrupamento
Use um container para realizar o agrupamento dos componentes RadioButton,
assim como no mesmo exemplo de C# (figura 300). Confira, em seguida, o
quadro Propriedades RadioButton.

Na outra extremidade da janela Code, h a lista de todos os eventos disponveis


para o componente (figura 303). Ao escolher um deles, automaticamente uma
rea de cdigo ser criada, para onde o cursor ser deslocado.
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 superior da janela de Code, como mostra a figura 301, aparecem todos os componentes inseridos no formulrio, incluindo o prprio formulrio.
Figura 301
Componentes.

Clique para abrir o combo de opes (figura 302), franqueando o acesso aos
componentes.
Figura 302
Componentes
acionados.

240

241

Captulo 8

ASP.NET
Aplicao ASP.NET
Eventos
Server Controls
He TML
Web Server Controls
Sesses em ASP.NET
Dados via URL

Informtica 4

captulo 8

Configurao: via arquivos WebConfig e CSS , que determinam como a aplicao vai ser executada.
Um dos principais caminhos para criar uma interface entre o usurio e a aplicao
ASP.NET o Web Form, cuja parte executvel armazenada em um assembly
(.dll), porm, executada no servidor e controlada por um work process (aspnet_wp.exe). Funciona em parceria com o IIS, que inicia a execuo do ASP.NET
(aspnet_wp.exe) carregando o assembly do Web Form, o qual, por sua vez, constri a resposta para o usurio de acordo com sua requisio e envia uma resposta
no formato HTML (figura 304).

SP.NET uma plataforma de desenvolvimento usada para a construo de aplicaes Web e Web Service, as quais sero executadas
por um servidor, que, nesse caso, o IIS (Internet Information
Service servio de informao de Internet) da Microsoft. No se trata apenas
de uma tecnologia de desenvolvimento, mas de um conjunto de ferramentas que
permite a integrao entre servidores Microsoft, segurana, cdigo compilado,
e acesso a bancos de dados via ADO.NET e ao .NET Framework, bem como
suporte total ao XML.

8.1. Aplicao ASP.NET


Uma aplicao ASP.NET constituda por trs partes (figura 304):
Contedo: arquivos do tipo Web Forms, HTML, imagens, udio e vdeo, que
determinam a aparncia de uma aplicao Web.
Lgica: arquivos executveis e script, que determinam como uma aplicao responder s aes dos usurios.
Figura 304
Funcionamento de
um Web Service.

Como ilustra a figura 304, partir da ao do usurio, o navegador cria a requisio de uma pgina Web ou ativa um determinado servio. Isso faz com que a
parte lgica da pgina entre em ao. A resposta ser no formato HTML, devidamente configurada como, por exemplo, a forma grfica que ser apresentada
ao usurio (formatao).

8.1.2. Web Form


Um Web Form pode conter os seguintes componentes: Server Controls (controles de servidor): TextBox, Label e Button, que permitem controlar e responder a determinados eventos do servidor. HTML Controls (controles de
HTML): TextArea, Table e Image, que representam os elementos padres do
HTML. Data Controls (controles de dados): SqlConnection, SqlCommand,
OleDbConnection, OleDbCommand e DataSet, que fornecero mecanismos
para manipulao de arquivos XML e conexo com bancos de dados (SQL).
System Components (componentes de sistema): EventoLog, Message Queue e
FileSystemWatcher, os quais permitem manipular eventos do servidor.

8.1.3. Projeto Web Application (Aplicao Web)


Para iniciar uma Web Application, escolha, em Project Types, Visual Basic, e
depois a opo Web na template ASP.NET Web Application (figura 305). No

O IIS um conjunto integrado


de servios de rede para a
plataforma Windows, criado
pela Microsoft. Sua primeira
verso surgiu com o Windows
NTServer 4 e passou por
vrias atualizaes.
A verso de 2009 o IIS 7.5
(disponvel no Windows Server
2008 R2 e Windows 7). Uma
de suas caractersticas mais
utilizadas a gerao de
pginas HTML dinmicas,
que, diferentemente de outros
servidores web, funciona com
tecnologia proprietria ASP
(Active Server Pages, pginas
de servidor ativas), mas tambm
pode usar outras tecnologias com
a adio de mdulos de terceiros.
Para ter acesso a essa ferramenta,
necessrio adquirir licena de
uso. E para cada instalao ou
verso exigido um pagamento.
Depois do lanamento da
plataforma .NET em 2002,
o IIS ganhou tambm a funo
de gerenciar o ASP.NET, formado
basicamente por dois tipos
de aplicaes: Pginas Web
(acessadas por usurios com
a extenso ASPX) e Web Services
(funes disponibilizadas
pela rede, chamadas
de aplicativos ASMX).

Figura 305
Aplicao ASP.NET.

244

245

Informtica 4

captulo 8

Figura 308

Figura 306

ToolBox para
Aplicao Web.

WebForm.

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 aplicao 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 dentro de trs opes: design; design e cdigo, e cdigo. Alm disso, possibilita o
controle das tags de marcao.

8.1.4. Ciclo de vida da Aplicao


Uma aplicao Web comea no momento em que o navegador faz a requisio na sua pgina principal. Inicialmente, executa o assembly (.dll), criando
uma instncia do Web Form. Essa, por sua vez, responder requisio do
usurio no formato HTML, sendo destruda posteriormente. Caso o usurio
no realize nenhuma requisio, a instncia poder ser excluda depois de um
determinado tempo.

8.1.5. Executando uma Application Service (Servio de Aplicao)


Execute uma Application Service da mesma forma que faz em um Windows
Form Application. Dessa vez, porm, no teremos a aplicao rodando como
anteriormente, mas sim uma porta lgica que ser criada para o servidor IIS.
O navegador padro da mquina ser ativado para mostrar a aplicao, conforme ilustra a figura 307. Podemos observar que aparece na URL a expresso
localhost, indicando que o servio est operando como um servidor local. O
nmero que surge aps essa expresso representa a porta lgica da mquina, o
qual no padro e poder ser modificada a cada execuo.
Toda e qualquer modificao no cdigo dever ser gravada por meio da atualizao da pgina e poder ser visualizada posteriormente. Para isso, basta pressionar
a tecla F5. Caso seja usado o boto break, a janela do navegador ser fechada.
Figura 307

8.1.6. Escrevendo a Aplicao


Assim como nas aplicaes em C# ou VB.NET, podemos utilizar a ToolBox
para arrastar os componentes usados no desenvolvimento do layout da pgina
Web. Para isso, preciso mudar a viso para Design (figura 308).
Se preferir ir diretamente ao cdigo, mude para Source, escreva e grave o seu
cdigo e verifique o resultado final no navegador (figuras 309 a e b).
Figura 309a
<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Untitled Page</title>
</head>
<body>
<form id=form1 runat=server>
<div>
Minha Primeira Pgina em ASP</div>
</form>
</body>
</html>

Verificando o
resultado final.

Figura 309b
Minha primeira
aplicao.

Servidor em
Execuo.

246

247

Informtica 4

captulo 8

8.1.7. Estruturando uma pgina ASP.NET


Antes, as pginas em ASP utilizavam as tags <%...%> para a incluso do script,
como podemos constatar no cdigo ilustrado na figura 310.
Figura 310
Uso de tags
<%...%>.

HTML Server Controls


(Controles de servidor
HTML): tags HTML
tradicionais.
Web Server Controls
(Controles de servidor
Web): novas tags ASP.
NET.
Validation Server
Controls (Controles de
servidor de validao):
validao da entrada
de dados.

<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<title>Exemplo em ASP 3.0</title>
</head>
<% response.write(now()) %>
<body>
</body>
</html>

O resultado pode ser visto na figura 311. Lembre-se de executar o cdigo usando o IIS (localhost).
Dessa forma, as tags marcadoras do ASP eram colocadas onde se desejava que
o cdigo aparecesse. Elas ficavam misturadas com o HTML, gerando um cdigo de difcil leitura e manuteno, que foi batizado de cdigo espaguetti. O
ASP.NET eliminou esse problema, utilizando os Server controls, ou seja, tags
que podem ser interpretadas diretamente pelo servidor e esto divididas em trs
categorias de Server Controls.

Figura 311
Execuo do ASP.

<% Tempo.InnerText = Now()%>


<body>
<p id=Tempo runat=server></p>
</body>
</html>

A tag <p> tornou-se um controle do servidor. Sua identificao foi representada


pelo atributo id, que permitir futuras referncias por meio do cdigo executvel, permanecendo agora fora do HTML.

8.1.7.2. Web Server Controls


So semelhantes ao HTML Server Controls, pois agem como parte de um cdigo HTML. No entanto, so independentes e podem ser utilizados em aplicaes
interativas, o que significa que eles englobam servios como, por exemplo, a
programao de eventos. Isso porque dispem de componentes de calendrio,
gridview, treeview, entre outros. Os Web Server Controls so mais complexos
que o HTML Server Controls e devem iniciar com <asp:.../>, como mostra o
cdigo ilustrado pela figura 313.
Figura 313
<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Exemplo em ASP - VB</title>
</head>
<% Tempo.Text = Now()%>
<body>
<p></p><asp:label id=Tempo runat=server/></p>
</body>
</html>

Cdigo com uso


de <asp:.../>.

8.1.7.3. Validation Server Controls

8.1.7.1. HTML Server Controls


So tags HTML padro, criadas a partir da incluso de um novo atributo
runat=server. Veja o exemplo no cdigo mostrado na figura 312.
Figura 312
Tags com incluso
de atributo
runat=server.

248

<html xmlns=http://www.w3.org/1999/xhtml >


<head runat=server>
<title>Exemplo em ASP - VB</title>
</head>

Se voltarmos ao conceito das tags em HTML, lembraremos que o grande problema era o controle de entrada de dados, ou seja, aquilo que o usurio poderia
digitar ou no. Pois os controles de validao do servidor (validation server controls) permitem justamente validar essas entradas e ainda exibem mensagens.
Cada controle executa uma validao especfica, aps uma ao do usurio por
meio de controle Button, ImageButton, ou LinkButton.

8.2. Eventos
Para que o cdigo seja executado no momento correto, podemos utilizar os
manipuladores de evento. O cdigo seguinte determinar o momento em que a
verificao da data/hora dever ser lida no servidor (figura 314). O manipulador
249

Informtica 4

captulo 8

realizar uma sub-rotina quando determinado evento ocorrer. No exemplo anterior, o evento Page_Load executado quando uma pgina carregada.
Figura 314
Verificao de
data e hora.

<html xmlns=http://www.w3.org/1999/xhtml >


<head runat=server>
<title>Exemplo em ASP - VB</title>
</head>
<script runat=server>
Sub Page_Load(Sender As Object,E As EventArgs)
Tempo.Text = Now()
End Sub
</script>
<body>
<p><asp:label id=Tempo runat=server/></p>
</body>
</html>

8.3. HTML Server Controls e Web Server Controls


A construo de uma pgina Web poder ser feita de duas formas: por meio do
HTML Server Controls ou do Web Server Controls. Isso depende diretamente
dos componentes da Toolbox. No existe regra para se utilizar um ou outro.
Porm, recomendvel optar pelo HTML Controls, em caso de migrao do
ASP para o ASP.NET. J o Web Controls indicado para situaes em que os
componentes precisam de mais funcionalidade, pois ele permite a programao
e incorporao de recursos do Framework.

Figura 315b
<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Exemplo em ASP - VB</title>
</head>
<body>
<p id=lblLogin>rea Restrita - Usando Web Control</p>
<p>Login:
<input id=txtLogin type=text /></p>
<p id=lblSenha>
Senha:
<input id=pwdSenha type=password /></p>
<p>
<input id=btnEnviar type=button value=Enviar />
&nbsp;&nbsp;&nbsp;&nbsp;
<input id=btnCancelar type=button value=Cancelar /></p>
</body>
</html>

Detalhamento do uso
do Server Control.

Assim como ocorreu em C# e VB.NET, a janela de Properties dever ser utilizada para ajustes e identificao dos componentes (figura 316).
Figura 316
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
login e senha.

<html xmlns=http://www.w3.org/1999/xhtml >


<head runat=server>
<title>Exemplo em ASP - VB</title>
</head>
<body>
<form id=form1 runat=server>
<p id=lblLogin>rea Restrita - Web Service Controls</p>
Login:
<asp:TextBox ID=TextBox1 runat=server></asp:TextBox>
<p>
Senha:
<asp:TextBox ID=TextBox2 runat=server></asp:TextBox>
</p>
<asp:Button ID=btnEnviar runat=server Text=Enviar />
&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Button ID=btnCancelar runat=server Text=Cancelar />
</form>
</body>
</html>

8.4. Sesses em ASP.NET


Em alguns momentos, ser necessrio deixar um valor disponvel para
toda aplicao. Isso fcil quando se trata de programao para ambiente Windows, como o VB.NET. Mas, no caso de uma aplicao Web, te252

Session(aula) = ASP.NET
Session(data) = Now()
Aps a definio da palavra-chave da sesso, ser determinado o seu valor. A
recuperao dos dados ser feita da mesma forma, identificando a palavra-chave.
No exemplo da figura 318, vamos criar as duas variveis mencionadas e recuper-las aps o clique do boto.
Ao clicarmos no boto Enviar, os itens referentes a Estamos vendo uma aula de:
e Horrio: sero preenchidos de acordo com o cdigo mostrado na figura 319.

<html xmlns=http://www.w3.org/1999/xhtml >
<head runat=server>
<title>Session em ASP.NET</title>
</head>
<script runat=server>
Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
Session(aula) = ASP.NET
Session(data) = Now()
End Sub

Figura 319
Preenchendo itens.

Protected Sub btnEnviar_Click(ByVal sender As Object, ByVal e As


System.EventArgs)
Mostrar1.Text = Session(aula)

253

Informtica 4

captulo 8

Figura 321
Mostrar2.Text = Session(data)
End Sub
</script>
<body>
<form name=formulario runat=server>
Visualizando variveis tipo Session<br />
<br/>
<asp:Button ID=btnEnviar runat=server Text=Enviar
onclick=btnEnviar_Click /><br/>
<br/> Estamos vendo uma aula de:
<asp:Label ID=Mostrar1 runat=server Text=></asp:Label>
<br/>Horrio:
<asp:Label ID=Mostrar2 runat=server Text=></asp:Label>
</form>
</body>
</html>

As variveis de sesso foram criadas no evento Page_Load e a recuperao


dos valores ocorrer quando o evento btnEnviar_Click for acionado (figura 320).
Figura 320
Varivel Session
carregada.

Link para
visualizao.

No cdigo principal, podemos verificar somente a criao das chaves (figura 322).
Figura 322
<html xmlns=http://www.w3.org/1999/xhtml >
<head id=Head1 runat=server>
<title>Session em ASP.NET</title>
</head>
<script runat=server>
Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
Session(aula) = ASP.NET
Session(data) = Now()
End Sub
</script>
<body>
<form id=Form1 name=formulario runat=server>
Visualizando variveis tipo Session<br />
<br/>
<asp:linkbutton runat=server PostBackUrl=Recuperar.
aspx>Prxima Pgina</asp:linkbutton>
</form>
</body>
</html>

Cdigo principal com


criao das chaves.

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).
Figura 323

8.4.1. Recuperando sesso em outra pgina por meio de um evento


Depois que uma sesso foi criada, podemos recuperar os valores em outra pgina. Vamos utilizar o exemplo anterior e dividi-lo em duas pginas a primeira
para criao da sesso e a segunda para visualizao. Na primeira, vamos retirar
o boto e incluir um link para que o usurio seja direcionado para a prxima
pgina (figura 321).
254

<html xmlns=http://www.w3.org/1999/xhtml >


<head id=Head1 runat=server>
<title>Session em ASP.NET</title>
</head>
<script runat=server>

Resultado aps
o clique no boto.

255

Informtica 4

captulo 8

Protected Sub btnEnviar_Click(ByVal sender As Object, ByVal e As


System.EventArgs)
Mostrar1.Text = Session(aula)
Mostrar2.Text = Session(data)
End Sub
</script>
<body>
<form id=Form1 name=formulario runat=server>
Clique no Boto Para Recuperar os Dados:<br />
<br/>
<asp:Button ID=btnEnviar runat=server Text=Enviar
onclick=btnEnviar_Click /><br/>
<br/> Estamos vendo uma aula de:
<asp:Label ID=Mostrar1 runat=server Text=></asp:Label>
<br/>Horrio:
<asp:Label ID=Mostrar2 runat=server Text=></asp:Label>
</form>
</body>
</html>

8.4.2. Recuperando sesso em outra pgina automaticamente


importante que as variveis de sesso sejam recuperadas automaticamente,
para que possam ser utilizadas nas pginas subsequentes. Vamos utilizar o cdigo do exemplo anterior e eliminar o boto para visualizao (figuras 324 a e b).
Figura 324a
Recuperao direta.

Mostrar2.Text = Session(data)
End Sub
</script>
<body>
<form id=Form1 name=formulario runat=server>
<br/> Estamos vendo uma aula de:
<asp:Label ID=Mostrar1 runat=server Text=></asp:Label>
<br/>Horrio:
<asp:Label ID=Mostrar2 runat=server Text=></asp:Label>
</form>
</body>
</html>

8.5. Dados via URL


Outro mecanismo para transportar informaes de uma pgina Web para outra
o URL (Uniform Resource Locator ou localizador de recurso universal). Podese utilizar o seguinte artifcio: aps o nome do arquivo que receber as informaes, digite o sinal de interrogao ? e indique as variveis e seus respectivos
contedos. Se houver mais de uma varivel, separe com o sinal de &, como no
exemplo seguinte:
Menu.aspx?op=1
Menu.aspx?op=1&nome=Jos&cod=3456

Uma URL o endereo


de um recurso (um arquivo,
uma impressora, etc.)
disponvel em uma rede,
seja internet, rede
corporativa ou intranet.
A URL tem a seguinte
estrutura: protocolo://
mquina/caminho/recurso.
O protocolo poder ser
HTTP, FTP, entre outros.
O campo mquina indica
o servidor que disponibiliza
o documento ou recurso
designado. E o caminho
especifica o local
(geralmente em um
sistema de arquivos)
onde se encontra o
recurso dentro do servidor.

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.

256

<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)
257

Informtica 4

captulo 8

No cdigo que estamos utilizando como exemplo, encontramos para cada link a
identificao do arquivo e o valor a ser transferido via URL (figura 326).
Figura 326
Identificao de arquivo
e valor a transferir.

No cdigo (figura 328), a funo Request.QueryString() realizar a captura da


varivel no evento Load_Page e carregar a frase no controle Label, de acordo
com a escolha do usurio.
Figura 328

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0


Transitional//EN http://www.w3.org/TR/xhtml1/DTD/
xhtml1-transitional.dtd>

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.


dtd>

<html xmlns=http://www.w3.org/1999/xhtml >

<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)

<b>Escolha uma Opo de Menu </b> <br />


<asp:LinkButton ID=lnkOpcao01 runat=server
PostBackUrl=Menu.aspx?op=1>Opo 01</asp:LinkButton><br />
<asp:LinkButton ID=lnkOpcao02 runat=server
PostBackUrl=Menu.aspx?op=2>Opo 02</asp:LinkButton><br />

Select Case opcao


Case 1
Escolha.Text = Opo UM selecionada
Case 2
Escolha.Text = Opo DOIS selecionada

<asp:LinkButton ID=lnkOpcao03 runat=server


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

Case 3

</div>

End Select

</form>
</body>
</html>

Captura da
varivel no evento
Load_Page.

Escolha.Text = Opo TRS selecionada


End Sub
</script>
<body>
<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


pelo usurio (figura 327).
Figura 327

</form>
</body>
</html>

Opo escolhida
via menu.

258

259

Captulo 9

ADO.NET
DataSet
DataReader
Objetos para banco de dados
Mtodos de conexo
Consideraes finais
Referncias bibliogrficas
Glossrio

Informtica 4

captulo 9

Figura 329
Estrutura geral.

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. Essas conexes podem ser realizadas de trs maneiras: OLE DB , SQL e ODBC.
Criado para trabalhar no formato desconectado, o ADO.NET faz a conexo
com a base de dados por meio de um objeto DataAdapter (SqlDataAdapter
e OleDbDataAdapter), aumentando, assim, o seu desempenho. Alm disso, o
ADO.NET possui o objeto DataSet, que a representao mais prxima do
banco de dados. Ele carrega na memria vrias tabelas representadas pelo objeto
DataTable, alm de permitir o relacionamento entre as tabelas por meio do objeto DataRelation. Os provedores de dados que acompanham o ADO.NET possibilitam a utilizao de vrias classes que interagem diretamente com a base de
dados, as quais so identificadas por um prefixo, conforme mostra a tabela 14.
Caso seja necessrio utilizar outros sistemas gerenciadores de banco de dados,
voc pode consultar o seu desenvolvedor a respeito dos servios de conexo,
como o MySQL e PostgreSQL. Para cada provedor de conexo, teremos os objetos representados a partir de seu prefixo da seguinte forma: OleDbConnection,

Tabela 14
Provedores de
conexo.

Provedor
ODBC Data Provider
API Prefixo: Odbc
OleDb Data Provider
API Prefixo: OleDb
Oracle Data Provider
API Prefixo:Oracle
SQL Data Provider
API Prefixo:Sql

262

DESCRIO
Geralmente usada para banco
de dados mais antigos que utilizam
a interface ODBC
Conexo do tipo OleDb, como o
Access ou Excel

SqlConnection, OdbcConnection, OleDbCommand e SqlCommand. Para termos uma viso geral dos mecanismos de conexo, observemos a figura 329, que
mostra toda a estrutura.
Os principais pacotes utilizados pelo ADO.NET so:
S
 ystem.Data: contm as classes que representam tabelas, colunas, linhas e
tambm a classe DataSet de todos os provedores, alm das interfaces IDbCommand, IDbConnection, e IDbDataAdapter, que so usadas por todos
os provedores de conexo;
S
 ystem.Data.Commom: define as classes para os provedores de dados DbConnection e DbDataAdapter;
System.Data.OleDb: fonte de dados Ole Db usando o provedor .NET
OleDb;
S
 ystem.Data.Odbc: fonte de dados ODBC usando o provedor .NET
ODBC;
S
 ystem.Data.SqlTypes: dados especficos para o SQL Server.
Alm disso, o ADO.NET oferece classes referenciadas:

Para implementao de Banco de


Dados Oracle

D
 isconnected: fornece classes capazes de armazenar dados sem a dependncia da fonte de dados de determinado provedor. Por exemplo, DataTable.

Para implementao de Banco de


Dados Microsoft SQL Server

Shared: classes que podem ser acessadas por todos os provedores;


Data Providers: classes utilizadas em diferentes fontes de dados para gerenciamento.
263

Informtica 4

captulo 9

Tabela 15
DataSet.

9.1. DataSet

Mtodos

O objeto recordset (ADO), que armazena somente uma coleo de tabelas,


tem desvantagens em relao ao DataSet, que faz parte do System.Data. O
DataSet controla uma cpia do banco de dados, representando um conjunto
de informaes em memria cach que no esto conectadas com o banco
de dados do sistema. Baseado em XML e independente da fonte de dados,
o DataSet pode armazenar vrias verses das tabelas. Apesar de trabalhar
no formato desconectado, o DataSet possui mecanismos que do suporte ao
modelo conectado. Entre os mtodos disponveis, podemos destacar alguns
mostrados na tabela 15.

FieldCount

Colees
Tables

Mtodos

DESCRIO
Uma coleo de tabelas que
armazenam os dados atuais a serem
manipulados
DESCRIO

IsClosed

Verifica se o objeto DataReader


est fechado

Read

Avana para o prximo registro

Close

Fecha o objeto

DataReader.

9.3. Objetos para banco de dados


Uma das grandes vantagens do ADO.NET so os recursos oferecidos pelos objetos de manipulao de dados.

9.3.1. Objeto DataTable


O objeto DataTable pode representar uma ou mais tabelas de dados, as quais
permanecem alocadas em memria. Pode ser manipulado por meio de mtodos,
como mostra a tabela 17.

Grava todas as alteraes


para o DataSet

Clear

Remove todas as linhas das tabelas

Mtodos

Clone

Faz uma cpia da estrutura,


mas no copia os dados

Columns

Representa as colunas da tabela

Copy

Faz uma cpia da estrutura


e dos dados

Rows

Linhas da tabela

GetChanges

Retorna uma cpia do DataSet


com apenas as colunas alteradas

PrimaryKey

Chave primria

GetXmlSchema

Retorna uma representao XML


da estrutura de um DataSet

NewRow

Cria uma nova linha de dados

Reset

Reverte o DataSet ao seu


estado original

Copy

Faz uma cpia da estrutura e dos dados


da tabela

TableName

Define o nome da tabela

Clear

Limpa dos dados 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 DataReader 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.

Tabela 16

Nmero de colunas da linha de


dados atual

AcceptChanges

9.2. DataReader

264

DESCRIO

DESCRIO

Tabela 17
DataTable.

265

Informtica 4

captulo 9

Figura 330

9.3.2. Objeto DataView


As operaes de pesquisa, ordenao e navegao pelos dados podem ser feitas
por meio do DataView, que permite a ligao da fonte de dados com a interface
do usurio. Portanto, utilizamos um DataView para visualizar as informaes
contidas em DataTable. Uma vantagem possuir vrios DataViews para a mesma DataTable. A tabela 18 ilustra algumas das propriedades do DataView.
Tabela 18
DataView.

Mtodos
RowFilter

DESCRIO
Retorna a expresso usada para
filtrar os dados

Item

Captura uma linha de dados


especfica da tabela

Sort

Ordena os dados por meio


de uma coluna

Addnew

Adiciona uma nova linha

Objeto connection
especfico.

SQL Server: Classe SqlConnection


OLE DB: Classe OleDbConnection

As principais propriedades da Classe Connection podem ser observados na tabela 19.


Mtodos

DESCRIO

ConnectionString

Contm a string de conexo

DataBase

Retorna o nome do banco de dados

DataSource

Retorna o nome da instncia do banco


de dados

State

Retorna o estado atual de conexo:


Broken, Closed, Connecting, Executing,
Fetching e Open

Table

Define qual DataView ser visualizada

Delete

Exclui linhas de um DataView

9.4.2. Exemplo genrico de conexo

Busca uma linha de informaes

O cdigo mostrado na figura 332, escrito em C#, representa os passos necessrios para a conexo de uma base de dados SQL Server. A partir desse ponto, as
operaes com o banco de dados j podem ser realizadas.

Find

Tabela 19
Connection String.

Figura 332

9.4. Mtodos de conexo


O primeiro passo para realizar a conexo criar o objeto Connection por meio
de uma string de conexo. Isso permitir que o objeto Command receba e execute instrues SQL no formato de parmetros. Quando o objeto Command
realizar o retorno dos dados, deve-se criar um objeto DataAdapter, que preencher um objeto DataSet ou DataTable.

9.4.1. Objeto Command


A funo do Command fazer a ligao com um banco de dados especfico.
Por isso, esse objeto deve conter informaes necessrias para que a conexo
seja estabelecida, indicando o caminho do banco, usurio, senha etc. Como foi
mencionado anteriormente, cada provedor possui um objeto connection especfico (figura 330).
266

Incluindo os namespace
using System.Data
using System.Data.SqlClient

Cdigo
representando
passos para conexo.

Montando a string de conexo


// definindo isoladamente cada componente da conexo
string servidor = localhost
string username = usuario
string senha = db2009conect
string banco = papelaria
// contruindo a ConnectionString
string ConnectionString = Data Source= + servidor + ;
ConnectionString += User ID= + username + ;
ConnectionString += Password= + senha + ;
ConnectionString += Initial Catalog= + banco;

267

Informtica 4

captulo 9

Criando uma instncia do objeto Connection


SqlConnection SQLConnection = new SqlConnection();
Realizando a conexo
SQLConnection.ConnectionString = ConnectionString;
SQLConnection.Open();

Outra forma de fazer essa conexo est representada no cdigo mostrado na


figura 333.
Figura 333
Outra forma de
realizar conexo.

SqlConnection conexao = new SqlConnection(Data


Source=(localhost);Initial Catalog=papelaria; User ID=usuario;Passwor
d=db2009conect);

9.4.2.1. Implementando a leitura de dados


Ainda seguindo o exemplo anterior, vamos elaborar uma estrutura mais completa de conexo e implementar os cdigos para leitura dos dados (figura 334).
Figura 334
Estrutura mais
completa de
conexo.

using System;
using System.Data;
using System.Data.SqlClient;
class ExemploConexao
{
static void Main()
{
// criando a linha de conexo
SqlConnection conexao = new SqlConnection(Data
Source=(localhost);Initial Catalog=papelaria; User ID=usuario;Passwor
d=db2009conect);
// definindo um DataReader Nullo
SqlDataReader drExemplo = null;
// Abre o banco de dados
conexao.Open();
// Cria a linha de comando
SqlCommand comando = new SqlCommand(select * from Cliente,
conexao);
// Executa a leitura dos dados
drExemplo = comando.ExecuteReader();
// faz a leitura dos dados
while (drExemplo.Read())
{

268

// imprime o primeiro campo da tabela


Console.WriteLine(drExemplo[0]);
}
// fecha o DataReader
drExemplo.Close();
// fecha a conexo com o banco
conexao.Close();
}
}

Para obter mais colunas, podemos utilizar o comando da forma como sugerida
na figura 335.
Figura 335
Console.WriteLine(drExemplo[0]);
Console.WriteLine(drExemplo[1]);
Console.WriteLine(drExemplo[2]);

Como obter mais


colunas.

Ou indicar o nome da coluna da qual se pretende obter a informao (figura 336).


Figura 336
Console.WriteLine(drExemplo[codigo]);
Console.WriteLine(drExemplo[nome]);
Console.WriteLine(drExemplo[usurname]);

Indicando o nome
da coluna.

Ao usar os mtodos ligados base de dados, importante verificar se a conexo


foi efetivamente aberta, se no ocorreu nenhum erro e fech-la no final. O procedimento evita problemas de desempenho. Portanto, recomendvel realizar
os tratamentos de erro (Try).

9.4.3. Conexo com VB.NET


Seguindo o mesmo princpio do item anterior, vamos fazer uma conexo com
uma base de dados Access, porm, usando o VB.NET como plataforma de
conexo.

9.4.3.1. Base de dados


Por meio do Access 2007, criamos a base de dados mostrada na figura 337 e
inclumos alguns dados fictcios, para os testes iniciais. O nome do banco de
dados Usuarios e o da tabela, operadores. A chave primria o campo cod_ID de numerao automtica. O objetivo desse banco cadastrar o
nome de login dos usurios.
269

Informtica 4

captulo 9

Figura 337

Figura 340

Descrio da tabela e
contedo.

9.4.3.2. Criando o Form


Em uma Solution do tipo Windows Form Application, foi criado para o Visual
Basic o layout que pode ser visto na figura 338.
O layout muito simples. Inclumos um Button com o nome de btnListar e
uma ListBox chamada de lstUsers. Veja, na figura 339, como fica a descrio
dos componentes.
Figura 338
Layout do Form.

Public Class frmBancoDados


Private Sub btnListar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnListar.Click
Dim conexao As New OleDbConnection()
conexao.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=D:\Usuarios.mdb
Dim comando As OleDbCommand = conexao.CreateCommand
comando.CommandText = Select * from operadores
conexao.Open()
Dim leitor As OleDbDataReader = comando.ExecuteReader()
Try
Dim linha As String = Usurio:
While leitor.Read()
Dim reg As Integer
For reg = 0 To leitor.FieldCount - 1
linha = linha & - & leitor.Item(reg)
Next
lstUsers.Items.Add(linha)
linha = Usurio:
End While
leitor.Close()
conexao.Close()
Catch erro As Exception
MsgBox(No foi possvel realizar a operao, Erro)
End Try
End Sub
End Class

Registros diferentes
para cada linha.

A estrutura de conexo que usa o Visual Basic, com banco de Dados Access,
semelhante ao cdigo desenvolvido no item anterior, que adota C# e SQL Server.

9.4.3.4. Utilizando uma DataTable


Para visualizar os dados, vamos melhorar um pouco mais a nossa estrutura.
Eliminamos o ListBox do exemplo anterior e colocamos um DataGrid em seu
lugar, como mostra a figura 341.

Figura 339
Nome dos
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 contidos 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


para visualizao em um DataGrid.
Definindo um DataTable (dtMinhaTabela), com o nome de MinhaTabela.
Dim dtMinhaTabela As DataTable = New DataTable(MinhaTabela)
Definidos dois objetos para controlar coluna e linha do DataTable.
Dim dtColuna As DataColumn
Dim dtLinha As DataRow
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.
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Login
dtMinhaTabela.Columns.Add(dtColuna)
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Nome
dtMinhaTabela.Columns.Add(dtColuna)
Se utilizarmos o mtodo Read(), sero carregadas as informaes, assim como
ocorreu no exemplo anterior.
While leitor.Read()
dtLinha = dtMinhaTabela.NewRow
dtLinha(Login) = leitor.Item(0)
dtLinha(Nome) = leitor.Item(1)
dtMinhaTabela.Rows.Add(dtLinha)
End While
Com o DataTable carregado, vamos vincul-lo a um DataSet.

dtMinhaDataSet.Tables.Add(dtMinhaTabela)
Finalmente, carregamos o DataSet para dentro do DataGrid.
dtMinhaTabela.SetDataBinding(dtMinhaDataSet, MinhaTabela)
Os comandos anteriores representam somente a criao do DataTable. O cdigo
completo ficar como se apresenta na figura 342.
Figura 342
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.OleDb

O cdigo
completo.

Public Class frmBancoDados


Private Sub btnListar_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnListar.Click
Dim conexao As New OleDbConnection()
conexao.ConnectionString = Provider=Microsoft.Jet.
OLEDB.4.0;Data Source=D:\Usuarios.mdb
Dim comando As OleDbCommand = conexao.CreateCommand
comando.CommandText = Select * from operadores
conexao.Open()
Dim dtMinhaTabela As DataTable = New DataTable(MinhaTabela)
Dim dtColuna As DataColumn
Dim dtLinha As DataRow
montando as colunas
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Login
dtMinhaTabela.Columns.Add(dtColuna)
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Nome
dtMinhaTabela.Columns.Add(dtColuna)
inserindo os dados
Dim leitor As OleDbDataReader = comando.ExecuteReader()
While leitor.Read()
dtLinha = dtMinhaTabela.NewRow
dtLinha(Login) = leitor.Item(1)
dtLinha(Nome) = leitor.Item(2)
dtMinhaTabela.Rows.Add(dtLinha)
End While

Dim dtMinhaDataSet As DataSet = New DataSet()


272

273

Informtica 4

captulo 9

Figura 345
inclui a tabela no dataset
Dim dtMinhaDataSet As DataSet = New DataSet()
dtMinhaDataSet.Tables.Add(dtMinhaTabela)
vincula o dataset1 ao datagrid1
dtgMinhaTabela.SetDataBinding(dtMinhaDataSet, MinhaTabela)
End Sub
End Class

9.4.3.4.1. Visual do DataGrid


Para melhorar o visual do DataGrid, clique na seta existente no canto superior
do DataGrid (figura 343) e escolha a opo AutoFormat.
Figura 343
Menu DataGrid.

dtColuna = New DataColumn()


dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Login
dtColuna.ReadOnly = True
dtMinhaTabela.Columns.Add(dtColuna)

Incluso do mtodo
ReadOnly como True.

Isso impede que o usurio faa novas incluses. Como as colunas so montadas individualmente, podemos determinar qual vai ser o procedimento adotado em cada uma,
assim como foi feito com a coluna login, deixando a alterao de dados ativa ou no.
Podemos, ainda, utilizar o mtodo Unique para informar se o valor da coluna nico
ou no (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.
Figura 346
dtColuna = New DataColumn()
dtColuna.DataType = System.Type.GetType(System.String)
dtColuna.ColumnName = Nome
dtColuna.ReadOnly = False
dtColuna.Unique = True
dtMinhaTabela.Columns.Add(dtColuna)

Utilizao do
mtodo Unique.

9.4.4. Utilizando um DataView


Na opo Formats, teremos vrios tipos de layout. Escolheremos um deles e
confirmaremos com o boto OK (figura 344).
Figura 344
Formatando Layout
DataGrid.

O DataView permite estabelecer uma ligao com a interface de usurio por meio
do DataBinding, no qual podemos realizar operaes como pesquisa, navegao,
filtro, etc. O DataView retorna os dados contidos em um DataTable. possvel que
haja vrios DataView, que, alis, no podem ser considerados tabelas. O exemplo da
figura 347 mostra dois Datagrid e dois botes. No primeiro DataGrid, carregado
o contedo da tabela; no segundo, ser um DataView, ordenado por nome.
A conexo com o banco de dados ser feita de maneira diferente, para que seja
possvel avaliar outra forma de conexo com o DataSet. Nesse caso, todas as
variveis relacionadas conexo com o banco de dados sero 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 possvel, inclua o mtodo ReadOnly como True, como mostra o cdigo ilustrado
na figura 345.
274

275

Informtica 4

captulo 9

Figura 348
Variveis definidas
dentro da classe.

Dim conexao As String = Provider=Microsoft.Jet.OLEDB.4.0;Data


Source=D:\Usuarios.mdb
Dim comando As String= Select * from operadores
Dim adpTabela As New OleDbDataAdapter(comando, conexao)
Dim dsTabela1 As New DataSet()
Dim dsTabela2 As New DataSet()
Assim, teremos: conexo: varivel que possui as informaes de provedor, caminho e nome do banco; comando: armazena a string referente instruo
SQL a ser executada inicialmente; adptabela: cria um objeto Adapter usando
as variveis comando e conexo; dstabela1 e dstabela2: representa os objetos
DataSet(), um para cada DataGrid do formulrio.
O boto referente opo Carregar dever conter o cdigo mostrado na
figura 349.

Figura 349
Cdigo do boto da
opo Carregar.

dtgLista.CaptionText = Listagem de Operadores


adpTabela.Fill(dsTabela1, operadores)
dtgLista.DataSource = dsTabela1
dtgLista.DataMember = operadores

importante observar os conceitos abaixo:

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

Figura 351
O cdigo completo.

Private Sub btnCarregar_Click(ByVal sender As System.Object, ByVal


e As System.EventArgs) Handles btnCarregar.Click
dtgLista.CaptionText = Listagem de Operadores
adpTabela.Fill(dsTabela1, operadores)
dtgLista.DataSource = dsTabela1
dtgLista.DataMember = operadores
End Sub
Private Sub btnOrdeNome_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnOrdeNome.Click
dtgOrdenado.CaptionText = Listagem de Operadores
adpTabela.Fill(dsTabela2, operadores)
Dim dvTabela As New DataView(dsTabela2.Tables(operadores))
dvTabela.Sort = nome
dtgOrdenado.DataSource = dvTabela
End Sub
End Class
Figura 352

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

Utilizao
do DataView.

adpTabela.Fill: preenche o objeto Adpter (adpTabela.Fill).


dtgLista.DataSource: atribui o DataSet (dstabela1) no DataGrid (dtgLista).
dtgLista.DataMember: associa a tabela ao DataGrid (dtgLista).
No segundo boto, referente ordenao dos dados via campo nome, observamos o que ilustra a figura 350.
Figura 350
Boto da ordenao
dos dados.


dtgOrdenado.CaptionText = Listagem de Operadores
adpTabela.Fill(dsTabela2, operadores)
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
(.Sort) por meio do campo nome. O cdigo completo ficar como ilustra a
figura 351. Como resultado, surgir o layout mostrado na figura 352.
276

Podemos realizar a incluso de DataGrid ou do GridView, utilizando Wizard


(passo-a-passo) fornecedido pelo componente. Nos exemplos anteriores, realizamos a conexo por meio do Visual Basic e do C#. Agora, faremos a conexo com
277

Informtica 4

captulo 9

Figura 356

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

Testando a conexo.

Figura 353
Componente
SqlDataSource.

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


Figura 354
Configurao do
SqlDataSource.

O prximo passo ser criar a nova conexo usando o boto New Connection.
Aparecer uma segunda janela, na qual poderemos indicar o nome e o local
onde se encontra a base de dados (figura 355).
Figura 355

Nesse ponto, ser possvel realizar um teste de conexo com o banco de dados,
usando o boto Test Connection. Se estiver tudo OK, aparecer uma mensagem de confirmao (figura 356).
Aps o teste de conexo, finalize a tela clicando em OK. Retorne janela anterior. Podemos disponibilizar a Connection String, como mostra a figura 357.

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
<asp:SqlDataSource ID=SqlDataSource1 runat=server
ConnectionString=<%$ ConnectionStrings:ConnectionString %>

O cdigo
implementado
automaticamente.

ProviderName=<%$ ConnectionStrings:ConnectionString.ProviderName %>


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. Observando 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
dados, conforme a figura 360.

A partir da opo Choose Data Source, podemos apontar o SqlDataSource


(figura 363).

Figura 360

Figura 363

Teste do SQL
(Query).

Selecionando o
DataSource.

Finalizada essa operao, o cdigo seguinte ser o que mostra a figura 364.
Figura 364
<asp:GridView ID=GridView1 runat=server
AutoGenerateColumns=False
DataKeyNames=cod_ID DataSourceID=SqlDataSource1>
<Columns>

Concluda a
operao de
selecionar o
DataSource.

<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


SortExpression=login />

FORBELLONE, Andr. Lgica de Programao - A Construo de Algoritmos


e Estruturas de Dados. 3 edio. So Paulo: Ed. Makron Books, 2005.

<asp:BoundField DataField=nome HeaderText=nome


SortExpression=nome />
</Columns>
</asp:GridView>

O layout ainda no foi formatado, mas j possvel verificar o resultado pelo navegador (figura 365). Nos campos destinados aos nomes aparecem os ttulos da coluna.
E todos os dados so disponibilizados conforme composio da instruo SQL.
Figura 365

LEISERSON, Charles E., STEIN, Clifford, RIVEST, Ronald L. e CORMEN,


Thomas H. Algoritmos: Teoria e Prtica. Rio de Janeiro: Ed. Campus, 2002.
RAY, Eric T. Aprendendo XML. Rio de Janeiro: Ed. Campus, 2001.
FURGERI, Srgio. Ensino Didtico da Linguagem XML. So Paulo: rica,
2001.
HOLZNER, Steven. Desvendando XML. Rio de Janeiro: Campus, 2001.
MARCONDES, Christian Alfim. Programando em HTML 4.0. 7. edio.
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 software. Por isso, foram abordados aspectos de lgica de programao e programao 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 aprimoramento 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

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


acesso a banco de dados.
AJAX acrnimo para a expresso em ingls Asynchronous Javascript And

XML, que pode ser traduzido por Javascript e XML Assncrono, o nome dado
utilizao metodolgica de Javascript e XML para fazer com que as pginas
web se tornem mais interativas.

anti-spywares softwares usados para eliminar programas maliciosos.


antivrus software usado para eliminar virus de computador.
API (Application Programming Interface ou interface de programao de aplicativos) conjunto de rotinas e padres estabelecidos por um software para o uso de

suas funcionalidades por programas aplicativos que no se envolvem em detalhes da


implementao do programa, apenas precisam de seus servios, ou seja, os programadores podem utilizar esses recursos sem precisar saber como foram desenvolvidos.

APM (Advanced Power Management ou gerenciamento avanado de energia)


controle que faz com que o BIOS pea fonte para desligar o computador,

aps o sistema operacional ter sido descarregado.

arquitetura de rede conjunto de camadas e protocolos de uma rede.


ASCII sigla para American Standard Code for Information Interchange ou c-

digo padro americano para troca de informaes, uma tabela de codificao


de caracteres baseada no alfabeto ingls.

ASP (de Active Server Pages ou pginas de servidor ativo) plataforma da Mi-

crosoft usada para o desenvolvimento de aplicaes web.

ASP.NET plataforma de desenvolvimento usada para a construo de aplicaes

Web e Web Service, as quais sero executadas por um servidor, que, nesse caso, o IIS
(Internet Information Service ou Servio de Informao de Internet) da Microsoft.

AT (Advanced Tecnology) padro de gabinete utilizado nos primeiros PCs da IBM.


ATA tecnologia que permite que os dados armazenados em discos rgidos, 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.
ATAPI tecnologia que permite que os dados armazenados em discos rgidos, 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.

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.

badblock (bloco ruim) falhas causadas por perda do poder magntico de alguma rea na parte magntica do disco.
barramento (Bus) circuito integrado que faz a transmisso fsica de dados de

um dispositivo a outro. Ele formado por vrias linhas ou canais, como se fossem fios eltricos, que transmitem sinais eltricos tratados como bits.

BIOS (Basic Input Output System ou sistema bsico de entrada/sada) sof-

tware com a funo de reconhecer, configurar e iniciar os dispositivos do computador, e ainda de iniciar o sistema operacional. Ao ligar o computador, os
primeiros sinais que voc v na tela so da interface do BIOS.

bit menor poro de informao possvel em informtica. Um nico bit representa somente duas informaes, 0 ou 1.
bluetooth tecnologia que permite comunicao simples e segura entre aparelhos eletroeletrnicos.
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
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 tecnologia do CD/DVD, cujo raio vermelho, com comprimento de onda de 605nm.

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).
boot o termo (bota) empregado em informtica em analogia ao chute, o

pontap inicial do sistema operacional.

browsers (navegadores) programa que possibilita ao usurio ter acesso aos

recursos da rede.

BTX (Balanced Tecnology Extended ou tecnologia balanceada estendida)

padro de gabinete com o objetivo de padronizar placas-me de menor tamanho


e tambm aumentar a refrigerao, facilitando a passagem do ar. A tendncia
que este formato substitua o ATX.
buffer rea usada para armazenar dados, utilizada sempre que o computador

precisa ler dados de uma fonte que no tenha velocidade de transmisso constante.

bug problema de lgica surgido durante a execuo de um aplicativo ou siste-

ma computacional.

ATX (Advanced Tecnology Extended ou tecnologia avanada estendida)

padro de gabinete desenvolvido pela Intel em 1995, em substituio ao AT.


286

byte tambm chamado de octeto, o byte formado por 8 bits.

287

informtica

Glossrio

C# considerada como a mais importante linguagem de desenvolvimento da


Microsoft dentro da Plataforma .NET Framework.
C letra que representa a unidade de disco utilizada pelo sistema operacional.

Representa tambm a linguagem de programao criada por Dennis Ritchie,


como base ao desenvolvimento do sistema operacional UNIX (escrito em Assembly originalmente).

C++ linguagem de programao de alto nvel desenvolvida por Bjarne


Stroustrup. Desde os anos 1990, uma das linguagens comerciais mais populares, mas disseminada tambm na academia por seu grande desempenho
e base de utilizadores.
cache considerada memria primria, ou principal, devido a velocidade de
acesso aos dados do processador.
CD A sigla signifca Compact Disc, ou disco compacto, e foi introduzida no

mercado em 1985 pela Sony e pela Philips.

CPD Centro de Processamento de Dados, nome obsoleto atualmente.


CPU (Central Processing Unit ou unidade central de processamento) refere-

se ao microprocessador, e no ao gabinete como um todo, e sua funo processar as instrues enviadas.

CRT (Catodic Ray Tube ou tubo de raios catdicos) tecnologia usada para mo-

nitores com tubo.

CSS sigla para Cascading Style Sheets ou estilo de pginas em cascata.

Data Base Administrator (DBA ou administrador de banco de dados) profis-

sional que conhece profundamente as ferramentas de administrao de banco


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.

CD-ROM O CD leva a sigla ROM para indicar que somente para leitura

debugger (depurador) tem a funo de permitir ao usurio acompanhar a


execuo do programa, visualizando os resultados em tempo real, em busca de
possveis erros de lgica.

gravvel), porm aceita somente uma gravao.

(Read-Only Memory ou memria apenas de leitura).

CD-RW esse formato (RW remete a Rewritable ou regravvel) permite gravar,


apagar e gravar novamente vrias vezes no mesmo CD.
chaves em um modelo relacional, designam o conceito de item de busca,

ou seja, um dado que ser empregado nas consultas base de dados. Tipos
de chaves em um modelo relacional primrias, candidatas, secundrias e
estrangeiras.
chips circuitos integrados.
CI (Circuito Integrado) componente capaz de realizar somente um determinado tipo de operao, com determinada quantidade de dados.
clusters blocos em que os setores do disco so divididos.

desktop rea de trabalho.


DIMM (Dual In-line Memory Module ou mdulo de memrias em linha dupla)
mdulo de memria formado pelos chips de memria encapsulada e soldados

um ao lado do outro sobre os dois lados de uma placa de circuito impresso.

disco flexvel floppy-disk ou disquete.


disco rgido o HD o jeito popular de nos referirmos ao HDD (Hard Disc
Drive ou unidade de disco rgido), tambm conhecido como winchester, nome
de uma tecnologia de fabricao antiga de discos rgidos.
disquete (floppy-disk) o nome disco flexvel refere-se ao fato de o dispositivo

ser de plstico, que pode ser magnetizado.

CMOS chip responsvel por armazenar configuraes sobre os HDs instalados


e seus tamanhos, data e hora, e vrias outras informaes.

distribuio para o sistema Linux nunca se fala em verso, e sim em distribui-

cdigo fonte texto escrito segundo as regras de determinada linguagem de

DMA tecnologia implementada nas placas-me que faz com que a transmisso
de dados entre o disco rgido e outras interfaces, como memria, placa de rede,
outros discos, etc. seja direta, sem sobrecarregar o processador.

programao.

compilador software que tem a funo de traduzir o cdigo fonte desenvolvido

pelo programador em um software que possa ser executado diretamente pelo


usurio, ou seja, voc escreve todo cdigo fonte e depois pede para o compilador
convert-lo em um programa.

288

cooler (dissipador de calor) dispositivo, tambm chamado de fan ou ventoinha, que ajuda a manter a temperatura bem abaixo da mxima admissvel e,
assim, conservar o processador.

o. As verses se aplicam a sistemas operacionais como o Windows.

DML (Data Manipulation Language ou linguagem de manipulao de dados)

decorre do fato de os nveis de abstrao no se aplicarem somente definio


ou estruturao de dados, mas tambm sua manipulao.
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

download transferir dados ou arquivos de um computador remoto para o de

um usurio; baixar o arquivo.

DRAM (Dynamic RAM ou memria RAM dinmica) tipo de memria empre-

gada como RAM nos computadores em 2009.

drive dispositivo para inserir disco flexvel (disquete), CD-ROM e/ou DVD e

leitoras de cartes Flash.

apagvel) memria que pode ser regravada.

estabilizador equipamento de proteo para as variaes na voltagem que

ocorrem normalmente no fornecimento de energia eltrica e podem causar falhas nos equipamentos ou diminuir sua vida til.

Ext tipo de sistema de arquivos no sistema operacional Linux, assim como o


ReiserFS, o XFS, o JFS, o GSF e o OCFS2. O Ext o padro da maioria das
distribuies, geralmente na verso Ext2 e Ext3.

driver tradutor ou software controlador que sabe os comandos que o sistema

Ext2 (second extended file system ou segundo sistema extendido de arquivos) sistema de arquivos que era o mais comum nas distribuies e que deu origem ao Ext3.

DSP sigla em ingls para Digital Signal Processor ou processador de sinais digitais.

sistema de arquivos no Linux adotado pela maioria das distribuies.

operacional pode enviar, interpreta-os e converte a solicitao de modo que o


chip do aparelho possa reconhec-la.

Ext3 (third extended file system ou terceiro sistema extendido de arquivos)

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.

DVD sigla para Digital Vdeo Disc ou disco digital de vdeo, para armazenar

vdeos de boa qualidade e capacidades que variam de 4.7GB em uma camada


at 8.5GB em duas camadas.

DVD+R disco idntico ao DVD-R, porm tem formato diferente de gravao

e leitura. Portanto, no so lidos e gravados por leitoras/gravadoras DVD-R.

FAT (File Allocation Table ou tabela de alocao de arquivos) primeiro sistema

de arquivos utilizado pelo Windows.

filtro de linha equipamento usado para bloquear o fluxo de energia caso a ten-

so aumente mais que o normal.

DVD-R disco que permite uma s gravao de at 4,7GB.

fio terra ponto ou caminho no solo que serve de descarga para a corrente eltrica 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.

EEPROM (Eletrical Erasabel Programmable Read Only Memory ou memria


somente de leitura, programvel e limpa eletricamente) memria em que se

pode regravar, ou seja, podemos apagar parte da memria e gravar novamente.

rana responsvel por gerenciar as conexes de rede com destino mquina


local, e bloqueia o acesso de pessoas ou aplicaes no autorizadas.

Firewire barramento com tecnologia desenvolvida pela Apple Computer em meados

dos anos 1990, e a principal concorrente da USB na padronizao de dispositivos.

EIDE tecnologia que permite que os dados armazenados em discos rgidos, 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.

flash (memria) a principal mdia para armazenamento de dados em micro-

e-mail correio eletrnico.

floppy-disk (disquete) o nome disco flexvel refere-se ao fato de o dispositivo

energia eletroesttica corrente eltrica que escapa do aparelho eltrico quando

surge algum defeito, ou tambm para liberar a energia esttica captada do ambiente.

entradas USB entradas para conexes de dispositivos como webcam, cmeras

290

FASTATA tecnologia que permite que os dados armazenados em discos rgidos, 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.

dispositivos, como celulares, cmeras, PDAs e notebooks, em formato de cartes de memria e pen-drives ou unidades internas no lugar do HD.

ser de plstico, que pode ser magnetizado.

fonte de alimentao dispositivo que transforma a energia eltrica que vem

da rede atravs do cabo de fora, preparando-a para que chegue aos componentes do computador da forma adequada.

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.

gabinete caixa normalmente metlica que organiza e fixa os seus vrios componentes, como HD, CD/DVD-ROM, placa-me, placas de expanso com conectores externos (USB, serial, vdeo, som etc.), sustenta a placa-me e protege
as placas do contato direto com pessoas, umidade, energia esttica, poeira.
game station assim so chamados os computadores montados para aficionados

em jogos, e precisam de placa de vdeo com processador e memria dedicados.

GIF (Graphics Interchange Format ou Formato de Intercmbio de Grficos)

formato de imagem.
gigabyte (GB) unidade utilizada para indicar a capacidade de armazenamento

de dados em um computador, em que 1GB equivale a 1 milho de bytes, segundo o Sistema Internacional de Unidades (SI).

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.

hacker pessoa que usa seus profundos conhecimentos em programao para


burlar o sistema de segurana de computadores e sistemas.
hardware a parte fsica do computador, seus circuitos eletrnicos, cabos,
placas, dispositivos perifricos conectados, etc.

journaling (registro de dados como em um jornal) recurso do sistema de arquivos Linux, no qual as informaes so salvas automaticamente durante a
execuo do sistema operacional.
JPG ou JPEG (Joint Photographic Experts Group ou Grupo Reunido de Especialistas em Imagem) tipo de imagem.
JVM (Java Virtual Machine ou, literalmente, mquina virtual Java) programa

que carrega e executa os programas desenvolvidos em Java.

K
L

kernel ncleo ou gerenciador, a parte mais importante do sistema operacional.


LAN (Local Area Network ou rede local) rede com mquinas que se limi-

tam a conectar entre si num mesmo ambiente, de uma empresa, instituio


ou residncia.

laptop computador porttil.


LBA (Logical Block Addressing ou Endereamento Lgico de Blocos) o m-

todo de traduo que permite a BIOS reconhecer HDs IDE.

LCD (Liquid Crystal Displays ou tela de cristal lquido) tecnologia que utiliza a

substncia chamada cristal lquido para bloquear ou dar passagem luz.

HD sigla em ingls para Hard Disk (disco rgido).

LEDs (diodos emissores de luz) pequenas lmpadas que podem ser controladas uma a uma e variar sua luminosidade at se apagarem por completo numa
imagem totalmente escura.

HTML (HyperText Markup Language ou linguagem de marcao de hipertexto) linguagem utilizada para o desenvolvimento de pginas da internet.

link texto que geralmente aparece em azul, sublinhado, e que contm uma
URL da pgina a qual ele se refere, que fica escondida, no visvel.

I/O abreviao em ingls para input/output, que significa entrada/sada. Referem-se a dispositivos utilizados para a comunicao entre o sistema computacional e os usurios.

Linux sistema operacional derivado do UNIX. Trata-se de um software livre

IDE (Integrated Development Environment ou ambiente integrado de desenvolvimento) programa de computador que rene recursos e ferramentas

de apoio para agilizar o desenvolvimento de softwares, como o NetBeans, e


Eclipse (Java) e o DevC++ (C++).

IRQ (Interrupt Request Line ou linha de requisio de interrupo) canal de

comunicao com o processador, cuja funo chamar sua ateno para alguma
ocorrncia de que deva ser informado.

ISA (Industry Standard Arquiteture ou arquitetura padro da indstria) padro

para conector de expanso utilizado pela IBM em seus primeiros computadores.

292

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

ou OpenSource (cdigo aberto em portugus), desenvolvido sem cunho comercial, ou seja, criado por programadores que no tm inteno de vend-lo, mas
disponibiliz-lo para qualquer pessoa que queira utiliz-lo.

logic board (placa lgica) placa-me nos computadores da Apple.


login nome do usurio que o identifica para acessar o sistema.

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.
mainboard placa-me.

293

informtica

Glossrio

malware palavra originria da expresso em ingls MALicious softWARE,


que literalmente significa software malicioso.
MAN (Metropolitan Area Network ou rede metropolitana) Rede Metropolitana redes que abrangem uma cidade inteira e podem se ligar a vrias LAN que
estiverem dentro do seu permetro.
MBR tabela de alocao, quando o disco particionado, que fica armazenada

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.

n representa um recurso de computao. Qualquer elemento computacional que


faa parte da arquitetura na qual ser implementada a soluo pode ser representado
como um n. Pode ser um servidor, um computador cliente, um switch, um hub etc.

no incio do disco rgido. Essa tabela informa a posio de incio da partio, se


est ativa e qual o seu tipo.

no-break dispositivo que mantm o abastecimento por meio de sua bateria at

memria local de armazenamento dos dados.

NTFS (New Technology File System ou nova tecnologia em sistema de arquivos) sistema de arquivos utilizado pelo Windows, traz diversas caractersticas

que a energia volte ou que o computador seja desligado.

vrias instrues, uma de cada vez.

como segurana, capacidade de armazenamento e limitaes aprimoradas em


relao s verses anteriores.

Microsoft SQL Server sistema de gerenciamento de SGBDRs (sistemas geren-

ncleo quantidade de processadores internos em uma mesma CPU.

microprocessador circuito integrado, porm programvel, capaz de realizar

ciadores de bancos de dados).

MMS (Microsoft Media Service) protocolo proprietrio da Microsoft para

transmisso de fluxo de dados em tempo real, chamado tambm de NetShow.

modelo de referncia ISO OSI modelo apresentado pelo ISO (Internationals

Standards Organization ou Organizao Internacional de Padres), com o intuito de padronizar os protocolos em camadas, com o nome de Open System
Interconnection (OSI), ou seja, interconexo de sistemas abertos.
monotarefa sistema operacional que consegue processar apenas uma instru-

o de cada vez.

motherboard placa-me.
mouse dispositivo apontador que serve para mostrar ao sistema operacional o

que se deseja fazer, indicando, por meio do cursor no vdeo, o elemento com o
qual se quer interagir e que tipo de ao se pretende realizar.

MSDNAA sigla para Microsoft Developer Network Academic Alliance ou


aliana acadmica da rede de desenvolvedores da Microsoft.
MS-DOS sigla para Microsoft Disk Operating System ou disco de sistema

operacional Microsoft.

OCFS2 sistema de arquivos Linux, permite utilizao simultnea e comparti-

lhada por mais de um computador.

off-board (fora da placa) expresso para descrever se um dispositivo faz parte

da placa-me ou se ser includo parte por meio de uma placa de expanso,


especfica para a tarefa.

OLED sigla para Organic Lighting Emmiting Diode ou diodo orgnico

emissor de luz.

on-board (na placa) expresso que significa que os circuitos esto impressos

nas prprias placas, para vrios tipos de aplicaes.

on-line est conectado internet ou a uma rede de computadores.


OpenSource significa cdigo aberto, indicando que o programa pode ser utilizado livremente por qualquer pessoa, independentemente da finalidade, e se
refere a sistemas como os softwares livres, Linux.

P2P (Peer-to-Peer ou de par em par) termo usado para os softwares que fazem
transferncia de arquivos de um computador para outro.
pacote software que pode ser instalado no Linux.

multitarefa sistema operacional que consegue processar vrias instrues ao

PAN sigla para Personal Area Network ou rede pessoal.

MySQL sistema de gerenciamento de SGBDRs, um banco de cdigo-fonte

aberto, gratuito e est disponvel tanto para o Windows como para o Linux.

parmetro elemento digitado depois do primeiro espao, ou seja, a primeira palavra um comando e as demais, separadas por espao, so os parmetros (porque o
espao justamente um caractere separador entre um comando e um parmetro).

NetBSD sistema operacional para servidores de rede.

partio diviso do disco rgido.

mesmo tempo e executar diversos programas simultaneamente.

N
294

nibble largamente utilizado em sistemas digitais, representa meio byte (4

295

informtica

Glossrio

particionar o mesmo que dividir o disco, identificando suas partes e devidas

dimenses.

pass senha.
password caracteres digitados pelo usurio, com limitaes e uma janela para
a entrada de dados.
pasta forma mais simples de organizar o contedo em um sistema operacional.
PATA (vem de Parallel ATA) tecnologia que permite que os dados armazenados

plugn play (conecte e use) tcnica que reconhece e instala muitos dispositi-

vos automaticamente sem necessidade de nenhuma tarefa adicional, encontrada


desde a verso 95 do Windows, e tem seu pice na verso XP, que capaz de
operar com quase todos os dispositivos existentes.

PMBOK - Guia do Conjunto de Conhecimentos em Gerenciamento de Projetos publicao do PMI (Project Management Institute ou Instituto de Geren-

em discos rgidos, 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.

ciamento de Projetos), para identificar e descrever as boas prticas de projetos


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-

PC abreviao para Personal Computer ou computador pessoal.

porta serial conector que foi muito utilizado no passado para conectar mouse,

modelo XP, com capacidade de apenas 20MB e tecnologia ATA.

PCI (Peripheral Component Interconnect ou componente de interconexo de


perifricos) padro desenvolvido pela Intel em 1990 para substituir os barra-

mentos ISA e VESA Local Bus.

pen-drive pen, disco removvel, chaveiro de memria so as tradues mais

usadas para Memria USB Flash Drive, dispositivo de armazenamento com


ligao tipo USB que comeou a ser produzido no ano 2000.

perifricos so todos os dispositivos que se conectam unidade de sistema


para obter respostas ou para passar informaes para o computador. Esses
dispositivos so geralmente divididos em trs grupos perifricos de entrada,
de sada e mistos.
PID (Process Identification ou cdigo do processo) nmero de controle do

processo, junto ao percentual de uso de memria e de processador.

pilha de protocolos protocolos de uma mesma camada.


pixel Menor ponto visvel que compe uma imagem digital.
placa controladora placa lgica.
placa lgica tambm chamada de placa controladora, a placa que controla

todo o funcionamento do HD.

placa-me conhecida tambm como mother-board, main-board ou, nos


computadores da Apple, como logic board (placa lgica), a placa de circuito impresso que liga ou interliga todos os componentes do computador.
Em sites e fruns da internet, voc pode encontrar ainda a abreviao mobo
para design-las.

296

plug and play modo pelo qual o sistema operacional pode reconhecer automaticamente o dispositivo, mesmo que este demande algum driver especfico. Os
dispositivos mais comuns como pen-drives, mouses e impressoras, podem ser
utilizados assim que so conectados.

mente impressoras, caracterizando a transmisso de bits na forma paralela de envio.

impressora, leitores de cdigo de barras e outros dispositivos de automao, comercial e industrial, enviando os bits de forma serial.

PostgreSQL sistema de gerenciamento de SGBDRs (sistemas gerenciadores de


bancos de dados).
prompt de comandos do Windows aplicativo em que o usurio dispe de uma

interface que interpreta os comandos digitados. Esses so transferidos ao sistema


operacional, que, depois de execut-los, retorna o resultado ao prompt, de maneira que o usurio o visualize.

protocolo mdulo que agrupa um tipo de servio.


protocolo RDP (Remote Desktop Protocol ou protocolo de rea de trabalho
remota) protocolo empregado para transmisso de dados da camada de apli-

cao. Permite transmitir udio e vdeo em vrios canais de uma transmisso da


aplicao Microsoft Terminal Service.

protocolo RTP/RTCP (Real Time Protocol ou protocolo de tempo real e Real


Time Control Protocol ou protocolo de controle de tempo real) protocolos

utilizados em conjunto, desenvolvidos para transmitir udio em tempo real.

protocolo SMTP sigla para Simple Mail Transfer Protocol ou protocolo de

transmisso de e-mail simples.

protocolo TCP (Transfer Control Protocol ou protocolo de transferncia com


controle) protocolo de controle que negocia entre as partes como se dar a

conexo antes que um dado seja enviado e mantm o estado da conexo, mesmo
que as camadas inferiores da rede no ofeream controle de estado.
pseudocdigo linguagem com a qual os algoritmos so desenvolvidos.

297

informtica

Glossrio

RAD (Rapid Application Development ou desenvolvimento rpido de aplicao) linguagem capaz de, por si s, gerar cdigos com os quais podem ser

criadas aplicaes, mesmo sem se especializar na linguagem.

servidor palavra derivada dos verbos servir, tornar disponvel, um compu-

RAM sigla para Random Access Memory ou memria de acesso aleatrio.

tador em geral mais potente que os PCs de estaes de trabalho e que tem a
funo de prover algum servio na rede.

rede interligao de vrios computadores.

setup programa de configurao que todo micro tem gravado dentro da me-

registradores componentes do processador, que so unidades de memria

que, por ficarem dentro da CPU, possibilitam acesso aos dados bem mais veloz
do que ao acesso das memrias RAM ou cache.

ReiserFS (Reiser File System) sistema de arquivos bastante usado no Linux,


que tambm oferece journaling (registro de dados como em um jornal), mas
somente retm as informaes de cabealhos no faz o registro de dados, o
que o torna mais rpido que o Ext3.
reset (restabelecer) boto que reinicia o computador, como se desligasse e

ligasse o micro novamente.

resoluo imagem definida pela quantidade de pontos, os pixels.


RFC (Request for Comments) especificao tcnica desenvolvida sobre um determinado assunto por solicitao da IETF (Internet Engineering Task Force).

mria ROM (que, por sua vez, fica na placa-me).

SGBDs (Sistemas Gerenciadores de Bancos de Dados) conjunto de progra-

mas que permite a implementao de bancos de dados, assim como o controle


de acesso, o backup, a recuperao de falhas, a manuteno da integridade, a
administrao e a segurana dos dados que contm.

sistema embarcado aquele que est gravado dentro dos equipamentos.


sistema operacional software (como o MS-DOS, o Windows 95, 98, NT, XP
e Vista, MacOS-X e Linux) que faz a comunicao amigvel e segura entre o
hardware e as aplicaes.
socket encaixe, na placa-me, que varia de acordo com o modelo do processador, que leva em conta velocidade e capacidade de processamento, memria
cach, terminais, consumo de energia.

RGB sigla para Red, Green e Blue ou vermelho, verde e azul que determina

uma tabela de cores no padro RGB.

software a parte no fsica programas, instrues e procedimentos escritos


por programadores para controlar o hardware de modo que este possa executar
as tarefas de que precisamos.

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.
uma memria que no permite a alterao ou remoo dos dados ali gravados,
os quais so impressos em uma nica ocasio.

software de inteligncia artificial (IA) sistema que utiliza algoritmos no numricos para resolver problemas complexos, tambm conhecido como sistema
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.

RTSP (Real Time Streaming Protocol ou protocolo de transmisso de fluxo de


dados em tempo real) protocolo utilizado para transmitir e controlar a trans-

misso tanto de udio quanto de vdeo sob demanda em tempo real.

script lista dos comandos de criao do banco de dados e de suas tabelas den-

spywares vrus espies que copiam dados ou senhas e os enviam para um ambiente externo sem conhecimento nem consentimento do usurio.
SQL (Structured Query Language ou, literalmente, linguagem de consulta estruturada) linguagem de manipulao de dados que se tornou padro para

SGBDRs (Sistemas Gerenciadores de Bancos de Dados Relacionais).

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

servio a maioria das atividades executadas pelo sistema operacional, ou seja,

298

um programa em execuo no PC.

que so compilados e guardados no servidor.

299

informtica

Glossrio

streaming termo usado para transmisses multimdia ininterruptas por uma

fonte a vrios clientes e ao mesmo tempo.

swap (troca) sistema de arquivos para memria virtual no Linux/Unix.


Swebok (Software Engineering Body of Knowledge ou reas do conhecimento
da engenharia de software) publicao de 2004, uma iniciativa da Socie-

dade da Computao do Instituto de Engenharia Eltrica e Eletrnica (IEEE


Computer Society), com o propsito de criar um consenso sobre as reas de
conhecimento da engenharia de software.

tabela de alocao tabela chamada MBR, que fica armazenada no incio do disco rgido. 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 comum na linguagem de programao de computador.
Telnet tecnologia muito utilizada, tanto no Linux quanto no Windows, para

acessar um PC remotamente.

template modelo.
TextBox (caixa de texto) componente responsvel por receber as informaes
do usurio e tambm o item mais comum, pois a maioria das entradas de
dados realizada por ele.

tuplas linhas de uma tabela.

Ubuntu sistema operacional baseado em Linux, desenvolvido de forma cola-

borativa pelos internautas.

UC (Unidade de Controle) principal componente do processador, que identifica as instrues, comanda os outros componentes, controla a memria e todos
os outros dispositivos do computador.
UDP sigla para User Datagram Protocol ou protocolo de datagrama do usurio.
ULA (Unidade Lgica Aritmtica) componente do processador que funciona
como uma calculadora, ou seja, faz clculos matemticos, lgicos e estatsticos,
e no qual os dados so processados.
Ultra-ATA tecnologia que permite que os dados armazenados em discos rgi-

dos, para serem utilizados pelo processador, sejam total ou parcialmente carregados para a memria e transmitidos da memria para o disco, depois de serem
alterados, ou criados.
Ultra-DMA tecnologia que permite que os dados armazenados em discos rgidos, 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.
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


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
prprio nome diz, sua funo processar as instrues enviadas. O processador
est para o computador assim como crebro est para o ser humano.

dernos utilizam para melhorar seu desempenho.

toolbar (barra de ferramentas) disponibiliza os botes de comandos mais utilizados.


ToolBox (caixa de ferramentas) contm componentes para o desenvolvimento

do projeto, os quais esto divididos em guias de acordo com o tipo de aplicao.

top no Linux, um monitor bastante poderoso que traz diversas informaes

do sistema, alm dos processos em execuo e dos dados de PID, usurio etc.

topologia de redes modo como os computadores esto ligados entre si, os equi-

pamentos empregados e a maneira como os dados iro trafegar dentro da rede.


tradutor utilitrio que converte o cdigo desenvolvido em uma linguagem de

alto nvel (entendida mais facilmente pelo programador) em uma linguagem de


mquina (entendida mais facilmente pelo computador).

o de um recurso disponvel em uma rede.

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,


joysticks, mp3 players, leitores de cartes (inclusive simultaneamente), bem
como acelerar ainda mais a velocidade da transmisso de dados.

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


que possibilita acesso remoto de um computador a outro com interface grfica.

de Troia, ou spywares.

300

URL (Uniform Resource Locator ou localizador de recurso universal) endere-

301

informtica

W3C (World Wide Web Consortium ou consrcio da rede mundial de computadores) 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 condies especficas para que todos tenham acesso internet (ambiente, equipamento, 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, portanto, 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 interface grfica que viriam a se popularizar a partir da dcada de 1990, quando a
rede foi aberta s empresas e se espalhou mundo afora.

XFS sistema de arquivos Linux, rpido e indicado para parties grandes.


XHTML (eXtensible HyperText Markup Language ou linguagem de marcao
de texto extensvel) o novo padro de desenvolvimento web.
XML (eXtensible Markup Language ou linguagem de marcao extensiva) lin-

guagem de marcao que permite a manipulao dos dados de forma mais precisa. Isso assegura informaes uniformes e independentes de aplicao ou de fornecedor que, dessa forma, podem ser utilizadas em diferentes nveis de aplicao.

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 Tecnologia (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 excelncia, a instituio mantm o compromisso permanente de democratizar a educao gratuita e de qualidade. O Sistema de Pontuao Acrescida 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, recomendado pela Capes e reconhecido pelo MEC, que tem como rea de
concentrao a inovao tecnolgica e o desenvolvimento sustentvel.

Você também pode gostar