Você está na página 1de 154

Habilitao tcnica em

Informtica

Programao de Computadores

Informtica
Volume 4

Informtica
Programao de computadores
Ralfe Della Croce Filho Carlos Eduardo Ribeiro

So Paulo 2010

Presidente Paulo Markun vice-Presidente Fernando Jos de Almeida

GovernaDor Jos Serra vICe-GovernaDor Alberto Goldman SeCretrIo De DeSenvolvImento Geraldo Alckmin

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

Edio de texto: Marlene Jaggi Editores assistentes: Celia Demarchi

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

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.

Presidente do Conselho Deliberativo Yolanda Silvestre Diretora Superintendente Laura Lagan

Mirian Ibaez
Consultor tcnico

Victor Emmanuel J. S. Vicente

Dados Internacionais de Catalogao na Publicao (CIP) D357 Della Croce Filho, Ralfe Informtica, programao de computadores / Ralfe Della Croce Filho, Carlos Eduardo Ribeiro ; revisor Srgio Furgeri ; coordenador Luis Eduardo Fernandes Gonzalez. -- So Paulo : Fundao Padre Anchieta, 2010 (Manual de Informtica Centro Paula Souza, v. 4) ISBN 978-85-61143-46-6 1. Sistemas operacionais (Computadores) 2. Softwares de aplicao I. Ribeiro, Carlos Eduardo II. Furgeri, Srgio, revisor III. Gonzalez, Luis Eduardo Fernandes, coord. IV. Ttulo CDD 005.43

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

Sumrio
21 Captulo 1 lgica de programao
1.1. Fluxograma e pseudocdigo . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.2. Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.3. Constantes e variveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.4. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 1.5. Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.6. Vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 1.7. Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 1.8. Programao modular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.3. Formatao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.4. Texto
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

3.5. Cores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.6. Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.7. Imagens


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

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

77

3.8. Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 3.9. Formulrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.10. XML


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

49 Captulo 2 estrutura de dados


Incio

93 Captulo 4 lgica de programao aplicada linguagem Java


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

2.1. Lista encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.2. Lista circular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.3. Lista duplamente encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.1.1. JRE (Java Runtime Environment) . . . . . . . . . . . . . . . . . 97 4.1.1.1. JVM (Java Virtual Machine) . . . . . . . . . . . . . . 97 4.1.1.2. API (Application Programming Interface). . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4.1.2. Ambientes de desenvolvimento . . . . . . . . . . . . . . . . . 98 4.1.2.1. JSE (Java Standard Edition). . . . . . . . . . . . . . 98 4.1.2.2. JEE (Java Enterprise Edition)
. . . . . . . . . . . 98

nome como caractere idade como inteiro salrio como flutuante

2.4. Pilhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.5. Filas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.6. rvores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

nome Joozinho idade 15 salrio 1500

Se

t te

57 Captulo 3 Criao de pginas Web


3.1. Identificao do documento . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.2. Estrutura do documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.1.2.3. JME (Java Micro Edition) . . . . . . . . . . . . . . . . 98 4.1.2.4. JDK (Java Development Kit) 4.1.2.5. JSE: nosso foco 4.1.3. A portabilidade
. . . . . . . . . . . 99 . . . . . . . . . . . . . . . . . . . . . . . . . 99

rs

nome

endereco

Fim

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

telefone

ssoa()

Sumrio
4.2. Origem da orientao a objetos . . . . . . . . . . . . . . . . . . . . . . 100 4.2.1. Abstrao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.3. UML (Unified Modeling Language) . . . . . . . . . . . . . . . . . . . . 101 4.4. Eclipse
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

4.5.6.1.1. Mtodo get . . . . . . . . . . . . . . . . . . 114 4.5.6.1.2. Mtodo set . . . . . . . . . . . . . . . . . . 115 4.5.7. Representao do encapsulamento em objeto do tipo Pessoa . . . . . . . . . . . . . . . . . . . . . . 115 4.5.8. Viso geral da classe Pessoa e sua estrutura . . . . . . . . . . . . . . . . . . . . . . . . . 116 4.6. Entrada e sada de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.6.1. Declarao import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.6.2. Apresentao de dados (sada). . . . . . . . . . . . . . . . . 117 4.6.3. Leitura de dados (entrada) . . . . . . . . . . . . . . . . . . . . . 119 4.7. Assinatura de mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 4.7.1. Retorno de valor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 4.7.2. Passagem de parmetro . . . . . . . . . . . . . . . . . . . . . . . . 121 4.7.3. Retorno de valor e passagem de parmetro . . . . . . . . . . . . . . . . . . . . . . 121 4.8. Estruturas e recursos da linguagem Java . . . . . . . . . . . . . . 122 4.8.1. Palavras reservadas do Java
. . . . . . . . . . . . . . . . . . . . 122

4.5. Orientao a objetos (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.5.1. Componentes elementares. . . . . . . . . . . . . . . . . . . . . 104 4.5.1.1. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 4.5.1.1.1. Atributos . . . . . . . . . . . . . . . . . . . . . 105 4.5.1.1.2. Mtodos. . . . . . . . . . . . . . . . . . . . . . 105 4.5.1.1.3. Detalhando o diagrama de classe . . . . . . . . . . . 105 4.5.1.1.4. Codificao da classe Pessoa . . . . . . . . . . . . . . . . . 106 4.5.1.1.5. Comentrios . . . . . . . . . . . . . . . . . 109 4.5.1.2. Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.5.2. Modificadores de acesso . . . . . . . . . . . . . . . . . . . . . . . 111 4.5.2.1. Private
.................................

111

4.5.2.2. Public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.5.2.3. Protected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.5.3. Mtodos construtores


. . . . . . . . . . . . . . . . . . . . . . . . . 112

4.8.2. Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 4.8.3. Operadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 4.8.4. Variveis e constantes . . . . . . . . . . . . . . . . . . . . . . . . . . 125 4.8.5. Converses de tipos de dados . . . . . . . . . . . . . . . . . 126 4.8.5.1. Converso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 4.8.5.2. Cast (matriz) 4.8.5.3. Promoo
. . . . . . . . . . . . . . . . . . . . . . . . . . 127 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

4.5.4. Garbage collector (coletor de lixo) . . . . . . . . . . . . 113 4.5.5. O comando this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 4.5.6. Encapsulamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 4.5.6.1. Mtodos de acesso . . . . . . . . . . . . . . . . . . . . 114

Sumrio
0 1 2 3 4 4.8.6. Desvios condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 4.8.6.1. If-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 4.8.6.2. Switch-case . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 4.8.7. Laos de repetio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 0 1 2 3 4 12 4 32 8 17 1 36 67 6 62 74 23 47 25 41 9 49 85 3 4.8.7.1. While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 4.8.7.2. Do-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 4.8.7.3. For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 valores 4.8.8. Array (Vetor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 4.8.8.1. Unidimensional . . . . . . . . . . . . . . . . . . . . . . . . 131 4.8.8.2. Bidimensional (Matrizes) . . . . . . . . . . . . . . 133 4.8.9. Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 4.8.9.1. ArrayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 4.9. Orientao a objetos (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 4.9.1. Herana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 4.9.2. Sobrecarga de mtodo (overload) . . . . . . . . . . . . . 142 4.9.3. Sobrescrita de mtodo (override). . . . . . . . . . . . . . 145 4.9.4. Classes e mtodos abstratos . . . . . . . . . . . . . . . . . . . 147 4.9.5. Interfaces
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

4.10.3. Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 4.11. Interfaces grficas


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

eiros

4.11.1. AWT (Abstract Window Toolkit) . . . . . . . . . . . . . 156 4.11.2. Interfaces listeners


. . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

4.11.3. Swing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 4.12. Tratamento de excees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 4.12.1. Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 4.12.2. Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 4.12.2.1. Unchecked Exception . . . . . . . . . . . . . . . . 167 4.12.2.2. Checked Exception
. . . . . . . . . . . . . . . . . . 167

4.12.2.3. Throws . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 4.12.2.4. Try-catch-finally . . . . . . . . . . . . . . . . . . . . . . 167 4.13. Conexo com banco de dados . . . . . . . . . . . . . . . . . . . . . . . 172 4.13.1. JDBC (Java Database Connectivity) . . . . . . . . . . . 172 4.13.2. Implementao do acesso a dados . . . . . . . . . . . . 174 4.13.2.1. Classe java.sql.Statement . . . . . . . . . . . . . 176 4.13.2.2. A classe PreparedStatement . . . . . . . . . 176 4.13.2.3. A classe CallableStatement 4.13.4. Alterao 4.13.5. Excluso
. . . . . . . . . . 176

4.9.6. Polimorfismo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 4.9.6.1. De mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 4.9.6.2. De classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 4.9.6.3. De interface
. . . . . . . . . . . . . . . . . . . . . . . . . . . 152

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


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

4.13.6. Listagem geral

4.10. Padres de desenvolvimento de sistemas . . . . . . . . . . . 154 4.10.1. Programao em trs camadas . . . . . . . . . . . . . . . . 154 4.10.2. MVC (Model, View, Controller) . . . . . . . . . . . . . . 154

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

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 ad lP D o I

Ru nt im eE xc ep tio n

Ex ce p

Sumrio
185 Captulo 5 visual Studio 2008
5.1. .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 5.1.1. Mquina virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 5.1.2. Garbage collector (coletor de lixo) . . . . . . . . . . . . 188 5.2. Solues e projetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 5.2.1. Iniciando o Visual Studio Solution . . . . . . . . . . . . 189 5.2.2. Conhecendo o Visual Studio . . . . . . . . . . . . . . . . . . . 190 5.2.3. Gerenciador de janelas . . . . . . . . . . . . . . . . . . . . . . . . . 192 5.2.4. Nomenclatura de componentes . . . . . . . . . . . . . . . 193 5.2.5. IntelliSense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 5.2.6. Executando a aplicao. . . . . . . . . . . . . . . . . . . . . . . . . 194 5.2.7. Identificao de erros
. . . . . . . . . . . . . . . . . . . . . . . . . . 195

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


. . . . . . . . . . . . . . . . . . . . . . . . . . . .204

6.3.6. Converses C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 6.3.7. Parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 6.3.8. Convert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204 6.4. Estrutura de deciso
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205

// imprime os dados do veculo Console.WriteLine(Veculo: + marcha + marchas); Console.WriteLine(Combustv

6.4.1. Condio verdadeiro if . . . . . . . . . . . . . . . . . . . . . . .205 6.4.2. Condio verdadeiro ou falso ifelse . . . . . . .205 6.4.3. Condies mltiplas if...elseif...elseif....else . . . . . . . . . . . . . . . . . . . . . . . . . . . .206 6.4.4. Mltiplos testes Switch() . . . . . . . . . . . . . . . . . . . .206 6.5. Estruturas de repetio usadas na linguagem
. . . . . . . . 207

// inicia a movimentao do car objCarro.movimentar(5);

// consulta a velocidade do vec velocidade = objCarro.consulta

6.5.1. While() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 6.5.2. Do While(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 6.5.3. For() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 6.5.4. Break e continue 6.6.1. Exception
..............................

// visualiza a velocidade do vec Console.WriteLine(Velocidade Console.ReadKey();

197 Captulo 6 C Sharp


6.1. Programao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 6.1.1. Console Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 6.1.2. Windows Form Application . . . . . . . . . . . . . . . . . . . . 198 6.2. Tipos de dados e variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 6.2.1. Alocao de memria . . . . . . . . . . . . . . . . . . . . . . . . . . 201 6.3. Operadores
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202

208

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


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

// aumenta a velocidade do vec objCarro.movimentar(5); Console.WriteLine(Velocidade Console.ReadKey();

6.7. Vetores e matrizes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 6.8. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 6.9. Windows Form Application componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 6.9.1. Form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 6.9.2. Button 6.9.4. Label
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

6.3.1. Operadores aritmticos . . . . . . . . . . . . . . . . . . . . . . . .202 6.3.2. Operadores relacionais . . . . . . . . . . . . . . . . . . . . . . . .202 6.3.3. Operadores aritmticos de atribuio reduzida . . . . . . . . . . . . . . . . . . . . . . . . . . .202

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

6.9.3. TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

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

7.4.3. Condies Mltiplas if...elseif...elseif....else . . . . . . . . . . . . . . . . . . . . . . . . . . 231 7.4.4. Mltiplos testes Select Case() . . . . . . . . . . . . . . . . 232 7.5. Estrutura de repetio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 7.5.1. While() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 7.5.2. Do While()...Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 7.5.3. Do...Loop Until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 7.5.4. For
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

6.9.6. ListBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 6.9.7. CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220 6.9.8. RadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 6.9.8.1. Agrupamento . . . . . . . . . . . . . . . . . . . . . . . . . .222 6.10. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223

225 Captulo 7 visual Basic.net


7.1. Programao
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226

7.5.5. For...Step . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 7.6. Tratamento de erros e excees . . . . . . . . . . . . . . . . . . . . .234 7.7. Vetores e matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 7.8. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 7.9. Windows form application componentes . . . . . . . . . . . 236 7.9.1. Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 7.9.2. Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 7.9.3. TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 7.9.4. Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 7.9.5. ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 7.9.6. ListBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238 7.9.7. CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238 7.9.8. RadioButton. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 7.9.8.1. Agrupamento
. . . . . . . . . . . . . . . . . a in( ) . . . .s Inte ..... 240

7.1.1. Console Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . .226 7.1.2. Windows Form Application . . . . . . . . . . . . . . . . . . . .226 7.2. Tipos de dados e variveis 7.2.2. Variveis globais
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

7.2.1. Atribuio DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228

7.3. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229 7.3.1. Operadores aritmticos . . . . . . . . . . . . . . . . . . . . . . . .229 7.3.2. Operadores relacionais. . . . . . . . . . . . . . . . . . . . . . . . .229 7.3.3. Operadores aritmticos de atribuio reduzida. .230 7.3.4. Operadores lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230 7.3.5. Converses em VB.NET . . . . . . . . . . . . . . . . . . . . . . .230 7.4. Estrutura de deciso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 7.4.1. Condio Verdadeiro if . . . . . . . . . . . . . . . . . . . . . . . 231 7.4.2. Condio Verdadeiro ou Falso ifelse . . . . . . 231

I S ) A v DO ub M im x A en ne( S Li X . . . Th 7.10. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .D. .x. =. 1 240 le.Write vel ) va r i so If R S Con 2 Then Line(A T l X te = ive If x .Wri ) va r Else onsole en a lor A C tro v Th teLine( 3 ou ri x = uer lseIf nsole.W ua lq E Q Co ine( iteL .Wr Else onsole C e y( ) d If .ReadK En ole ns

3 ger =

el X riv a

UM

Sumrio
243 Captulo 8 aSP.net
8.1. Aplicao ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244 8.1.2. Web Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 8.1.3. Projeto Web Application (Aplicao Web) . . 245 8.1.4. Ciclo de vida da Aplicao. . . . . . . . . . . . . . . . . . . . . . 246 8.1.5. Executando uma Application Service (Servio de Aplicao) . . . . . . . . . . . . . . . . . . . . . . . . . . 246 8.1.6. Escrevendo a Aplicao. . . . . . . . . . . . . . . . . . . . . . . . . 247 8.1.7. Estruturando uma pgina ASP.NET 8.1.7.2. Web Server Controls
. . . . . . . . . . . . 248

261 CaPtUlo 9 aDo.net


9.1. DataSet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264 9.2. DataReader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .264 9.3. Objetos para banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . 265 9.3.1. Objeto DataTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 9.3.2. Objeto DataView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266 9.4. Mtodos de conexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266 9.4.1. Objeto Command
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

9.4.2. Exemplo genrico de conexo . . . . . . . . . . . . . . . . . 267 9.4.2.1. Implementando a leitura de dados . . . .268 9.4.3. Conexo com VB.NET . . . . . . . . . . . . . . . . . . . . . . . . . 269 9.4.3.1. Base de dados . . . . . . . . . . . . . . . . . . . . . . . . . . 269 9.4.3.2. Criando o Form . . . . . . . . . . . . . . . . . . . . . . . 270 9.4.3.3. Inserindo o cdigo . . . . . . . . . . . . . . . . . . . . . 270 9.4.3.4. Utilizando uma DataTable . . . . . . . . . . . . . 271 9.4.3.4.1. Visual do DataGrid . . . . . . . . . . 274 9.4.3.5. Travando colunas . . . . . . . . . . . . . . . . . . . . . . 274 9.4.4. Utilizando um DataView . . . . . . . . . . . . . . . . . . . . . . . . 275 9.4.5. Conectando com ASP.NET 282 283 285 Consideraes finais referncias bibliogrficas Glossrio
. . . . . . . . . . . . . . . . . . . . 277

8.1.7.1. HTML Server Controls . . . . . . . . . . . . . . . . 248


. . . . . . . . . . . . . . . . . 249

8.1.7.3. Validation Server Controls . . . . . . . . . . . . 249 8.2. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 8.3. HTML Server Controls e Web Server Controls . . . . .250 8.3.1. HTML Server Controls . . . . . . . . . . . . . . . . . . . . . . . . .250 8.3.2. Web Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . . 251 8.4. Sesses em ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 8.4.1. Recuperando sesso em outra pgina por meio de um evento
. . . . . . . . . . . . . . . . . . . . . . . .254

8.4.2. Recuperando sesso em outra pgina automaticamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256 8.5. Dados via URL
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

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.

3 - Remover o lacre.

4 Eliminar o lacre.

5 Posicionar a lata corretamente na boca.

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

7 - Ingerir o lquido.

8 - Voltar a lata na posio original.

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
NOME = TERMINAL FUNO = Indica INCIO ou FIM de um processamento NOME = PROCESSAMENTO FUNO = Definio de variveis ou processamentos em geral (Clculos) NOME = ENTRADA MANUAL FUNO = Entrada de dados via teclado, idntico ao comando LEIA NOME = DISPLAY FUNO = Sada de Dados, mostra um texto e/ou varivel na tela, idntico ao comando ESCREVA NOME = DOCUMENTO FUNO = Sada de Dados, envia um texto e/ou varivel para a impressora, usado em relatrios. Idntico ao comando IMPRIMA NOME = DECISO FUNO = Deciso a ser tomada, retornando verdadeiro ou falso, idntico ao comando SE NOME = CONECTOR FUNO = Desvia o fluxo para uma outra pgina, sendo interligados pelo conector NOME = ENTRADA/SADA FUNO = Leitura de gravao de arquivos NOME = SETA FUNO = Indica a direo do fluxo NOME = LOOP FUNO = Realiza o controle de loop
Incio

Incio Pegar a latinha

Fim

Abrir a tampa

Remover o lacre

Eliminar o lacre

Tomar o refrigerante

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.

Figura 1
Fluxograma dos passos lgicos.

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: Programa nome_do_programa Declare {declarao de variveis} Incio {instrues e comandos} Fim
Declaraes de variveis Comandos e instrues ordenados de forma lgica Ttulo do Algoritmo

24

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.

de sua varivel ou constante e no utilize espao em branco ou caracteres especiais, com exceo do underline (_). Exemplos: nome idade Joozinho 0 15 R$ 1.479,00

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.

minha_idade pag_final

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

No pseudocdigo (figura 2), as constantes ou variveis devero estar relacionadas com os seus respectivos tipos de dados: Programa variveis Declare nome como caractere idade como inteiro salrio como flutuante Incio nome Joozinho idade 15 salrio 1.500,00 Fim
Fim nome Joozinho idade 15 salrio 1500 nome como caractere idade como inteiro salrio como flutuante Incio

Figura 2
Estrutura de pseudocdigo.

numricos flutuantes
So representados por nmeros fracionados positivos ou negativos, por exemplo: 10.5, -45.78, 178.67 etc.

Caracteres ou literais
o maior conjunto de dados. So representados por letras, nmeros, 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

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

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

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 Diviso de nmeros flutuantes e inteiros potncia 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

chave 2

E // AND

Lgica E

lmpada

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

Valor Entrada 01 Verdadeiro Verdadeiro Falso Falso

Valor Entrada 02 Verdadeiro Falso Verdadeiro Falso

Resultado Verdadeiro Falso Falso Falso

bateria

lgica ou

OPERADORES RELACIONAIS
= <> > < <= >= Igual Diferente maior menor menor igual maior igual

OU // OR
Valor Entrada 01 Verdadeiro Verdadeiro Falso Falso Valor Entrada 02 Verdadeiro Falso Verdadeiro Falso Resultado Verdadeiro Verdadeiro Verdadeiro Falso

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.

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. tabela 4

Comando Escreva()
OPERADORES LgICOS
no / not Inverte o resultado de uma expresso 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)
Mensagem ou varivel

E / and

Retorna verdadeiro caso todas as condies retornem verdadeiro

Figura 3
Comando Escreva().

ou / or

Retorna verdadeiro quando uma das condies retorna verdadeiro

28

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 Escreva(Sua nota final :) Escreva(mdia) Fim

Comando leia()
Ao contrrio do comando Escreva(), o Leia() permite a insero de dados pela interao com o usurio. Eles sero armazenados em variveis devidamente 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: 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

Figura 4
Fluxograma Escreva.
Incio


nome como caractere mdia, nota1, nota2 como flutuante Fim

nome Fulaninho nota1 10.0 nota2 2.0

mdia

mdia (nota1+nota2)/2

Sua nota final

30

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. Se (mdia >= 7.00) Ento

Incio

Qual a sua nota 1

nota1

mdia

Escreva(Voc est aprovado!!!! ) Fim-Se

nome como caractere mdia, nota1, nota2 como flutuante

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 Se (condio) Ento {comando(s) condio verdadeira}
Se...Seno...Fim-Se.

Calculando a mdia

Qual o seu nome?

nota2

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

No

Sim

Como ficaria a repetio do teste com a varivel mdia. Se (media >= 7.00) Ento

Figura 7
Se...Fim-Se.

Se (condio) Ento {comando(s)} Fim-Se Seno

Escreva(Voc est aprovado!!!! )

Sim
Fim-Se

Escreva(Voc est reprovado!!!! )

32

33

InFoRmtICa 4

Captulo 1

Vamos organizar todo o pseudocdigo, apresentando-o, tambm, no formato de fluxograma (figura 9).
Incio

Figura 9
Exemplo de teste.
nome como caractere mdia, nota1, nota2 como flutuante Calculando a mdia Qual o seu nome?

Programa exemplo_teste Declare nome como caractere media, nota1, nota2 como flutuante
nota2 Qual a sua nota 02?

nota1

Qual a sua nota 01?

nome

mdia =
(nota1 + nota2)/2

Sua mdia final

mdia

Incio Escreva(calculando a mdia) Escreva(Digite o seu primeiro nome.) Leia(nome) Escreva(Qual a sua nota 01?) Leia(nota1) Escreva(Qual a sua nota 02?) Leia(nota2) mdia (nota1 + nota2)/2 Escreva(Sua nota final :) Escreva(mdia) Se (media >= 7.00) Ento Escreva(Aprovado) Seno Escreva(Reprovado) Fim-Se Escreva(Fim de programa) Fim Seno {comando(s)} Fim-Selecione
Fim Fim do programa

Aprovado

Sim

mdia >=7.00 Reprovado

No

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


Em alguns momentos, haver necessidade de testar a mesma varivel diversas vezes, como acontece no menu de opes. Para isso, utilizamos o comando Selecione Caso da seguinte forma (figura 10): Selecione Caso {varivel} Caso condio 01 {comando(s)} Caso condio 02 {comando(s)} Caso condio 03 {comando(s)}
Sim No Sim

Figura 10
Selecione Caso.

34

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):

Estrutura de repetio para...Fim-para


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

Leia(nmero) Selecione Caso nmero Caso 1 Escreva(Voc escolheu o nmero 01) Caso 2 Escreva(Voc escolheu o nmero 02) Caso 3 Escreva(Voc escolheu o nmero 03) Seno Escreva(Nmero invlido) Fim-Selecione Figura 11
Selecione caso.

{comando(s)} Fim-Para
Cont = Inicial at Final

Comando(s)

Alguns exemplos: Para x = 1 At 5 Faa Escreva(x) // Sero visualizados os nmeros: 1,2,3,4 e 5. Fim-Para

No

No

No

Para num = 3 At 6 Faa Escreva(num) // Sero visualizados os nmeros: 3,4,5 e 6. Fim-Para

nmero

01
Sim

02
Sim

03
Sim

Voc escolheu o nmero 01

Voc escolheu o nmero 02

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

Estrutura de repetio Enquanto...Fim-Enquanto


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. Figura 13
Enquanto... Fim-Enquanto.

Estrutura de repetio Repita...at que


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. Repita {comando(s)} At que (condio) Figura 14
Repita...Fim-Repita.

Enquanto (condio) Faa {comando(s)} Fim-Enquanto


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

x1 Repita Escreva(x) // Sero visualizados os nmeros: 1,2,3,4 e 5. xx+1 At que (x<=5)

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

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)

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

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

38

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.

1 A

2 H

3 M

4 B

5 R

6 J

7 g

8 Q

9 S

10 P

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.

Escreva(vet[3])

1 10

2 56

3 -4

4 60

5 2

6 6

7 99

8 3

9 1

10 -10

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

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

Incio Fim

mat como conjunto[1..5][1..3] de inteiro {comando ou bloco de comandos}

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

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: Programa matriz Declare

42

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

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

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

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

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-Se Fim

46

47

Captulo 2

Estrutura de dados
Lista encadeada Lista circular Lista duplamente encadeada Pilhas Filas rvores

InFoRmtICa 4

Captulo 2

incio

vazio II NULL

incio

INFO 001 II posio 01

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.

vazio II NULL

Figura 16
Insero de elemento.

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 15
Lista encadeada.

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.

incio

incio

incio

INFO 001 II posio 01

INFO 001 II posio 01

INFO 001 II posio 01

INFO 002 II posio 02

INFO 002 II posio 02

INFO 002 II posio 02

INFO 003 II posio 03

INFO 003 II posio 03

INFO 003 II posio 03

50

51

InFoRmtICa 4

Captulo 2

Figura 18
Lista circular.

INFO 001 II posio 01

25
INFO 002 II posio 02

40 15 15

15 10

INFO 003 II posio 03

tabela 8

2.4. pilhas 2.2. lista circular


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 hardware. 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).

Push e pop em uma pilha.

2.3. lista duplamente encadeada


Figura 19
Lista duplamente encadeada.

2.5. Filas
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).

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

tabela 9
Entrada e sada de uma fila.

INFO 001 II posio 01 II posio 02

INFO 001 II posio 01 II posio 02

INFO 001 II posio 01 II posio 02

10 20 20 10 15 15 15 20 35 10 10 35

52

53

InFoRmtICa 4

Captulo 2

Figura 20
rvore e seus ns.

Figura 22
Esquema da rvore Binria.

raiz

sae

sad

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

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.

rvores binrias
Um bom exemplo de rvore binria so as expresses matemticas, as quais nos permitem distribuir os operadores e os operandos. Por exemplo, a expresso ((1+2)*(5*3))-2 (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 XML
Formulrios

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>

DICA

O
Pgina de HTML do Centro Paula Souza.

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

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.

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>

O W3C

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>

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:

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.
Escreva todas as tags e atributos em letras minsculas e os atributos entre aspas.

<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd> <html> <head> <meta http-equiv=Content-Type content=text/html; charset=utf-8> <title>Ttulo do Documento</title> </head> <body> </body> </html> DOCTYPE: 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.

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

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

<body style=background:skyblue> Figura 25


Regras de formatao.

60

61

InFoRmtICa 4

Captulo 3

Figura 26
Formatao na tag.

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: /* 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>

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.

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

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>

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

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. Figura 28
Identificador.

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

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

Font-Style

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

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} Figura 33
Font-Weight.

O resultado final pode ser conferido na figura 34. Figura 34


Text-Decoration.

text-transform
Modifica a configurao da letra diferenciando caracteres maisculos de minsculos. <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 http://www.w3.org/TR/html4/loose.dtd> <html> <head> <meta http-equiv=Content-Type content=text/html; <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>

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

Transitional//EN

charset=iso-8859-1>

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

68

InFoRmtICa 4

Captulo 3

Figura 35
Text-Transform.

Existe outra opo chamada vertical-align, que faz o alinhamento no topo, no meio e na parte de baixo da pgina. Pode ser adotada quando o texto estiver dentro de uma tabela. Os parmetros so, respectivamente: top, middle e bottom.

3.5. Cores
A utilizao de cores essencial para a criao de uma boa pgina na web. Mas preciso ter cuidado para no exagerar. O importante adotar o conceito de harmonia das tonalidades, que podem ser identificadas por meio das palavras em ingls: black, blue, red, skyblue, green, etc.

text-align
Esta opo permite que se faa o alinhamento de texto na forma desejada no contexto de sua aplicao: em uma pgina, em uma tabela etc.

#texto {color:blue}

<!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>

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 G B Cor DeSCrIo

00

00

00

#000000

preto

FF

FF

FF

#FFFFFF

branco

FF

00

00

#FF0000

vermelho

CF

CF

CF

#CFCFCF

tonalidade de cinza

tabela 10 Hexadecimal. 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.
Dica: procure na internet a expresso tabela de cores HTML, acessando qualquer um dos sites de busca.

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.

CONHECIMENTO DAS CORES

70

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.

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}

72

73

InFoRmtICa 4

Captulo 3

Figura 39
Tabela formatada.

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

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 http://www.w3.org/TR/html4/loose.dtd> <html> <head> <meta http-equiv=Content-Type content=text/html; <title>Tabela</title> <style type=text/css> table {text-align:center} .coluna1 {width:200px} coluna2 {width:400px} tr {height:60px} </style> </head> <body> <table border=1 width=600px> <tr> <td class=coluna1> linha 01 - coluna 01 </td> <td class=coluna2> linha 01 - coluna 02 </td> </tr> <tr> <td> linha 02 - coluna 01 </td> <td> linha 02 - </table> </body> </html>

Transitional//EN

charset=iso-8859-1>

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>

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
Ao utilizar o CSS, poderemos realizar diferentes aplicaes nas bordas das tabelas. Os exemplos abaixo mostram os diferentes efeitos em um nico cdigo. <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd> <html> <head> <meta http-equiv=Content-Type content=text/html; charset=iso-8859-1> <title>Tabela</title> <style type=text/css> table {background-color: #FFCC66; width:500px; border-style:solid; border-top-width: 15px; border-bottom-width: 5px; border-left-width: 5px; border-right-width: 10px; border-top-color: #00CC00; border-bottom-color: #3333FF; border-left-color: #FFFF00; border-right-color: #FF0000} </style> </head> <body> <table> <tr> <td> linha 01 - coluna 01 </td> <td> linha 01 - coluna 02 </td> </tr> <tr> <td> linha 02 - coluna 01 </td> <td> linha 02 - coluna 02 </td> </tr> </table> </body> </html> O resultado (figura 41) no est seguindo nenhum padro de design.

3.7. Imagens
Os navegadores esto habilitados para abrir diferentes tipos de imagens (BMP, JPG, GIF, entre outros), alm de contar com os GIFs para pequenas animaes existentes no site. Essas imagens podero ser inseridas pela tag <img>, que, alm da incluso da imagem, oferece outros parmetros de formatao, como altura, largura e texto explicativo. <img src=programador.jpg width=100px height=100px alt=Programador> </img>

SRC: Indica o arquivo para visualizao (caminho do arquivo, nome completo e extenso). Width e Height: largura e altura da imagem. ALT: permite incluir um texto alternativo caso a imagem no aparea no site. Geralmente, as imagens so redimensionadas para um site, ou seja, raramente elas aparecem em seu tamanho natural. Portanto, os valores de largura e altura devero ser bem analisados para que no ocorra distoro na imagem. Vamos utilizar o cdigo a seguir para reproduzir uma imagem correta e outras duas com distoro (largura e altura). <!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>

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.

Dica: substitua o termo solid (slido) de border-style (estilo da borda), pelas palavras: none (nenhuma), dotted (pontilhada), dashed (tracejada), double (dupla), groove (encaixe ou ranhura), ridge (serrilhado), inset (insero) ou outset (incio).

Figura 41
Formatao de borda.

Na figura 42, podemos verificar as trs imagens e, de acordo com os valores da altura e largura, conseguiremos visualizar a distoro nas duas ltimas. 76 77

InFoRmtICa 4

Captulo 3

Figura 42
Imagem distorcida.

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

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

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

links para outros sites


Para acessar links de outros sites, devemos informar toda a URL (Uniform 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 <!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>

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.

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.

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.

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). <!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


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

3.9. Formulrios
Um formulrio usado para receber informaes do usurio. Esses dados, que depois podero ser tratados por outra aplicao, como ASP, PHP ou Java, so enviados por meio de dois mtodos: GET: as informaes seguem via URL ao servidor e 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
Entrada tipo texto.

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). 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). Figura 51
Entrada de login e senha.

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

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>

Comentrio
Para entrada de textos maiores, utilizamos a tag <textarea>, que permite criar uma janela com especificaes de linha e coluna. <p> Descrio da Funo:<br> <textarea name=func rows=5 cols=40></textarea> </p>

A opo indicada j aparece selecionada (figura 54). 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
Textarea Comentrio.

Botes checkbox
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>

opo select
Representa as caixas tipo combos, presentes na maioria das aplicaes, nas quais uma srie de opes fica disponvel para o usurio. <p> Estado: <select name=cidade> <option>So Paulo</option> <option>Rio de Janeiro</option> <option>Distrito Federal</option> </select> </p>

84

85

InFoRmtICa 4

Captulo 3

Na opo referente recepo de e-mails, o boto checkbox foi previamente assinalado (figura 55). Figura 55
Botes checkbox.

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. <input type=reset value=Limpar> <input type=submit value=Enviar>

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>

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>

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

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>

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>

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


Formatao de borda.

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

Diretivas
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. <?xml version=1.0 encoding=iso-8859-1 ?>

O cdigo a seguir um exemplo de documento que traz na sua primeira linha de identificao a tag <produto> como tag raiz. E os demais dados tambm esto devidamente organizados em tags. <?xml version=1.0 encoding=iso-8859-1?> <pedido> <produto> <codigo>MF45-KJ90</codigo> <descritivo>Parafuso de 15mm</descritivo > <valor>5,20</valor> </produto> <produto> <codigo>KJ-25489-B</codigo> <descritivo>Prego de 10mm</descritivo > <valor>1,40</valor> </produto> <produto> <codigo>MMZ-1010-GR</codigo> <descritivo>Pito de 18mm</descritivo > <valor>2,60</valor> </produto> </pedido>

No navegador Internet Explorer, vemos os sinais de + e -, que permitem a expanso ou contrao do nvel de detalhamento das informaes. Mas no podemos esquecer que o documento XML deve, obrigatoriamente, levar em conta que: Precisa de uma tag raiz, denominada root. As tags so case sensitive (elementos sensveis). Deve evitar acentos ou caracteres especiais para a construo de tags. Um documento XML bem formado (HOLZNER, 2001) deve atender a 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.

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

Logotipo do Java, com a xcara estilizada.

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


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

Kenneth Thompson
(ou Ken Thompson) - cientista computacional conhecido por sua 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).

Dennis MacAlistair Ritchie


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

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

FOTOS: DIVULGAO

94

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

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

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


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

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

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

C++
De alto nvel, com facilidades para o uso em baixo nvel, uma liguagem comercial multiparadigma e de uso geral. Muito popular, desde os anos 1990, tambm est entre as preferidas nos meios universitrios em virtude de seu grande desempenho e enorme base de usurios. Foi desenvolvida por Bjarne Stroustrup (primeiramente, com o nome C with Classes, que 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.

96

97

InFoRmtICa 4

Captulo 4

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.

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

4.1.1.2. apI (application programming Interface)


A interface de programao de aplicao, traduo literal da sigla em ingls API, um conjunto de recursos (classes e interfaces) com funcionalidades padro, j implementados, e que possuem ampla documentao. Assim, os programadores podem utilizar esses recursos sem precisar saber como foram desenvolvidos.

4.1.2. ambientes de desenvolvimento


4.1.2.1. JSE (Java Standard Edition)
Em portugus, a edio Java padro. Contm todo o ambiente necessrio para a criao e execuo de aplicaes Java, incluindo a mquina virtual Java (JVM), ocompilador Java (JRE), um conjunto de APIs e outras ferramentas utilitrias. voltada para o desenvolvimento de aplicaes desktop e web de pequeno porte, 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.

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

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

DI

VU

A LG

InFoRmtICa 4

Captulo 4

Cdigo fonte Java (.java)

JVM Windows

Windows

Bytecodes (.class)

JVM Linux

Linux

JVM Solaris

Solaris

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

Figura 63
Portabilidade Java.

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.

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.

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

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 os projetos Eclipse e ajuda a manter tanto uma comunidade de openSource (grupo que desenvolve softwares com cdigo de fonte aberto) como um conjunto de produtos e servios complementares. O projeto Eclipse foi originalmente criado pela IBM em novembro de 2001 e apoiado por um consrcio de fornecedores de software. (Para mais informaes sobre o Eclipse, acesse: htpp://www.eclipse.org).

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.

4.5.1.1.2. mtodos
Mtodos so blocos de cdigo que pertencem a uma classe e tm por finalidade realizar tarefas. Geralmente, correspondem a uma ao do objeto. Considerando-se o exemplo do automvel, os mtodos poderiam definir processos como ligar, acelerar, frear etc.

EqUIPE EESC-USP BAJA SAE

4.5.1.1.3. Detalhando o diagrama de classe


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

104

InFoRmtICa 4

Captulo 4

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

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

Nome da classe

Pessoa
Atributos
- nome : String - endereco : String - telefone : String

Por conveno, todo nome de classe comea com letra maiscula.

O sinal de menos - indica a visibilidade do atributo. Nesse caso, privado (private em ingls). Por conveno, todos os nomes de atributos so escritos com letras minsculas. Depois 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

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

Principal
+ 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

tabela 11 Detalhes dos trs compartimentos do diagrama de classe. 107

InFoRmtICa 4

Captulo 4

Figura 65
Codificao da classe Pessoa.

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.

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. 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 Mtodo
Sada do mtodo apresentarPessoa().

Classe

Comando

Objeto

Construtor

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.

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

110

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.

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.

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.

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

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.

Figura 71a
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


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

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

apresentarPessoa()

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

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.

atributos

construtores

getters e setters (mtodos de acesso)

Figura 74
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. 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

mtodo especfico da classe Pessoa

116

InFoRmtICa 4

Captulo 4

Figura 76
Mtodo showMessageDialog.

Figura 78
Alterao no mtodo apresentarPessoa.

Figura 79 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. Apresentao da mensagem em uma nica janela.

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 Portanto, o mtodo est preparado para retornar um valor do tipo String e faz isso quando executa o comando return (figura 82).

4.7. assinatura de mtodos


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

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

InFoRmtICa 4

Captulo 4

Figura 84
Mtodo main da Classe Principal.

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

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


TIPO ABRANgNCIA

boolean

pode assumir o valor true (verdadeiro) ou o valor false (falso). 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. um inteiro complemento de 2 em 8 bits com sinal. Ele tem um valor mnimo de -128 e um valor mximo de 127 (inclusive). um inteiro complemento de 2 em 16 bits com sinal. possui um valor mnimo de -32.768 e mximo de 32.767 (inclusive). 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). 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). 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 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

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.

char

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

short

int

PALAVRAS RESERVADAS
abstract char double for int private strictfp throws assert boolean class else goto interface protected super transient break const extends if long public switch try byte continue final implements native return case default finally import new short catch do float instanceof package static throw while double float long

synchronized this void volatile

122

123

InFoRmtICa 4

Captulo 4

4.8.3. operadores ARITMTICOS


+ * / % adio Subtrao multiplicao Diviso Resto da diviso = += -= *= /=

ATRIBUIES
atribuio atribuio com soma atribuio com subtrao atribuio com multiplicao atribuio com diviso

RELACIONAIS
> < >= <= == != instanceof maior que menor que maior ou igual a menor ou igual a Igual Diferente Comparao de tipo >>>= &= |= ^= <<= >>=

ATRIBUIES BIT A BIT


atribuio de E bit a bit atribuio de ou bit a bit atribuio de ou exclusivo bit a bit atribuio de deslocamento de bit esquerda atribuio de Deslocamento de bit direita com extenso de sinal atribuio Deslocamento de bit direita sem extenso de sinal

LgICOS
&& || ! E (and) ou (or) no (not) ++ ?:

TERNRIO
Condicional (if-then-else compacto)

INCREMENTO BIT A BIT


pr-incremento ou ps-incremento

& | ^ << >> >>> ~

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

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

124

InFoRmtICa 4

Captulo 4

Figura 86
Declarao de variveis. De String Para int

CONVERSO
Mtodos Integer.parseInt()

String

float

Float.parseFloat()

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.

String

double

Double.parseDouble()

int

String

Integer.toString() ou String.valueof()

float

String

Float.toString() ou String.valueof()

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

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
Tipos Cast vlidos nenhuma byte byte e short byte, short e char byte, short, char e int byte, short, char, int e long byte, short, char, int, long e float

Convertida para dados numricos (figura 89). Figura 89

byte short char int long float double

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

126

127

InFoRmtICa 4

Captulo 4

Exemplos (figura 91). Figura 91

4.8.6. Desvios condicionais


4.8.6.1. If-else
A estrutura de if extremamente adaptvel, podendo assumir qualquer uma das formas ilustradas nas 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 double float long int char short byte boolean Promoes vlidas nenhuma double float ou double long, float ou double int, long, float ou double int, long, float ou double (char no) short, int, long, float ou double (char no) nenhuma

Figura 95

Veja alguns exemplos na figura 92. Figura 92

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

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

Figura 99

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
Switch case.

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

4.8.8. array (Vetor)


Um array, tambm chamado de vetor, uma estrutura parecida com as variveis, porm, que permite armazenar vrios valores, desde que sejam do mesmo tipo. Por isso, pode ser definido como uma estrutura homognea de dados. Ele pode ser de tipos unidimensional e bidimensional. A quantidade de valores que um array consegue armazenar definida na sua declarao.

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

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 vetorInteiros
nome vetorInteiros

ndices

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

0 10

1 30

2 50

3 20

4 40 valores

Figura 107

nome

valores
A leitura (apresentao) pode ser feita de trs maneiras: Acessando explicitamente o ndice (posio) desejado (figura 108). Figura 108

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). 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 0 1 2 3 4

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

matrizInteiros
nome 0 1 2 3 4

matrizInteiros 12 4 32 8 17 1 36 67 6 62 74 23 47 25 41 9 49 85 3 valores valores

nome

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


Mtodo add (objeto) get (ndice) Descrio adiciona um elemento list na ltima posio Retorna o elemento da posio do ndice Retorna um objeto do tipo Iterator Retorna um int (inteiro) com a quantidade de elementos da coleo Retorna true se o elemento j existe dentro do list Elimina todos os elementos do list

Figura 119
Vetor bidimensional quadrado.

ndices

ndices

iterator () size ()

matrizDouble matrizDouble nomenome 0 1 2 ndices 10.0 40.0 70.0 20.0 50.0 80.0 30.0 60.0 90.0 valores valores

contains (objeto) clear ()

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

4.8.9. Collections
um conjunto de classes e interfaces disponveis no pacote java.util, que faz o uso do import necessrio. Essas classes fornecem recursos para trabalhar com conjuntos de elementos (colees). Na verdade, todas as funcionalidades 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 sort (arraylist) shuffle (arraylist) Descrio ordena os elementos em ordem crescente o oposto do sort. ao invs de ordenar, ele desordena (mistura) os elementos do arraylist pesquisa um valor no arraylist e retorna sua posio (ndice). Se no for encontrado, retorna um nmero inteiro negativo Inverte a ordem dos elementos Conta a quantidade de ocorrncias do elemento especificado

binarySearch (arraylist, valor)

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
reverse (arraylist) frequency (arraylist, valor)

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

Atribuio de valores (figura 123). Figura 123

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

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

Resultado obtido (figura 129). Figura 129


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

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.

+ main(args[ ] : String) : void

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

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

Figura 130
Herana.

141

InFoRmtICa 4

Captulo 4

Abertura da classe (figura 131).


Produto

Figura 131

O comando extends o responsvel por estabelecer a herana. inserido na abertura da subclasse e indica o nome da superclasse, criando vnculo entre elas. Construtores (figura 132). Figura 132
- autor : String - editora : String - edicao : String + calcularPrecoVenda(didatico : boolean) : void + inserirDadosLivro() : double + apresentarLivro() : void livro

- codigo : int - descricao : String - genero : String - estoqueDisponivel : int - precoCusto : double - precoVenda : double + calcularPrecoVenda() : void + calcularPrecoVenda(cotacaoDolar : double) : void + calcularPrecoVenda(genero : String) : void

Cd - artista : String - gravadora : String - paisOrigem : String + inserirDadosCd() : void + apresentarCd() : void

Dvd - diretor : String - duracao : String - censura : int + 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.

livraria so livros, CDs e DVDs, como representado no diagrama de classe na figura 133. O clculo do preo de venda dos produtos da livraria depende de alguns fatores: em determinadas pocas do ano, todos os produtos recebem a mesma porcentagem de acrscimo em relao ao preo de custo. Se o produto em questo for importado, necessrio considerar a cotao do dlar. Em algumas situaes (promoes, por exemplo), preciso atualizar todos os produtos de um determinado um gnero. E, no caso 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.

Figura 133
Sobrecarga do mtodo calcularPrecoVenda.

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

143

InFoRmtICa 4

Captulo 4

Figura 134
Codificao dos mtodos na classe Produto.

O Java identificar o mtodo que deve ser executado de acordo com a chamada realizada, como mostra o exemplo da figura 137. 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
Codificao do mtodos na classe Livro.
Pessoa - codigo : int - nome : String - endereco : String - bairro : String - cidade : String - uf : String - tefone : String - celular : String + mostrarTelefones() : void

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

Figura 138
Sobrescrita do mtodo calcularSalarioFinal.

Os pontos importantes na codificao anterior so: A diferenciao das assinaturas dos mtodos se baseia na quantidade e no tipo de dado dos parmetros. A sobrecarga pode ser realizada na mesma classe ou em subclasses, e os 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. No mtodo main, teremos o que ilustra a figura 136. Figura 136
Gerente - gratificacao : double + apresentarFuncionario() : void + calcularSalarioFinal(valorVendi do : double) : void

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

vendedor - valorComissao : double + apresentarFuncionario() : void

temporario - comissionado : boolean + inserirDadosFuncionario() : void + apresentarFuncionario() : void + calcularSalarioFinal(valorVendido : double) : void

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

144

145

InFoRmtICa 4

Captulo 4

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. Figura 139

Figura 142
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.

4.9.4. Classes e mtodos abstratos


preciso, a princpio, conhecer os recursos utilizados na modelagem de sistemas. Para entender melhor o assunto, devemos ampliar o horizonte e pensar na 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 + mostrarTelefones() : void

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

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

E na subclasse Temporario, veja a figura 141. Figura 141

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

ClientePF - rg : String - cpf : String - rendaMensal : double + calcularLimiteCredito() : void + inserirDadosClientePF() : void + apresentarClientePF() : void Principal + main(args[ ] : String) : void

ClientePJ - cnpj : String - ie : String - faturamentoAnual : double + calcularLimiteCredito() : void + inserirDadosClientePJ() : void + apresentarClientePJ() : 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. 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

Cliente e Funcionario
A declarao abstract tambm usada para mtodos (figura 145). Figura 145 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: 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.

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

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

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

4.9.6. polimorfismo
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.

4.9.6.1. De mtodos
Muitos autores consideram polimorfismo a possibilidade de utilizar dois ou mais mtodos com a mesma assinatura, mas com comportamentos (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). Figura 149

Classe Funcionario (figura 150). Figura 150

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

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

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. 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 + adicionarItem(item : Movimentacao) : void

<<interface>> entidademovimentacao

Figura 154
Implementao da inteface EntidadeMovimentacao.

<<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 : 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

Figura 155
Principal + main(args[ ] : String) : void Itemmovimentacao - produto : Produto - qtde : int - totalItem : double + totalizarItemVenda() : void

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

Polimorfismo de classe e de interface.

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

4.10. padres de desenvolvimento de sistemas


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. 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.3. packages
No decorrer do desenvolvimento de um software, muitas classes so criadas e, logo, nos deparamos com a necessidade de organiz-las. Os packages servem para agrupar as classes, normalmente por funcionalidades comuns. Alm das vantagens vistas anteriormente, as classes so ordenadas de maneira lgica e fsica, pois, para cada package, criado um diretrio em disco para salvamento. Como exemplo no projeto Livraria, todas as classes esto contidas no default package, como se observa na figura 156. Figura 156
Classes contidas no default package.

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.

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

O mesmo projeto Livraria devidamente organizado em packages pode ser visualizado nas figuras 157 e 158. Figura 157
Organizao em packages.

154

InFoRmtICa 4

Captulo 4

Figura 158
Classes organizadas em pacotes (packages).

lidacaoUsuario, que d origem tela anterior, para depois conferir os principais pontos do cdigo (consulte o quadro Principais pontos do cdigo). 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


Linha 01: importa a API AWT e a disponibiliza para uso. Linha 03: o comando extends responsvel por estabelecer a herana entre classes. Assim, a classe FormValidacaoUsuario passa a ser subclasse da classe Frame, que, por sua vez, pertence API AWT e contm um conjunto de componentes 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.

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

Ao ser executada a classe Principal, a tela reproduzida antes, na figura 159, ser exibida, mas no executar nenhuma ao, nem mesmo funcionar o boto com um x no canto superior direito da janela. que, para colocar eventos na janela, devemos implementar interfaces especficas para essa finalidade.

4.11.2. Interfaces listeners


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

Na prxima codificao, vemos como implementar o WindowListener (figura 164). Figura 164
Como implementar o WindowListener.

Veja como ficou a classe FormValidarUsuario aps a atualizao (figura 163) e, em seguida, confira uma anlise da codificao. Figura 163
Classe FormValidarUsuario atualizada.

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.

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

161

InFoRmtICa 4

Captulo 4

Figura 166
Importando o pacote model.

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.

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). Figura 167
Adicionando botes ao ActionListener.

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. 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
A classe FormValidacaoUsuario utilizando o swing.

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


Implementando o actionPermormed.

162

163

InFoRmtICa 4

Captulo 4

Em relao aos listeners, a implementao explcita no mais necessria. Eles 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 ActionListener 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. Linha 30 a 40: declara os componentes e define tamanho e posicionamento. 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.

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. Figura 172
Codificao do mtodo validarLogin j modificado. 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.

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

165

InFoRmtICa 4

Captulo 4

4.12.2.1. unchecked Exception Throwable


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.

Exception RuntimeException IOException AWTError

Error ThreadDeath OutOfMemoryError

4.12.2.2. Checked Exception ArrayIndexOutOfBoundsException InputMismatchException


J em uma Checked Exception, o compilador acusa a possvel exceo e obriga o programador a trat-la. Existem duas formas de tratar uma Checked Exception: usando a clusula throws ou a estrutura try-catch-finally.

ClassCastException
Figura 173
Parte da hierarquia da classe Throwable.

NullPointerException

ArithmeticException

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.

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

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

167

InFoRmtICa 4

Captulo 4

Figura 175
Evento do componente bOk na classe FormValidacaoUsuario.

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

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.

168

169

InFoRmtICa 4

Captulo 4

Figura 178
Observao de erro de uma checked exception.

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

Figura 181
Uso do throws na classe ClientePF.

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.

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.

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.

IMPORTANTE:

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.

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.

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

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

InFoRmtICa 4

Captulo 4

tipo 3: net protocol all Java driver (protocolo de rede totalmente Java)
O driver Tipo 3 converte as requisies do SGBD em um protocolo de rede genrico (no vinculado a nenhum SGBD). Essas requisies so enviadas a um servidor middle-tier, que as traduz e encaminha para um SGBD 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.

Figura 183
Formulrio de manuteno de clientes pessoa fsica.

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. 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. Figura 184
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

4.13.2.1. Classe java.sql.Statement


A classe java.sql.Statement permite a execuo dos comandos fundamentais de SQL. O mtodoConnection.createStatement() utilizado para criar um 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).

Figura 187
Mtodo incluir na classe ClientePF.

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 visua lizados em seguida, na figura 187. 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

176

InFoRmtICa 4

Captulo 4

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.

Figura 189
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
Mtodo excluir na classe ClientePF.

Figura 193
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
Mtodo acaoPesquisar na classe FormClientePF.

Figura 195
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.

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.

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.

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

186

InFoRmtICa 4

Captulo 5

gem), compilado para uma linguagem intermediria chamada CIL (Common Intermediate Language ou linguagem intermediria comum), que distribuda e executada pelos diferentes clientes da aplicao.

Figura 197
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
Janela de Projeto.

Recursos de classes disponveis


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

188

InFoRmtICa 4

Captulo 5

Figura 199
Definio da Solution.

Figura 202
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
Toolbar.

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

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.

190

191

InFoRmtICa 4

Captulo 5

Figura 204
Properties.

Figura 207
Auto Hide.

Figura 208
Fixar janela.

para incluir expresses no projeto, possuindo diversas propriedades tais como name (nome), text (texto), visible (visvel), font (fonte), forecolor (cor) e que podero ser manipuladas diretamente na janela ou por meio de programao, utilizando a 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
Code and text Editor.

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
Guias de janelas.

Figura 206
Em destaque, os botes Code e View.

5.2.3. Gerenciador de janelas


O Visual Studio apresenta muitas janelas e, para facilitar o seu gerenciamento, existem quatro recursos. Confira quais so, a seguir. Dockable: coloca a janela aberta junto janela principal do programa. Hide: fecha aquela janela e, para abri-la novamente, usa o menu View. Floating: a janela fica flutuante, podendo ser deslocada para qualquer parte do desktop. 192

5.2.4. nomenclatura de componentes


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: Label1 = lblPergunta Label2 = lblMensagemAlerta

193

InFoRmtICa 4

Captulo 5

A tabela 12 mostra alguns dos vrios prefixos utilizados na plataforma .NET. tabela 12
Componente label textBox DataGrid Button ImageButton DropDownlist RadioButtonlist Image panel

PREFIxOS USADOS NA .NET


Prefixo lbl txt dtg btn imb ddl rbl img pnl Componente listBox Datalist Repeater Checkbox CheckBoxlist RadioButton placeHolder table Validators Prefixo lst Dtl Rep Chk Cbl Rdo phD tbl Val

Durante essa atividade, podemos recorrer a alguns botes auxiliares (figura 212) como Break, Stop e Restart.

5.2.7. Identificao de erros


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

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.

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
Na parte inferior do Visual Studio, podemos visualizar o painel (error list) de Erros, Warnings e Messages (figura 215). Figura 215
Painel de erros.

Opes de complemento

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.

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.

Figura 212
Controles de execuo.

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.

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.

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). 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
Form1.Designer.cs.

TIPO
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. int num; int x, y, x; float salario; string nome; string edereco, cidade, estado; char resp; Figura 221
Declaraes corretas das variveis.

Figura 220
Form1.cs.

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

ATENO:

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

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.

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.

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.

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.4. operadores de incremento e decremento OPERADORES


++ -Incremento Decremento

6.3.3. operadores aritmticos de atribuio reduzida ARITMTICOS


+= -= *= /= %= adio Igual Subtrao Igual multiplicao Igual Diviso Igual Resto da diviso Igual

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.

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

203

InFoRmtICa 4

Captulo 6

6.3.5. operadores lgicos OPERADORES


&& || ! and or not

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);
Classe Convert.

Sua aplicao ilustrada na figura 225. Figura 225


Aplicao de operadores lgicos.

DICA

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

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.

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

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.

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);

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

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

{ }

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

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(); }

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

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(); }

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.

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.

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(); }

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

208

209

InFoRmtICa 4

Captulo 6

continue;

} Console.WriteLine(O nmero : + num); } Console.WriteLine (Mensagem aps o lao); Console.ReadKey();

6.6. tratamento de erros / excees


ERROS MAIS COMUNS
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 { }

try { double var01 = double.Parse(txtLado01.Text); double var02 = double.Parse(txtLado02.Text); double resp = var01 * var02; txtResp.Text = resp.ToString(); } catch { MessageBox.Show(Dados Incorretos); }

Figura 239
Converso do contedo de dois TextBox.

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.

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.

// 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

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. catch (Exception objeto)

// opcional, mas executado

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

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.

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
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. Uma classe chamada Carro tem atributos referentes ligados a marca, combustvel e marcha e, ainda, os mtodos movimentar(), parar() e consultar(), que representam: Movimentar(): indica a velocidade com que o veculo deve andar. Parar(): quando acionado, diminui em uma unidade a velocidade do veculo. Consultar(): informa a atual velocidade do veculo. Figura 243
Diagrama de classe.

6.7. Vetores e matrizes


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. Figura 242
Vetores e matrizes.

// vetor do tipo String string[] j; j = new string[2]; j[0] = seg; j[1] = ter; MessageBox.Show(j[0]); string[] semana = { dom, seg, ter, qua, qui, sex }; MessageBox.Show(semana[0]); // vetor do tipo 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());

Carro + marca : String + com : String + marcha : int - velocidade : int + movimentar (acelerao : int) : void + parar() : void + consultar() : int

212

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. Figura 245
Analisando o cdigo main().

Classe Pessoa.

Pessoa 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; - codigo : int - nome : String - endereco : String - bairro : String cidade : String - uf : String - telefone : String - celular : String * mostrartelefones() ; void

214

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 text Backcolor BackgroundImage BackgroundImagelayout ControlBox FormBorderStyle Icon maximizeBox minimizeBox Size WindowState modifica o nome atualiza a barra de ttulo do formulrio Cor de fundo do formulrio Insere uma imagem como plano de fundo em um formulrio ajusta a posio da imagem em relao ao formulrio Desativa os botes maximizar, minimizar e fechar muda as configuraes de visualizao do formulrio Insere um cone no formulrio permite ou no ao usurio maximizar permite ou no ao usurio minimizar Define a largura e a altura do formulrio 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


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.

Button.

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. Figura 248
Form.

rea de programao

PROPRIEDADES BUTTON
name text BackColor BackgroundImage BackgroundImagelayout Visible modifica o nome texto para o boto modifica a cor do boto Insere uma imagem como plano de fundo ajusta a posio da imagem em relao ao boto Define se esse boto est visvel ou no

216

217

InFoRmtICa 4

Captulo 6

6.9.3. textBox
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. Figura 251
TextBox.

6.9.5. ComboBox
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
ComboBox.

PROPRIEDADES TExTBOx
name text BackColor ForeColor CharacterCasing maxlength passwordChar Readonly textalign modifica o nome Insere um texto predefinido Cor de fundo da caixa de entrada Cor da fonte Controla a entrada do texto, mantendo as letras em maiscula ou minscula tamanho mximo em nmero de caracteres Caractere utilizado para coletar senha mostra o texto, mas no permite que ele seja alterado Define se o texto deve ser colocado direita, esquerda ou centralizado name text DataSource Items

PROPRIEDADES COMBOBOx
modifica o nome Insere um texto no combo pode ser ligado a uma base de dados Datatable lista de valores que o ComboBox disponibiliza ao usurio para seleo

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
ComboBox (carregado).

6.9.4. label
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 text BackColor modifica o nome Insere um texto predefinido Cor de fundo da caixa de entrada, local onde as informaes sero inseridas ForeColor Font Cor da fonte 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

218

InFoRmtICa 4

Captulo 6

Figura 255
ListBox.
name text CheckState

PROPRIEDADES CHECKBOx
modifica o nome Insere a texto da opo Deixa a opo j selecionada

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
name DataSource Items Selectionmode modifica o nome pode ser ligado a uma base de dados Datatable lista de valores que o ComboBox disponibiliza ao usurio para seleo permite escolher um ou mais itens de uma s vez

Figuras 258 a e 258 b


Verificao da caixa CheckBox.

Para carregar o ListBox (figura 256), use o mesmo procedimento do ComboBox. Figura 256
ListBox (carregado).

O cdigo descrito refere-se apenas ao evento click, relacionado ao boto de verificao (confira na figura 259). 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.7. CheckBox
Utilizamos o controle CheckBox (caixa de seleo) para obter mltiplas opes de resposta ou para simular um sim ou no, dependendo do escopo 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). Figura 257
CheckBox.

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.

220

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 AgRUPAMENTO
name text modifica o nome 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.

PROPRIEDADES RADIOBUTTON
name text CheckState modifica o nome Insere a texto da opo Deixa a opo j selecionada

6.9.8.1. agrupamento
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
Programao em VB.

7.1. programao
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.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.

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.

TIPO
Byte Sbyte ushort Short uinteger Integer ulong long

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)

tabela 14
Tipos de dados em VB.

226

227

InFoRmtICa 4

Captulo 7

Single Double

ponto Flutuante Binrio de 4 bytes ponto flutuante binrio IEEE de 8 bytes (5.0 x10 -324 a 1.7 _ 10308), 15 dgitos decimais de preciso ponto flutuante decimal de 128 bits.

7.3. operadores
Os exemplos prticos para mostrar a funcionalidade dos operadores sero executados no Console Application.

Decimal Boolean Char String Data

(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 at 2 bilhes de caracteres 8 bytes intervalo 01/01/100 at 31/12/9999 + -

7.3.1. operadores aritmticos ARITMTICOS


adio Subtrao multiplicao Diviso Diviso de um valor por outro e retorna somente a parte inteira do resultado Resto da Diviso Combina (concatena) Strings Expoente (potncia)

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.

* / \ mod

Dim x Dim y As Integer Dim nome As String Dim endereco, cidade, estado As String Dim md = 10 Dim salario As Double

& ^

Figura 272 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.2.2. Variveis globais


Podemos definir, dentro das rotinas tendo visibilidade local, o cdigo mostrado na figura 270. 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. 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

7.3.2. operadores relacionais RELACIONAIS


> maior que menor que maior ou igual a menor ou igual a Igual Diferente < >=

Visibilidade global

Visibilidade dentro da rotina

<= = <>

228

229

InFoRmtICa 4

Captulo 7

7.3.3. operadores aritmticos de atribuio reduzida ARITMTICOS


+= -= *= /= &= ^= adio Igual Subtrao Igual multiplicao Igual Diviso Igual Concatena Igual potncia Igual

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.

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.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.3.4. operadores lgicos LgICOS


and or not and or 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

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

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.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.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. Estrutura de repetio


Vamos conhecer agora as estruturas de repetio utilizadas na linguagem.

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

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 Console.WriteLine(Nmero: & x) Next Console.ReadKey()

End Sub

Figura 283
Instruo For...Step.

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.

Sub Main() For x = 0 To 10 Step 2 Console.WriteLine(Nmero: & x) Next Console.ReadKey()

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

End Sub

7.6. tratamento de erros e excees


Nas verses anteriores do Visual Basic, o tratamento de erro era controlado pela instruo On error go to, ainda mantido por questes de 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

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.

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

235

InFoRmtICa 4

Captulo 7

MsgBox(matriz(1, 1))

7.9.3. textBox
o componente que recebe as informaes do usurio, como ilustra a figura 289. Figura 289

matriz tipo inteiro Dim temp(,) As Integer = {{1, 4}, {2, 7}, {3, 5}} MsgBox(matriz(1, 1))

7.8. Classes
Usando os mesmos conceitos de Java, o Visual Basic pode implementar classes especficas para programao, as quais seguem os mesmos princpios de formao e manipulao, incluindo os getters e setters.

TextBox.

7.9. Windows Form application componentes


Da mesma forma que em C#, a janela ToolBox conta com vrios componentes para o desenvolvimento de aplicaes em VB. Para os componentes apresentados a seguir, utilize as mesmas descries de propriedades mencionadas no captulo 6.

7.9.4. label
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

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.

ComboBox.

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. Nome do boto e evento

Figura 292
ComboBox carregado.

236

237

InFoRmtICa 4

Captulo 7

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

Figura 296
Verificao da caixa CheckBox.

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

7.9.7. CheckBox
Assim como no C#, vamos utilizar o CheckBox para indicar mltiplas opes ou questes de sim ou no. O exemplo da figura 295 o mesmo utilizado em C#.
Figura 295
CheckBox.

Figura 298
Verificando a opo do RadioButton.

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. Figura 300
Agrupamento.

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.

PROPRIEDADES RADIOBUTTON
name text modifica o nome 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 HTML Server Controls e 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).

A
Figura 304
Funcionamento de um Web Service.

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.

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

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 306
WebForm.

Figura 308
ToolBox para Aplicao Web.

se esquea de indicar o nome da Solution, que, nesse caso, ExemploWeb, e o local em que ela ser gravada. Analisando a Solution Explorer, novos arquivos sero disponibilizados para 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.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.

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
Servidor em Execuo.

Figura 309b
Minha primeira aplicao.

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

<% Tempo.InnerText = Now()%> <body> <p id=Tempo runat=server></p> </body> </html>

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>

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:.../>.

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.

8.1.7.3. Validation Server Controls


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

<html xmlns=http://www.w3.org/1999/xhtml > <head runat=server> <title>Exemplo em ASP - VB</title> </head>

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

248

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.

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.

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

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
Web Server Controls.

Figura 318
Tela antes de pressionar o boto Enviar.

Figura 317b
Detalhamento do login e senha.

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: <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> 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 Protected Sub btnEnviar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Mostrar1.Text = Session(aula) Figura 319
Preenchendo itens.

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

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

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.

De acordo com o cdigo mostrado no quadro anterior, o link aponta para um arquivo chamado Recuperar.aspx, que dever mostrar o contedo da sesso. Aps o clique no boto, observe o resultado (figura 323).

8.4.1. Recuperando sesso em outra pgina por meio de um evento


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>

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

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

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.

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.

Figura 325
Menu de opes.

Figura 324b
Eliminado o boto para visualizao.

<html xmlns=http://www.w3.org/1999/xhtml > <head id=Head1 runat=server> <title>Session em ASP.NET</title> </head> <script runat=server> Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs) Mostrar1.Text = Session(aula) 257

256

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> <html xmlns=http://www.w3.org/1999/xhtml > <head runat=server> <title>menu de Opes - Escolha</title> </head> <script runat=server> Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs) Dim opcao = Request.QueryString(op) Select Case opcao Case 1 Escolha.Text = Opo UM selecionada Case 2 Escolha.Text = Opo DOIS selecionada Case 3 Escolha.Text = Opo TRS selecionada End Select End Sub </script> <body> <form id=form1 runat=server> <asp:Label ID=Escolha runat=server Text=></asp:Label> </form> </body> </html>
Captura da varivel no evento Load_Page.

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/ xhtml1-transitional.dtd> <html xmlns=http://www.w3.org/1999/xhtml > <head runat=server> <title>Menu de Opes</title> </head> <body> <form id=form1 runat=server> <div> <b>Escolha uma Opo de Menu </b> <br /> <asp:LinkButton ID=lnkOpcao01 runat=server PostBackUrl=Menu.aspx?op=1>Opo 01</asp:LinkButton><br /> <asp:LinkButton ID=lnkOpcao02 runat=server PostBackUrl=Menu.aspx?op=2>Opo 02</asp:LinkButton><br /> <asp:LinkButton ID=lnkOpcao03 runat=server PostBackUrl=Menu.aspx?op=3>Opo 03</asp:LinkButton><br /> </div> </form> </body> </html>

No arquivo Menu.aspx, teremos como resposta a indicao da opo escolhida pelo usurio (figura 327). Figura 327
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, 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: System.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; System.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; System.Data.Odbc: fonte de dados ODBC usando o provedor .NET ODBC; System.Data.SqlTypes: dados especficos para o SQL Server. Alm disso, o ADO.NET oferece classes referenciadas: Disconnected: fornece classes capazes de armazenar dados sem a dependncia da fonte de dados de determinado provedor. Por exemplo, DataTable. hared: classes que podem ser acessadas por todos os provedores; S ata Providers: classes utilizadas em diferentes fontes de dados para geD renciamento. 263

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

DeSCrIo Geralmente usada para banco de dados mais antigos que utilizam a interface ODBC Conexo do tipo OleDb, como o Access ou Excel Para implementao de Banco de Dados Oracle Para implementao de Banco de Dados Microsoft SQL Server

262

InFoRmtICa 4

Captulo 9

9.1. DataSet
O objeto recordset (ADO), que armazena somente uma coleo de tabelas, tem desvantagens em relao ao DataSet, que faz parte do System.Data. O DataSet controla uma cpia do banco de dados, representando um conjunto de informaes em memria cach que no esto conectadas com o banco de dados do sistema. Baseado em XML e independente da fonte de dados, o DataSet pode armazenar vrias verses das tabelas. Apesar de trabalhar no formato desconectado, o DataSet possui mecanismos que do suporte ao modelo conectado. Entre os mtodos disponveis, podemos destacar alguns mostrados na tabela 15. tabela 15
DataSet.

mtoDoS FieldCount

DeSCrIo Nmero de colunas da linha de dados atual Verifica se o objeto DataReader est fechado Avana para o prximo registro Fecha o objeto

tabela 16
DataReader.

IsClosed Read Close

ColeeS Tables

DeSCrIo Uma coleo de tabelas que armazenam os dados atuais a serem manipulados DeSCrIo Grava todas as alteraes para o DataSet Remove todas as linhas das tabelas Faz uma cpia da estrutura, mas no copia os dados Faz uma cpia da estrutura e dos dados Retorna uma cpia do DataSet com apenas as colunas alteradas Retorna uma representao XML da estrutura de um DataSet Reverte o DataSet ao seu estado original

9.3. objetos para banco de dados


Uma das grandes vantagens do ADO.NET so os recursos oferecidos pelos objetos de manipulao de dados.

mtoDoS AcceptChanges

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. mtoDoS Columns DeSCrIo Representa as colunas da tabela tabela 17
DataTable.

Clear Clone

Copy

Rows

Linhas da tabela

GetChanges

PrimaryKey

Chave primria

GetXmlSchema

NewRow

Cria uma nova linha de dados Faz uma cpia da estrutura e dos dados da tabela Define o nome da tabela

Reset

Copy

9.2. DataReader
O DataReader permite acessar e fazer a leitura do banco de dados, percorrendo os registros de forma sequencial por meio do objeto command. Esses registros sero lidos posteriormente pelo DataReader. Diferentemente do DataSet, o 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. 264

TableName

Clear

Limpa dos dados da tabela

265

InFoRmtICa 4

Captulo 9

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.

Figura 330 SQL Server: Classe SqlConnection OLE DB: Classe OleDbConnection
Objeto connection especfico.

mtoDoS RowFilter

DeSCrIo Retorna a expresso usada para filtrar os dados Captura uma linha de dados especfica da tabela Ordena os dados por meio de uma coluna Adiciona uma nova linha

As principais propriedades da Classe Connection podem ser observados na tabela 19. mtoDoS ConnectionString DeSCrIo Contm a string de conexo tabela 19
Connection String.

Item

DataBase

Retorna o nome do banco de dados Retorna o nome da instncia do banco de dados Retorna o estado atual de conexo: Broken, Closed, Connecting, Executing, Fetching e Open

Sort

DataSource State

Addnew

Table

Define qual DataView ser visualizada

Delete

Exclui linhas de um DataView

9.4.2. Exemplo genrico de conexo


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. Figura 332 Incluindo os namespace using System.Data using System.Data.SqlClient 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;

Find

Busca uma linha de informaes

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.

Cdigo representando passos para conexo.

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

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.

// imprime o primeiro campo da tabela Console.WriteLine(drExemplo[0]); } // fecha o DataReader drExemplo.Close(); // fecha a conexo com o banco conexao.Close(); } }

SqlConnection conexao = new SqlConnection(Data Source=(localhost);Initial Catalog=papelaria; User ID=usuario;Passwor d=db2009conect);

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.

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()) {

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

268

InFoRmtICa 4

Captulo 9

Figura 337
Descrio da tabela e contedo.

Figura 340 Public Class frmBancoDados Private Sub btnListar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnListar.Click Dim conexao As New OleDbConnection() conexao.ConnectionString = Provider=Microsoft.Jet.OLEDB.4.0; Data Source=D:\Usuarios.mdb Dim comando As OleDbCommand = conexao.CreateCommand comando.CommandText = Select * from operadores conexao.Open() Dim leitor As OleDbDataReader = comando.ExecuteReader() Try Dim linha As String = Usurio: While leitor.Read() Dim reg As Integer For reg = 0 To leitor.FieldCount - 1 linha = linha & - & leitor.Item(reg) Next lstUsers.Items.Add(linha) linha = Usurio: End While leitor.Close() conexao.Close() Catch erro As Exception MsgBox(No foi possvel realizar a operao, Erro) End Try End Sub End Class A estrutura de conexo que usa o Visual Basic, com banco de Dados Access, semelhante ao cdigo desenvolvido no item anterior, que adota C# e SQL Server.
Registros diferentes para cada linha.

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.

9.4.3.4. utilizando uma Datatable


Figura 339
Nome dos componentes.

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 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. Dim dtMinhaDataSet As DataSet = New DataSet() 272

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 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
O cdigo completo.

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 dtColuna = New DataColumn() dtColuna.DataType = System.Type.GetType(System.String) dtColuna.ColumnName = Login dtColuna.ReadOnly = True dtMinhaTabela.Columns.Add(dtColuna) Isso impede que o usurio faa novas incluses. Como as colunas so montadas 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. Incluso do mtodo ReadOnly como True.

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.

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.

Imports System.Data.OleDb Public Class frmExemplos Dim conexao As String = Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Usuarios.mdb Dim comando As String = Select * from operadores Dim adpTabela As New OleDbDataAdapter(comando, conexao) Dim dsTabela1 As New DataSet() Dim dsTabela2 As New DataSet() Private Sub btnCarregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCarregar.Click dtgLista.CaptionText = Listagem de Operadores adpTabela.Fill(dsTabela1, operadores) dtgLista.DataSource = dsTabela1 dtgLista.DataMember = operadores End Sub Private Sub btnOrdeNome_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOrdeNome.Click dtgOrdenado.CaptionText = Listagem de Operadores adpTabela.Fill(dsTabela2, operadores) Dim dvTabela As New DataView(dsTabela2.Tables(operadores)) dvTabela.Sort = nome dtgOrdenado.DataSource = dvTabela End Sub End Class

Figura 351
O cdigo completo.

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: dtgLista.CaptionText: atribui o nome no DataGrid (dtgLista). adpTabela.Fill: preenche o objeto Adpter (adpTabela.Fill). dtgLista.DataSource: atribui o DataSet (dstabela1) no DataGrid (dtgLista). dtgLista.DataMember: associa a tabela ao DataGrid (dtgLista). No segundo boto, referente ordenao dos dados via campo nome, observamos o que ilustra a figura 350. Figura 350
Boto da ordenao dos dados.

Figura 352
Utilizao do DataView.

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

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). Figura 353
Componente SqlDataSource.

Figura 356
Testando a conexo.

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
Localizao do banco de dados.

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. 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
Configurando o SqL.

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

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. Figura 360
Teste do SqL (query).

A partir da opo Choose Data Source, podemos apontar o SqlDataSource (figura 363). Figura 363
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> <asp:BoundField DataField=cod_ID HeaderText=cod_ID InsertVisible=False 280 281
Concluda a operao de selecionar o DataSource.

InFoRmtICa 4

ReadOnly=True SortExpression=cod_ID /> <asp:BoundField DataField=login HeaderText=login SortExpression=login /> <asp:BoundField DataField=nome HeaderText=nome SortExpression=nome /> </Columns> </asp:GridView>

Referncias bibliogrficas
FORBELLONE, Andr. Lgica de Programao - A Construo de Algoritmos e Estruturas de Dados. 3 edio. So Paulo: Ed. Makron Books, 2005. LEISERSON, Charles E., STEIN, 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

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

teadores de alta capacidade.

backbones (espinhas dorsais) linhas de transmisso tronco, conectadas a ro-

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

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.

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

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

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.

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.

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-

aps o sistema operacional ter sido descarregado.

APM (Advanced Power Management ou gerenciamento avanado de energia) controle que faz com que o BIOS pea fonte para desligar o computador,

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.

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.

crosoft usada para o desenvolvimento de aplicaes web.

ASP (de Active Server Pages ou pginas de servidor ativo) plataforma da Mi-

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

ASP.NET plataforma de desenvolvimento usada para a construo de aplicaes

pontap inicial do sistema operacional.

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.

recursos da rede.

browsers (navegadores) programa que possibilita ao usurio ter acesso aos

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

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

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.

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.

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. CPD Centro de Processamento de Dados, nome obsoleto atualmente. CPU (Central Processing Unit ou unidade central de processamento) refere-

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

se ao microprocessador, e no ao gabinete como um todo, e sua funo processar as instrues enviadas.

nitores com tubo.

CRT (Catodic Ray Tube ou tubo de raios catdicos) tecnologia usada para mo-

mercado em 1985 pela Sony e pela Philips.

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

gravvel), porm aceita somente uma gravao.

deb pacotes de software do Debian, distribuio Linux da qual derivou o Ubuntu. debugger (depurador) tem a funo de permitir ao usurio acompanhar a execuo do programa, visualizando os resultados em tempo real, em busca de possveis erros de lgica. desktop rea de trabalho. DIMM (Dual In-line Memory Module ou mdulo de memrias em linha dupla) mdulo de memria formado pelos chips de memria encapsulada e soldados

(Read-Only Memory ou memria apenas de leitura).

CD-ROM O CD leva a sigla ROM para indicar que somente para 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. CMOS chip responsvel por armazenar configuraes sobre os HDs instalados e seus tamanhos, data e hora, e vrias outras informaes. cdigo fonte texto escrito segundo as regras de determinada linguagem de

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.

distribuio para o sistema Linux nunca se fala em verso, e sim em distribui-

o. As verses se aplicam a sistemas operacionais como o Windows.

programao.

compilador software que tem a funo de traduzir o cdigo fonte desenvolvido

DMA tecnologia implementada nas placas-me que faz com que a transmisso de dados entre o disco rgido e outras interfaces, como memria, placa de rede, outros discos, etc. seja direta, sem sobrecarregar o processador. DML (Data Manipulation Language ou linguagem de manipulao de dados)

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.

decorre do fato de os nveis de abstrao no se aplicarem somente definio ou estruturao de dados, mas tambm sua manipulao. 289

288

InFoRmtICa

GloSSRIo

DNS sigla para Domain Name System ou sistema de nomes de domnio. DOCTYPE identifica o tipo de documento. download transferir dados ou arquivos de um computador remoto para o de

fotogrficas, pen-drive, celulares e/ou outros dispositivos. apagvel) memria que pode ser regravada.
EPROM sigla para Erasable Programmable Read Only Memory (Erasable de

um usurio; baixar o arquivo.

estabilizador equipamento de proteo para as variaes na voltagem que

DRAM (Dynamic RAM ou memria RAM dinmica) tipo de memria empre-

gada como RAM nos computadores em 2009.

ocorrem normalmente no fornecimento de energia eltrica e podem causar falhas nos equipamentos ou diminuir sua vida til.

drive dispositivo para inserir disco flexvel (disquete), CD-ROM e/ou DVD e

leitoras de cartes Flash.

Ext tipo de sistema de arquivos no sistema operacional Linux, assim como o ReiserFS, o XFS, o JFS, o GSF e o OCFS2. O Ext o padro da maioria das distribuies, geralmente na verso Ext2 e Ext3. Ext2 (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. Ext3 (third extended file system ou terceiro sistema extendido de arquivos)

driver tradutor ou software controlador que sabe os comandos que o sistema

operacional pode enviar, interpreta-os e converte a solicitao de modo que o chip do aparelho possa reconhec-la.

DSP sigla em ingls para Digital Signal Processor ou processador de sinais digitais. DTD sigla para Document Type 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.

sistema de arquivos no Linux adotado pela maioria das distribuies.

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. FAT (File Allocation Table ou tabela de alocao de arquivos) primeiro sistema

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.

de arquivos utilizado pelo Windows.

e leitura. Portanto, no so lidos e gravados por leitoras/gravadoras DVD-R.


DVD-R disco que permite uma s gravao de at 4,7GB.

DVD+R disco idntico ao DVD-R, porm tem formato diferente de gravao

filtro de linha equipamento usado para bloquear o fluxo de energia caso a ten-

so aumente mais que o normal.

fio terra ponto ou caminho no solo que serve de descarga para a corrente eltrica que escapa do aparelho eltrico. Firewall (significa parede corta-fogo, em traduo literal) software de segu-

DVD-RW disco que tem a mesma capacidade do DVD-R, mas pode ser grava-

do e regravado vrias vezes.

rana responsvel por gerenciar as conexes de rede com destino mquina local, e bloqueia o acesso de pessoas ou aplicaes no autorizadas.

pode regravar, ou seja, podemos apagar parte da memria e gravar novamente.

EEPROM (Eletrical Erasabel Programmable Read Only Memory ou memria somente de leitura, programvel e limpa eletricamente) memria em que se

Firewire barramento com tecnologia desenvolvida pela Apple Computer em meados

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. e-mail correio eletrnico. energia eletroesttica corrente eltrica que escapa do aparelho eltrico quando

flash (memria) a principal mdia para armazenamento de dados em micro-

dispositivos, como celulares, cmeras, PDAs e notebooks, em formato de cartes de memria e pen-drives ou unidades internas no lugar do HD.

floppy-disk (disquete) o nome disco flexvel refere-se ao fato de o dispositivo

ser de plstico, que pode ser magnetizado.

surge algum defeito, ou tambm para liberar a energia esttica captada do ambiente.

fonte de alimentao dispositivo que transforma a energia eltrica que vem

entradas USB entradas para conexes de dispositivos como webcam, cmeras

da rede atravs do cabo de fora, preparando-a para que chegue aos componentes do computador da forma adequada.

290

291

InFoRmtICa

GloSSRIo

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

criar uma nova.

FreeBSD sistema operacional para servidores de rede.

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.

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

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

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

H I

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. HD sigla em ingls para Hard Disk (disco rgido). HTML (HyperText Markup Language ou linguagem de marcao de hipertexto) linguagem utilizada para o desenvolvimento de pginas da internet.

K L

que carrega e executa os programas desenvolvidos em Java.

kernel ncleo ou gerenciador, a parte mais importante do sistema operacional. LAN (Local Area Network ou rede local) rede com mquinas que se limi-

tam a conectar entre si num mesmo ambiente, de uma empresa, instituio ou residncia.

laptop computador porttil. LBA (Logical Block Addressing ou Endereamento Lgico de Blocos) o m-

todo de traduo que permite a BIOS reconhecer HDs IDE.

LCD (Liquid Crystal Displays ou tela de cristal lquido) tecnologia que utiliza a

substncia chamada cristal lquido para bloquear ou dar passagem luz.

LEDs (diodos emissores de luz) pequenas lmpadas que podem ser controladas uma a uma e variar sua luminosidade at se apagarem por completo numa imagem totalmente escura. link texto que geralmente aparece em azul, sublinhado, e que contm uma URL da pgina a qual ele se refere, que fica escondida, no visvel. Linux sistema operacional derivado do UNIX. Trata-se de um software livre

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. IDE (Integrated Development Environment ou ambiente integrado de desenvolvimento) programa de computador que rene recursos e ferramentas

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.

de apoio para agilizar o desenvolvimento de softwares, como o NetBeans, e Eclipse (Java) e o DevC++ (C++). comunicao com o processador, cuja funo chamar sua ateno para alguma ocorrncia de que deva ser informado. para conector de expanso utilizado pela IBM em seus primeiros computadores.

logic board (placa lgica) placa-me nos computadores da Apple.

IRQ (Interrupt Request Line ou linha de requisio de interrupo) canal de

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.

ISA (Industry Standard Arquiteture ou arquitetura padro da indstria) padro

292

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

nibble largamente utilizado em sistemas digitais, representa meio byte (4

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-break dispositivo que mantm o abastecimento por meio de sua bateria at

no incio do disco rgido. Essa tabela informa a posio de incio da partio, se est ativa e qual o seu tipo.

que a energia volte ou que o computador seja desligado.

memria local de armazenamento dos dados. microprocessador circuito integrado, porm programvel, capaz de realizar

NTFS (New Technology File System ou nova tecnologia em sistema de arquivos) sistema de arquivos utilizado pelo Windows, traz diversas caractersticas

vrias instrues, uma de cada vez. ciadores de bancos de dados).

como segurana, capacidade de armazenamento e limitaes aprimoradas em relao s verses anteriores.

Microsoft SQL Server sistema de gerenciamento de SGBDRs (sistemas geren-

MMS (Microsoft Media Service) protocolo proprietrio da Microsoft para

transmisso de fluxo de dados em tempo real, chamado tambm de NetShow.

ncleo quantidade de processadores internos em uma mesma CPU. OCFS2 sistema de arquivos Linux, permite utilizao simultnea e comparti-

lhada por mais de um computador.

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-

modelo de referncia ISO OSI modelo apresentado pelo ISO (Internationals

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. emissor de luz.

OLED sigla para Organic Lighting Emmiting Diode ou diodo orgnico

o de cada vez.

on-board (na placa) expresso que significa que os circuitos esto impressos

motherboard placa-me. mouse dispositivo apontador que serve para mostrar ao sistema operacional o

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.

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.

P2P (Peer-to-Peer ou de par em par) termo usado para os softwares que fazem transferncia de arquivos de um computador para outro. pacote software que pode ser instalado no Linux. PAN sigla para Personal Area Network ou rede pessoal.

multitarefa sistema operacional que consegue processar vrias instrues ao

mesmo tempo e executar diversos programas simultaneamente.

MySQL sistema de gerenciamento de SGBDRs, um banco de cdigo-fonte

N
294

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). partio diviso do disco rgido.

NetBSD sistema operacional para servidores de rede.

295

InFoRmtICa

GloSSRIo

dimenses.

particionar o mesmo que dividir o disco, identificando suas partes e devidas

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

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

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.

PMBOK - Guia do Conjunto de Conhecimentos em Gerenciamento de Projetos publicao do PMI (Project Management Institute ou Instituto de Geren-

modelo XP, com capacidade de apenas 20MB e tecnologia ATA.

PC/AT o primeiro computador lanado em 1984 pela IBM, como sucessor do

porta paralela conector utilizado para ligar dispositivos a computadores, principal-

mente impressoras, caracterizando a transmisso de bits na forma paralela de envio.

PC abreviao para Personal Computer ou computador pessoal. PCI (Peripheral Component Interconnect ou componente de interconexo de perifricos) padro desenvolvido pela Intel em 1990 para substituir os barra-

porta serial conector que foi muito utilizado no passado para conectar mouse,

impressora, leitores de cdigo de barras e outros dispositivos de automao, comercial e industrial, enviando os bits de forma serial.

mentos ISA e VESA Local Bus.

pen-drive pen, disco removvel, chaveiro de memria so as tradues mais

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

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

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-

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

cao. Permite transmitir udio e vdeo em vrios canais de uma transmisso da aplicao Microsoft Terminal Service.

utilizados em conjunto, desenvolvidos para transmitir udio em tempo real. transmisso de e-mail simples.

protocolo RTP/RTCP (Real Time Protocol ou protocolo de tempo real e Real Time Control Protocol ou protocolo de controle de tempo real) protocolos

protocolo SMTP sigla para Simple Mail Transfer Protocol ou protocolo de

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.

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.

protocolo TCP (Transfer Control Protocol ou protocolo de transferncia com controle) protocolo de controle que negocia entre as partes como se dar a

296

297

InFoRmtICa

GloSSRIo

criadas aplicaes, mesmo sem se especializar na linguagem.

RAD (Rapid Application Development ou desenvolvimento rpido de aplicao) linguagem capaz de, por si s, gerar cdigos com os quais podem ser

um programa em execuo no PC. tador em geral mais potente que os PCs de estaes de trabalho e que tem a funo de prover algum servio na rede.
setup programa de configurao que todo micro tem gravado dentro da meservidor palavra derivada dos verbos servir, tornar disponvel, um compu-

RAM sigla para Random Access Memory ou memria de acesso aleatrio. rede interligao de vrios computadores. registradores componentes do processador, que so unidades de memria

mria ROM (que, por sua vez, fica na placa-me).

que, por ficarem dentro da CPU, possibilitam acesso aos dados bem mais veloz do que ao acesso das memrias RAM ou cache.

SGBDs (Sistemas Gerenciadores de Bancos de Dados) conjunto de progra-

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

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. software a parte no fsica programas, instrues e procedimentos escritos por programadores para controlar o hardware de modo que este possa executar as tarefas de que precisamos. software de compresso programas que fazem a compactao de arquivos. software de inteligncia artificial (IA) sistema que utiliza algoritmos no numricos para resolver problemas complexos, tambm conhecido como sistema baseado em conhecimento. software firmware programa implantado em um chip. Solaris sistema operacional para servidores de rede. spywares vrus espies que copiam dados ou senhas e os enviam para um 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

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). RGB sigla para Red, Green e Blue ou vermelho, verde e azul que determina

uma tabela de cores no padro RGB.


rodar executar algum programa.

ROM sigla para Read-Only Memory, que 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. roteadores equipamentos que fazem interconexo com vrias redes. roteamento algoritmo que analisa o trfego de rede entre os pontos que esto

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-

S
298

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-

SGBDRs (Sistemas Gerenciadores de Bancos de Dados Relacionais).

tro do SGBD.

SSH (Secure Shell) protocolo que permite conexes seguras entre mquinas Linux. stored procedure (procedimento armazenado) conjunto de comandos SQL

service packs pacotes de atualizaes. servio a maioria das atividades executadas pelo sistema operacional, ou seja,

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-

tuplas linhas de uma tabela. Ubuntu sistema operacional baseado em Linux, desenvolvido de forma cola-

borativa pelos internautas.

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.

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-

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.

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)

template modelo. TextBox (caixa de texto) componente responsvel por receber as informaes do usurio e tambm o item mais comum, pois a maioria das entradas de dados realizada por ele. threads tpicos, ou divises dos processos, que os sistemas operacionais mo-

dernos utilizam para melhorar seu desempenho.

linguagem dedicada especificao, visualizao, construo e documentao que usa notao grfica para modelar softwares.
unidade central de processamento o termo refere-se ao microprocessador, e no ao gabinete como um todo, como muitas pessoas imaginam. Como seu prprio nome diz, sua funo processar as instrues enviadas. O processador est para o computador assim como crebro est para o ser humano. URL (Uniform Resource Locator ou localizador de recurso universal) endere-

TI sigla para Tecnologia da Informao. 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

o de um recurso disponvel em uma rede.

do sistema, alm dos processos em execuo e dos dados de PID, usurio etc.

USB sigla significa Universal Serial Bus e se refere a uma tecnologia que veio

pamentos empregados e a maneira como os dados iro trafegar dentro da rede.


tradutor utilitrio que converte o cdigo desenvolvido em uma linguagem de

topologia de redes modo como os computadores esto ligados entre si, os equi-

alto nvel (entendida mais facilmente pelo programador) em uma linguagem de mquina (entendida mais facilmente pelo computador).

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.

sui vrios dados, acessados por meio de uma posio relativa, seguindo a mesma regra da concepo e atribuio das variveis.
VGA sigla para Video Graphic Array ou vdeo de grficos vetorizados.

vetor definido tambm como matriz unidimensional, uma varivel que pos-

trilha zero primeira trilha do sistema de arquivos do HD em que o boot est gravado. trojans nome em ingls dado a um vrus que evoca a histria grega do Cavalo

de Troia, ou spywares.

VNC (Virtual Network Computing ou computao em rede virtual) tecnologia que possibilita acesso remoto de um computador a outro com interface grfica.

300

301

InFoRmtICa

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)

W3C (World Wide Web Consortium ou consrcio da rede mundial de computadores) fundado em 1994, o W3C formado por empresas de tecnologia de

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.

MS-DOS com uma interface grfica. H diversas verses Windows 95, 98, XP, Vista, NT, 2000, 2003, 2008.

Windows ou Microsoft Windows sistema operacional surgido da juno do

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

x Z

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.