106026095 informatica programacao de computadores etec

154
Habilitação técnica em Programação d 4

Upload: michele-oliveira

Post on 11-Aug-2015

84 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 106026095 Informatica Programacao de Computadores Etec

Info

rmát

ica

Hab

ilita

ção

técn

ica

emH

abili

taçã

o té

cnic

a em

Info

rmát

ica

Hab

ilita

ção

técn

ica

em

Info

rmát

ica

Programação Programação de Computadoresde Computadores4

Page 2: 106026095 Informatica Programacao de Computadores Etec
Page 3: 106026095 Informatica Programacao de Computadores Etec

Volume 4Informática

Page 4: 106026095 Informatica Programacao de Computadores Etec

Programação de computadores

Ralfe Della Croce Filho Carlos Eduardo Ribeiro

São Paulo2010

Informática

Page 5: 106026095 Informatica Programacao de Computadores Etec

Dados Internacionais de Catalogação na Publicação (CIP)

D357

Della Croce Filho, Ralfe Informática, programação de computadores / Ralfe Della Croce Filho, Carlos Eduardo Ribeiro ; revisor Sérgio Furgeri ; coordenador Luis Eduardo Fernandes Gonzalez. -- São Paulo : Fundação Padre Anchieta, 2010

(Manual de Informática Centro Paula Souza, v. 4)

ISBN 978-85-61143-46-6

1. Sistemas operacionais (Computadores) 2. Softwares de aplicaçãoI. Ribeiro, Carlos Eduardo II. Furgeri, Sérgio, revisor III. Gonzalez, Luis Eduardo Fernandes, coord. IV. Título

CDD 005.43

Vice-Diretor SuperintendenteCésar SilvaChefe de Gabinete da SuperintendênciaElenice Belmonte R. de CastroCoordenadora da Pós-Graduação, Extensão e PesquisaHelena Gemignani Peterossi Coordenador do Ensino Superior de GraduaçãoAngelo Luiz Cortelazzo Coordenador de Ensino Médio e TécnicoAlmério Melquíades de Araújo Coordenador de Formação Inicial e Educação ContinuadaCelso Antonio Gaiote Coordenador de InfraestruturaRubens Goldman Coordenador de Gestão Administrativa e FinanceiraArmando Natal Maurício Coordenador de Recursos HumanosElio Lourenço BolzaniAssessora de Avaliação InstitucionalRoberta FroncilloAssessora de ComunicaçãoGleise Santa Clara Procurador Jurídico ChefeBenedito Libério Bergamo

GovernaDor José Serra

vICe-GovernaDor

Alberto Goldman

SeCretárIo De DeSenvolvImento Geraldo Alckmin

Presidente do Conselho DeliberativoYolanda SilvestreDiretora SuperintendenteLaura Laganá

núcleo Cultura educaçãoCoordenador: Fernando José de AlmeidaGerente: Monica Gardelli Franco

Equipe de autoria Centro Paula Souza Coordenação geral: Ivone Marchi Lainetti RamosCoordenação da série Informática: Luis Eduardo Fernandes GonzalezAutores: Carlos Eduardo Ribeiro, Evaldo Fernandes Réu Júnior, Gustavo Dibbern Piva, João Paulo Lemos Escola, Luciene Cavalcanti Rodrigues, Ralfe Della Croce Filho, Wilson José de OliveiraRevisão técnica: Anderson Wilker Sanfins, Luis Claudinei de Moraes, Humberto Celeste Innarelli, Sérgio Furgeri

equipe de edição

Coordenação geral

Alfredo NastariCoordenação editorial

Mirian IbañezConsultor técnico

Victor Emmanuel J. S. Vicente

PresidentePaulo Markun

vice-PresidenteFernando José de Almeida

Edição de texto: Marlene JaggiEditores assistentes: Celia Demarchi e Wagner Donizeti RoqueSecretário editorial: Antonio MelloRevisores: Antonio Carlos Marques, Fabiana Lopes Bernardino, José Batista de Carvalho, Lieka Felso e Miguel FacchiniDireção de arte: Deise BitinasEdição de arte: Ana OnofriEditoras assistentes: Nane Carvalho, Nicéia Cecilia Lombardi e Roberta MoreiraAssistentes: Ana Silvia Carvalho, Claudia Camargo e Felipe LamasIlustrações: Carlos GrilloPesquisa iconográfica: Completo Iconografia, Maria Magalhães e Priscila Garofalo Fotografia: Carlos Piratininga, Eduardo Pozella (fotógrafos) e Daniela Müller (produtora)Tratamento de imagens: Sidnei Testa

Impresso em Vitopaper 76g, papel sintético de plástico reciclado, da Vitopel, pela Gráfica Ideal.

Page 6: 106026095 Informatica Programacao de Computadores Etec

3.3. Formatação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

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

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

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

3.7. Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

3.8. Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

3.9. Formulários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

3.10. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89

Capítulo 4lógica de programação aplicada à linguagem Java 4.1. A plataforma de desenvolvimento . . . . . . . . . . . . . . . . . . . . . 96

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

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

4.1.1.2. API (Application Programming

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

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

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

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

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

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

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

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

Capítulo 1lógica de programação 1.1. Fluxograma e pseudocódigo . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

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

1.3. Constantes e variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.4. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.5. Comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

1.6. Vetor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

1.7. Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

1.8. Programação modular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Capítulo 2estrutura de dados 2.1. Lista encadeada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

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

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

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

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

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

Capítulo 3Criação de páginas Web 3.1. Identificação do documento . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

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

Capa: Luiz Felipe do Nascimento, aluno de uma Etec do Centro Paula Souza.Foto: Eduardo PozellaEdição: Deise Bitinas

21

49

57

93

Início

Fim

nome como caractereidade como inteiro

salário como fl utuante

nome ß “Joãozinho”idade ß 15

salário ß 1500

nomeSetters

apres

entar

Pesso

a()

Getters

endereco

telefone

Sumário

Page 7: 106026095 Informatica Programacao de Computadores Etec

4.5.6.1.1. Método get . . . . . . . . . . . . . . . . . . 114

4.5.6.1.2. Método set . . . . . . . . . . . . . . . . . . 115

4.5.7. Representação do encapsulamento

em objeto do tipo Pessoa . . . . . . . . . . . . . . . . . . . . . . 115

4.5.8. Visão geral da classe

Pessoa e sua estrutura . . . . . . . . . . . . . . . . . . . . . . . . . 116

4.6. Entrada e saída de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

4.6.1. Declaração import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

4.6.2. Apresentação de dados (saída) . . . . . . . . . . . . . . . . . 117

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

4.7. Assinatura de métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120

4.7.1. Retorno de valor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120

4.7.2. Passagem de parâmetro . . . . . . . . . . . . . . . . . . . . . . . . 121

4.7.3. Retorno de valor

e passagem de parâmetro . . . . . . . . . . . . . . . . . . . . . . 121

4.8. Estruturas e recursos da linguagem Java . . . . . . . . . . . . . .122

4.8.1. Palavras reservadas do Java . . . . . . . . . . . . . . . . . . . .122

4.8.2. Tipos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123

4.8.3. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

4.8.4. Variáveis e constantes . . . . . . . . . . . . . . . . . . . . . . . . . .125

4.8.5. Conversões de tipos de dados . . . . . . . . . . . . . . . . .126

4.8.5.1. Conversão . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126

4.8.5.2. Cast (matriz) . . . . . . . . . . . . . . . . . . . . . . . . . . 127

4.8.5.3. Promoção . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128

4.2. Origem da orientação a objetos . . . . . . . . . . . . . . . . . . . . . .100

4.2.1. Abstração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

4.3. UML (Unified Modeling Language) . . . . . . . . . . . . . . . . . . . . 101

4.4. Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102

4.5. Orientação 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. Métodos . . . . . . . . . . . . . . . . . . . . . .105

4.5.1.1.3. Detalhando o

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

4.5.1.1.4. Codificação da

classe Pessoa . . . . . . . . . . . . . . . . .106

4.5.1.1.5. Comentários . . . . . . . . . . . . . . . . .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. Métodos construtores . . . . . . . . . . . . . . . . . . . . . . . . . 112

4.5.4. Garbage collector (coletor de lixo) . . . . . . . . . . . . 113

4.5.5. O comando this . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

4.5.6. Encapsulamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

4.5.6.1. Métodos de acesso . . . . . . . . . . . . . . . . . . . . 114

4.5.1. Componentes elementares

4.5.1.1. Classes

4.5.1.1.1. Atributos

4.5.1.1.2. Métodos

4.5.1.1.3. Detalhando o

4.5.1.1.4. Codificação da

4.5.1.1.5. Comentários

4.5.1.2. Objetos

4.5.2. Modificadores de acesso

4.5.2.1. Private

4.5.2.2. Public

4.5.2.3. Protected

4.5.3. Métodos construtores

4.5.4. Garbage collector (coletor de lixo)

Sumário

Page 8: 106026095 Informatica Programacao de Computadores Etec

Throw

able

Excep

tion

Runtim

eExc

eptio

n

ArrayIn

dexO

utOfB

ound

sExc

eptio

n

Input

Mismatc

hExc

eptio

n

ClassC

astE

xcep

tion

NullPoin

terE

xcep

tion

NullPoin

terE

xcep

tion

IOExc

eptio

n

Threa

dDea

th

AWTErro

r

Error

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

4.11. Interfaces gráficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156

4.11.1. AWT (Abstract Window Toolkit) . . . . . . . . . . . . .156

4.11.2. Interfaces listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

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

4.12. Tratamento de exceções . . . . . . . . . . . . . . . . . . . . . . . . . . . . .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. Conexão com banco de dados . . . . . . . . . . . . . . . . . . . . . . .172

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

4.13.2. Implementação do acesso a dados . . . . . . . . . . . . 174

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

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

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

4.13.3. Inclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

4.13.4. Alteração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

4.13.5. Exclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

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

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

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

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

4.8.6.2. Switch-case . . . . . . . . . . . . . . . . . . . . . . . . . . . .130

4.8.7. Laços de repetição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130

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

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

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

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

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

4.8.8.2. Bidimensional (Matrizes) . . . . . . . . . . . . . . 133

4.8.9. Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136

4.8.9.1. ArrayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136

4.9. Orientação a objetos (2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140

4.9.1. Herança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140

4.9.2. Sobrecarga de método (overload) . . . . . . . . . . . . .142

4.9.3. Sobrescrita de método (override). . . . . . . . . . . . . .145

4.9.4. Classes e métodos abstratos . . . . . . . . . . . . . . . . . . . 147

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

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

4.9.6.1. De métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

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

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

4.10. Padrões de desenvolvimento de sistemas . . . . . . . . . . .154

4.10.1. Programação em três camadas . . . . . . . . . . . . . . . .154

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

0 1 2 3 4

matrizInteiros

12

4

32

8

17

1

36

67

6

62

74

23

47

25

41

9

49

85

3

0

1

2

3

4

índices

índices

nome

valores

Sumário

Page 9: 106026095 Informatica Programacao de Computadores Etec

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

6.3.5. Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . .204

6.3.6. Conversões C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204

6.3.7. Parse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204

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

6.4. Estrutura de decisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205

6.4.1. Condição verdadeiro – if . . . . . . . . . . . . . . . . . . . . . . .205

6.4.2. Condição verdadeiro ou falso – if…else . . . . . . .205

6.4.3. Condições múltiplas –

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

6.4.4. Múltiplos testes – Switch() . . . . . . . . . . . . . . . . . . . .206

6.5. Estruturas de repetição usadas na linguagem . . . . . . . .207

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

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

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

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

6.6. Tratamento de erros / exceções . . . . . . . . . . . . . . . . . . . . . .210

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

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

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

6.9. Windows Form

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

6.9.1. Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

6.9.2. Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

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

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

Capítulo 5visual Studio 2008 5.1. .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .186

5.1.1. Máquina virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187

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

5.2. Soluções 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 aplicação . . . . . . . . . . . . . . . . . . . . . . . . .194

5.2.7. Identificação de erros . . . . . . . . . . . . . . . . . . . . . . . . . .195

Capítulo 6C Sharp 6.1. Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198

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

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

6.2. Tipos de dados e variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 200

6.2.1. Alocação de memória . . . . . . . . . . . . . . . . . . . . . . . . . .201

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

6.3.1. Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . . .202

6.3.2. Operadores relacionais . . . . . . . . . . . . . . . . . . . . . . . .202

6.3.3. Operadores aritméticos

de atribuição reduzida . . . . . . . . . . . . . . . . . . . . . . . . . . .202

185

197

Sumário

// imprime os dados do veículo e combustivél Console.WriteLine(“Veículo: “ + objCarro.marca + marcha + “ marchas”); Console.WriteLine(“Combustível: “

// inicia a movimentação do carro com velocidade 5 objCarro.movimentar(5);

// consulta a velocidade do veículo velocidade = objCarro.consultar();

// visualiza a velocidade do veículo Console.WriteLine(“Velocidade Atual:” Console.ReadKey();

// aumenta a velocidade do veículo objCarro.movimentar(5); Console.WriteLine(“Velocidade Atual:” Console.ReadKey();

// começa a parar o carro // a primeira chamada diminui em 1 unidade a velocidade objCarro.parar(); velocidade = objCarro.consultar(); Console.WriteLine(“Velocidade Atual:” Console.ReadKey(); }

Page 10: 106026095 Informatica Programacao de Computadores Etec

)

Console.ReadKey()

End Sub

Sub Main()

Dim x As Integer = 3

If x = 1 If x = 1 If

Th en

Console.WriteLine(“A variável X é UM”)

ElseIf x = 2 ElseIf x = 2 ElseIf

Th en

Console.WriteLine(“A variável X é DOIS”)

ElseIf x = 3 ElseIf x = 3 ElseIf

Th en

Console.WriteLine(“A variável X é TRÊS”)

Else

Console.WriteLine(“Qualquer outro valor”)

End IfEnd IfEnd

Console.ReadKey()

End Sub

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

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

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

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

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

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

Capítulo 7visual Basic.net 7.1. Programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226

7.1.1. Console Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226

7.1.2. Windows Form Application . . . . . . . . . . . . . . . . . . . .226

7.2. Tipos de dados e variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . .227

7.2.1. Atribuição – DIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228

7.2.2. Variáveis globais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .228

7.3. Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229

7.3.1. Operadores aritméticos . . . . . . . . . . . . . . . . . . . . . . . .229

7.3.2. Operadores relacionais . . . . . . . . . . . . . . . . . . . . . . . . .229

7.3.3. Operadores aritméticos de atribuição reduzida . .230

7.3.4. Operadores lógicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .230

7.3.5. Conversões em VB.NET . . . . . . . . . . . . . . . . . . . . . . .230

7.4. Estrutura de decisão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231

7.4.1. Condição Verdadeiro – if . . . . . . . . . . . . . . . . . . . . . . .231

7.4.2. Condição Verdadeiro ou Falso – if…else . . . . . .231

225

Sumário 7.4.3. Condições Múltiplas

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

7.4.4. Múltiplos testes – Select Case() . . . . . . . . . . . . . . . .232

7.5. Estrutura de repetição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .232

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

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

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

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

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

7.6. Tratamento de erros e exceções . . . . . . . . . . . . . . . . . . . . .234

7.7. Vetores e matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .235

7.8. Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236

7.9. Windows form application – componentes . . . . . . . . . . .236

7.9.1. Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236

7.9.2. Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .236

7.9.3. TextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237

7.9.4. Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237

7.9.5. ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237

7.9.6. ListBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238

7.9.7. CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238

7.9.8. RadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239

7.9.8.1. Agrupamento . . . . . . . . . . . . . . . . . . . . . . . . . .240

7.10. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

Page 11: 106026095 Informatica Programacao de Computadores Etec

CaPÍtUlo 9aDo.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. Métodos de conexão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266

9.4.1. Objeto Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266

9.4.2. Exemplo genérico de conexão . . . . . . . . . . . . . . . . .267

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

9.4.3. Conexão 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 código . . . . . . . . . . . . . . . . . . . . .270

9.4.3.4. Utilizando uma DataTable . . . . . . . . . . . . . 271

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

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

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

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

Considerações finais

referências bibliográficas

Glossário

Capítulo 8aSP.net 8.1. Aplicação ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244

8.1.2. Web Form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245

8.1.3. Projeto Web Application (Aplicação Web) . . 245

8.1.4. Ciclo de vida da Aplicação . . . . . . . . . . . . . . . . . . . . . .246

8.1.5. Executando uma Application Service

(Serviço de Aplicação) . . . . . . . . . . . . . . . . . . . . . . . . . .246

8.1.6. Escrevendo a Aplicação . . . . . . . . . . . . . . . . . . . . . . . . .247

8.1.7. Estruturando uma página ASP.NET . . . . . . . . . . . .248

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

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

8.1.7.3. Validation Server Controls . . . . . . . . . . . .249

8.2. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249

8.3. HTML Server Controls e Web Server Controls . . . . .250

8.3.1. HTML Server Controls . . . . . . . . . . . . . . . . . . . . . . . . .250

8.3.2. Web Server Controls . . . . . . . . . . . . . . . . . . . . . . . . . .251

8.4. Sessões em ASP.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252

8.4.1. Recuperando sessão em outra página

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

8.4.2. Recuperando sessão em outra página

automaticamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .256

8.5. Dados via URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .257

243 261

282

283

285

Sumário

8.1.2. Web Form

8.1.3. Projeto Web Application (Aplicação Web)

8.1.4. Ciclo de vida da Aplicação

8.1.5. Executando uma Application Service

8.1.6. Escrevendo a Aplicação

8.1.7. Estruturando uma página ASP.NET

8.1.7.1. HTML Server Controls

8.1.7.2. Web Server Controls

8.1.7.3. Validation Server Controls

8.2. Eventos

Page 12: 106026095 Informatica Programacao de Computadores Etec

Capítulo 1

• Fluxograma e pseudocódigo

• Tipos de dados

• Constantes e variáveis

• Operadores

• Comandos

• Vetor

• Matriz

• Programação modular

Lógica de programação

Page 13: 106026095 Informatica Programacao de Computadores Etec

Alógicacomputacionaléumdosprimeirospassosparaquempretende entrarnomundoda computação.Normalmente,nãopercebemossuaaplicaçãopararesolverdiferentesníveis

deproblemasnemsuarelaçãocomoutrasáreasdaciência.Issoporque,em geral, a lógica computacional está associada à lógica matemática(FORBELONE, 2005). É um recurso que permite a criação de alter-nativas viáveis e tecnicamente corretas, eficientes e rápidas. Antes deresolverumproblema,noentanto,temosdesaberinterpretá-lo.Assim,evitam-seresultadosindesejáveisoudesviosdepercurso,damesmama-neiraquesurgeaoportunidadedeeliminareventuaisdúvidas,definin-doomelhoralgoritmo,quepodeseropseudocódigoouof luxograma.

Amaioriadasatividadesqueexecutamoséresultadodeumasequênciadepas-sos lógicos. Por exemplo, amarrar o cadarço de um tênis, abrir uma porta,trocarumalâmpadaoufazeraqueledeliciosobolodechocolate.Asequênciadasetapas,oumelhor,dasoperaçõesaexecutar,édeterminadapeloalgoritmodeformalógica.Umamaneiramaissimplesdedizerissoéqueasucessãodeaçõesfaztodoosentido.Usandoomesmoexemplodobolo,ocomeçodetudoéreunirosingredienteseusá-losnasequênciacerta.Éassimtambémcomasoperaçõesdecálculos,representadaspelopseudocódigoapartirdecomandosno formatode texto (exatamente comouma receita)oupelofluxogramadeformagráfica.Eofatodeserconstituídoporsímbolosgeométricosfacilitaoprocessodevisualizaçãodasoperações.

1.1. Fluxograma e pseudocódigoParaentendermelhoroconceito,vamoselaborar,resumidamente,umal-goritmo que represente os passos necessários para que alguém tome umrefrigeranteemumalata:1.pegarorecipiente;2.abriratampa;3.tomaroconteúdo(vejaquadroAlgorítimo com os passos necessários da latinha).Apartir dessamesma situação, épossível inserirmais operações emnossoalgoritmo,deixando-omaisdetalhado(observeoquadroAlgoritmo deta-lhado da latinha).

1 - Pegar o recipiente.

1 - Pegar o refrigerante com a mão esquerda.

4 Eliminar o lacre.

7 - Ingerir o líquido. 8 - Voltar a lata na posição original.

3 - Remover o lacre.

6 - Inclinar a lata.

2 - Abrir a tampa. 3 - Tomar o conteúdo.

2 - Segurar o lacre com a mão direita.

5 Posicionar a lata corretamente na boca.

QuadroAlgoritmo detalhado da latinha.

QuadroAlgoritmo com os passos necessários da latinha.

InFoRmátICa 4

22

CaPítulo 1

23

Page 14: 106026095 Informatica Programacao de Computadores Etec

Entreosdiferentessímbolosqueconstituemaestruturadeumfluxograma,osmaiscomunsestãoincluídosnatabela1.

Aproveitandoomesmoexemplodalatinhaderefrigerante,vamosreescre-verospassoslógicospormeiodeumf luxograma(figura1).

Figura 1Fluxograma dos passos lógicos.

Programanome_do_programa

Declare

{declaração de variáveis}

Início

{instruções e comandos}

Fim Comandos e instruções ordenados de forma lógica

Declarações de variáveis

Título do Algoritmo

Existemmuitossoftwaresdestinadosàconstruçãodefluxogramas,masépossí-velfazê-lostambémcomousodoMicrosoftWord®.OsexemplosdessematerialforamelaboradospeloMicrosoftVisio®.

PseudocódigoOsalgoritmossãodesenvolvidosemumalinguagemdenominadapseudocó-digo ou, como preferem alguns autores, português estruturado. Podem sercriadossemoformalismodaslinguagensdeprogramação,masobedecemaumaregrabásicadeestruturação:cabeçalho,declaraçãoeinstruções,confor-meoseguintemodelo:

Início FimInícioPegar a latinha

Remover olacre

Eliminar olacre

Abrir a tampa

Segurar o lacre

Posicionar alata na boca

Voltar a latana posição

originalTomar o refrigerante

Pegar o refrigerante

Inclinar a lata

Ingerir o líquido

tabela 1

NOME = TERMINALFUNÇÃO = Indica INÍCIO ou FIM de um processamento

NOME = PROCESSAMENTOFUNÇÃO = Defi nição de variáveis ou processamentos em geral (Cálculos)

NOME = ENTRADA MANUALFUNÇÃO = Entrada de dados via teclado, idêntico ao comando LEIA

NOME = DISPLAYFUNÇÃO = Saída de Dados, mostra um texto e/ou variável na tela, idêntico ao comando ESCREVA

NOME = DOCUMENTOFUNÇÃO = Saída de Dados, envia um texto e/ou variável para a impressora, usado em relatórios. Idêntico ao comando IMPRIMA

NOME = DECISÃOFUNÇÃO = Decisão a ser tomada, retornando verdadeiro ou falso, idêntico ao comando SE

NOME = CONECTORFUNÇÃO = Desvia o fl uxo para uma outra página, sendo interligados pelo conector

NOME = ENTRADA/SAÍDAFUNÇÃO = Leitura de gravação de arquivos

NOME = SETAFUNÇÃO = Indica a direção do fl uxo

NOME = LOOPFUNÇÃO = Realiza o controle de loop

SIMBOLOGIA DO FLUXOGRAMA

SÍMBOLO NOME E FUNÇÃO Início

InFoRmátICa 4

24

CaPítulo 1

25

Page 15: 106026095 Informatica Programacao de Computadores Etec

desuavariávelouconstanteenãoutilizeespaçoembrancooucaracteresespeciais,comexceçãodounderline(_).Exemplos:

nome ß “Joãozinho”

idade ß 0

minha_idade ß 15

pag_fi nal ß “R$ 1.479,00”

Umalgoritmodevetercomocaracterísticaumnúmerofinitodepassos,des-critosdeformaprecisaequepossamserexecutadosemumdeterminadotem-po. Pode permitir zero ou mais entradas de dados e gerar saídas de dadosrefinados.Paraconstruirumalgoritmo,éprecisousar informaçõesclaras eobjetivas,geralmentecompostasdeumverbooudeumafrasedireta.

1.2. tipos de dadosAmanipulaçãodedadosemumalgoritmo–ouatémesmonaslinguagensdeprogramação–sóépossívelcombaseemalgumasregrasfundamentaispara a definição dos tipos de dados. É preciso diferenciar um dado comnúmerosououtrostiposdecaracteres.

• numéricos inteirosEssetipodedadoérepresentadopornúmerosnãofracionadospositivosoune-gativos,como:10,50,-56,-1.000etc.

• numéricos fl utuantes Sãorepresentadospornúmerosfracionadospositivosounegativos,porexemplo:10.5,-45.78,178.67etc.

• Caracteres ou literaisÉomaiorconjuntodedados.Sãorepresentadosporletras,números,sím-boloseespaçoembranco,sempreentreaspas.Exemplo:“cadeira”,“100”,“R$10.00”,“11h00”etc.

1.3. Constantes e variáveisAsconstantessãoexpressõesquerecebemumvalorqualquerquenãoserámodificadodurante oprocessode execuçãodo algoritmo. Já as variáveisterãoumvalorpassíveldemodificaçãoaqualquermomento.UmexemplodeconstanteéovalordePi(3,14).Eumavariávelquetodosconhecemosbempodeseratemperaturadodia,registradadehoraemhora.

• atribuição e declaraçãoAtribuir um valor qualquer para uma constante ou uma variável requero uso do sinal de “ß” ou “=”. Isso quer dizer que o valor na frente do si-nal será armazenado no elemento anterior ao sinal de atribuição. Veja:

nome ß “Joãozinho” idade ß 10 pi ß 3.14

Independentementedotipodedadoadotado–caracteresvariados(“Joãozinho”),númerosinteiros(10)ouflutuantes(3.14)–,oprocessodeatribuiçãoéomesmo.Masadeclaraçãorequercuidado.Porisso,procureescolheronomedavariáveldeacordocomotipodedadoqueserárecepcionado,iniciesemprecomletrasonome

1.4. operadoresOsoperadoressãoutilizadospelospseudocódigos.Omesmoacontececomaslinguagensdeprogramação,cuja funçãoé realizarasdiferentesoperaçõesdearitméticaedelógicaemumambientecomputacional.

• aritméticosEsse grupo tem como responsabilidade realizar as operações aritméticas(tabela 2) de um pseudocódigo. As operações serão realizadas de acordocom a prioridade, ou seja, parênteses, potência, multiplicação, divisão e,porúltimo,somaesubtração.

Programa variáveis

Declare

nome como caractere

idade como inteiro

salário como fl utuante

Início

nomeß“Joãozinho”

idadeß15

salárioß1.500,00

Fim

Figura 2Estrutura de pseudocódigo.

Início

Fim

nome como caractereidade como inteiro

salário como fl utuante

nome ß “Joãozinho”idade ß 15

salário ß 1500

Nopseudocódigo(figura2),asconstantesouvariáveisdeverãoestarrelaciona-dascomosseusrespectivostiposdedados:

InFoRmátICa 4

26

CaPítulo 1

27

Page 16: 106026095 Informatica Programacao de Computadores Etec

Paracompreenderoprocessológicodedados,observeastabelasabaixo,mos-trandoosvaloresoriginais eos resultadosadquiridosapartirdosoperadoreslógicos.EssetipodequadroéconhecidocomoTabelaVerdade(tabela5).

• RelacionaisOsoperadoresrelacionais(tabela3)permitemaexecuçãodetestesentrecons-tantesevariáveis.

• lógicos e tabela Verdade

Osoperadoreslógicos(tabela4)executamfunçõesespeciaisdentrodospseudo-códigos,quandorelacionadosaostestescondicionaisouaoutrosvaloreslógicos.

1.5. Comandos Umaaçãoparaocomputadorédefinidacomumcomandoqueexecutadeter-minadaoperação(mostrarosdadoserealizarumcálculo,porexemplo).Essasaçõesserãorepresentadasnospseudocódigospormeiodeexpressõespredefini-dasnalógicacomputacional.

• Comando Escreva()Éutilizadoparamostrarasaídadedados(figura3),ouseja,quandoumamen-sagemouresultadodeumaoperaçãodeverá serexibidaaousuário.Paraquesejapossívelavisualizaçãododado,algunscuidadossãofundamentais:asex-pressõesdevemaparecerentreaspas,excetoasvariáveisevalores (inteirosouflutuantes).

Escreva(“bom dia”)

valor ß 10

Escreva(valor)

Escreva(56)

Figura 3 Comando Escreva().

Simulação dos operadores “E” e “OU”

tabela 2

tabela 3

tabela 5

tabela 4

Mensagem ouvariável

OPERADORES ARITMÉTICOS + adição de números fl utuantes ou inteiros

+ Concatenação de valores literais (caracteres)

- Subtração de números fl utuantes ou inteiros

* multiplicação de números fl utuantes ou inteiros

/ Divisão de números fl utuantes e inteiros

** Potência de números fl utuantes e inteiros

NÃO // NOT Valor Entrada 01 Resultado Verdadeiro Falso Falso Verdadeiro

E // AND Valor Entrada 01 Valor Entrada 02 Resultado Verdadeiro Verdadeiro Verdadeiro Verdadeiro Falso Falso Falso Verdadeiro Falso Falso Falso Falso

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

OPERADORES RELACIONAIS = Igual

<> Diferente

> maior

< menor

<= menor igual

>= maior igual

OPERADORES LÓGICOS

não / not Inverte o resultado de uma expressão

E / and Retorna verdadeiro caso todas as

condições retornem verdadeiro

ou / or Retorna verdadeiro quando uma das condições retorna verdadeiro

chave 1 chave 2

Lógica E lâmpada

bateria

lógica ou

InFoRmátICa 4

28

CaPítulo 1

29

Page 17: 106026095 Informatica Programacao de Computadores Etec

• Comando leia()AocontráriodocomandoEscreva(),oLeia()permiteainserçãodedadospelainteraçãocomousuário.Elesserãoarmazenadosemvariáveisdevidamentede-finidas(figura5).

Leia(nome)

Leia(nota1)

Leia(nota2)

Leia(temp)

Aorealizarumaentradadedados,oidealéqueousuáriosejanotificadosobreotipodeinformaçãoquedeveráserinserida.Vejacomo:

Programa exemplo_leia

Declare

nome como caractere

média, nota1, nota2 como fl utuante

Início

Escreva(“calculando a média”)

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 média fi nal é:”)

Escreva(media)

Fim

Opseudocódigoaseguirrepresentaumexemplomaiscompleto,assimcomoofluxograma,nasequência(figura4):

Programa exemplo_escreva

Declare

nome como caractere

média, nota1, nota2 como fl utuante

Inicio

nome ß “Fulaninho”

nota1 ß 10.0

nota2 ß 2.0

media ß (nota1 + nota2)/2

Escreva(“Sua nota fi nal é:”)

Escreva(média)

Fim

Figura 4 Fluxograma Escreva.

Figura 5 Entrada de Dados.

Entrada de dados

Fim

nome ß “Fulaninho”nota1 ß 10.0nota2 ß 2.0

média ß (nota1+nota2)/2

Início

nome como caractere média, nota1, nota2 como

fl utuante

“Sua nota fi nal é”

média

InFoRmátICa 4

30

CaPítulo 1

31

Page 18: 106026095 Informatica Programacao de Computadores Etec

• Estrutura de decisão – Se...Senão...Fim-SePodemosorganizarocomandoSe(),paracriardesvioscondicionaisdeverdadei-rooufalsonomesmoteste(figura8):

Observenafigura6,amesmarepresentação,noformatodefluxograma:

Figura 6 Fluxograma Leia.

• Estrutura de decisão – Se...Fim-SeOsalgoritmos,assimcomoaslinguagensdeprogramação,executamasativi-dadesde forma sequencial.Mas, às vezes,devemosdefinir algunsdesviosdeacordocomascondiçõesestabelecidasnoprocessodeexecuçãodoalgoritmoconformea interferênciadousuário.Paraque issoocorra, épreciso executarocomandoSe(),quepermiterealizardesvioscondicionaiscombaseemtesteslógicos.Aestruturadosalgoritmosécompostaporumtestecondicionaleporumcomandoouconjuntodecomandosaseremexecutadosapartirdesseteste,massomentequandooresultadoforverdadeiro(figura7).

Figura 8 Se...Senão...Fim-Se.

Comoficariaarepetiçãodotestecomavariávelmédia.

Se(media>=7.00)Então

Escreva(“Vocêestáaprovado!!!!”)

Senão

Escreva(“Vocêestáreprovado!!!!”)

Fim-Se

Se(condição)Então

{comando(s)}

Fim-Se

Nopróximoexemplo,paraestabeleceracondiçãovamosutilizarosoperadoreslógicosjávistos.

Se(média>=7.00)Então

Escreva(“Vocêestáaprovado!!!!”)

Fim-Se

Figura 7 Se...Fim-Se.

Se(condição)Então

{comando(s)condiçãoverdadeira}

Senão

{comando(s)condiçãofalsa}

Fim-Se

Sim

SimNão

Início

nome como caractere média, nota1, nota2

como fl utuantenome Fim

nota1“Qual a sua nota 1”

“Calculando a média”

“Qual o seu nome?”

média =(nota1+nota2)/2nota2

“Qual a sua nota 2”

“Sua média fi nal é”

média

InFoRmátICa 4

32

CaPítulo 1

33

Page 19: 106026095 Informatica Programacao de Computadores Etec

• Estrutura de decisão – Selecione Caso...Senão...Fim-Selecione

Emalgunsmomentos,haveránecessidadedetestaramesmavariáveldiversasvezes,comoacontecenomenudeopções.Paraisso,utilizamosocomando“Se-lecioneCaso”daseguinteforma(figura10):

Vamosorganizartodoopseudocódigo,apresentando-o,também,noformatodefluxograma(figura9).

Figura 9 Exemplo de teste.

Programaexemplo_teste

Declare

nomecomocaractere

media,nota1,nota2comoflutuante

Início

Escreva(“calculandoamédia”)

Escreva(“Digiteoseuprimeironome.”)

Leia(nome)

Escreva(“Qualasuanota01?”)

Leia(nota1)

Escreva(“Qualasuanota02?”)

Leia(nota2)

médiaß(nota1+nota2)/2

Escreva(“Suanotafinalé:”)

Escreva(média)

Se(media>=7.00)Então

Escreva(“Aprovado”)

Senão

Escreva(“Reprovado”)

Fim-Se

Escreva(“Fimdeprograma”)

Fim

Selecione Caso{variável}

Casocondição01

{comando(s)}

Casocondição02

{comando(s)}

Casocondição03

{comando(s)}

Senão

{comando(s)}

Fim-Selecione

Figura 10 Selecione Caso.

Sim

Sim

Não

Sim

Não

Fim

nota2

“Aprovado”

“Reprovado”

média >=7.00

Início

nota1 nome

média

“Qual a suanota 02?”

“Qual a suanota 01?”

“Sua médiafi nal é”

“Fim doprograma”

média =(nota1 + nota2)/2

“Qual o seunome?”

“Calculando a média”

nome como caractere média, nota1, nota2

como fl utuante

InFoRmátICa 4

34

CaPítulo 1

35

Page 20: 106026095 Informatica Programacao de Computadores Etec

• Estrutura de repetição – Para...Fim-ParaAlémdosdesviossequenciais,épossívelcriardesviosemloop,ouseja,repetirtrechosdoalgoritmosobredeterminadacondiçãoecontrolaraformacomqueosloopsserãoexecutados.OcomandoPara...Fim-Parapermitequeumavariávelrealizeacontagemdonúmerodeloopsaexecutar,conformeaindicaçãoinicialefinaldessacontagem(figura12),etambémidentifiqueoformatoemqueessatarefaserárealizada.

Éprecisodescobrir,emdeterminadasituação,seousuárioescolheuosnúmeros1,2ou3.Qualqueroutrodiferente,deverágeraramensagem“númeroinváli-do”(figura11):

Figura 11Selecione caso.

Algunsexemplos:

Parax=1Até5Faça Escreva(x)//Serãovisualizadososnúmeros:1,2,3,4e5. Fim-Para

Paranum=3Até6Faça Escreva(num)//Serãovisualizadososnúmeros:3,4,5e6. Fim-Para

Paravlr=0Até10Passo2Faça Escreva(vlr)//Serãovisualizadososnúmeros:0,2,4,6,8e10. Fim-Para

Paracont=3Até0Passo-1Faça Escreva(cont)//Serãovisualizadososnúmeros:3,2,1e0. Fim-Para

Figura 12Para...Fim-Para.

Leia(número)

Selecione Casonúmero

Caso1

Escreva(“Vocêescolheuonúmero01”)

Caso2

Escreva(“Vocêescolheuonúmero02”)

Caso3

Escreva(“Vocêescolheuonúmero03”)

Senão

Escreva(“Númeroinválido”)

Fim-Selecione

Para<variável>=<vlr.inicial>Até<vlr.final>Passo<arg>Faça

{comando(s)}

Fim-Para

Cont = Inicial atéFinal

Comando(s)

Não

Sim

Não

Sim

Não

Sim

030201

“Você escolheu o número 01”

“Você escolheu o número 02”

“Você escolheu o número 03”

“Númeroinválido”

número

InFoRmátICa 4

36

CaPítulo 1

37

Page 21: 106026095 Informatica Programacao de Computadores Etec

• Estrutura de repetição – Repita...até queOcomandoRepitatemamesmafinalidadedocomandoEnquanto,quandooassuntoé funcionalidade.Aúnicadiferençaéa localizaçãodacondiçãodeteste,queocorrenofinaldacadeiadeloop(figura14),garantindoaexecuçãodoscomandosnomínimoumavez.

Repita {comando(s)} Até que(condição)

• Estrutura de repetição – Enquanto...Fim-EnquantoAssimcomoocomandoPara...Fim-Parapermiterealizarloop,ainstruçãoEn-quanto...Fim-Enquantoexecutaomesmoprocesso (figura13).Maséprecisolembrarqueessecomandonãorealizaacontagemautomaticamente.Porisso,énecessárioimplementarumcontadordepassos.

Figura 13 Enquanto...

Fim-Enquanto.

Figura 14 Repita...Fim-Repita.

Vamos repetiros exemplosda instrução Para...Fim-Para,mas agora comocomandoEnquanto.

xß1 Repita Escreva(x)//Serãovisualizadososnúmeros:1,2,3,4e5. xßx+1 Até que(x<=5)

numß3 Repita Escreva(num)//Serãovisualizadososnúmeros:3,4,5e6. numßnum+1 Até que(x<=6)

vlrß0 Repita Escreva(vlr)//Serãovisualizadososnúmeros:0,2,4,6,8e10. vlr=vlr+2 Até que(vlr<=10)

contß3 Repita Escreva(cont)//Serãovisualizadososnúmeros:3,2,1e0. contßcont-1 Até que(cont>=0)

Enquanto(condição)Faça {comando(s)} Fim-Enquanto

xß1 Enquanto(x<=5)Faça Escreva(x)//Serãovisualizadososnúmeros:1,2,3,4e5. xßx+1 Fim-Enquanto

numß3 Enquanto(num<=6)Faça Escreva(num)//Serãovisualizadososnúmeros:3,4,5e6. numßnum+1 Fim-Enquanto

vlrß0 Enquanto(vlr<=10)Faça Escreva(vlr)//Serãovisualizadososnúmeros:0,2,4,6,8e10. vlrßvlr+2 Fim-Enquanto

contß3 Enquanto(cont>=0)Faça Escreva(cont)//Serãovisualizadososnúmeros:3,2,1e0. contßcont-1 Fim-Enquanto

comando(s)

Repita (condição)

Condição

Comando(s)

InFoRmátICa 4

38

CaPítulo 1

39

Page 22: 106026095 Informatica Programacao de Computadores Etec

Programavetores Declare vetcomoconjunto[1..5]deinteiro Início vet[1]ß90 vet[2]ß1 vet[3]ß100 vet[4]ß4-1 vet[5]ß21 Fim

1.6. VetorDefinidotambémcomomatrizunidimensional,umvetor(tabelas6e7)éumavariávelquepossuiváriosdados,acessadospormeiodeumaposiçãorelativa,seguindoamesmaregradaconcepçãoeatribuiçãodasvariáveis.

Noexemploanterior,podemosverificarquecadaelementodeumvetorécarac-terizadoporumaposiçãorelativa.Observandoovetordeletras,teremos:

Posição1àvalorA

Posição5àvalorR

Posição8àvalorQ

Emumpseudocódigo,realizamosadeclaraçãodeumvetordaseguinteforma:

tabela 6 Vetor de Letras.

tabela 7Vetor de Números.

Programavetores Declare vetcomoconjunto[n..n1]de<tipo> Início {comandosoublocodecomandos} Fim

A H M B R J G Q S P

1 2 3 4 5 6 7 8 9 10

10 56 -4 60 2 6 99 3 1 -10

1 2 3 4 5 6 7 8 9 10

Onomedovetorérepresentadopelaexpressão“vet”,cujoconjuntodeinfor-maçõesé identificadopor“n”,posição inicial,e“n1”,posiçãofinal,ouseja,umvetorde10posiçõespoderáserrepresentadocomo[1..10].Eo“tipo”deinformaçãoqueestevetordeveráreceber.

Pararealizaroacessoàposiçãodeumvetor,éprecisoidentificaraposiçãoqueestáentreossinaisde[],logoapósonomedovetor:

Escreva(vet[3])

Leia(vet[2])

• trabalhando com vetorAentradadedadosemumvetorérealizadaporintermédiodeseuidentifica-dor.Paraisso,utiliza-seumcontadorcrescenteoudecrescente,deacordocomanecessidade.Vamoscarregar10informaçõesnuméricasdentrodeumvetor.

vetcomoconjunto[1..10]deinteiro Parai=1Até10Faça Escreva(“Digiteumvalornaposição”,i,“dovetor”) Leia(vet[i]) Fim-Para

Seguindoamesmalógica,podemosrealizaraimpressãodoconteúdodessevetor.

Parai=1Até10Faça Escreva(“Valordaposição:”,i,“dovetoré”,vet[i]) Fim-Para

Vamosreunirosconceitosdeleituraeimpressãonomesmoalgoritmo.

Programavetor_dados Declare vetcomoconjunto[1..10]deinteiro icomointeiro Início Parai=1Até10Faça Escreva(“Digiteumvalornaposição”,i,“dovetor”)

InFoRmátICa 4

40

CaPítulo 1

41

Page 23: 106026095 Informatica Programacao de Computadores Etec

matcomoconjunto[1..5][1..3]deinteiro Início {comandooublocodecomandos} Fim

Leia(vet[i]) Fim-Para ParaI=1Até10Faça Escreva(“Valordaposição:”,i,“dovetoré”,vet[i]) Fim-Para Fim Assimcomoosvetores,paraaatribuiçãodevaloresemumamatriz,devemos

identificaralinhaeacoluna.

Programamatriz Declare matcomoconjunto[1..2][1..2]deinteiro Início mat[1,1]ß19 mat[1,2]ß2 mat[2,1]ß77 mat[2,2]ß16 Fim

Outroexemploparaanalisar:

Programamédia Declare vetorcomoconjunto[1..8]deinteiro soma,médiacomoflutuante ctcomointeiro Início soma=0 Paract=1Até8Faça Escreva(“Digiteumvalornaposição”,ct,“dovetor”) Leia(vetor[ct]) somaßsoma+vetor[ct] Fim-Para médiaßsoma/8----ou----médiaßsoma/ct Escreva(“Amédiafinalé:”,média) Fim

1.7. matrizAmatriz,aocontráriodovetor,émultidimensional.Nessecaso,osdadossãoarmazenadosoulidosdeacordocomarelaçãoentreoseixos,eseuíndiceére-presentadopordoisoumaisvalores.Umamatriz3x2,porexemplo,possuitrêslinhasporduascolunas.Portanto,qualquerreferênciaaosdadosdeveráapontarparaambasasposiçõesdaformamatriz[2,1],indicandoqueainformaçãorefe-renciadaestánalinha2enacoluna1damatriz.Graficamente,tem-se:

Paraimplementação,realizamosadeclaraçãodamatrizdaseguinteforma:

Programamatriz Declare

• trabalhando com matrizAleituraeaimpressãodasmatrizesseguemomesmoesquemadosvetores.Masseránecessárioutilizardoiscontadores:umparaidentificaralinhaeoutro,paracoluna.Vejamosoexemplodeumamatriz2x2.

Programamatriz Declare matrizcomoconjunto[1..2][1..2]deflutuante lin,colcomointeiro Início Paralin=1Até2Faça Paracol=1Até2Faça Escreva(“Linha”,lin,“damatriz”) Escreva(“Coluna”,col,“damatriz”) Escreva(“Qualovalor?”) Leia(matriz[lin,col]) Fim-Para Fim-Para Escreva(“Visualizandoosdadosdamatriz:”) Paralin=1Até2Faça Paracol=1Até2Faça Escreva(“Linha”,lin,“damatriz”) Escreva(“Coluna”,col,“damatriz”) Escreva(“Ovaloré:”) Escreva(matriz[lin,col]) Fim-para Fim-paraFim

1 21 9 20

2 10 63 2 11

matriz[2,1]

matriz 3x2

InFoRmátICa 4

42

CaPítulo 1

43

Page 24: 106026095 Informatica Programacao de Computadores Etec

Programaprocedimento Declare opcomocaractere Procedimentobomdia Escreva(“Bomdia!!!!!”) Fim-procedimento Início Escreva(“Desejavernossamensagem?(S/N)”) Leia(op) Seop=‘S’Ouop=‘s’Então bomdia //chamadaouprocedimento Fim-Se Fim

Outroexemplo:

Programasoma Declare a,b,ccomoconjunto[1..8][1..4]deflutuante ln,clcomointeiro Início Paraln=1Até8Faça Paracl=1Até4Faça Escreva(“DigiteovalorparaaMatrizA:”) Leia(a[ln,cl]) Escreva(“DigiteovalorparaaMatrizB:”) Leia(b[ln,cl]) Escreva(“ValoressomadosparaaMatrizC:”) c[ln,cl]=a[ln,cl]+b[ln,cl] Escreva(c[ln,cl]) Fim-Para Fim-Para Fim

1.8. Programação modularUmadastécnicasbemempregadasparaodesenvolvimentodeprogramaséamodulaçãodepartedocódigo.Issosignificaqueoprogramaprincipaléque-bradoempartesmenores.Ecadaparterepresentaumaunidadefuncional.Essassub-rotinas são identificadas comoprocedimentosou funções.Permitemquepartedocódigosejareaproveitadaemoutrapartedocódigoprincipalou,atémesmo,emprojetosdiferentes,poroutrosprogramadores.

• Procedimento

Umprocedimento,assimcomooprogramaprincipal,éformadoportodaaes-truturalógica(início-fim,variáveiseinstruções).Podeserutilizadoemqualquerpartedeumprogramaquesejareferenciado.Dessaforma,aoseracionado,oprocedimentoassumeocontroledaexecução.E,quandoéfinalizado,ocontroleretornaaoprogramaprincipal.

Procedimentonome-do-procedimento(parâmetro:tipo) Declare{variáveis} {comandooublocodecomando Fim-Procedimento

Onome-do-procedimentofazaidentificaçãodoprograma–eéporessaex-pressãoqueeleseráreferenciado.Logoapósessaetapa,encontramososparâ-metroseadefiniçãodeseutipo,osquaisrepresentamvariáveisquereceberãovaloresnomomentodachamada.Assimcomoocódigoprincipal,oproce-dimentopossuiasvariáveis locaisdemanipulaçãodedadoseoscomandosnecessáriosparaasuaexecução.

• Variáveis locais ou globaisAsvariáveislocaissãoconsideradasapenasemumasub-rotina(procedimentooufunção).Dessaforma,sãodesconhecidaspeloalgoritmoprincipal,aocontrá-riodasglobais,quesãoconsideradasportodooalgoritmo.

Programatipos_variáveis Declare a,bcomoINTEIRO//sãovariáveisdotipoglobal Procedimentoteste Declare x,ycomointeiro//sãovariáveislocais //estaáreareconhece(a),(b),(x)e(y) Fim-procedimento Início //estaáreareconhece(a)e(b). Fim

Oquadroemseguidamostraocampodevisualizaçõesdasvariáveis,conformeopseudocódigoapresentadoanteriormente.

Acompanheumexemploparaocálculodaáreadoquadradousandooprocedimento.

Programa tipos_variaveis

Visualização das variáveis

(a) e (b)

Procedimento teste

Visualização das variáveis (a),(b),(x) e (y)

InFoRmátICa 4

44

CaPítulo 1

45

Page 25: 106026095 Informatica Programacao de Computadores Etec

Programaquadrado Declare opcomocaracter ladocomointeiro

Procedimentoquadrado (ld como inteiro) Declare areacomointeiro áreaßld*ld Escreva(“Aáreadoquadradoé:”,area) Fim-Procedimento Início Escreva(“Gostariadesaberaáreadeumquadrado(S/N)?”) Leia(op) Seop=‘S’Ouop=‘s’Então Escreva(“Digiteovalor:”) Leia(lado) quadrado(lado)

Fim-Se Fim

• FunçãoUmafunçãotemasmesmascaracterísticasestruturaisdeumprocedimento,noquedizrespeitoafatorescomofuncionalidade,visualizaçãodevariáveisecha-madas.Masasuaprincipalvantageméapossibilidadederetornodevaloresemtemporeal.Issoquerdizerque,quandochamamosdeterminadafunção,pode-mosrecebervaloresemtemporeal,armazenandooresultadoemumavariável.

Programaquadrado Declare opcomocaractere Procedimentoquadrado Declare lado,áreacomointeiro Escreva(“Digiteumnúmerointeiro:”) Leia(lado) áreaßlado*lado Escreva(“Aáreadoquadradoé:”,área) Fim-Procedimento Início Escreva(“Gostariadesaberaáreadeumquadrado(S/N)?”)

Leia(op) Seop=‘S’Ouop=‘s’Então quadrado Fim-Se Fim

• Passagem de parâmetroApassagemdeparâmetrosporvaloréutilizadaparaqueassub-rotinaspossamreceberinformaçõeserealizarqualquertipodemanipulaçãoforadopseudocó-digoprincipal.

Funçãonome-da-função( parâmetros:tipo):<tipo-de-retorno> Declare{variáveis} {comandooublocodecomandos} Fim-Função

Diferentementedoprocedimento,éprecisofazeraidentificaçãodotipodevaloraserretornado.

Programaquadrado Declare opcomocaractere ladocomointeiro

Funçãoquadrado (ld como inteiro): inteiro Declare áreacomointeiro áreaßld*ld Fim-Função Início Escreva(“Gostariadesaberaáreadeumquadrado(S/N)?”) Leia(op) Seop=‘S’Ouop=‘s’Então Escreva(“Digiteovalor:”) Leia(lado) Escreva(“Aáreadoquadradoé:”) Escreva(quadrado(lado)) Fim-Se

Fim

InFoRmátICa 4

46

CaPítulo 1

47

Page 26: 106026095 Informatica Programacao de Computadores Etec

• Lista encadeada

• Lista circular

• Lista duplamente encadeada

• Pilhas

• Filas

• Árvores

Estrutura de dados

Capítulo 2

Page 27: 106026095 Informatica Programacao de Computadores Etec

estrutura de dados define de que maneira os tipos primitivosserãoorganizados(FORBELLONE,2005):pormeiode lista,pilhas,filasouárvores.Essasopçõesrepresentamosconjuntosa

seremmanipuladosporlogarítmos,dediferentesformas.Essetipodeestruturapodesofreralterações(MARCONDES,2002).Nateoria,refere-seàidentifica-çãoeaodesenvolvimentodemodelosparaaresoluçãodeproblemas.Naprática,significacriarrepresentaçõesconcretasquepodematuarsobremodelos.

2.1. lista encadeadaUmespaçodememóriaéreservadoparaosdados,quandosãoinseridosemumalistaencadeada.Então,oespaçoocupadoporumalista,namemória,éexpressopelaquantidadedeelementoscontidosalidentro.Paraquesepossapercorrertodososelementos,deve-searmazenar–juntoacadaumdeles–umponteiroqueindiqueoelementoseguinte(figura15).

A Cadaelementodalistaéidentificadocomoumnó.Utilizam-seosponteirosparapercorrertodososnósdalista.OúltimoelementodeveráapontarparaNULL(emlinguagemdeprogramaçãodecomputador,éapalavrausadaparasereferiraumdispositivonulo).Paraacriaçãodeumalista,considera-seoprimeiropon-teiroexistente.UmalistavaziadevesercriadacomoponteiroindicandoNULL,permitindo inserçõesnofinal.Essa listadeve ser alocada emumaposiçãodememória,comencadeamentoparaopróximoelemento(figura16).

Retirarumelementoda lista éumprocessoumpoucomais complexo,poispodemosencontrardiferentessituações,comoeliminaroprimeiroelementodalistaouumelementointermediário(figura17).

Outras funçõesagregadasàs listas são:buscadeelementoseverificaçãoparasaberseelaestávaziaounão.

Figura 15 Lista encadeada.

Figura 17 Eliminação de um elemento.

Figura 16Inserção de elemento.

início

INFO 001 II posição 01

INFO 002 II posição 02

INFO 003 II posição 03

início vazio II NULL

início INFO 001 II posição 01

vazio II NULL

início

INFO 001 II posição 01

INFO 002 II posição 02

INFO 003 II posição 03

início

INFO 001 II posição 01

INFO 002 II posição 02

INFO 003 II posição 03

InFoRmátICa 4

50

CaPítulo 2

51

Page 28: 106026095 Informatica Programacao de Computadores Etec

2.4. PilhasApilhaéumaestruturabemsimples,muitasvezesencontradadentrodohard-ware.Aideiaéacessaroprimeiroelementoapartirdotopodapilha.Assim,umnovoelementoinseridonapilhavaidiretoparaotopoe,logicamente,éoúnicoquepodeserretirado.Portanto,oprimeiroquesaiéoúltimoqueentrou.Te-mos,nessecaso,oLIFO(doinglêslastin,firstout,ouúltimodentro,primeirofora).Háduasoperaçõesbásicas,paratrabalharcomaspilhas:push(empilhar)epop(desempilhar)(tabela8).

2.5. FilasOutra estrutura é a fila, que apresenta a ordem de saída dos elementos deformadiferentedoqueaconteceemumapilha.Nafila,oprimeiroelementoqueentraéoprimeiroasair:FIFO(firstin,firstout,ouseja,primeirodentro,primeirofora).Épossívelinserirumnovoelementonofinaldafilaeretiraroprimeiro(tabela9).

2.2. lista circularEmumalistacircularoúltimoelementodeveráapontarparaoprimeiro(figura18).Parapercorreralistaéprecisovisitartodososseuselementos,apartirdeumponteiroinicial,atéchegaraelenovamente.CasooponteiroinicialsejaNULL,alistaseráconsideradavazia.

2.3. lista duplamente encadeadaNalistaencadeadaháumponteiroindicandoopróximoelemento.Jánadu-plamenteencadeadasãodoisponteiros:ummostrandooelementoseguinteeoutro, o anterior.Apartir deum elementopodemos acessar ambos os lados(figura19).

Figura 18 Lista circular.

tabela 8Push e pop em uma pilha.

Figura 19Lista duplamente

encadeada.tabela 9Entrada e saída de uma fi la.

252525 404040151515 151515 151515

101010

101010202020 353535 101010

202020 101010101010 151515 151515 151515 202020 353535

INFO 001 II posição 01

INFO 002 II posição 02

INFO 003 II posição 03

INFO 001 II posição 01

II posição 02

INFO 001 II posição 01

II posição 02

INFO 001 II posição 01

II posição 02

InFoRmátICa 4

52

CaPítulo 2

53

Page 29: 106026095 Informatica Programacao de Computadores Etec

Naárvorebináriacadanótemzero,umou,nomáximo,dois“filhos”.Então,épossíveldefinirumaárvorebináriacomovaziaouumnóraizcomduassubár-vores–umanadireita(sad)eoutranaesquerda(sae)(figura22).

• árvore genérica

Naárvorebináriahárestriçãoquantoaonúmerodenós:nomáximodois.Esselimitenãoacontecenasárvoresgenéricas(figura23).

2.6. árvoresOstópicosanterioresrepresentamadisposiçãodedadoslineares.Asárvores,porsuavez,permitemqueosdadossejamdispostosdeformahierárquica,comoumaestruturadediretórios.Todaárvorepossuiumnó“r”,denominadoraiz.Osdemaisnóssãoidentificadoscomointernosou“filhos”(figura20).

• árvores binárias

Umbomexemplodeárvorebináriasãoasexpressõesmatemáticas,asquaisnospermitem distribuir os operadores e os operandos. Por exemplo, a expressão((1+2)*(5*3))-2(figura21).

Figura 20Árvore e seus nós.

Figura 22 Esquema da Árvore Binária.

Figura 21 Árvore binária.

Figura 23Árvore genérica.

R

A CB D E

raiz

sae sad

+

1 2

*

5 3

-

* 2

InFoRmátICa 4

54

CaPítulo 2

55

Page 30: 106026095 Informatica Programacao de Computadores Etec

• Identifi cação do documento

• Estrutura do documento

• Formatação

• Texto

• Cores

• Tabelas

• Imagens

• Links

Formulários

• XML

Criação depáginas Web

Capítulo 3

Page 31: 106026095 Informatica Programacao de Computadores Etec

HTML (iniciais da expressão em inglêsHyperTextMarkupLanguage ou Linguagem de Marcação de Hipertexto) vemsendoutilizadoparaodesenvolvimentodepáginasdainternet

desdeasuaconcepçãonoConselhoEuropeudePesquisasNucleares,oCERN(eminglês,EuropeanCouncilforNuclearResearch),em1991.Divulgadaemdezembro de 1999, a última especificação do W3C (Word Wide Web Con-sortiumouConsórciodaRededeAlcanceMundial)recomendaaversão4.01como padrão de desenvolvimento do HTML, que sofreu nova reformulaçãocombasena estruturadedocumentosXML(ExtensibleMarkupLanguage).Surgiu, assim,oXHTML(eXtensibleHyperTextMarkupLanguageouLin-guagemdeMarcaçãodeTextoExtensível),consideradaonovopadrãodede-senvolvimentoweb.

3.1. Identificação do documentoParaacriaçãodedocumentosHTML,devemos identificaropadrãodaquelequeestásendocriado,oDOCTYPE.EleespecificaoDTD(DocumentTypeDefinitionouDefiniçãodoTipodeDocumento)aserutilizado,comasrespec-tivasregras,conformesepodeobservarnasequência:

HTML 4.01 Transacional: possui todaaqualidadedoHTML4.01.Porémusaelementosdesaprovadosouobsoletos.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”“http://www.w3.org/TR/html4/loose.dtd”>

HTML 4.01 Frameset: utilizamolduras(FRAMES)etambémétransitório.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN”“http://www.w3.org/TR/html4/frameset.dtd”>

HTML 4.01 Strict: seguepadrõesexigidospeloW3C,portanto,cumprindoasespecificações.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>

DamesmamaneiracomoacontececomoHTML,existemtambémespecifica-çõesDOCTYPEparaosdocumentosXHTML.

XHTML 1.0 Transacional: utilizarecursosobsoletos.

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

XHTML 1.0 Frameset: usamolduras(FRAMES)etambémétransitório.

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

XHTML 1.0 Strict: seguepadrõesexigidospeloW3C,ouseja,cumpreases-pecificações.

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>

OdocumentoHTMLouXHTMLrecebeasextensões.htmou.html,associa-dasaosnavegadores.

Página de HTML do Centro Paula Souza.

O

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

O W3C Fundado em 1994, o W3C (World Wide Web Consortium) ou Consórcio da Rede Mundial de Computadores) é formado por empresas de tecnologia de diferentes partes do mundo que trabalham para criar padrões e diretrizes para a interpretação de conteúdos da web. O grupo desenvolve protocolos, promove fóruns abertos, entre outras ações. Mais informações podem ser obtidas no site http://www w3c.br.

InFoRmátICa 4

58

CaPítulo 3

59

Page 32: 106026095 Informatica Programacao de Computadores Etec

utilizaroCSS(CascadingStyleSheetouEstiloPáginasemCascata),parafazeraformataçãocorretadodocumento.Ainserçãodessaformataçãoérealizadapormeiodatag<style>epoderáseraplicadaemtrêsníveisdiferentes:

•Nível Local –quandohánecessidadedeformatarumatagespecial.

•Nível Geral–quandoasformataçõesserãousadasemtodoodocumento.

• Nível Global – quando é possível associar os estilos de formatação comoutrosdocumentosouprojetos.

Todasasaplicaçõessãocorretasenadaimpedeousodostrêsmétodosnomes-modocumento.

• Regras

Tag é uma palavra-chave (relevante) associada a uma informação, que é mui-to comum na linguagem de programação de computador. É possível atribuirpropriedades de formatação às tags, que deverão estar entre “{}”, observando{propriedade:valor}.Sehouvermaisdeumadeclaração,deve-sesepará-laspor“;”

<style type=”text/css”>

body {background:blue; color:yellow} </style>Noestilodeterminadoparaatag<body>,duaspropriedadesforamseleciona-das:acordefundoestiloskyblueeacoramareladasletras(figura25).

• Formatação de nível local

Paraaformataçãodiretamentenatag,devemosutilizaratag<style>eosparâ-metrosdeformataçãoentreaspas.Oresultadopodeserobservadonafigura26.

<body style=”background:skyblue”>

3.2. Estrutura do documentoParaindicarasmarcaçõesdodocumento,denominadastag,devemosutilizarossinaisde“<”e“>”.Paraqueelesejavalidado,deveteraseguinteestruturabásica:

Escreva todas as tags e atributos em letras minúsculas 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>Título do Documento</title> </head> <body> </body> </html>

DOCTYPE: identificaotipodedocumento(HTML4.01Transitional).

HTML:éoelementoraizdodocumento.Identificaeinformaaonavegadorotipodedocumento;éutilizadonoinícioefimdoarquivo.

HEAD:nessatag,serãoinseridasinformaçõescomotítulo,palavra-chave,tipodecaractereetc.

META:defineinformaçõescomplementares,taiscomo:otipodedocumentoedaversãodecaracteresutilizada.NoBrasil,devemosadotarocódigo“iso-8859-1”,querepresentaoconjuntodecaracteresdospaíseslatinos.

TITLE: éainformaçãoqueaparecenaabadonavegador(figura24).

BODY: éocorpodapágina,ondeserãoinseridasasdemaistagsdemarcação.OimportanteparaospadrõesXHTMLénãodeixarnenhumatagaberta.Ouseja,<body>abree</body>fecha,assimcomoastagisoladas.Porexemplo,o<br>paraoHTMLe<br/>paraoXHTML.

3.3. Formatação AspáginasdevemsercriadasconformeasrecomendaçõesdoW3C,evitando,principalmentena formatação,ousode tagsdesaprovadas.Portanto,deve-se

Figura 24Título do

documento.

Figura 25Regras de formatação.

InFoRmátICa 4

60

CaPítulo 3

61

Page 33: 106026095 Informatica Programacao de Computadores Etec

• Formatação de nível geral

Atag<style>deveficarnoiníciododocumentoecontertodososparâmetrosdeformatação.

Noexemploanterior,atag<link>identificaodocumentoaseradicionadoaodocumentoprincipal,nocaso,o“estilo.css”.Vejaocódigoaseguir:

Figura 26 Formatação na tag.

Paraatag<p>,foramaplicadosdoistiposdiferentesdeformataçãoapenascomatrocadonomedaclasse(“um”e“dois”).Vejaoresultadonafigura27.

Usamos os identificadores quando não queremos vincular a formatação auma determinada tag. Os identificadores são nomes definidos pelos pro-gramadores, geralmente associados ao estilo de formatação a ser utilizada.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”“http://www.w3.org/TR/html4/loose.dtd”><html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8”> <title>Formação No Documento</title> <style type=”text/css”> body {background:skyblue} </style> </head> <body> Minha Primeira Página em HTML </body> </html>

• Formatação de nível global

Nessecaso,devemoscriardentrododocumentoHTMLumlink(códigoabai-xo)paraidentificarumdocumentodeformataçãoCSS.

<!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>Formatação com Arquivo Externo</title> <link href=”estilo.css” rel=”stylesheet” type=”text/css”> </head> <body> Minha Primeira Página em HTML </body> </html>

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

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8”> <title>Utilização 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 página, usando a classe “um” </p> <p class=”dois”> Minha página, usando a classe “dois” </p> </body> </html>

• Classes e identifi cadores

As classes permitem que vários estilos sejam aplicados na mesma tag. Dessaforma,devemoscolocaroclassjuntoàtag.

Figura 27Classes em CSS.

InFoRmátICa 4

62

CaPítulo 3

63

Page 34: 106026095 Informatica Programacao de Computadores Etec

Senãotivermosaformataçãodetextoincluída,oresultadoseráotextopadrãodonavegador(figura29).

Foramcriadosdoisestilosparaotexto:umnacorvermelhaeoutronacorazul.Paraacionarosidentificadoresfoiutilizadaatag<div>e,nasequência,onomedoidentificador.Oresultadopodeserconferidonafigura28.

Oprogramadorpodeutilizarclasseouidentificador.Nãohárestrições.Oim-portanteéseguirasespecificaçõescorretasparaodesenvolvimentodeumdocu-mentopadronizadoevalidadopeloW3C.

Figura 28 Identificador.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8”> <title>Utilização 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 Página em HTML</div> </body> </html>

<p> Minha Primeira Página HTML </p>

Outratagquedeveráserlevadaemconsideraçãoéa<br>,querealizaaquebraautomáticadotextoparaoutralinha.

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

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8”> <title>Formatação 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 formatação </div> <div id=”texto2”>Texto usando a segunda formatação </div> </body> </html>

Figura 29 Texto padrão.

• Fonte

Uma fontede letra poderá sermodificada conforme a sua família (Verdana,Arial,Timesetc.),tamanho,estilo(itálico,regular,etc.)epeso(negrito).

• Font-Size

Este tópico indica o tamanho da fonte, definido com base em determinadaunidadedemedida.Asunidadesmaiscomunsparaospadrõeswebsãopontos(pt)epixel(px).

3.4. textoAinserçãodetextoérealizadadiretamentenocorpododocumento,geralmenteutilizandoatag<p></p>paraidentificaroinícioeofimdoparágraforespec-tivamente.Porexemplo:

InFoRmátICa 4

64

CaPítulo 3

65

Page 35: 106026095 Informatica Programacao de Computadores Etec

• Font-Family

Éprecisoescolhercomcuidadootipodeletraaserutilizado.Asfontesmenosco-munspodematéserbonitas,mastambémsãoasquemaistêmchancedeprovocaradesconfiguraçãovisualdeumprojeto.Portanto,procureutilizarfontes-padrãoe,depreferência,deboavisualização,seguindoasnormasdeacessibilidade.

Umrecursointeressanteparaadefiniçãodasfonteséacriaçãodeumalista.Senãoacharmosaprimeirafontelistada,partimosparaasegunda,eassimsuces-sivamente.Senãoencontrarmosnenhumafonte,aalternativaérecorreràfonte-padrãodonavegador.Nessecaso,oresultadoseráoutro(figura31).

Paraoidentificador“título”,areferênciaestáempontos.Eparaosdemais,empixel.Observequeosdoisprimeirosidentificadorestêmomesmotamanho,masoresultadofinalmostradiferenças(figura30).

Figura 30 Font-Size.

Afigura32mostraoresultadofinal.

A expressão acessibilidade refere-se à possibilidade

de qualquer pessoa, independentemente de suas

capacidades físico-motoras e perceptivas, culturais ou sociais, usufruir dos

benefícios 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 arquitetônica,

seja na arquitetura dos equipamentos e programas,

na linguagem adotada ou no visual das informações.

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 condições específicas para que todos tenham acesso

à internet (ambiente, equipamento, navegador,

ferramentas etc.).

Figura 31 Font-Family.

<style type=”text/css”> #titulo {font-size:12pt; font-family:Geneva, Arial, Helvetica, sans-serif} #texto1 {font-size:12px; font-family:Arial, Helvetica, sans-serif} #texto2 {font-size:10px; font-family:”Times New Roman”, Times, serif} </style>

• Font-Style

Umdos estilosmais usados é o itálico.Aqui, vamosusar uma classena tag<span>paraaativação.

<!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>Formatação 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 formatação </div> <div id=”texto2”>Texto usando a segunda formatação </div> </body> </html>

Figura 32 Font-Style.

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

• Font-Weight

Aexpressãoidentificaopesodafonteeénotadoquandoutilizamosdetermi-nadafonteemnegrito.Paraefeitodecomparação,umafontenormaltemvalor400eseunegrito,700.Masessesvalorespodemsofrermudançasconformeasfamíliasdefontesescolhidas.Osvaloresmaiscomunssão100,200,300,400,500,600,700,800e900.Fazendoalgumasmodificaçõesnoexemploanterior,podemosobteroutroresultado(figura33).

InFoRmátICa 4

66

CaPítulo 3

67

Page 36: 106026095 Informatica Programacao de Computadores Etec

Oresultadofinalpodeserconferidonafigura34.

Figura 33 Font-Weight.

Figura 34 Text-Decoration.

• text-Decoration

OText-Decoration,oudecoraçãodetexto,érepresentadoporumalinhajuntoaotexto.Omaiscomuméosublinhado,usadoempalavrasqueindicamumlink.Nesseexemplo,vamosincorporarumafacilidadedoCSS,queéaformataçãodeváriosidentificadoresemumaúnicalinha,edepoisformataçõesespecíficas.

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

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”> <title>Formatação de Texto</title> <style type=”text/css”> #estilo1, #estilo2, #estilo3, #estilo4 {font-size:15pt} #estilo1 {text-decoration: line-through} #estilo2 {text-decoration: none} #estilo3 {text-decoration: overline} #estilo4 {text-decoration: underline} </style> </head> <body> <div id=”estilo1”>Texto Decorado - Estilo 01</div> <div id=”estilo2”>Texto Decorado - Estilo 02</div> <div id=”estilo3”>Texto Decorado - Estilo 03</div> <div id=”estilo4”>Texto Decorado - Estilo 04</div> </body> </html>

• text-transform

Modificaaconfiguraçãodaletradiferenciandocaracteresmaiúsculosdeminúsculos.

<!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>Formatação 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 Atenção nas Letras da Frase - Estilo 01</div>

<div id=”estilo2”>Preste Muita Atenção nas Letras da Frase - Estilo 02</div>

<div id=”estilo3”>Preste Muita Atenção nas Letras da Frase - Estilo 03</div>

<div id=”estilo4”>Preste Muita Atenção nas Letras da Frase - Estilo 04</div>

</body>

</html>

Oresultadofinal(figura35)mostraoefeitodecapitalizeparaaprimeiraletradecadapalavraemmaiúscula,lowercaseparatodasasminúsculas,noneparaooriginaleuppercaseparatodasasmaiúsculas.

InFoRmátICa 4

68

CaPítulo 3

69

Page 37: 106026095 Informatica Programacao de Computadores Etec

Figura 35 Text-Transform.

Existeoutraopçãochamadavertical-align,quefazoalinhamentonotopo,nomeioenapartedebaixodapágina.Podeseradotadaquandootextoestiver dentro de uma tabela. Os parâmetros são, respectivamente: top,middleebottom.

3.5. CoresAutilizaçãodecoreséessencialparaacriaçãodeumaboapáginanaweb.Maséprecisotercuidadoparanãoexagerar.Oimportanteéadotarocon-ceitodeharmoniadastonalidades,quepodemseridentificadaspormeiodaspalavraseminglês:black,blue,red,skyblue,green,etc.

Figura 36 Text-Align.

• text-align

Estaopçãopermitequesefaçaoalinhamentodetextonaformadesejadanocontextodesuaaplicação:emumapágina,emumatabelaetc.

<!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>Formatação 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 Página - Estilo 01</div> <div id=”estilo2”>Alinhado à Esquerda da Página - Estilo 02</div> <div id=”estilo3”>Alinhado à Direita da Página - Estilo 03</div> </body> </html>

Nesseexemplo,oalinhamentoservedereferênciaparaumapáginadaweb(figura36).

#texto {color:blue}

Paraobtermaisopçõesdecores,podemosutilizarasreferênciasemhexa-decimal,cujosvaloresrepresentamosistemaRGB(doinglêsRed,GreeneBlue,ouseja,vermelho,verdeeazul).CadapardevaloresemhexadecimalrepresentaaforçadeumelementonosistemaRGB(tabela10).

CONHECIMENTO DAS CORESA representação hexadecimal das cores foi adotada porque a decimal fi ca 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 são combinados para se obter intensidade, tonalidades. Como o branco é a mistura de todas as cores, é representado por seis F. Já o preto, que é ausência de cor (na verdade, de refl exo 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 férias forçadas no campo para fugir da peste que assolava a Europa, conseguiu separar as cores da luz branca do Sol por meio de um prisma e algumas lentes.

r G B Cor DeSCrIÇÃo

00 00 00 #000000 preto

FF FF FF #FFFFFF branco

FF 00 00 #FF0000 vermelho

CF CF CF #CFCFCF tonalidade de cinza

tabela 10 Hexadecimal.

A variação entre os valores de cada elemento em hexadecimal irá produzirumatonalidadedecordiferente.

Dica: procure na internet a expressão “tabela de cores HTML”, acessando qualquer um dos sites de busca.

InFoRmátICa 4

70

CaPítulo 3

71

Page 38: 106026095 Informatica Programacao de Computadores Etec

3.6. tabelasAtabelaéumdosrecursosmaisusadosparaorganizarasinformaçõesemumapágina.Masparamontá-laprecisamosdeumasériedemarcaçõesquenosper-mitirãoorganizarasuaestrutura.

TABLE – Identificaoinícioeofimdatabela.

TR – Linhasdatabela.

TD – Colunasdatabela.

TH – Representaacolunadatabelaparatítulos,formatandootextoemnegrito.

Aestruturadatabeladeveráobedeceràcomposiçãodesuaslinhasecolunas.Oexemplodafigura37mostraumatabela2x2.

Figura 37Tabela 2x2.

Outroefeitointeressantepodeserobtidopelainclusãodeumatabeladentrodaoutra.Poréméprecisoobservaraestruturadecadaumadelasparaquenãofaltenenhumatag(palavra-chave)(figura38).

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

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”> <title>Tabela</title> </head> <body> <table border=”1px”> <tr> <td> linha 01 - coluna 01 </td> <td> linha 01 - coluna 02 </td> </tr> <tr> <td> linha 02 - coluna 01 </td> <td> linha 02 - coluna 02 </td> </tr> </table> </body> </html>

Nesseprimeiromomentodedesenvolvimentoéinteressantemanterabordadatabela,porquefacilitaaverificaçãodesuaestrutura(figura37).

VamosassociaratabelaaosrecursosdoCSS(CascadingStyleSheets ouEstiloPáginasemCascata),pormeiodasclassesedosidentificadores,paraformataçãoealinhamen-todotexto,alémdeaplicaçãodecoresutilizandooexemploanterior(figura39).

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”> <title>Tabela</title> <style type=’text/css’> table {color: #0033CC} td { text-align:center} .coluna1 {background:#FF3300; color:#FFFF00}

Figura 38 Tabelas internas.

InFoRmátICa 4

72

CaPítulo 3

73

Page 39: 106026095 Informatica Programacao de Computadores Etec

Figura 39 Tabela formatada.

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

<style type=”text/css”>

td {width:350px}

</style>

</head>

<body>

<table border=”1” width=”400px” >

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

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

</table>

• tamanho da tabela, linha e coluna

Aidentificaçãodemedidasparaatabelapodeserfeitaapartirdelamesma,dalinhaoudacoluna.Éprecisotercuidado,noentanto,paraqueumamedidaobtidanãoanuleaoutra.Vejaoseguintecódigo:

No<style>,acoluna(TD)estádefinacomo350px.Seanalisarmosaestruturadatabela,veremosqueelaéconstituídaporduascolunas.Portanto,atabelaterá700px(2x350pxdecadacoluna)decomprimento.Mas,severificarmossuadefinição,teremos400px.Oresultadofinalserá,então,umatabelade400px.

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

Transitional//EN”

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

<html>

<head>

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

charset=iso-8859-1”>

<title>Tabela</title>

<style type=”text/css”>

table {text-align:center}

.coluna1 {width:200px}

coluna2 {width:400px}

tr {height:60px}

</style>

</head>

<body>

<table border=”1” width=”600px”>

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

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

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

coluna 02 </td> </tr>

</table>

</body>

</html>

Nesseexemplo,sesomarmosascolunas,obteremosvalorescoerentesemrelaçãoaotamanhodatabela(200+400=600px).Outropontoimportanteéaformata-çãodotamanhodacoluna,quedeveserfeitasomentenaprimeiralinha,poisasdemaisseguirãoessadefinição(figura40).

Figura 40 Tabela tamanho.

InFoRmátICa 4

74

CaPítulo 3

75

Page 40: 106026095 Informatica Programacao de Computadores Etec

• Estilo de bordas

AoutilizaroCSS,poderemosrealizardiferentesaplicaçõesnasbordasdasta-belas.Osexemplosabaixomostramosdiferentesefeitosemumúnicocódigo.

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

Oresultado(figura41)nãoestáseguindonenhumpadrãodedesign.

Dica: substitua o termo “solid” (sólido) de border-style (estilo da borda), pelas palavras: none (nenhuma), dotted (pontilhada), dashed (tracejada), double (dupla), groove (encaixe ou ranhura), ridge (serrilhado), inset (inserção) ou outset (início).

Figura 41 Formatação de borda.

3.7. ImagensOs navegadores estão habilitados para abrir diferentes tipos de imagens(BMP, JPG, GIF,entreoutros),alémdecontarcomosGIFsparapequenasanimaçõesexistentesnosite.Essas imagenspoderãoser inseridaspela tag<img>,que,alémdainclusãodaimagem,ofereceoutrosparâmetrosdefor-matação,comoaltura,larguraetextoexplicativo.

<img src=”programador.jpg” width=”100px” height=”100px” alt=”Programador”> </img>

SRC:Indicaoarquivoparavisualização(caminhodoarquivo,nomecompletoeextensão).

Width e Height:larguraealturadaimagem.

ALT:permiteincluirumtextoalternativocasoaimagemnãoapareçanosite.

Geralmente,asimagenssãoredimensionadasparaumsite,ouseja,raramenteelasaparecememseutamanhonatural.Portanto,osvaloresdelarguraealturadeverãoserbemanalisadosparaquenãoocorradistorçãonaimagem.

Vamosutilizarocódigoaseguirparareproduzirumaimagemcorretaeoutrasduascomdistorção(larguraealtura).

BMP é a terminação usada para a unidade Bitmap, que significa mapa de bits. Nesse tipo de representação, 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 Intercâmbio de Gráficos.

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

Nafigura42,podemosverificarastrêsimagense,deacordocomosvaloresdaalturaelargura,conseguiremosvisualizaradistorçãonasduasúltimas.

InFoRmátICa 4

76

CaPítulo 3

77

Page 41: 106026095 Informatica Programacao de Computadores Etec

Nafigura43,podemosvero“Alt”emação,poisaprimeiraimagemnãoapareceu.

Figura 43 Utilização do Alt.

• Bordas na imagem

AaplicaçãodebordasnaimagemseráfeitapeloCSSdiretamentenatag(figura44).

Figura 42 Imagem distorcida.

Organizarosdocumentosqueseguirãoparaumservidordawebparaserpu-blicadosexigequeasimagenssejamalocadasemumaúnicapasta,quedeveráserreferenciadanatag<img>.Noexemplo,apastaespecificadaé“Imagens”.

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

height=”100px” alt=”Programador”>

<img src=”../Imagens/programador.jpg” width=”100px” height=”100px” alt=”Programador” style=”border:solid; border- width:10px”>

Figura 44Imagem com borda.

3.8. linksOslinkssãoresponsáveispelanavegabilidadeentreaspáginasdaweb.Per-mitemacessodentrodoprópriodocumentoouadocumentosexternos.Paraisso, utiliza-se a tag <a>, que significa âncora – não existe um nome maissugestivoparanavegação.

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

• links para outros sites

Paraacessarlinksdeoutrossites,devemosinformartodaaURL(UniformRe-sourceLocatorouLocalizadordeRecursosUniversal),paraqueapáginasejalocalizada(figura45).

Figura 45Link para o Centro Paula Souza.

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

• links entre documentos

Aboanavegabilidadenositeédeterminadapeloslinksepelasopçõesderetornoaopontoinicial.Essecaminhodevoltapodeserfeitopelopróprionavegadorouporoutroslinks.

Programador

InFoRmátICa 4

78

CaPítulo 3

79

Page 42: 106026095 Informatica Programacao de Computadores Etec

<!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 opções</p> <a href=”pag_um.html”> Página 01 </a> <br> <a href=”pag_dois.html”> Página 02 </a> </body> </html>

Ocódigoacimacriaummenudeopçõesparaousuário,quepoderáescolherentreduaspáginas(figura46).

Figura 46Menu de usuário.

Aspáginaspag_um.htmlepag_dois.htmldeverãoserelaboradasdeformaqueoslinksfuncionemesejamdefácilacesso.Porisso,devemficarnomesmodi-retóriodoarquivoprincipal(menu.html)(figura47).

<!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 Página 01</p> <a href=”menu.html”> Voltar </a> </body> </html>

Figura 47 Página 01.

• links para outros tipos de documentos

Sãoutilizados,também,oslinksparaindicardocumentosparadownload,osquaisficamautomáticos,casoopadrãonãosejaweb(figura48).

<!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 exercício em HTML para próxima aula<p> <a href=”html.doc”> Baixar </a> </body> </html>

Figura 48Download.

InFoRmátICa 4

80

CaPítulo 3

81

Page 43: 106026095 Informatica Programacao de Computadores Etec

• links com imagens

Podemosinseririmagensassociadasaoslinks,deixandoanavegaçãomaisin-tuitiva.Há,porém,problemasrecorrentes,comoaeliminaçãodasmarcaçõesdotipo“ativo”e“visitado”,normalmenterepresentadaspelamudançadecores.Outroobstáculoenfrentadopelointernautasãoasbordasdasimagensacessadaspormeiodelinks.Ocódigoaseguirapresentaumasoluçãoparaessesproble-mas(figura49).

<!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 exercício em HTML para próxima 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

formatação CSS.

3.9. FormuláriosUmformulárioéusadoparareceberinformaçõesdousuário.Essesdados,quedepoispoderãosertratadosporoutraaplicação,comoASP,PHPouJava,sãoenviadospormeiodedoismétodos:

GET:asinformaçõesseguemviaURLaoservidoreficamvisíveisaousuário.Exemplo,apesquisarealizadanoGoogleparaencontraraexpressão“CentroPaulaSouza”:

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

POST:asinformaçõessãoenviadasdepoisqueaURLforativada.Issosignificaqueoservidorsabeque,depoisdereceberumaativaçãodeURL,deveaguar-daraentradadenovosdados,osquais,portanto,nãosãovisualizadosnaweb(MARCONDES,2002).

Todoformuláriotematag<form>,queidentificaoinício,e</form>,parasi-nalizarofim.Somenteoqueestáentreessastagsseráconsideradodadoválidoparaenvio.

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

Oformuláriopodereceberumaidentificaçãofeitapor“name”(nome).Issoaju-daránotratamentodosdados, futuramente.Temosaindaa“action”(ação)doformulário,queindicaaaplicaçãoservidoraquereceberáosdados.Porexemplo:

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

• Entrada de texto

Aformamaissimplesdeentradadedadoséadotipo“text”(texto),quepermiteaaberturadacaixadeentradaparaqueousuáriopossadigitarassuasinfor-mações.Alémdisso,admiteumvalorpadrãojáincluídopelo“value”(valor),limitaaquantidadedecaracteresaseremdigitados“maxlength”(comprimentomáximo)eotamanhodajaneladeentrada“size”.

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

Naentrada,vemosqueaexpressão“seunomeaqui”jáestánacaixadetexto,que,apesardetertamanho40,aceitasomente35caracteres(figura50).

InFoRmátICa 4

82

CaPítulo 3

83

Page 44: 106026095 Informatica Programacao de Computadores Etec

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

• Entrada de password

Aentradadotipopasswordescondeoscaracteresdigitadospelousuário.Assimcomoaentradatipo“text”,osdadospodemserlimitadoseajanela,ajustada(figura51).

Figura 50 Entrada tipo texto.

Figura 51 Entrada de

login e senha.

• Comentário

Paraentradadetextosmaiores,utilizamosatag<textarea>,quepermitecriarumajanelacomespecificaçõesdelinhaecoluna.

Figura 52 Textarea -

Comentário.

<p> Descrição da Função:<br> <textarea name=”func” rows=”5” cols=”40”></textarea> </p>

Podemosobservarqueajanelafoidefinidapara5linhase40colunas(figura52).Atenção:otextoinseridonafiguraéapenasilustrativo.

• opção select

Representaascaixastipocombos,presentesnamaioriadasaplicações,nasquaisumasériedeopçõesficadisponívelparaousuário.

<p> Estado: <select name=”cidade”> <option>São Paulo</option> <option>Rio de Janeiro</option> <option>Distrito Federal</option> </select> </p>

Figura 53 Caixa “select”.

Figura 54 Opção pré-selecionada.

As informações da caixa “select” são carregadas diretamente no formulário.Comautilização,posterior,delinguagensdeprogramaçãocomoASP,PHPouJava,certamenteissoacontecerádinâmicamente(figura53).

Outrorecursoéaopçãopré-selecionada,acessadapormeiodaexpressãoselec-ted(selecionada)emumdositensdefinidosporoption.

<p> Estado: <select name=”cidade”> <option selected> - - Cidade - - </option> <option>São Paulo</option> <option>Rio de Janeiro</option> <option>Distrito Federal</option> </select> </p>

Aopçãoindicadajáapareceselecionada(figura54).

• Botões checkbox

Osbotõescheckbox(quesignifica“verificaçãodacaixa”)permitemqueousuá-rioescolhaentre“sim”ou“não”.Sãousadosnormalmenteparaperguntassim-plesqueoferecemapenasessasduasalternativascomoresposta.Em“proprieda-des”,podemosindicarapalavra“name”,queseráfundamentalparaocontroledosdadosparavalidação,assimcomoo“checked”(controlado)paraopçõesjáselecionadas.

<p> Possui carteira de Trabalho: <input type=”checkbox” name=”carteira”></p> <p> Possui meio de condução própria: <input type=”checkbox” name=”conduzir”></p> <p> Deseja receber nossas informações por e-mail?: <input type=”checkbox” name=”conduzir” checked> Sim, desejo.</p>

InFoRmátICa 4

84

CaPítulo 3

85

Page 45: 106026095 Informatica Programacao de Computadores Etec

Naopção referente à recepçãode e-mails,obotãocheckbox foipreviamenteassinalado(figura55).

Figura 55 Botões checkbox.

Figura 56 Botões de Radio.

Figura 57 Botões Reset e Submit.

• Botões de Radio

OsbotõesdeRadiosãosemelhantesaocheckbox,porémpermitemquemaisdeumaopçãosejafornecidaaousuárioeapenasumaselecionada.Omaisimpor-tanteémanteromesmo“name”noscontroles,paraquepossasercriadovínculoentreeles.

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

Naopçãoreferenteàjornadadetrabalho,assimcomonocheckbox,umaopçãofoipré-selecionada(figura56).

• Botões

Utilizamososbotõesparaindicarotipodeaçãoaserrealizadacomosdadosdoformulário.Existemtrêstiposdebotõescomfunçõesespecíficas:

RESET (restabelecer): limpa todas as informaçõesdo formulárioenãoenviamaisnada.

SUBMIT(envio):mandaasinformaçõesdeacordocomascondiçõesdo“me-thod”(método)edo“action”doformulário.

<input type=”reset” value=”Limpar”> <input type=”submit” value=”Enviar”>

Olayoutdosbotõesestánafigura57.

• Formulário

Atéaquiapresentamososelementoscomunsparaaelaboraçãodeumformulário.Agora,éomomentodecolocartodososrecursosemumúnicodocumento.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”> <title>Cadastro de Cliente</title> <style type=”text/css”> .titulo {color:#33CC33; font-size:24px} p {font-family:Verdana, Arial, Helvetica, sans-serif; font-weight:600; font-size:10px} </style> </head> <body> <span class=”titulo”>Cadastro de Cliente</span> <form action=”” method=”post” name=”cadastro”></form> <p> Nome completo <input type=”text” value=”seu nome aqui” size=”40” maxlength=”35”> </p> <p> Login <input type=”text” value=”” size=”20” maxlength=”20”> Senha <input type=”password” value=”” size=”8” maxlength=”8”> </p>

BUTTON(botão):nãoexecutafunçãonenhuma,excetoquandoéprogramado.Significaqueéprecisodesenvolverumcódigoaserrelacionadocomobotão.

Nocasodosformulários,osmaisimportantesãoosReseteSubmit,queserãoresponsáveis,respectivamente,pelaeliminaçãodasinformaçõesepeloenviodedados.Maséprecisoqueo“value”(valor),sejainformado,paraqueocorraaemissãodaidentificaçãopadrão.

InFoRmátICa 4

86

CaPítulo 3

87

Page 46: 106026095 Informatica Programacao de Computadores Etec

<p> Descrição da Função:<br> <textarea name=”func” rows=”5” cols=”40”></textarea> </p> <p> Estado: <select name=”cidade”> <option selected> - - Cidade - - </option> <option>São 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 condução próprio: <input type=”checkbox” name=”conduzir”></p> <p> Deseja receber nossas informações por e-mail?: <input type=”checkbox” name=”conduzir” checked> Sim, desejo.</p> <p>Estado Civil:<br> <input type=”radio” name=”civil”> Solteiro <input type=”radio” name=”civil”> Casado <input type=”radio” name=”civil”> Outros </p> <p>Jornada de Trabalho:<br> <input type=”radio” name=”trab” checked> Manhã <input type=”radio” name=”trab”> Tarde <input type=”radio” name=”trab”> Noite </p> <input type=”reset” value=”Limpar”> <input type=”submit” value=”Enviar”> </form> </body> </html>

Figura 58 Formatação

de borda.

3.10. XmlAXML(eXtensibleMarkupLanguageouLinguagemdeMarcaçãoExtensiva),assimcomooHTML,éumalinguagemdemarcaçãoquepermiteamanipu-laçãodosdadosde formamaisprecisa. Isso assegura informaçõesuniformese independentes de aplicação ou de fornecedor que, dessa forma, podem serutilizadasemdiferentesníveisdeaplicação.JáaXML,dependendodoníveldeanálise(RAY,2001),éconsideradaummodelodegerenciamentodeinforma-çõeseaindapodeserformatadaoufiltrada.

AXMLnãoéapenasmaisumalinguagemdemarcaçãocomoaHTML,queespecificaaformataçãodeumapalavraouumtrechodetexto.AXMLpermiteadefiniçãodetagspersonalizadas.Issoajudaatornarodocumento“maisinteli-gente”,jáqueotextoarmazenadoentreastagsganhaumsignificadoespecífico(FURGERI,2001).Possibilita,também,queodocumentosejacriadocomumaestruturafacilmentecompreendidaporsereshumanosemáquinas.Aafirmaçãoficabemclaranoexemploseguinte,noqualé fácil reconhecerque“5,20”serefereaopreçodoproduto.

<pedido> <produto> <codigo>MF45-KJ90</codigo> <descritivo>Parafuso de 15mm</descritivo > <valor>5,20</valor> </produto> <pedido>

Astagssãorepresentadasemformatode“árvore”,semelhanteàdisposiçãodepastasnosdiretórios(figura59).

Oresultadoéumformuláriocomtodososrecursos(figura58).

Figura 59 Estrutura XML.

InFoRmátICa 4

88

CaPítulo 3

89

Page 47: 106026095 Informatica Programacao de Computadores Etec

• Verificação

AmaioriadoseditoresqueatuamnawebpodecriardocumentosXML.Umamaneirarápidaparaverificarseaestruturadodocumentoestácorretaéabri-lopormeiodeumnavegadorweb.Seoconteúdonãoestivertotalmentevisível,significaqueháumerroquedeveráserapontadopelonavegador.Seestivertudocerto,serápossívelvisualizarclaramenteoconteúdo(figura60).

NonavegadorInternetExplorer,vemosossinaisde“+”e“-”,quepermitemaexpansão ou contração do nível de detalhamento das informações. Mas nãopodemos esquecer que o documento XML deve, obrigatoriamente, levar emcontaque:

•Precisadeumatagraiz,denominadaroot.

•Astagssãocasesensitive(elementossensíveis).

•Deveevitaracentosoucaracteresespeciaisparaaconstruçãodetags.

UmdocumentoXMLbem formado (HOLZNER,2001)deve atender a to-dasasespecificaçõesdoW3C.Alémdisso,essetipodedocumentopossuitagsdistribuídascorretamente.Istoé,paratodatagdeaberturaexisteasuacorres-pondentede encerramento.Há,noentanto,uma tagmais externa (a raizdetodoodocumento),naqualtodasasoutrastagsedadosestãocuidadosamenteincluídos.UmdocumentoserábemformadoquandoumsoftwareXML(comoumbrowser–programadenavegação)puderinterpretá-locomoumaestruturahierárquica(emformadeárvore).

Figura 60Verificação de

documento.

<?xml version=”1.0” ?>

Essa linhadeveseraprimeiradodocumento.Sehouver informações(dados)queutilizemcaracteresespeciais(RAY,2001),adefiniçãodecódigotemdeserinformada.

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

Ocódigoaseguiréumexemplodedocumentoquetraznasuaprimeiralinhade identificaçãoa tag<produto>comotagraiz. Eosdemaisdadostambémestãodevidamenteorganizadosemtags.

<?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>Pitão de 18mm</descritivo > <valor>2,60</valor> </produto> </pedido>

• Diretivas

Aidentificaçãododocumentodeveaparecerlogonoinício,oquefacilitaráaleituraporpartedeoutrosaplicativos.Podeserdaseguinteforma:

InFoRmátICa 4

90

CaPítulo 3

91

Page 48: 106026095 Informatica Programacao de Computadores Etec

Capítulo 4

Lógica de programação aplicada à linguagem Java

• A Plataforma de desenvolvimento

• Origem da orientação a objetos

• UML (Unifi ed Modeling Language)

• Eclipse

• Orientação a objetos (1)

• Entrada e saída de dados

• Assinatura de métodos

• Estruturas e recursos da linguagem Java

• Orientação a objetos (2)

• Padrões de desenvolvimento de sistemas

• Interfaces gráfi cas

• Tratamento de exceções

• Conexão com bancos de dados

Page 49: 106026095 Informatica Programacao de Computadores Etec

avaéuma linguagemdeprogramaçãodesenvolvidanosanos1990poruma equipe de programadores chefiada por James Gosling, na SunMicrosystems, conglomerado norte-americano da área de informática

(leiaoquadroQuem é quem no mundo Java).Paraconhecê-lamaisprofundamen-te,éprecisovoltarumpouconotempoesaberquaisforamsuasantecessoras:aBCPLeB,aCeaC++(confiranoquadroA evolução da linguagem de programa-ção).PortrásdetodoosucessodoJavaestáumprojetodepesquisacorporativabatizadodeGreen,financiadoem1991pelanorte-americanaSunMicrosystems.ASun,cujonomefazreferênciaàStandfordUniversity, fabricacomputadores,semicondutoresesoftwares.TemsedenoSiliconValley(ValedoSilício),emSantaClara,Califórnia(EUA)esubsidiáriasemHillsboro,noestadodoOregon(EUA),eemLinlithgow,naEscócia.GoslingeaequipequetocouoprojetoparaaSunapostavamnaconvergênciadoscomputadorescomoutrosequipamentoseeletro-domésticoseproduziramumcontroleremotocominterfacegráficatouchscreen(toquenatela)batizadode*7(StarSeven)(figura61).Paraodesenvolvimentodepartedosistemaoperacionaledosaplicativosdo*7,foicriadaumalinguagemdeprogramaçãobaseadanoC++enosmalltalk,chamadadeOak(carvalho,em

inglês),emhomenagemaumaárvorequepodiaservistadajaneladasededaSun.Descobriu-semaistardequejáhaviaumalinguagemdeprogramaçãochamadaOak,oqueimplicavaanecessidadedesebuscaroutronomeparaadesenvolvidanaempresaeassimnasceuonomeJava.Há,porém,outrasversõesparaaorigemdonome.UmadelasdizquefoiescolhidoquandoaequipevisitouumacafeterialocalquetinhaonomeJava,emreferênciaàcidadedeorigemdeumtipodecaféimportadopeloestabelecimento.EssaversãoexplicaaxícaraestilizadaestampadanologodoJava(figura62).

OprojetoGreenpassouporalgumasdificuldades.Omercadodedispositivosele-trônicosinteligentes,voltadoparaoconsumopopular,noiníciodadécadade1990,nãosedesenvolviatãorápidocomoaSunhaviaprevisto.Porisso,corriaoriscodesercancelado.Porumafelizcoincidência,awww(WorldWideWeb,redemundial

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

Figura 62 Logotipo do Java, com a xícara estilizada.

Smalltalk-80, ou simplesmente Smalltalk, é uma

linguagem de programação

puramente orientada objetos. Isso signifi ca

que em Smalltalk tudo é objeto: os números,

as classes, os métodos, os blocos de código etc. Tecnicamente,

todo elemento é um objeto de

primeira ordem.

J

Quem é quem no mundo JavaJames GoslingProgramador canadense conhecido como o pai da linguagem Java. Em 1977, tornou-se bacharel em Ciência da Computação pela

Universidade de Calgary, no Canadá,

e em 1983, PhD em Ciência da Computação pela Universidade Carnegie Mellon,

nos Estados Unidos.

Kenneth Thompson(ou Ken Thompson) - cientista computacional conhecido por sua infl uência 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 revolucionárias (desde cabos de telefone, transistores, LEDs e lasers até linguagem de programação C e o sistema operativo Unix, que hoje é de propriedade do The Open Group, consórcio formado por empresas de informática).

Dennis MacAlistair RitchieÉ um cientista da computação notável por sua participação no desenvolvimento de linguagens e sistemas. Nascido em Bronxville, Nova

Yorque (EUA), formou-se em Física e Matemática Aplicada pela

Universidade de Harvard. Em 1983, Richie e Ken Thompson receberam o prêmio Turing pelo desenvolvimento da teoria de sistemas operacionais

genéricos e, especialmente, pela implementação do sistema UNIX.

Bjarne StroustrupCientista da computação dinamarquês e professor catedrático da Universidade do Texas, EUA. Conhecido como o pai da linguagem de programação C++.

FOTO

S: D

IVU

LGA

çã

O

InFoRmátICa 4

94

CaPítulo 4

95

Page 50: 106026095 Informatica Programacao de Computadores Etec

decomputadores) sepopularizouem1993eaSunviuo Java serutilizadoparaadicionarconteúdodinâmicoàspáginasdaweb,comointeratividadeeanimações.

Alémde salvaroprojetoGreen, a expansãodaWorldWideWebdeu inícioaodesenvolvimentodoJavacomoumalinguagemcomercial.Essamudançajátraziaaideiadeestimularainteratividadeentreosambientescomputacionais(mainframes,PCsetc.),oseletrodomésticos(quecadavezmaistêmprograma-çãoembarcada),equipamentoseletrônicos(queevoluiriamparaosdispositivosmóveis)eaentãorecém-nascidainternet.

A Sun anunciou o Java formalmente durante uma conferência, em maio de1995.Alinguagemchamouaatençãodacomunidadedenegócios,devidoaoenormeinteressequeawebdespertavanaépoca.Alémdisso,tambémtinhaograndeapelodaportabilidade:Write once, Run anywhere.

Porisso,oJavapassouaserutilizadoparadesenvolveraplicativoscorporativosdegrandeporteeaprimorarafuncionalidadedeservidoresweb(oscomputado-resquefornecemoconteúdohttp://www.sis.pitt.edu/~mbsclass/hall_of_fame/images/thompson.jpgquevemosemnossosnavegadoresdainternet).Essalin-guagem também passou a ser usada no desenvolvimento de aplicativos paradispositivosmóveis(telefonescelulares,pagersePDAs,porexemplo).

4.1. a plataforma de desenvolvimentoOJavaeastecnologiasenvolvidasnaorientaçãoaobjetostêmumacaracterísticapeculiarqueprovocaconfusãoedúvidasentreamaioriadaspessoasquecome-çamaestudaroassunto.Háumuniversodesiglaseacrônimosquepermeiamtodasasfasesdodesenvolvimentoetambémformamumaverdadeirasopadele-

trinhas.MasvamosnosateraoambientededesenvolvimentoJSE.OJavacome-çounaversão1.0(pareceóbvio,masnessecasoasequênciadeversõesnãoétãoprevisívelassim).Naversão1.2,houveumagrandequantidadedeatualizaçõesecorreçõeseumsignificativoaumentonasAPIs(bancoderecursosdalinguagem,queserádescritomaisadiante).Nessaetapa,aSunresolveutrocaranomenclatu-radeJavaparaJava2,paradiminuiraconfusãoentreJavaeJavascriptedivulgarasmelhoriastrazidaspelanovaversão.Masquefiquebemclaro:nãoháversãodoJava2.0.O“2”foiincorporadoaonome(exemplo:Java21.2).Depois,vieramoJava21.3e1.4.NoJava1.5,aSunalterounovamenteonomeparaJava5.Atéaversão1.4,existiaumaterceiranumeração(1.3.1,1.4.1,1.4.2etc.),indicandocorreçõesdeerrosemelhorias.ApartirdoJava5,começaramasurgirdiversasatualizações,comoJava5update7,eJava61.6update16.

4.1.1. JRE (Java Runtime Environment)Osambientesdedesenvolvimento Java contêmumpacote (conjuntode softwa-resquesecomplementameinteragemparadeterminadafinalidade)chamadoJRE(JavaRuntimeEnvironment).Eleéexecutadocomoumaplicativodosistemaope-racionaleinterpretaaexecuçãodeprogramasJavadeformaperformática,seguraeemescalas.AJREécompostapelaJVM(JavaVirtualMachine,oumáquinavirtual Java),porumconjuntodeAPI’s (ApplicationProgrammingInterfaceouinterfacedeprogramaçãodeaplicações)eporalgunspacotesdedesenvolvimento.

4.1.1.1. JVm (Java Virtual machine)

AmáquinavirtualJava,traduçãoliteraldasiglaeminglêsJVM, éumprogramaquecarregaeexecutaosprogramasdesenvolvidosemJava,convertendoosbyte-codes(códigofontepré-compilado) emcódigoexecutáveldemáquina.

A evolução da linguagem de programaçãoBCPLAcrônimo para Basic Combined Programming Language (Linguagem de Programação Básica Combinada), a BCPL é uma linguagem de programação 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.

BSucessora 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 contribuições de Dennis Ritchie. Ken Thompson utilizou a linguagem B para criar as primeiras versões do sistema operacional UNIX. Hoje é obsoleta, mas seu valor é incontestável por ter sido a precursora da C. Por isso, é uma das mais populares no mundo.

CÉ uma linguagem de programação compilada, estruturada, imperativa, processual, de alto nível e padronizada. Foi criada em 1972, por Dennis Ritchie, também no AT&T Bell Labs, como base para o desenvolvimento do sistema operacional UNIX (escrito em Assembly originalmente). A maior parte do código empregado na criação dos sistemas operacionais de equipamentos, como desktops, laptops, estações de trabalho e pequenos servidores, é escrita em C ou C+ +.

C++De alto nível, com facilidades para o uso em baixo nível, é uma liguagem comercial multiparadigma e de uso geral. Muito popular, desde os anos 1990, também está entre as preferidas nos meios universitários em virtude de seu grande desempenho e enorme base de usuários. Foi desenvolvida por Bjarne Stroustrup (primeiramente, com o nome C with Classes, que signifi ca C com classes em português), em 1983, no Bell Labs, como um elemento adicional à linguagem C. A linguagem C++ oferece vários recursos que complementam e aprimoram a linguagem C. Sua principal característica, no entanto, está na adoção da programação orientada a objetos, técnica de programação que é abordada em todo este capítulo.

InFoRmátICa 4

96

CaPítulo 4

97

Page 51: 106026095 Informatica Programacao de Computadores Etec

A JVM é responsável pelo gerenciamento dos programas Java, à medidaquesãoexecutados,simulamumaCPUeamemória(daíonomemáquinavirtual). Graças à JVM, os programas escritos em Java podem funcionaremqualquerplataformadehardwareesoftwarequepossuaumaversãodaJVM.Ouseja,cadasistemaoperacionalcompatívelcomoJavapossuisuaprópriaversãodeJVM,tornandoosprogramasdesenvolvidosemJavainde-pendentesemrelaçãoàplataforma(hardwareesoftware)ondeestãosendoexecutados.Configura-se,assim,umadasprincipaiscaracterísticasdalin-guagemJava:aportabilidade.

4.1.1.2. aPI (application Programming Interface)

Ainterfacedeprogramaçãodeaplicação,traduçãoliteraldasiglaeminglêsAPI,éumconjuntoderecursos(classeseinterfaces)comfuncionalidadespadrão,jáimplementados,equepossuemampladocumentação.Assim,osprogramadorespodemutilizaressesrecursossemprecisarsabercomoforamdesenvolvidos. 

4.1.2. ambientes de desenvolvimento

4.1.2.1. JSE (Java Standard Edition)

Emportuguês, é a edição Javapadrão.ContémtodooambientenecessárioparaacriaçãoeexecuçãodeaplicaçõesJava, incluindoamáquinavirtualJava(JVM),o compiladorJava(JRE),umconjuntodeAPIseoutrasferramentasutilitárias.Évoltadaparaodesenvolvimentodeaplicaçõesdesktopewebdepequenoporte,exe-cutadasemPCseemservidores.OJSEéconsideradooambienteprincipal,jáqueserviudebaseparaodesenvolvimentodoJEE(JavaEnterpriseEditionouediçãoJavacorporativa)edoJME(JavaMicroEditionouediçãoJavamicro,voltadaparamicro-dispositivos).PorseraplataformamaisabrangentedoJava,aJSEéamaisindicadaparaquemqueraprenderalinguagem.

4.1.2.2. JEE (Java Enterprise Edition)

AplataformaJEE(siglaeminglês,que literalmentesignificaediçãoempresa-rial Java) contém bibliotecas que oferecem facilidades para a implementaçãodesoftwaresJavadistribuídos,tolerantesafalhas.Voltadaparaaplicaçõesmul-ticamadasbaseadasemcomponentesquesãoexecutadosemumservidor de aplicações,aJEEéconsiderada,maisdoqueumalinguagem,umpadrãodedesenvolvimento. Nela, o desenvolvedor de software segue obrigatoriamentedeterminadas regrasparaque seu sistemapossa se comunicar comoutrosdemaneiraautomática.Destina-seaaplicaçõescorporativasdegrandeporteequeusamfrequentementeoEJB(EnterpriseJavaBeans,umpadrãocomestruturadeaplicaçõesdistribuídas)eservidoresdeaplicação.Outrorecursodesseam-bientesãoasaplicaçõesquerodamnoladoservidoremumaarquiteturacliente/servidor,conhecidascomoservlets.

4.1.2.3. JmE (Java micro Edition)

AplataformaJavaMicroEdition(literalmente,ediçãoJavamicro,voltadaparamicrodispositivos)permiteodesenvolvimentodesoftwaresparasistemaseapli-

Servidores de aplicação são

programas que fornecem uma

série de recursos para suporte

de aplicações corporativas,

na web, de forma segura e

consistente.

caçõesembarcadas,ouseja,aquelasquerodamemumdispositivoespecífico.É bastante indicada para aparelhos compactos, como telefone celular, PDA(PersonalDigitalAssistantouassistentedigitalpessoal),controlesremotosetc.Contémconfiguraçõesebibliotecasdesenvolvidasespecialmenteparaosportá-teis.Comesseinstrumento,odesenvolvedortemmaisfacilidadeparalidarcomaslimitaçõesdeprocessamentoememóriadoequipamento.

4.1.2.4. JDK (Java Development Kit)

AJDK(ouJSDKJavaSoftwareDevelopmentKit,kitdedesenvolvimentodeprogramas Java) éo ambiente completodedesenvolvimento Java.ExisteumJDKparacadaambiente(JSE,JEEeJME).Essekitdeveserinstaladonamá-quinaparapossibilitaracriaçãodeaplicaçõesJava.

4.1.2.5. JSE: nosso foco

OJSEéomaisindicadoparaosprogramadoresiniciantes(oumesmoveteranosdeoutraslinguagens)eseráofocodetodososexemplosdestecapítulo.Mas,apesardosdiferentesambientesdedesenvolvimento,trata-sedamesmalingua-gemdeprogramação.Portanto,amaioriadosrecursosqueserãoabordadosécomumeperfeitamenteaplicávelaoutrosambientes,principalmentenoquedizrespeitoàorientaçãoaobjetos.

4.1.3. a portabilidadeEmprimeirolugar,éprecisoentenderoqueéumprogramacompiladoeumprogramainterpretado.Compilaçãoéoprocessodeconversãodocódigofonte(texto escrito segundo as regras de determinada linguagem de programação)paraalinguagemdemáquina(programaprontoparaserexecutado).Nessepro-cesso,sãofeitasváriasreferências(econsequentementesuasdependências)em

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

DIV

ULG

ãO

InFoRmátICa 4

98

CaPítulo 4

99

Page 52: 106026095 Informatica Programacao de Computadores Etec

relaçãoaosistemaoperacionalnoqualoprogramaégerado.Jáemumprogra-mainterpretadoaexecuçãoocorrepormeiodaleitura,interpretaçãoeexecuçãodiretadocódigofonte(nãoexisteoprocessodecompilação).

Nacomparaçãoentreessesdoismodelosdedesenvolvimento,épossívelperce-berqueosprogramascompiladosoferecemmelhordesempenho(velocidadedeexecução),enquantoosinterpretadossãobemmaislentos.Emcontrapartida,oscompiladossãototalmentedependentesdaplataformaedosistemaoperacionalemqueforamgerados,aocontráriodosinterpretados.

OJavaseaproveitadoquehádebomnosdoismodelosedescartaospontosne-gativosdecadaum,pormeiodaJVM.UmcódigofonteJavaépré-compiladoeconvertidoembytecodepelaJRE(enãopelosistemaoperacional).ObytecodeégeradopormeioderecursosdaJREeexecutadosobreaJVM,ouseja,seminteraçãodiretacomosistemaoperacionaldamáquinaemquefoidesenvolvido.Noentanto,aJVMprecisainteragircomosistemaoperacionale,porisso,temversõesparadiferentessistemasoperacionais.

Comotudopassapela JVM,essaplataformapode tirarmétricas,decidirqualéomelhorlugarparaalocarousuprimirmemória,entreoutrasfunçõesqueantesficavamsobaresponsabilidadedosistemaoperacional.Afigura63mostracomoaportabilidadeemaplicaçõesJavaéalcançadaequalopapeldaJVMnessecontexto.

4.2. origem da orientação a objetosNomundoemquevivemos,deconstanteutilizaçãoeatualizaçãoderecursostecnológicos,ossoftwaresganharamumespaçoquevemaumentandovertigi-nosamenteeemdiversossetoresdasociedade.Existemprogramasespecíficosparausocomercial,industrial,administrativo,financeiro,governamental,mi-litar,científico,deentretenimentoetc.Paraatenderaessademandacadavezmaioremaisexigente,asáreasdedesenvolvimentoemanutençãodesoftwaresprecisamcriaraplicaçõescadavezmaiscomplexas.

Figura 63 Portabilidade Java.

Aorientaçãoaobjetossurgiudanecessidadedeelaborarprogramasmaisindepen-dentes,deformaágil,seguraedescentralizada,permitindoqueequipesdeprograma-doreslocalizadasemqualquerpartedomundotrabalhemnomesmoprojeto.Essatécnicadedesenvolvimentodesoftwares,maispróximadopontodevistahumano,tornamaissimplesenaturaloprocessodeanálisedeproblemascotidianoseacons-truçãodeaplicaçõesparasolucioná-los.Paraqueissosejapossível,éprecisoquebrarparadigmasemrelaçãoaomodeloprocedural,quetemcomobaseaexecuçãoderotinasoufunçõessequenciadaseordenadasparaatenderaosrequisitosfuncionaisdeumaaplicação.Nele,asregras(codificação)ficamseparadasdosdados(informaçõesprocessadas).Porisso,oprogramadorpassouaestruturaraaplicaçãoparaque,alémderesolverproblemasparaosquaisfoidesenvolvido,osoftwarepossainterligarele-mentoscomoprogramação,bancodedados,conectividadeemrede,gerenciamentodememória,segurançaetc.Issoaumentasignificativamenteacomplexidadenaela-boraçãoeexpansãodessessoftwares.

Omodeloorientadoaobjetostemcomobaseaexecuçãodemétodos(pequenasfun-ções)queatuamdiretamentesobreosdadosdeumobjeto,levandoemcontaomodocomoousuárioenxergaoselementostratadosnomundoreal.Nessatécnica,odesen-volvedorcriaumarepresentaçãodoquesepretendegerenciarnosistema(umcliente,umproduto,umfuncionário,porexemplo)exatamentecomoacontecenomundoreal.Assim,esseselementospodeminteragir,trocandoinformaçõeseadotandoaçõesquedefinemosprocessosaseremgerenciadospelosistema.Porexemplo,noprocessodevendadeumaempresapodemocorrerosseguintespassos:umclientecompraumouváriosprodutos;oclienteéatendidoporumvendedor;ovendedortemdireitoacomissão.

Aoanalisarmosessesprocessosnomundoreal,destacamoscomo“entidades”envol-vidasosseguinteselementos:cliente,vendedoreproduto,assimcomoavendaeocálculoecomissão.Apartirdaanáliseorientadaaobjetos,representamosessasenti-dadesdentrodanossaaplicaçãocomasmesmascaracterísticasadotadasnomundoreal(nome,endereçoetelefonedeumcliente,etc.alémdesuasatitudestípicasnumatransaçãocomercial(cotação,compra,pagamentoetc.).

4.2.1. abstração

Abstraçãoéacapacidadedoserhumanodeseconcentrarnosaspectosessenciaisdeumcontextoqualquer,ignorandocaracterísticasmenosimportantesouaciden-tais.Outradefinição:habilidadementalquepermitevisualizarosproblemasdomundorealcomváriosgrausdedetalhe,dependendodocontextodoproblema.Para o programador que utiliza orientação a objetos, a abstração é a habilida-dedeextrairdomundorealoselementos(entidades,características,comporta-mentos,procedimentos)querealmenteinteressamparaaaplicaçãodesenvolvida.Porexemplo,asinformaçõesrelevantesarespeitodeumCDparaumaaplicaçãousadanogerenciamentodeumalojaquevendeCDs,sãodiferentesdasdeumaaplicaçãoparaogerenciamentodeumafábrica,queproduzCDs.

4.3. uml (unifi ed modeling language)AUML,siglaeminglêsdelinguagemmodularunificada,édedicadaàespeci-ficação,visualização,construçãoedocumentaçãoqueusanotaçãográficapara

Código fonte Java é um arquivo de texto

escrito de acordo com as regras da

linguagem Java e salvo com a

extensão .java. Já a expressão bytecode

se refere a um arquivo convertido

em linguagem de máquina e salvo

com o mesmo nome do código fonte,

porém com a extensão.class.

Código fonteJava (.java)

JVMWindows

Windows

Linux

Solaris

Bytecodes (.class)

JVMLinux

JVMSolaris

InFoRmátICa 4

100

CaPítulo 4

101

Page 53: 106026095 Informatica Programacao de Computadores Etec

modelarsoftwares.Muitoutilizadaemempresasquedesenvolvemaplicaçõesorientadasaobjetos,tambémestápresenteemváriaspublicaçõesrelacionadascomalinguagemJava(alémdeseruminstrumentointeressanteparaelaboraçãode exercícios em aula). Por isso, escolhemos um de seus diagramas (de clas-ses)parailustrarnossosexemplos.Ébomfrisar,noentanto,queosrecursosdaUMLvãomuitoalémdessesdiagramas.

4.4. EclipseIDE (IntegratedDevelopmentEnvironment, ou ambiente integradodedesen-volvimento) é um programa de computador que reúne recursos e ferramentasdeapoioparaagilizarodesenvolvimentodesoftwares.Aqui,trataremosdaIDEEclipseClassic3.5.0,comumenteconhecidaporGalileo(asversõesmaisrecentesficamdisponíveisparadownloadnositehtpp://www.eclipse.org/downloads/.)

OEclipseémantidopelaEclipse Foundation,quepossuiprojetosquesecon-centramnacriaçãodeumaplataformadedesenvolvimentocompostaporqua-drosextensíveiseferramentasparaconstrução,implantaçãoegerenciamentodesoftwaresemtodooseuciclodevida.

4.5. orientação a objetos (1)Umavez familiarizadoscomumapartedouniversodas siglasecomosam-bientes de desenvolvimento relacionados à linguagem Java, é o momento deaprofundaroconhecimentodo temaedasboaspráticasdeprogramação,naconstruçãodesoftwaresorientadosaobjetos.Para isso,nosso focodeestudoseráaconstruçãodeumprojeto.Paracomeçar,éimportanteentenderdiversosconceitosqueajudarãoaestruturareapadronizarosprogramasdesenvolvidoscomessatécnica.Aconstruçãodesoftwaresindependentes,defácilexpansão,dealtoníveldereusabilidade(apossibilidadedereutilizartrechosdeumpro-grama)equeviabilizamainteraçãoentreprogramaseplataformasdiferentes,dependedessapadronização,graçasàadoçãodosconceitosdaorientaçãoaob-jetos.Deixardeusaressesconceitosnãogera,necessariamente,errosdecompi-lação,delógicaoudeexecução.Porém,fazcomqueossoftwaresgeradosnãoapresentemasvantagensinerentesàorientaçãoaobjetos,como,justamente,oaumentodareusabilidadeeafacilidadedemanutençãoedeexpansão.

Outro termo comumente usado é convenção (de nomenclatura). Há algunsanos,cadaprogramadorescreviaseuscódigosdeumamaneirabemparticular,criandoseusprópriosestilosemanias.Issonãoatrapalhavaaexecuçãodospro-gramas(desdequefosseutilizadaumaboalógica,alémdeadequadosrecursosdas linguagens). Porém,comopassardosanoseaevoluçãodos sistemas,otrabalhoemequipesetornouinevitáveleváriosprogramadores(muitasvezesdistantesentresi,fisicamente),passaramadarmanutençãoemcódigoscomuns.Apartirdaí,surgiuanecessidadedeadotardeterminadospadrõesdeescritadecódigos.Háalgumasconvençõesdenomenclaturabemantigaseconsolidadas,comoanotaçãohúngara,amplamenteutilizadaemCeC++.Mas,naprática,aslinguagenseatémesmoasempresasacabamcriandosuasprópriasconvenções.

NocasodoJava,existeumadocumentaçãoespecífica(disponívelnositehttp://

A Eclipse Foundation é uma organização

sem fi ns lucrativos que hospeda os projetos

Eclipse e ajuda a manter tanto uma comunidade

de openSource (grupo que desenvolve

softwares com código de fonte aberto)

como um conjunto de produtos e serviços complementares. O

projeto Eclipse foi originalmente criado

pela IBM em novembro de 2001 e apoiado por um consórcio

de fornecedores de software. (Para mais

informações sobre o Eclipse, acesse:

htpp://www.eclipse.org).

www.java.sun.com/docs/codeconv/)quedefinesuaprópriaconvençãodenomen-clatura, cuja utilização será destacada durante a elaboração dos códigos fonte.Talcomoocorrecomosconceitos,deixardeusá-lanãogeraerrosdelógica,decompilaçãooudeexecução.Seguiremos,entretanto,àriscaasrecomendaçõesdeconceitoseconvenções,paraquesejamconhecidasemprofundidadeetambémemnomedaimplantaçãodeboaspráticasdeprogramação.

o projeto da livraria Duke A partir desse ponto, vamos desenvolver um controle de estoque e movimentação para uma livraria fi ctícia, chamada Duke. Todos os exemplos criados a seguir serão reaproveitados para a construção desse projeto. Para o software da empresa, temos a manutenção dos dados (em banco) e o levantamento dos seguintes requisitos:

Para o software da empresa, temos a manutenção dos dados (em banco) e o levantamento dos seguintes requisitos:

• Controle de clientes: vendas.• Controle de funcionários: cálculo de salários.• Controle de produtos: compras, vendas e estoques disponíveis.• Controle de fornecedores: compras realizadas de cada fornecedor.• Controle de compra e venda: o sistema manterá um registro de todas. as movimentações realizadas de acordo com as regras da livraria.

InFoRmátICa 4

102

CaPítulo 4

103

Page 54: 106026095 Informatica Programacao de Computadores Etec

4.5.1. Componentes elementares

4.5.1.1. Classes

EmJava,tudoédefinidoeorganizadoemclasses(apróprialinguageméestru-turadadessaforma).Inclusive,existemautoresquedefendemsercorretochamaraorientaçãoaobjetodeorientaçãoaclasses.AsclassesexercemdiversospapéisemprogramasJava,aprincípíovamosnosateraduasabordagens:

•Classes de modelagem:sãoasquedarãoorigemaobjetos.Ou,ainda,sãoasquedefinemnovos(epersonalizados)“tiposdedados”.

•Classe Principal:terá,porenquanto,afinalidadedeimplementaromé-todomain(principal).Poderiaterqualquernome,desdequerespeitadasas regrasdenomenclaturadeclasses.Seráchamada,então,de“Princi-pal”,comoreferênciaaométodomain.

Nossaprimeiraclasseseráarepresentaçãodeumapessoasegundooscritériosdaorientaçãoaobjetos.Paraisso,utilizaremosumdiagramadeclasse(UML),umcritérioquevaleráparaosdemaisexemplosdessecapítulo(figura64).

Asclassesdemodelagempodemsercomparadasamoldesouformasquedefi-nemascaracterísticaseoscomportamentosdosobjetoscriadosapartirdelas.Valetraçarumparalelocomoprojetodeumautomóvel.Osengenheirosdefi-nemasmedidas,aquantidadedeportas,apotênciadomotor,acapacidadeemrelaçãoaonúmerodepassageiros,alocalizaçãodoestepe,dentreoutrasdescri-çõesnecessáriasparaafabricaçãodeumveículo.

Duranteaelaboraçãodoprojeto,éóbvioqueoautomóvelaindanãoexiste.Po-rém,quandoforfabricado,todasasespecificaçõespreviamentedefinidasnodese-nhoterãodeserseguidasàrisca.Osdiferentesmodelosdessemesmoveículoterãodetalhesdiferenciais,comocordalataria,tipodasrodas,materialdobanco,aces-sóriosetc.Nada,entretanto,quealtereascaracterísticasoriginais,comoumtodo.Serãoinformaçõesacrescentadasaoselementosjádefinidosnoprojeto(atributos).

Ofuncionamentobásicodoautomóveltambémfoidefinidonoprojeto.Omo-toristapoderáacelerar,frear,trocarmarchas,manobraretc.Essasações,assimcomoarespectivarespostadocarro(métodos),permitemumaoutraanalogiacomnossoassunto.Omotorista(queserianonossocasooprogramador)nãoprecisaterconhecimentosprofundossobremecânicapara,porexemplo,acele-raroautomóvel.Internamente,oveículopossuiumcomplexomecanismoqueacionaaspartesresponsáveispelainjeçãoepelacombustão.Esta,porsuavez,geraumapressãosobreoutrasengrenagensdomotor,impulsionandoasrodasefazendoocarrosedeslocar–processostambémespecificadosnoprojeto.Parao motorista, quando o objetivo é velocidade, basta saber que é preciso pisarnopedaldoaceleradorequequantomaispressãoforfeitamaisrápidoanda-ráoveículo.Resumindo:parausodiáriodoautomóvel(objeto)nãoéprecisoconhecerdetalhesdecomoofuncionamentodosmecanismosfoidefinidonoprojeto(classe).Bastaoperá-los(chamarosmétodos,obedecendoàsuaassinatu-ra–comoveremos,emseguida).Damesmaforma,oprogramadornãoprecisasaber,emdetalhes,comoaclasseSystem,porexemplo,foidesenvolvida,massimsabercomoutilizá-laparaapresentarumainformaçãonatela.

4.5.1.1.1. atributos

Asinformações(dados)quedefinemascaracterísticaseosvalorespertinentesàclasseequeserãoarmazenadosnos(futuros)objetossãochamadasdeatributos.Tambémsãoconhecidoscomovariáveisdeinstância.Paranãoconfundircomvariáveiscomuns,vamoschamá-lossempredeatributos.

4.5.1.1.2. métodos

Métodossãoblocosdecódigoquepertencemaumaclasseetêmporfinalidaderealizartarefas.Geralmente,correspondemaumaaçãodoobjeto.Consideran-do-seoexemplodoautomóvel,osmétodospoderiamdefinirprocessoscomoligar,acelerar,frearetc.

4.5.1.1.3. Detalhando o diagrama de classe

Nadescriçãodasinformaçõescontidasnodiagramadeclasse,novostermosaparecerão.Nessemomento,porém,oimportanteéperceberqueodiagra-

Do projeto ao automóvel, assim

como da classe ao objeto.

EqU

IPE

EESC

-USP

BA

JA S

AE

InFoRmátICa 4

104

CaPítulo 4

105

Page 55: 106026095 Informatica Programacao de Computadores Etec

matrazdetalhesdosatributosemétodosquecompõemaclasse.Atabela11descreveosdetalhescontidosnostrêscompartimentos(nome,atributosemétodos)dodiagramadeclasse.

4.5.1.1.4. Codifi cação da classe Pessoa

Aaberturadeumaclasse édefinida com seumodificadorde acesso (de-talhadoaseguir),que,porsuavez,dáavisibilidade(nessecaso,pública),alémdocomandoclassedonomedaclasse.Adefiniçãodaclasseficade-limitadaentreaschaves{},queestabelecemoinícioeofimdeumblocodecódigo–dalinha1a57.Observe,nafigura65,acodificaçãodaclassePessoa.Percebaquepartedocódigofoisuprimida,maisprecisamenteaco-dificaçãodosmétodos(ficandovisívelsomenteaassinatura–ouabertura–dosmétodos),osquaisserãodetalhadosmaisadiante.Épossívelperceberaspartesocultasnocódigopormeiodeumsinalde+nafrentedonúmerodalinha. tabela 11 Detalhes dos três compartimentos do diagrama de classe.

• Por convenção, todo nome de classe começa com letra maiúscula.

• O sinal de menos “-” indica a visibilidade do atributo. Nesse caso, privado (private em inglês).

• Por convenção, todos os nomes de atributos são escritos com letras minúsculas.

• Depois é especifi cado o tipo de dado que será armazenado no atributo

• O sinal de mais “+” indica a visibilidade do método, nesse caso, público (public em inglês).

• Por convenção, o nome dos métodos é escrito com letras minúsculas.

• Os únicos métodos que têm exatamente o mesmo nome da classe são os construtores. Também iniciam com letras maiúsculas.

• Nomes compostos por várias palavras começam com letra minúscula e têm a primeira letra das demais palavras maiúscula, sem espaço, traço, underline, ou qualquer outro separador. Por exemplo, “apresentar Pessoa”.

• Todo método tem parênteses na frente do nome. Servem para defi nir os seus parâmetros. Um método pode ou não ter parâmetros.

• Por último, a defi nição do retorno. Se o método tiver retorno, é especifi cado o tipo, por exemplo, String e se não tiver é colocada a palavra void (vazio).

Nome da classe

Atributos

Métodos

Pessoa

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

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

Figura 64 Diagrama de classe

(UML) da classe Pessoa.

Pessoa

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

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

Principal

+ main(args[ ] : String) : void

InFoRmátICa 4

106

CaPítulo 4

107

Page 56: 106026095 Informatica Programacao de Computadores Etec

Quando analisamos a codificação da classe, percebemos que ali está tudo oque foidefinidonodiagramade classe.Depoisda aberturada classe, vemadeclaraçãodosatributos(dalinha4a6),compostapelomodificadordeacesso(private),peladefiniçãodotipodedadoaserarmazenado(String)epelonomedoatributo(porexemplonome).Emcomparaçãocomodiagramadebloco,asequênciamuda(nodiagramavemomodificadordeacesso,onomeeotipoconformeopadrãodaUML).Masasinformaçõessãoasmesmas.

Como definição de um comportamento específico da classe, temos o métodoapresentarPessoa,quemostraráoconteúdodosatributosemprompt(simuladonoeclipsepelopainelconsole).Conformedefinidonodiagrama,ométodoépúblico(public),nãoretornavalor(void),possuionomeapresentarPessoaenãorecebepa-

Figura 65Codificação da classe Pessoa.

Figura 67 Inserção de comentários no código.

Figura 66 Codificagção

do método apresentarPessoa.

râmetros“()”.Essasespecificações,maisprecisamenteonomeeosparâmetros(aquantidadeeotipo),definemaassinaturadométodo.Issoserádetalhadodepois,assimcomoaslinhasdecódigoquefazemaapresentaçãodosdados.Notrechoilustradopelafigura66,observamosacodificaçãodométodoapresentarPessoa.Percebaquetodaalinhadeinstruçãoterminacomponto-e-vírgula.

4.5.1.1.5. Comentários

Existemalgumasformasdeinserircomentáriosnocódigo,comoilustraafigura67.Essapráticaéaconselhávelparaafuturageraçãodedocumentaçãodosistemaetambémpossibilitaoesclarecimentodocódigoempontosespecíficos.Issopodesermuitoútilparavocêeoutrosprogramadoresquetrabalhemnomesmocódigo.

4.5.1.2. objetos

Apartirdomomentoemqueaclassedemodelagemestácompleta,épossívelcriarumobjetoemanipulá-lo.Outravez,surgirãotermosnovos,explicadosmaisadiante.Oimportante,agora,éperceberqueessaéaclassePrincipal(salvaemumarquivoseparadodaclassePessoa).Nelaestádefinidoométodomain(principal),dentrodoqualestãoaslinhasdecódigoquecriameacessamoobjeto.

TodoprojetoJavapossui,obrigatoriamente,ummétodomain.Éessequea JRE procura para ser executado primeiro. A partir dele, o restante do

InFoRmátICa 4

108

CaPítulo 4

109

Page 57: 106026095 Informatica Programacao de Computadores Etec

sistemaéacessadoeexecutado.Aassinaturadométodomainserásemprefeitadessaforma.

Observeafigura68.Vamosàlinha09,naqualérealizadaacriação(instancia-ção)doobjeto“p”dotipoPessoa.Vejacomoissoocorre:

•Primeirohouveaabstraçãodaentidadedomundorealaserrepresentadaemnossoprograma(nocaso,umapessoa).Issoaconteceunadefiniçãodas informaçõesquedeveríamosarmazenar(atributos)enasaçõesquedeveríamosprogramar(métodos).

•Depois,desenhamosessaentidade(Pessoa),utilizandoumdiagramadeclasse(pertencenteàespecificaçãodaUML)edefinimosaclasse.

•Aodefinirmosaclasse,detalhamostodososatributos(dados)emétodos(ações)pertencentesaessaclasse.

•Umavezdefinidaaclasse(onovotipo),podemoscriar(instanciar)umobjetoparaserutilizado.Lembre-se:naclassesãofeitasasespecificaçõesdoobjeto,assimcomooprojetodoautomóvel.Nósnãomanipulamosaclasse,damesmaformaquenãodirigimosoprojetodoautomóvel.De-vemosinstanciar(criarumobjeto)apartirdaclassecriada,assimcomoocarrodeveserfabricadoapartirdoprojeto.Daí,poderemosmanipularasinformaçõessobreoclientedentrodoprograma,oqueequivaleadirigirocarronomundoreal.

Figura 68Codifi cação da classe Principal.

•Existeapossibilidadedeacessaratributosemétodosdeumaclassepormeiodeoutra,semanecessidadedeinstanciarumobjeto.Issopodeserfeitocomajudadomodificadorstatic(estático),naclasseMathdoJava,porexemplo.

•Paraacriaçãodoobjetonalinha09,primeiramente,éinformadootipo(Pessoa),depoisonomedonovoobjeto(nessecaso,“p”),=new(novo-comandoquecriaumainstânciadaclassequechamamosdeobjeto).Depois,éutilizadoummétodoconstrutor(oúnicotipodemétodoquetemomesmonomedaclasse,inclusivecomletramaiúscula),quepermiteainserçãodedados(informações)nosatributosjánomomentodesuacriação.OobjetopdotipoPessoafoicriadoecontémosvalores“Bart”noatributonome,“Rua:01,nº123”noatributoendereçoe“(19)1234-5678”noatributotelefone.

•Emseguida,comoobjetojácriado,seumétodoapresentarPessoaseráchamadoeasmensagens,apresentadasconformeafigura69.

Figura 69 Saída do método apresentarPessoa().

Classe

Objeto Construtor

MétodoObjeto

Comando

4.5.2. modifi cadores de acesso

Tantoos atributosquantoosmétodosdevem(por clarezade código) ter suavisibilidadedefinidanadeclaração(paraatributos)enaassinatura(paraosmé-todos).Visibilidade,nocaso,significadeixá-losounãodisponíveisparausoemoutrasclassesdaaplicação.Nasdemodelagem,avisibilidadedefinesedeter-minadoatributooumétodoficaráacessívelporintermédiodoobjetodepoisdeinstanciado.Porexemplo,ométodoapresentarPessoafoichamado(acessado)apartirdoobjetop(p.apresentarPessoa())naclassePrincipal,graçasaofatodetersidodefinidocomopublicnaclassePessoa.Setentarmosacessar,porexemplo,oatributoemaildoobjeto,nãoserápossível.Naverdade,esseatributonãoficavisívelnaclassePrincipal,porque foidefinidocomoprivatenaclassePessoa.Ousodemodificadoresdeacessonãoéobrigatório.Seforemomitidos,avi-sibilidadedefault(padrão)adotadaéaprotected(protegido)–visíveldentrodomesmopacote.Porém,seuusodeixaocódigomaisclaroemrelaçãoaoqueestáacessívelounãoporintermédiodosfuturosobjetos.

4.5.2.1. Private

Osatributosemétodosdefinidosporessemodificadorsomentesãovisíveis(po-demseracessados)dentrodaclasseemqueforamcodificados.Porexemplo,oatributoe-maildefinidonaclassePessoa.Dentrodela(normalmentenosmé-todosdaclasse)esseatributopodesermanuseado(seuvalorlidooualterado).

InFoRmátICa 4

110

CaPítulo 4

111

Page 58: 106026095 Informatica Programacao de Computadores Etec

Porém,apartirdeumainstânciadaclassePessoa,istoé,deumobjetodotipoPessoa,oatributoficainacessível.

4.5.2.2. Public

Osatributosemétodosdefinidoscomomodificadorpublicsãovisíveisemqual-quer lugar dentro da classe e podem ser acessados sem nenhuma restrição apartirdeumobjetoinstanciado.

4.5.2.3. Protected

Umterceirotipo,oprotected(protegido,emportuguês),definequeumatributooumétodopodeservistodentrodaprópriaclasseeemobjetosinstanciadosapartirdeclassesquepertençamaomesmopacote(packageeminglês).

Ousodepackagesserádetalhadomaisadiante.

4.5.3. métodos construtores

Outradefiniçãoquebuscamaiorclarezadecódigoéa implementaçãodoconstrutor,ummétodoespecialresponsávelpelainicializaçãodosatributosdeumobjetonomomentodesuacriação(instanciação).Sesuacodificaçãoforomitida,éacionadooconstrutordefault(padrão),queinicializaosatri-butos sem nenhum conteúdo. Em nossos exemplos, adotaremos a práticadedefinirpelomenosdois construtoresporclasse:umque inicializaráosatributosvazioseoutroquepossibilitaráapassagemdevaloresaseremar-mazenadosnosatributos.

Umaclassepodeterquantosconstrutoresforemnecessáriosparaaplicação.Etodoselesterãosempreomesmonomedaclasse(inclusivecomaprimeiraletramaiúscula).Porém,comapassagemdeparâmetrosdiferentes.Osconstrutoresestãodiretamenterelacionadosaosatributos.Portanto,seumaclassenãotiveratributos,osconstrutoresserãodesnecessários.AcodificaçãodosconstrutoresnaclassePessoaficarácomoilustraafigura70.

Oprimeiroconstrutor,semparâmetros(nadaentreosparênteses),adiciona“va-zio”emcadaumdosatributos(porqueostrêsatributossãoString).Jáosegundoestápreparadopararecebertrêsparâmetros,quesãoosvaloresdotipoString,identificadoscomonome,enderecoetelefone(lembre-sedequeareferênciaé

aosvaloresdentrodosparênteses).Essesvaloresserãoatribuídos(armazenados)nasequênciaemqueestãoescritos(oprimeiroparâmetronoprimeiroatributo,osegundoparâmetronosegundoatributoeoterceiroparâmetronoterceiroatributo).Omesmoacontecenométodothis(),noqualosvaloresentreparên-tesesreferem-seaosatributosnamesmasequência.

4.5.4. Garbage Colletor (Coletor de lixo)

Emumsistemaorientadoaobjetos,váriosdelessãoinstanciados(criadosdurantesuaexecução).Paraquesepossautilizaresseobjeto,écriadaumareferênciaaesseendereçodememóriaondeeleestáarmazenado.Todavezque fazemosuma referência aumobjeto, a JVM(maisprecisamenteumrecursodela)registraessainformaçãoemumaespéciedecontador.Assim,é feito o controle de quantas referências estão “apontando” para aqueleespaçodamemória(objeto).Quandoocontadorestáemzero,ouseja,nãoháreferência,oobjetosetornaumcandidatoaserremovidodamemória.

Periodicamente,emintervaloscalculadospelaJVM,essesobjetossemrefe-rênciassãoretiradosdamemóriaeoespaçoalocadovoltaaficardisponível,dandolugaranovos.Orecursoresponsávelporessalimpezadamemóriaé chamado de Garbage Collector (coletor de lixo). Tem como responsa-bilidade rastrear a memória, identificar quantas referências existem paracadaobjetoeexecutarumprocessoqueelimineosobjetossemreferências.Substitui, então, os métodos destrutores e o gerenciamento de ponteiros(referênciasaespaçosdememória)existentesemoutraslinguagens.

4.5.5. o comando this

Othiséutilizadocomoumareferênciaaopróprioobjetoqueestáchaman-doummétodo.Ousodessecomandotambémdeixaclaroquandoestamosnosreferindoaumatributooumétododamesmaclassenaqualestamosprogramando.Nãoéobrigatório,porém,dentrodoconstrutorquerecebeparâmetros,porexemplo,épossívelvisualizaroqueéparâmetroeoqueé atributo. Isso acontece, apesar de os dois terem exatamente osmesmosnomes(osatributosvêmprecedidosdothis).Adotaremosousodothisemtodososnossosexemplos.

4.5.6. Encapsulamento

NoexemplodaclassePessoa,utilizamosmaisumconceitodaprogramaçãoorientadaaobjetos.Quandodefinimosqueumatributo(oumétodo)temavisibilidadeprivada(modificadordeacessoprivate),limitamosoacessoso-menteàsuaclasse.Podemosimaginarque,depoisdeinstanciadooobjeto,esseatributoficaprotegido(encapsulado)dentrodesseobjeto.Assim,nãoépossívelacessá-lodenenhumaoutraclasseouobjeto.Talcaracterísticaéextremamenteimportanteparaprotegeratributosquenãodevemterseusconteúdosvulneráveisaacessosindevidos.

ImaginequeovalormáximoqueumclientepodecompraremumalojaestádefinidoemumatributolimiteDeCreditoemumaclasseCliente(quedáori-

Figura 70 Codificação dos construtores na

classe Pessoa.

Instanciar um objeto é alocar (reservar) um espaço em memória (RAM - Random Access Memory ou memória de acesso randômico).

InFoRmátICa 4

112

CaPítulo 4

113

Page 59: 106026095 Informatica Programacao de Computadores Etec

gemaosclientesdosistema).Sejapordescuidooupormáfé,seovalordesseatributoforalteradoparaumvalorexorbitante,ocorreráaseguintesituaçãono sistema:o cliente (domundo real)ficará liberadopara comprar até essevalorexorbitante(tendoounãocondiçõesparapagar).Normalmente,osem-preendimentos comerciaisdefinem limitesde créditopara seus clientes, to-mandoporbasearendamensaldecadaum,otempodecadastro,ohistóricodepagamentosetc.Enfim,háumaregraparaqueesselimitedecréditosejacalculadoe/ouatualizado.

Agora, imagine outra situação. Determinada classe do sistema é respon-sávelpeloprocessodevendadessamesmaloja.Emalgummomento,seránecessárioverificarseaquantidadedeestoquedisponívelésuficienteparaatenderaospedidos.Portanto,essaclassedeveteracessoaoatributoesto-queDisponíveldoprodutoqueestásendovendido.Talacessoénecessárioeautorizadopelosistema.Porém,seoatributoestoqueDisponivelfoidefini-docomoprivado,esseacessonãoserápossível.Asoluçãoparaoproblemaédefinirmétodosdeacessoparaosatributos.

4.5.6.1. métodos de acesso

Paragarantiroencapsulamentoepossibilitaroacessoaosdadosdoobjeto,são criados métodos de acesso aos atributos em casos específicos. Essesmétodossãocodificadosdentrodaclassee,por isso,definidoscomaces-sibilidadepública(public).Significaqueelespodemseracessadosapartirdoobjeto instanciadodequalquerclasse.Servem,portanto, comoportasdeentradaedesaídadeinformaçõesdosatributos,porondeseusvalorespodemserlidosealterados.

Avantagemdeabriresseacessoviamétodoépoderdefinir(programar)asregrasde leitura e escritanesses atributos.Permite, comono exemplodaloja,identificarseoprocessoqueestá“solicitando”oconteúdodoatributoestoqueDisponíveléautorizadoafazertalconsulta.Ou,maiscríticoainda,sepermiteatualizar(alterar)esseatributodepoisdavendaefetuada(sub-traindoaquantidadevendida),liberaraleituradoatributolimiteDeCredi-toebloquearasuaescrita(alteração).Ocálculodolimiteficaacargodométodo responsávelpor essaoperação.Resumindonenhumaoutra classeouobjetopodeacessardiretamenteosatributosencapsulados.

Seissofornecessário,deve-se“pedir”aoobjetoparaqueelemostreoualte-reovalordeumdeseusatributosmediantesuasprópriasregras(definidasnosmétodosdeacesso).Apesardenãoserobrigatório,adotaremosadefini-çãodeummétododeleituraedeummétododeescritaparacadaatributoda classe. Voltando ao exemplo da classe Pessoa, para acessar o atributonome,temososseguintesmétodosdeacesso:geteset.

4.5.6.1.1. método get

PorpadrãodopróprioJava,osmétodosqueleememostram(retornam)ocon-teúdodeumatributo começamcomapalavra get, seguidapelonomedesseatributo(figura71a).

4.5.6.1.2. método set

Jáosmétodosresponsáveisporescrever(alterar)oconteúdodeumatributoco-meçamcomapalavraset,seguidapelonomedesseatributo(figura71b).

Figura 71a O método get.

Figura 71b O método set.

4.5.7. Representação do encapsulamento em um objeto do tipo Pessoa

Afigura72ilustraoencapsulamentoemumobjetodotipoPessoa.Imagineoobjetocomoumaesfera,quepossuinaparteinterna(azul)osatributos(privados)quenãotêmacessoaomundoexterno(restantedaaplicação).Jáacamadaexterna(amarela)temacessoaomundoexterno(peloladodefora)eàparteinterna(peloladodedentro)

Figura 72 Representação gráfi ca do encapsulamento.

nomeSetters

apres

entar

Pesso

a()

Getters

endereco

telefone

InFoRmátICa 4

114

CaPítulo 4

115

Page 60: 106026095 Informatica Programacao de Computadores Etec

efuncionacomoumapelículaprotetoradoobjeto.Tempassagenspadrãoquetrans-fereminformaçõesdeforaparadentro(setters)ededentroparafora(getters).Alémdisso,têmalgumaspassagens(métodos)comfinalidadesespecíficasequetambémpodementrare/ousaircominformações.Essetráfegoacontecedeacordocomre-grasdeentradaesaídadeinformaçõesdefinidasnaspassagens(métodos).Emnossosexemplos,sempreserãoutilizadosgettersesettersparaacessarosatributos,garantindoosbenefíciosdoencapsulamento.

4.5.8. Visão geral da classe Pessoa e sua estrutura

Afigura73 reproduz a codificação completada classePessoa,destacando ascamadasvistasatéagora.

Figura 73 Codifi cação completa

da classe Pessoa.

getters e setters (métodos de acesso)

atributos

construtores

método específi co da classe Pessoa

Figura 74 O import, na classe JOptionPane.

Figura 75 O uso do caractere especial *.

4.6. Entrada e saída de dadosJávimoscomoinserirdadosnosatributospormeiodoconstrutoretambémcomomostraressesdadospormeiodocomandoSystem.out.println().Existemaindadiferentes formasde leituraedeescritadedadosemJava.Agora,paradesenvolverexemplosmaiselaborados,éprecisosabercomorealizaraentradaeasaídadedadosutilizandoaclasseJOptionPane,localizadanaAPISwing=,quecontémváriosmétodoscomessafinalidade.

4.6.1. Declaração import

OscomandosutilizadosnasclassesdevemestaracessíveisparaqueaJREconsi-gainterpretá-loseexecutá-los.Dessemodo,umconjuntodecomandosbásicosficadisponívelporpadrão,masamaioriadosrecursosdalinguagemnecessitadeumaindicaçãoparaaJRElocalizá-los.Issoéfeitopeladeclaraçãoimport,quedeveserinseridanocomeçodaclasse(antesdaabertura)eécompostapelocaminhoapartirdaAPIatéolocaldorecursodesejado.NocasodaclasseJOp-tionPaneoimportficaráassimcomoaparecenafigura74.

Ousodocaractereespecial*(asterisco)podesubstituirpartedocaminhoespe-cificado,comosugereoexemplodafigura75.

Nessecaso,ainterpretaçãoé“possoutilizarqualquerrecursoexistentedentrodaAPISwingquepertenceaAPIjavax”.AAPISwingeseusrecursosserãoabordadoscomdetalhes,quandoconhecermososcomponentesgráficosdisponíveisnoJava.

4.6.2. apresentação de dados (saída)

Para apresentação de mensagens, será usado o método showMessageDialog,pertencenteàAPISwing.VamosalterarométodoapresentarPessoadaclassePessoacriadaanteriormente,deixandodaformacomoaparecenafigura76.

Usar o método showMessageDialog requer a informação prévia de qualclasse elepertence (JOptionPane) e recebe,nomínimo,doisparâmetros.Oprimeiroéumcomponentedotipoobjectque,porora,usaremos“null”.Jáosegundoéamensagempropriamentedita,quepodesercompostaportrechosdetextoliteral,comconteúdodevariáveis,ouretornodemétodos,

InFoRmátICa 4

116

CaPítulo 4

117

Page 61: 106026095 Informatica Programacao de Computadores Etec

comonoexemplodafigura76,noqualamensagemgeradapelaprimeiralinhaseráotexto“Nome:”,juntando(somandoasStrings)comoretornodométodogetNome(),ouseja,oconteúdodoatributonome.AexecuçãodométodoapresentarPessoaficarácomoilustraasequênciadafigura77.

Épossívelrealizaraapresentaçãodamensagememumaúnicajanela,con-catenandotodasasinformaçõesemumaúnicaString(figura78).

Osinaldemais(+)éoresponsávelpelaconcatenação(soma)dostrechosdetextoseretornodevalordosmétodosget.Oparâmetro“\n”fazumaque-bradelinhanaexibiçãodamensagem.Valelembrarquequebraralinhanoeditor(pressionandoenter)nãofaznenhumadiferençaparaocompilador;é interessante apenas para melhorar a visibilidade do código para o pro-

Figura 76Método

showMessageDialog.

Figura 78 Alteração no método apresentarPessoa.

gramador.AvisualizaçãodométodoapresentarPessoadepoisdaalteraçãoficarácomoilustraafigura79.

4.6.3. leitura de dados (entrada)

Para leitura (entrada) de dados, será usado o método showInputDialog(). E,para testar, acrescentaremos o método inserirDadosPessoa() em nossa classeexemploPessoa(figura80).

OmétodoshowInputDialog() lêa informaçãoe retornaessedadoparaalinhanaqualfoiexecutado.Noexemplodafigura80,essevalorépassadoporparâmetroparaométodoset,queorecebeearmazenanosatributos.

Para que o último exemplo fique mais claro, poderíamos reescrevê-lo daseguinteforma:

Figura 77 Execução

do método apresentarPessoa.

Figura 79 Apresentação da mensagem em uma única janela.

Figura 80 Acréscimo do método inserirDadosPessoa().

PoderíamosarmazenarodadolidopeloshowInputDialog()emumavariáveldotipoStringe,depois,passaressavariáveldeparâmetroparaométodoset,que,porsuavez,pegaráessedadoearmazenaráemseurespectivoatributo.

InFoRmátICa 4

118

CaPítulo 4

119

Page 62: 106026095 Informatica Programacao de Computadores Etec

4.7. assinatura de métodosOcabeçalhodeummétodoécompostoporquatroinformações(figura81).Asduasúltimas(nomeepassagemdeparâmetros)definemsuaassinatura.Querdizerquenãoépossívelterdoismétodosnamesmaclassecomexata-menteomesmonomeeamesmaconfiguraçãodepassagemdeparâmetros(quantidadeetipodedadonamesmasequência).OJavaeaorientaçãoaobjetospossibilitamousodessascaracterísticasnaconstruçãodosmétodosdemaneiramaisampla, fazendousodosconceitosdesobrecarga, sobres-critaeherança.

Agora,éimportantíssimoentenderaestruturadeummétodo.Todaaregracodificada(programada)emJavaselocalizaemmétodos.Saberutilizaraspossibilidadesdeobtenção(passagemdeparâmetros)ededisponibilização(retorno)dedadosnosmétodosévitalnãosóparaescrevernovoscódigoscomotambémparacompreenderosjádesenvolvidos.

No método inserirDadosPessoa(), exemplificado anteriormente, ele nãoretornavalorenão recebeparâmetros.Constatamos issopelousodapa-lavra“void”(vazio)epelaausênciadedefiniçõesentreosparênteses“()”.Concluímos, então, que se houver a necessidade de ler ou de apresentarinformações,essasaçõesserãorealizadaspeloprópriométodo.Emoutraspalavras, esse método não espera e não envia nenhuma informação paraforadeseuescopo(definidopelaschaves“{}”).UtilizaremososmétodosdeacessogetNome()esetNome()comoexemplosnodetalhamentodaentradaesaídadedadosnosmétodos.

4.7.1. Retorno de valor

Ométodo getNome() lê o conteúdodo atributonome e retorna essa in-formaçãoparaolocalondefoisolicitada.Ocomandoreturnenviaovalordefinidoàsuafrente(nocaso,oconteúdodoatributonome)paraforadométodopela“portadesaída”deinformações,definidacomotipoString.

Portanto,ométodoestápreparadopararetornarumvalordotipoStringefazissoquandoexecutaocomandoreturn(figura82).

4.7.2. Passagem de parâmetro

OmétodosetNomefoiescritoparareceberumvalordotipoStringearma-zená-lonoatributonome.A“portadeentrada”devaloresparadentrodomé-todosãoosparênteses,eessasinformações(parâmetros)devemsernomeadaseseustiposdefinidos(figura83).

Figura 81 Informações do

cabeçalho de um método.

Figura 82 Retornar um valor do tipo String.

Figura 83 Passagem de parâmetro.

4.7.3. Retorno de valor e passagem de parâmetro

Sefornecessário,osmétodospodemserdefinidospararecebereretornarvalor.Paraexemplificar,modificaremosométodoinserirDadosPessoa.

Astrêsprimeiraslinhasarmazenamosvaloreslidosemvariáveis.Naquartali-nha,usa-seométodoinserirDadosPessoadoobjetopeasvariáveissãopassadasporparâmetro.Aindanessamesmalinha,apósaexecução,ométodoinserir-DadosPessoaretornaumamensagemdeconfirmaçãoarmazenadanavariávelmensagem.EnaquintalinhaéapresentadaamensagempelométodoshowMes-sageDialog(),comoilustraafigura84.

Classe Pessoa:

Método main, classe Principal:

Método main, classe Principal, a seguir.

Classe Pessoa:

Visibilidade Passagem de parâmetro

Nome do métodoRetorno de valor

InFoRmátICa 4

120

CaPítulo 4

121

Page 63: 106026095 Informatica Programacao de Computadores Etec

Figura 84 Método main da Classe Principal.

SegundoaJavaLanguageSpecification,aspalavrasnull,trueefalsesãochamadasdevaloresliterais,enãodepalavrasreservadas,porém,assimcomoaspalavrasreserva-das,nãoépossívelutilizá-lasparacriarumidentificador(variável,métodoetc.).

4.8.2. tipos de dados

Asinformaçõesmanipuladasnosprogramassãochamadasdedados,osquaissãoorganizadosemtipos.Ostiposdedadosbásicos,tambémconhecidoscomotiposprimitivos,têmumapequenavariaçãoentreasdiferenteslinguagensdeprogramação(confiraoquadroTipos primitivos de dados).

Figura 85 Classe Pessoa.

PALAVRAS RESERVADAS

abstract boolean break byte case catch

char class const continue default do

double else extends fi nal fi nally fl oat

for goto if implements import instanceof

int interface long native new package

private protected public return short static

strictfp super switch synchronized this throw

throws transient try void volatile while

assert

Ométodo recebeos três parâmetros e os passa (tambémporparâmetro)paraosrespectivosmétodossets,osquaisarmazenarãoosdadosnosatri-butos.Depois,retornaumafrase(String)deconfirmação,comomostraafigura85.

4.8. Estruturas e recursos da linguagem Java

4.8.1. Palavras reservadas do Java

AspalavrasreservadasdoJavasãoaquelasquetêmumsentidopredetermi-nadonessalinguagem.Nãopodemserusadasparaoutrosfins,comoporexemplonomesdevariáveisoumétodos.ConfiraquaissãoelasnoquadroPalavras Reservadas.

TIPOS PRIMITIVOS DE DADOSTIPO ABRANGÊNCIA

boolean Pode assumir o valor true (verdadeiro) ou o valor false (falso).

char Caractere em notação unicode de 16 bits. Serve para a armazenagem de dados alfanuméricos. Possui um valor mínimo de ‘\u0000’ e um valor máximo de ‘\uffff’. também pode ser usado como um dado inteiro com valores na faixa entre 0 e 65535.

byte É um inteiro complemento de 2 em 8 bits com sinal. Ele tem um valor mínimo de -128 e um valor máximo de 127 (inclusive).

short É um inteiro complemento de 2 em 16 bits com sinal. Possui um valor mínimo de -32.768 e máximo de 32.767 (inclusive).

int É um inteiro complemento de 2 em 32 bits com sinal. tem valor mínimo de -2.147.483,648 e máximo de 2.147.483,647 (inclusive).

long É um inteiro complemento de 2 em 64 bits com sinal. o seu valor mínimo é -9.223.372.036.854.775,808 e o máximo, 9.223.372.036.854.775,807 (inclusive).

fl oat Representa números em notação de ponto fl utuante normalizada em precisão simples de 32 bits em conformidade com a norma IEEE 754-1985. o menor valor positivo representado por esse tipo é 1.40239846e-46 e o maior, 3.40282347e+38

double Representa números em notação de ponto fl utuante normalizada em precisão dupla de 64 bits em conformidade com a norma IEEE 754-1985. o menor valor positivo representado é 4.94065645841246544e-324 e o maior, 1.7976931348623157e+308

InFoRmátICa 4

122

CaPítulo 4

123

Page 64: 106026095 Informatica Programacao de Computadores Etec

ARITMÉTICOS

+

-

*

/

%

adição

Subtração

multiplicação

Divisão

Resto da divisão

LÓGICOS

&&

||

!

E (and)

ou (or)

não (not)

RELACIONAIS

>

<

>=

<=

==

!=

instanceof

maior que

menor que

maior ou igual a

menor ou igual a

Igual

Diferente

Comparação de tipo

BIT A BIT

&

|

^

<<

>>

>>>

~

E (bitwise and)

ou (bitwise or)

ou exclusivo (bitwise xor)

Deslocamento de bit à esquerda

Deslocamento de bit à direita com extensão de sinal

Deslocamento de bit à direita sem extensão de sinal

negação (inversão bit a bit)

ATRIBUIÇÕES=

+=

-=

*=

/=

atribuição

atribuição com soma

atribuição com subtração

atribuição com multiplicação

atribuição com divisão

ATRIBUIÇÕES BIT A BIT

&=

|=

^=

<<=

>>=

>>>=

atribuição de E bit a bit

atribuição de ou bit a bit

atribuição de ou exclusivo bit a bit

atribuição de deslocamento de bit à esquerda

atribuição de Deslocamento de bit à direita com extensão de sinal

atribuição Deslocamento de bit à direita sem extensão de sinal

4.8.3. operadores

4.8.4. Variáveis e constantes

EmJava,adeclaraçãodevariáveiséfeitainformandootipodedadoseguidodonomedavariável.Apesardenãoserobrigatório,emalgumassituaçõeséinteressanteinicializarosvaloresdasvariáveisnomomentodadeclaração(figura86).

TERNÁRIO

?: Condicional (if-then-else compacto)

INCREMENTO

++ pré-incremento ou pós-incremento

DECREMENTO

-- pré-decremento ou pós-decremento

InFoRmátICa 4

124

CaPítulo 4

125

Page 65: 106026095 Informatica Programacao de Computadores Etec

EvariáveisdotiponuméricoconvertidasparaString(figura90).

4.8.5.2. Cast (matriz)

Sãoconversõesexplícitasentretiposprimitivos,semprerespeitandoafaixadeabrangênciadecada tipo.Basicamente,ocast é feitodo tipo“maior”parao“menor” sob riscode truncamentodovalor se essaordemnão for respeitada(observeoquadroCast).

CONVERSÃO

De

String

String

String

int

fl oat

double

Para

int

fl oat

double

String

String

String

Métodos

Integer.parseInt()

Float.parseFloat()

Double.parseDouble()

Integer.toString() ou String.valueof()

Float.toString() ou String.valueof()

Double.toString() ou String.valueof

Figura 88

Figura 89

Figura 90

CAST

Tipos

byte

short

char

int

long

fl oat

double

Cast válidos

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

Percebaquenostiposfloatedoubledeve-seexplicitaroformato.Casoissonãosejafeito,ocorreráumapromoçãodetipo(vistoaseguir).ConstantesemJavasãodeclaradaspelocomandofinal,ilustradonafigura87.

Convertidaparadadosnuméricos(figura89).

Figura 86 Declaração

de variáveis.

Figura 87Declaração de

constantes.

4.8.5. Conversões de tipos de dados

4.8.5.1. Conversão

Atransformaçãodeumdadodeumtipoemoutroé realizadapormétodosespecíficos,conformeoquadroConversão.

Exemplo:umavariáveldotipoString(figura88).

InFoRmátICa 4

126

CaPítulo 4

127

Page 66: 106026095 Informatica Programacao de Computadores Etec

Exemplos(figura91).

4.8.5.3. Promoção

Apromoçãopodeserentendidacomoumtipodecastautomático(implícito),conformemostraoquadroPromoção.

PROMOÇÃO

Tipos

double

fl oat

long

int

char

short

byte

boolean

Promoções válidas

nenhuma

double

fl oat ou double

long, fl oat ou double

int, long, fl oat ou double

int, long, fl oat ou double (char não)

short, int, long, fl oat ou double (char não)

nenhuma

4.8.6. Desvios condicionais

4.8.6.1. If-else

Aestruturadeiféextremamenteadaptável,podendoassumirqualquerumadasformasilustradasnasfiguras93,94e95.

O if consideraovalor lógico (trueou false, literalmenteverdadeiroou falso)resultantedacondição.Seotipotestadoforumboolean,podemosaproveitarseupróprioformatocomocondição(figura96).

Figura 92

Figura 91

Vejaalgunsexemplosnafigura92.

Figura 93

Figura 94

Figura 95

Figura 96

InFoRmátICa 4

128

CaPítulo 4

129

Page 67: 106026095 Informatica Programacao de Computadores Etec

Quando as classes assumem o papel de tipos, como é o caso do String, essesobjetospossuemmétodosparamanipulaçãodeseusconteúdos.Porexemplo,acomparaçãodeStrings(textos)éfeitapelométodoequals()queretornatrue,seovalorpassadoporparâmetroforigualaoconteúdoarmazenado,efalse,sefordiferente(figura97).

Figura 97

Figura 98Switch case.

Outras classes sãoutilizadas como tipos (por exemplo,Date) e, visualmente,sãodefácilidentificaçãopelaprimeiraletramaiúscula(tiposprimitivossemprecomeçamcomletraminúscula).

4.8.6.2. Switch-case

EmJava,oswitch-casesóaceitaacondiçãonostiposint,byteechar(figura98).

4.8.7.2. Do-while

Otestecondicionalestánofinaldolooping,istoé,oblocodecódigocontidonodo-whileseráexecutadoaprimeiraveze,enquantoacondiçãoforverdadei-ra,serárepetido(figura100).

4.8.7.3. For

Oblocodecódigocontidono“for”serárepetidoquantasvezesacondiçãonaaberturadoloopingdeterminar.Noexemploemseguida,avariáveliráde0a9(figura101).

4.8.7. laços de repetição

4.8.7.1. While

Otestecondicionalestánocomeçodolooping,ouseja,seacondiçãonãoforverdadeira,oblocodecódigocontidonowhilenãoseráexecutado.Sefor,esseblocoserárepetidoenquantoacondiçãopermanecerverdadeira(figura99).

Figura 99

Figura 100

Figura 101

4.8.8. array (Vetor)

Umarray,tambémchamadodevetor,éumaestruturaparecidacomasvariáveis,porém,quepermitearmazenarváriosvalores,desdequesejamdomesmotipo.Porisso,podeserdefinidocomoumaestruturahomogêneadedados.Elepodeserdetiposunidimensionalebidimensional.Aquantidadedevaloresqueumarrayconseguearmazenarédefinidanasuadeclaração.

4.8.8.1. unidimensional

Umarraypodesercompostoporumaúnicadimensão(únicalinha),conformemostraafigura102.

InFoRmátICa 4

130

CaPítulo 4

131

Page 68: 106026095 Informatica Programacao de Computadores Etec

Exemplos:Adeclaraçãopodeserfeitadetrêsmaneiras:Emduasetapas(primeiro,definindo-seotipoe,depoisadimensão,conformeafigura103).

Emumaúnicalinha(figura104).

Atribuindovaloresàsposições(figura105).

Pormeiodeloopings,utilizandoumcontador(figura107).Figura 102 Vetor

unidimensional.

Figura 103

Figura 104

Figura 105

Figura 106

Aleitura(apresentação)podeserfeitadetrêsmaneiras:Acessandoexplicitamenteoíndice(posição)desejado(figura108).

vetorInteiros 10 30 50 20 40

0 1 2 3 4

vetorInteiros

índices

nome

valores

nome valores

índices

Porloopings,utilizandoumcontador(figura109).

Usandoumiterador(detalhadoadiante),comonafigura110.

4.8.8.2. Bidimensional (matrizes)

Umarraybidimensional(oumultidimensional)emJavapodeserentendidocomoumarrayunidimensionalcujasposiçõescontêmoutrosarraysunidimensionaisepodemserregulares(mesmaquantidadedelinhasparatodasascolunas)ouirre-gulares(quantidadedelinhasdiferenteparacadacoluna),conformefigura111.

Essaatribuiçãopodeserfeitadeduasmaneiras:Indicandoexplicitamenteoíndice(posição)desejado(figura106).

Figura 107

Figura 109

Figura 110

Figura 108

InFoRmátICa 4

132

CaPítulo 4

133

Page 69: 106026095 Informatica Programacao de Computadores Etec

Exemplos:Adeclaraçãopodeserfeitadetrêsmaneiras:Emduasetapas(primeiro,definindo-seotipoe,depois,adimensão),comonafigura112.

Emumaúnicalinha,comonafigura113.

Atribuindovaloresàsposições(figura114).

Jáaatribuiçãopodeserrealizadadeduasformas:

Indicandoexplicitamenteoíndice(posição)desejado(figura115).

Figura 111 Vetor

bidimensional irregular. 0 1 2 3 4

matrizInteiros

12

4

32

8

17

1

36

67

6

62

74

23

47

25

41

9

49

85

3

0

1

2

3

4

índices

índices

nome

valores

índices

valores

nome

índices

matrizInteiros

Figura 112

Figura 113

Figura 114

Figura 115

Figura 116

Figura 117

Pormeiodeloopings,utilizandoumcontador(figura116).

Quantoàleitura(apresentação),háduasopçõesparafazê-la:

Acessandoexplicitamenteoíndice(posição)desejado(figura117).

Pormeiodeloopings,utilizandoumcontador(figura118).

Emumdosexemplosanteriores,foimanipuladaumamatrizde3x3,dotipodouble,quepodeserrepresentadapelaimagemdafigura119.

InFoRmátICa 4

134

CaPítulo 4

135

Page 70: 106026095 Informatica Programacao de Computadores Etec

4.8.9. Collections

Éumconjuntodeclasseseinterfacesdisponíveisnopacotejava.util,quefazousodoimportnecessário.Essasclassesfornecemrecursosparatrabalharcomconjuntosdeelementos(coleções).Naverdade,todasasfuncionalidadesencon-tradasnas collections poderiam ser feitasmanualmente, com autilizaçãoderecursosnormaisdalinguagem.Avantagemdascollectionséqueelasjátrazemessasfuncionalidadesprontas.

Oestudodascollectionsérelativamenteextenso,poisexistemmuitosrecursosdispo-níveis.Porenquanto,vamosconhecerumadessascoleções,aArrayList,responsávelpelomanuseiodearrays.Suagrandevantagemécontarcommétodosprontos.

4.8.9.1. arraylist

Antesdenos aprofundarmosnessa coleção, vamosprimeiro conhecermelhor ainterfaceList.Comoopróprionomeindica,elacriaegerenciaumalista.Issosigni-ficaqueaordemdeinserçãoserámantida.AinterfaceListmantémseuselementosindexados.Permite,portanto,queexistaumapreocupaçãocomoposicionamentodecadaelementoequetalposiçãosejadeterminadapeloíndice.Devemosutilizar

Figura 118

Figura 119 Vetor bidimensional

quadrado.

umaListquandoaordemdeinserçãoouaposiçãonacoleçãonosinteressa.Háal-gunsmétodosimportantes,quandomanipulamosLists(confiraoquadroMétodos da Interface List).

MÉTODOS DA INTERFACE LIST

Método

add (objeto)

get (índice)

iterator ()

size ()

contains (objeto)

clear ()

Descrição

adiciona um elemento à list na última posição

Retorna o elemento da posição do índice

Retorna um objeto do tipo Iterator

Retorna um int (inteiro) com a quantidade de elementos da coleção

Retorna true se o elemento já existe dentro do list

Elimina todos os elementos do list

MÉTODOS DA COLLECTION ARRAYLIST

Método

sort (arraylist)

shuffl e (arraylist)

binarySearch (arraylist, “valor”)

reverse (arraylist)

frequency (arraylist, “valor”)

Descrição

ordena os elementos em ordem crescente

É o oposto do sort. ao invés de ordenar, ele desordena (mistura) os elementos do arraylist

Pesquisa um valor no arraylist e retorna sua posição (índice). Se não for encontrado, retorna um número inteiro negativo

Inverte a ordem dos elementos

Conta a quantidade de ocorrências do elemento especifi cado

UmArrayListpodeserentendidocomoumarraydinâmico:eleaumentaoudimi-nuisuadimensãoàmedidaemqueéutilizado.Alémdisso,épossívelarmazenardados(eobjetos)dediferentestiposnomesmoArrayList.AclasseArrayListéfilha(subclasse)deListe,portanto,temtodososmétodospertencentesàList.Veremosmaissobresubclassesadiante,quandoestudarmosoconceitodeherança.

Para fechar essa introduçãobásica sobreCollections, vamosver, em seguida,algunsmétodosmuitoúteis namanipulaçãodeArrayList (observe oquadroMétodos da Collection ArrayList).

0 1 2

matrizDouble

10.0

40.0

70.0

20.0

50.0

80.0

30.0

60.0

90.0

0

1

2

índices

índices

nome

valores

índices

valores

nome

índices

matrizDouble

InFoRmátICa 4

136

CaPítulo 4

137

Page 71: 106026095 Informatica Programacao de Computadores Etec

Exemplos:Adeclaraçãopodeserfeitasemadefiniçãodetipodedadoaserarmazenadoe,comisso,qualquertipoéaceito(figura120).

Atribuiçãodevalores(figura123).

Figura 120

Figura 121

Ordenaçãocrescente(figura124).

Saídaobtida(figura121).

Adefiniçãodotipodedadoéfeitapelosdelimitadores<>,easchamadasaosmétodospodemserfeitascomonosexemplosadiante.

DeclaraçãodeumArrayListdotipoint(figura122).

Figura 122

Figura 123

Figura 124

Figura 126

Figura 125

ListagemdoarrayInteirosjáordenadoporumiterator(dado),comonafigura125.

Saídaobtida(figura126).

Pesquisaseonúmero30constanoarrayInteiros(figura127).

Figura 127

InFoRmátICa 4

138

CaPítulo 4

139

Page 72: 106026095 Informatica Programacao de Computadores Etec

Verificandooresultadodapesquisa(figura128).

Resultadoobtido(figura129).

4.9. orientação a objetos (2)Umavezestudadososfundamentosesintaxesbásicasparaaconstruçãodeobje-tos,equedevemsermuitobemassimilados,oobjetodeestudo,emseguida,sãoosprincipaisconceitosdeorientaçãoaobjetos,detalhandosuascaracterísticaseaplicabilidades.

4.9.1. Herança

Aherançaéumconceitoamplamenteutilizadoemlinguagensorientadasaob-jetos.Alémdevantagensfacilmenteidentificadas,comoareutilizaçãoeorgani-zaçãodecódigos,aherançatambéméabaseparaoutrosconceitos,comoaso-brescritademétodos,classesemétodosabstratosepolimorfismo.Taisconceitossãofundamentaisparaamodelagemdesistemasmaisrobustos.

Duranteaanálisedosrequisitosdeumsistema(solicitaçõesqueosistemadeveráatender),podemosdestacarosatributosouosmétodoscomunsaumgrupodeclasseseconcentrá-losemumaúnicaclasse(processoconhecidocomogenera-lização).Damesmaforma,épossívelidentificaroqueépertinentesomenteadeterminadaclasse(conhecidocomoespecificação).Aprimeiravantagemdessaorganizaçãoéevitaraduplicidadedecódigo(teromesmotrechodecódigoemlugaresdiferentesdo sistema),oque trazmaioragilidadeeconfiabilidadenamanutençãoeexpansãodosistema.

Chamamosdesuperclassesessasclassesqueconcentramatributosemétodoscomuns que podem ser reutilizados (herdados) e de subclasses aquelas quereaproveitam(herdam)essesrecursos.Observeasdefiniçõesdeclientes,for-necedoresefuncionáriosutilizadosnalivrariadeacordocomodiagramadeclasses(figura130).

Figura 128

Figura 129

Aclassepessoacontémoitoatributoseummétodo,osquaissãocomunsparaclientes,fornecedoresefuncionáriose,portanto,deveriamconstarnasclassesCliente,FornecedoreFuncionario.Semorecursodaherança,teríamosquere-plicaressesatributosemétodosnastrêsclasses,procedimentodesaconselhávelemqualquer linguagemdeprogramação,por trazer complexidades extrasnamanutençãoeexpansãodossistemas.Porexemplo,vamosconsiderarumméto-doparaemissãodecorrespondênciaquefoiatualizadoparacomeçaragerarumhistóricoderemessas.Talatualizaçãodeveriaserfeitanastrêsclassesenvolvidase,casoumadelasnãofosserealizada,aatualizaçãodocontrolederemessas(ge-raçãodehistórico)ficariainconsistente.

Nomodeloacima,aclassePessoafoidefinidacomoumasuperclasseeasclassesCliente,FornecedoreFuncionario,comosuassubclasses.Dopontodevistadafuncionalidade,tudooquefoidefinidonasuperclasse(atributosemétodos)seráherdadopelassuassubclasses.Ouseja,umobjetoinstanciadoapartirdaclasseClientepossui12atributos.Sãoeles:nome,endereço,bairro,cidade,UF,telefoneecelulardeclaradosnasuperclassePessoa,alémdelimiteCredito,rendaMensal,RGeCPFnasubclasseCliente.Háaindatrêsmétodos,nosquaismostrartelefonesfoidefinidonaclassePessoaeinserirDadosClienteeapresentarClienteforamde-finidosnaclasseCliente.NautilizaçãodessesatributosemétodosparaumobjetodotipoCliente,ficatransparenteolocalondecadaumfoideclaradooudefinido.

Paraestabeleceraherançaemrelaçãoàcodificação,assuperclassescontinuamcomamesmaestruturadeumaclassecomum(comovimosemexemplosante-riores).Jáassubclassesrecebemasseguintesdefinições:

Figura 130 Herança.

Pessoa

- codigo : int- nome : String- endereco : String- bairro : String- cidade : String- uf : String- telefone : String- celular : String

+ mostrarTelefones() : void

Principal

+ main(args[ ] : String) : void

Cliente

- limiteCredito : double- rendaMensal : double- rg : String- cpf : String

+ inserirDadosCliente() : void+ apresentarCliente() : void

Fornecedor

- cnpj : String- ie : String- contato : String

+ inserirDadosFornecedor() : void+ apresentarFornecedor() : void

Funcionario

- salarioBase : double- salarioFinal : double

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

InFoRmátICa 4

140

CaPítulo 4

141

Page 73: 106026095 Informatica Programacao de Computadores Etec

Aberturadaclasse(figura131).

livrariasãolivros,CDseDVDs,comorepresentadonodiagramadeclassenafigura133.

Ocálculodopreçodevendadosprodutosdalivrariadependedealgunsfatores:emdeterminadasépocasdoano,todososprodutosrecebemamesmaporcentagemdeacréscimoemrelaçãoaopreçodecusto.Seoprodutoemquestão for importado,énecessárioconsideraracotaçãododólar.Emalgumassituações(promoções,porexemplo),éprecisoatualizartodososprodutosdeumdeterminadoumgênero.E,nocasoespecíficodoslivrosdidáticos,ocálculodopreçodevendaédiferentedosdemais.

Emoutras linguagensdeprogramação,comonãoépossíveltermosduasfunções(blocosdecódigoequivalentesamétodos)comomesmonome,nosdepararíamoscomanecessidadedecriarfunçõesnomeadas(calcularPrecoVenda1,calcularPreco-Venda2,calcularPrecoVenda3,calcularPrecoVenda4oucalcularPrecoVendaNormal,calcularPrecoVendaImportado, calcularPrecoVendaPorGenero e calcularPrecoVen-daLivroDidaticoeassimsucessivamente).Dessaforma,alémdenomesextensos,emuitasvezesestranhos,teríamosumaquantidadebemmaiordenomesdefunçõesparadocumentarnosistema.

EmJava,parasituaçõesdessetipo,usamosasobrecargaqueconsideraaidentifica-çãodométodopelaassinaturaenãosomentepelonome.Comojávimos,aassina-turadeummétodoécompostapelonomeepelapassagemdeparâmetros.Assim,épossíveldefinirosmétodoscomomesmonome(calcularPrecoVenda,comonodiagrama)ealternarapassagemdeparâmetros.Observe,nafigura134,comoficaacodificaçãodosmétodosnaclasseProduto.

Figura 131

Figura 132

Ocomandoextendséo responsávelporestabeleceraherança.É inseridonaaberturadasubclasseeindicaonomedasuperclasse,criandovínculoentreelas.

Construtores(figura132).

Osconstrutoresestãodiretamenterelacionadosàinicializaçãodosatributosdeumaclasse.Partindodesseprincípioeconsiderandoonossoexemplo,umobjetodotipoclientepossuitodososatributosdeclaradosnasuasuperclasse(Pessoa)maisosdecla-radosnaclasseCliente.Portanto,oconstrutordeumasubclassedeveestarprepara-doparainicializarosatributosherdadoseosdeclaradosnaprópriaclasse.

Noconstrutorque recebeparâmetros (aqueleque inicializaos atributos comalgumvalor),utilizamosométodosuper()parainvocaroconstrutordasuper-classe.Issoporquejáfoidefinidaneleaformacomoessesatributosserãoinicia-lizados(reutilizandooconstrutorjáexistentenasuperclasse),restandoapenasinicializarosatributosnasubclasse.

Paraacessarosatributosdasuperclasse,obrigatoriamente,devemosutilizarseusmétodosdeacesso(gettersesetters),aocontráriodosatributosinstanciadosnaprópriaclasse,quepodemseracessadosdiretamente.Porém,comojácomen-tamosantes,paragarantiroconceitodeencapsulamentoeusufruirdeseusbe-nefícios(segurança,manutenabilidadeetc.),sempredevemoscriareutilizarosmétodosgettersesettersparatodososatributos.Emrelaçãoaonossoexemplo,omesmoseaplicaàsclassesFornecedoreFuncionario.

4.9.2. Sobrecarga de método (overload)

AprogramaçãoemsistemasdesenvolvidoscomJavaédistribuídaeorga-nizada emmétodos.Muitas vezes, osprogramadores sedeparamcom si-tuaçõesemqueummétododeveserusadopara finalidades semelhantes,mas com dados diferentes. Por exemplo, os produtos comercializados na

Figura 133 Sobrecarga do método calcularPrecoVenda.

livro

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

+ calcularPrecoVenda(didatico : boolean) : void+ inserirDadosLivro() : double+ apresentarLivro() : void

Produto

- codigo : int- descricao : String- genero : String- estoqueDisponivel : int- precoCusto : double- precoVenda : double

+ calcularPrecoVenda() : void+ calcularPrecoVenda(cotacaoDolar : double) : void+ calcularPrecoVenda(genero : String) : void

Cd

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

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

Principal

+ main(args[ ] : String) : void

Dvd

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

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

InFoRmátICa 4

142

CaPítulo 4

143

Page 74: 106026095 Informatica Programacao de Computadores Etec

OJavaidentificaráométodoquedeveserexecutadodeacordocomachamadarealizada,comomostraoexemplodafigura137.

Figura 134 Codifi cação dos

métodos na classe Produto. Figura 137

Figura 135Codifi cação do

métodos na classe Livro.

EnaclasseLivro(figura135): Figura 138 Sobrescrita do método calcularSalarioFinal.

Gerente

- gratifi cacao : double

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

vendedor

- valorComissao : double

+ apresentarFuncionario() : void

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

+ mostrarTelefones() : void

temporario

- comissionado : boolean

+ inserirDadosFuncionario() : void+ apresentarFuncionario() : void+ calcularSalarioFinal(valorVendido : double) : void

Funcionario

- salarioBase : double- salarioFinal : double

+ inserirDadosFuncionario() : void+ calcularSalarioFinal(valorVendido : double) : void

Principal

+ main(args[ ] : String) : void

Figura 136

Comoestásendopassadoumvalordotipodouble,seráexecutadoométodocalcularPrecoVendaqueconsideraacotaçãododólar.

4.9.3. Sobrescrita de método (override)

Asobrescritademétodosestádiretamente relacionadacomaherançae consisteemreescreverummétodoherdado,mudandoseucomportamento,masmantendoexatamenteamesmaassinatura.Paraexemplificar,utilizaremosocálculodosaláriofinaldosfuncionáriosdalivraria(figura138).

Ospontosimportantesnacodificaçãoanteriorsão:

•Adiferenciaçãodasassinaturasdosmétodossebaseianaquantidadeenotipodedadodosparâmetros.

•Asobrecargapodeserrealizadanamesmaclasseouemsubclasses,eoscon-ceitosdeherançasãoaplicadosnautilizaçãodosobjetos.Emnossoexemplo,umobjetodotipoLivrotemquatrométodoscalcularPrecoVenda(),jáCDeDVDtêmtrês.

Nométodomain,teremosoqueilustraafigura136.

InFoRmátICa 4

144

CaPítulo 4

145

Page 75: 106026095 Informatica Programacao de Computadores Etec

NasuperclasseFuncionario, foi implementadoométodocalcularSalarioFinalconsiderandoumaregrageraldecálculo(somar10%dovalorvendidoaosalá-riobase).Consequentemente,essemétodofoiherdadoporsuassubclassesGe-rente,VendedoreTemporario.Oproblemaéque,deacordocomasnormasdalivraria,ocálculodosaláriodosgerentesedostemporáriosédiferente.Paraosvendedores,ométodocalularSalarioFinalherdadoestácorreto,porém,paraGerenteeTemporario,não.OproblemapodesersolucionadocomasobrescritadosmétodoscalcularSalarioFinalnasclassesGerenteeTemporario.NaclasseFuncionario,ométodofoicodificadodaformacomoilustraafigura139.

JánasubclasseGerenteficadaseguintemaneira(figura140).

Figura 139

Figura 140

4.9.4. Classes e métodos abstratos

Épreciso,aprincípio,conhecerosrecursosutilizadosnamodelagemdesistemas.Paraentendermelhoroassunto,devemosampliarohorizonteepensarnaarqui-teturaenodesenhodaaplicaçãocomoumtodo,assimcomonamanutençãoenaexpansão,atividadesquepodemserrealizadasporprogramadores(ouequipesdeprogramadores)distintaseemmomentosdiferentes,masquesempreseguirãoasdefiniçõesdescritasnoprojeto.Aprimeiraabordagemdeclasse abstrataéquesetratadeclassesquenãodarãoorigemaobjetos.Emoutraspalavras,umobjetonãopoderáserinstanciadoapartirdelas.Asuafinalidade,então,édefinir,porgeneralização(possibilitadapelaherança),osrecursos(atributosemétodos)co-munsaumgrupodeclasses(subclasses).Analisemosarepresentaçãodosclientesexistentesnalivrarianodiagramadafigura143.

EnasubclasseTemporario,vejaafigura141.

Figura 141

Osobjetosque representarãoumgerente,umvendedoreumtemporário se-rão instanciados apartirdas classesGerente,Vendedor eTemporario.Nessemomento (da criaçãodos objetos), o Java considera a estruturade cada sub-classe,aqualdáorigemaoobjeto.Então,umobjetodotipoGerenteconsideraa codificação do método calcularSalarioFinal da classe Gerente; um do tipoTemporario leva emcontaa codificaçãodaclasseTemporario, eumdo tipoVendedorfocalizaométodoherdado,mastodossãoinvocadosexatamentedamesmaforma(figura142).

Asobrescritademétodostambémproporcionavantagensrelacionadasaogeren-ciamentopolimórficodeobjetos.

Figura 142

As classes e métodos que vimos anteriormente são chamados de concretos. Os que estamos estudando agora são as classes e métodos abstratos, que possuem algumas características específi cas: 1. Em UML, classes e métodos abstratos são formatados em itálico. 2. Uma classe concreta só pode conter métodos concretos. 3. Uma abstrata pode conter métodos concretos e abstratos. 4. Uma subclasse que herda um método abstrato é obrigada a incluir a assinatura do método, contendo ou não implementação (programação). 5. Enquanto não for incluída a assinatura do método abstrato herdado, a subclasse apresentará um erro que impedirá sua compilação.

Figura 143 Classes abstratas Pessoa e Cliente e método abstrato calcularLimiteCredito.

ClientePJ

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

+ calcularLimiteCredito() : void+ inserirDadosClientePJ() : void+ apresentarClientePJ() : void

ClientePF

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

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

<<abstract>> Cliente

- limiteCredito : double

+ calcularLimiteCredito() : double

<<abstract>> Pessoa

- codigo : int- nome : String- endereco : String- bairro : String- cidade : String- uf : String- telefone : String- celular : String

+ mostrarTelefones() : void

Principal

+ main(args[ ] : String) : void

InFoRmátICa 4

146

CaPítulo 4

147

Page 76: 106026095 Informatica Programacao de Computadores Etec

AsclassesClienteePessoa,nessecontexto,servemsomenteparadefinirquaisecomoserãoosrecursos(atributosemétodos)comunsaClientePFeClientePJ.OsobjetosquerepresentarãoosclientesdalivrariaserãoinstanciadosapartirdasclassesClientePFeClientePJenuncadeClienteemuitomenosdePessoa.AodefinirasclassesPessoaeClientecomoabstratas,evitamosque,porumaeventualfalhadedesenvolvimento,objetossejaminstanciadosapartirdelas,oquenãofariasentido.Alémdeclasses,podemostambémdefinirmétodoscomoabstratos,osquaisservemparadefinireforçar,umapadronizaçãonassubclassesemrelaçãoàexistênciaeàassinaturademétodosherdados.

Um método abstrato não possui implementação (codificação). É compostosomentepelaassinatura,naqualsãodefinidosseunome,passagemdeparâ-metrose retornodevalor.Nacodificaçãodeumasubclassequeestendedeumasuperclasseque,porsuavez,possuiummétodoabstrato,oprogramadoréobrigadoainserir,pelomenos,aassinaturadessemétodo,podendoounãoimplementá-lo(codificá-lo).Voltandoaoexemplodosclientesdalivrariaapre-sentadonafigura130,calcularLimiteCreditodefinidonaclasseClienteéummétodoabstrato.Dessaforma,nasclassesClientePFeClientePJ,somosobri-gadosaincluí-lo.Adeclaraçãoabstractdefineumaclasseabstrata,conformeseobservanafigura144.

Adeclaraçãoabstracttambéméusadaparamétodos(figura145).

Cliente e Funcionario

Parautilizarosistemadalivraria,ousuáriodeveráseridentificadoporumlogineumasenha.Osfuncionáriosterãoacessoaosistemaparautilizá-loemsuasrotinasdetrabalho,comocadastroseatualizaçõesdedadosdosclientes,pro-dutos,movimentação,entreoutrosrecursosdisponíveisnosistema,cujoaces-sotambémserápermitidoaosclientes,paraquepossamvisualizarpromoçõesespeciaisetambémentraremcontatocomalivraria,peloseusitenainternet.Assim,tantofuncionárioscomoclientesdeverãoserdevidamenteidentificados,parateracessoaosistema,algoqueserárealizadodamesmaforma(recebendoologineasenhaeretornandoverdadeirooufalso).Então,pode-seconcluirqueo ideal seriacriarummétododevalidaçãoutilizadotantoporclientescomoporfuncionários.Masparafazerissonosdeparamoscomalgumasdificuldades:

• Cliente e Funcionario são subclasses de Pessoa. Assim, se incluíssemos ométododevalidaçãodeusuárionasuperclassePessoa,osdoisherdariamessemétodoeonossoproblemaestariaaparentementeresolvido.Porém,aclasseFornecedor tambémé subclassedePessoae,por isso, tambémherdariaométododevalidação.Sóqueosfornecedoresnãodeverãoacessarosistema.

•SeométododevalidaçãoforincluídonasuperclasseCliente,suassubclassespossuiriamométodode validação.Todavia, os funcionáriospertencemaoutronívelhierárquicodeclasse(apartirdasubclasseFuncionario)enãoteriamacessoaométodoevalidação.

•Damesmaforma,seforemincluídosnaclasseFuncionario,osclientestam-bémnãoterãoacesso.

Figura 144

Figura 145

AutilizaçãodeummétodoabstratogarantequetodasassubclassesdeClienteobrigatoriamenteterão,pelomenos,aassinaturadométodocalcularLimite-Credito.Issogarantenãosóapadronizaçãodemodelagem(osprogramadoresserãoobrigadosaseguirtaisdefinições)comotambémaaplicaçãodeconcei-tospolimórficos.

4.9.5. Interfaces

Aindanoníveldamodelagemdosistema,asinterfacessãotiposespeciaisdeclassesqueservemparadefinirpadrõesdecomodeterminadosgruposdeclassespoderão serusados,definindoassinaturasdemétodospelas classesquedeverãoseradotadosobrigatoriamentepelasclasses(esubclasses)queasimplementarem.

Umainterfaceécompostasomentepormétodosabstratos(nãopossuiatributosnemmétodosconcretos)epodeservistacomoumaespéciede“contrato”,cujasespecificaçõesasclassesqueas“assinam”(implementam)secomprometemase-guir,ouseja,devemseguirosmétodosneladefinidos.Afigura146ilustraumaimplementaçãodeinterface.

Figura 146Implementação da inteface Usuario pelas classes Cliente e Funcionario.

<<abstract>> Cliente

- limiteCredito : double

+ mostrarTelefones() : void+ calcularLimiteCredito() : double+ validarLogin(login : String, senha : String) : void

<<abstract>>Funcionario

- salarioBase : double- salarioFinal : double

+ mostrarTelefones() : void+ calcularSalarioFinal(valorVendido : double) : void+ validarLogin(login : String, senha : String) : double

<<interface>> Usuario

+ validarLogin(login : String, senha : String) : boolean

<<abstract>> Pessoa

- codigo : int- nome : String- endereco : String- bairro : String- cidade : String- uf : String- tefone : String- celular : String- login : String- senha : String- tipoUsuario : String

+ mostrarTelefones() : void

Fornecedor

- cnpj : String- ie : String- contato : String

+ mostrarTelefones() : void

InFoRmátICa 4

148

CaPítulo 4

149

Page 77: 106026095 Informatica Programacao de Computadores Etec

Ousodeumainterfaceresolveoproblemajáque,paraimplementá-la,asclassesnãoprecisamserdamesmahierarquia.Lembre-sequeumainterfacesópossuimétodosabstratos.Assim,aclasseClienteeaclasseFuncionarionãoreceberãoométododevalidaçãojácodificado.Entretanto,apartirdessaimplementação,teremosacertezadequeexistiráummétodo(comamesmaassinatura)nasclasses(esubclasses)Clien-teeFuncionario.VejaacodificaçãodainterfaceUsuarionafigura147.

Parainterfaces,nãoéobrigatórioousodocomandoabstract,ficandoimplícitoquetodososmétodosinseridosemumainterfacesãoabstratos.A“assinatura”deumainterfaceérealizadapelocomandoimplementsdaseguinteforma:

ClasseCliente(figura148).

necessidade.Porexemplo,paracalcularosimpostosaserempagospelalivraria,devemosconsiderarqueexistemaquelesqueincidemsobreosfuncionárioseosqueincidemsobreosprodutoscomercializados.Nessecaso,podemoscriarumainterfacechamadaCustosquedefinaummétodocalcularImpostos,oqualde-veráserimplementadonaclasseFuncionarioenaclasseProduto.Vejaoexem-plodaclasseFuncionarionafigura152.

Figura 147

4.9.6. Polimorfismo

Opolimorfismoéapossibilidadedeutilizarumobjeto“comosefosse”umou-tro.Emboraoconceitosejaesse,algumaspublicaçõesrelacionadasaoJavaeàorientaçãodeobjetosfazemabordagensdiferentes.Então,podemosconsiderarbasicamentetrêstiposdepolimorfismo:odemétodos,odeclasse,odeinterface.

4.9.6.1. De métodos

Muitos autores consideram polimorfismo a possibilidade de utilizar dois oumaismétodoscomamesmaassinatura,mascomcomportamentos (codifica-ção)diferentes.BastalembrarquejáabordamosumrecursodalinguagemJavaquepermiteexatamenteisso:asobrescrita.Aquestãonãoéavaliarseessavisãoestácorretaounão.Mesmoporque,decertaforma,asobrescritapossibilitaousodeummétodoquepodeassumirváriasformas(executartarefasdiferentes,deacordocomsuacodificação)apartirdamesmachamada,sendodiferenciadopelaclassequedeuorigemaoobjeto. Isso justificariachamaresse recursodepolimórfico,masacreditamosqueémelhordefinidocomosobrescrita.

4.9.6.2. De classe

Considerandoumahierarquiadeclasses, temos,emumasuperclasse,agene-ralização deum tipo e, em suas subclasses, a especializaçãodomesmo tipo.Imagineaseguintesituação:secolocarmosumacestaàdisposiçãodosclientesdalivrariaenelaestiverescrito“Coloqueaquiseusprodutos”,estes“produtos”podemserlivros,CDsouDVDs.Ouainda,todoselesjuntos.Outroexemplo:nalivraria,existeumaportadeacessoaoestoqueenelaháumaplacacomoaviso “Entradapermitida somentepara funcionários”.Tantopode entrarumvendedorcomoumgerente,porqueambossãofuncionários.

EssemesmoprincípioseaplicaaosprogramasemJava.SedefinirmosummétodoquerecebeumobjetodotipoProdutoporparâmetro,podemospassarqualquerobjetoinstanciadoapartirdeumasubclassedeProdutoqueeleseráaceito.Damesmafor-ma,seummétodoesperaumobjetodotipoFuncionario,épossívelpassarumobjetoinstanciadoapartirdaclasseVendedor,porexemplo,queseráaceitosemproblemas.

Oraciocínioéoseguinte:“Umvendedoréumfuncionário”,assimcomo,“Umlivroéumproduto”.Adiferençaéquevendedorfoidefinidoapartirdeuma

ClasseClientePF(figura149).

Figura 149

Figura 148

Figura 151

Figura 150

ClasseFuncionario(figura150).

ClasseGerente(figura151).

Figura 152

Outra importantecaracterísticadas interfaceséqueumamesmaclassepodeimplementar várias delas. Como não existe herança múltipla em Java (umasubclassetermaisdeumasuperclasse),ousodeinterfacesupreessaeventual

InFoRmátICa 4

150

CaPítulo 4

151

Page 78: 106026095 Informatica Programacao de Computadores Etec

especializaçãodaclasseFuncionario.Assim,podeteratributosemétodosespe-cíficosreferentesavendedores,porém,nãodeixadeserumFuncionario.

Apesardeumlivropoderserutilizado“comosefosse”umProduto,nãodeixade“ser”umlivroedeterascaracterísticasespecíficasdelivro.Opolimorfis-mo,portanto,éapossibilidadedeutilizarumobjetocomosefosseoutroenãotransformá-loemoutro.Ousodopolimorfismodeclasse(oudetipo)éexem-plificadonafigura153,queilustraoprocessodevendadalivraria.

NaclasseMovimentacao,háumatributodotipoCliente,ouseja,nelepode-mosarmazenarumobjetoinstanciadoapartirdasclassesClientePFouClien-tePJ.NaclasseItemMovimentacao,temosumatributodotipoProduto,oquesignificapoderarmazenarnesseatributoumobjetocategorizadoapartirdasclassesLivro,CDouDVD.

Figura 153Polimorfi smo

de classe.

Figura 154 Implementação da inteface EntidadeMovimentacao.

4.9.6.3. De interface

Tantoumasuperclassecomoumainterfacepodemserinterpretadascomoum“superTipo”.Ou seja, é possível referenciar umobjetopela interface que suaclassedeorigemimplementa.Voltemosaoexemplodamovimentaçãodalivra-ria.Paradefinirquaisclassespodemserutilizadasnamovimentaçãodemer-cadorias,criamosa interfaceEntidadeMovimentacaoea implementamosnasclassesClienteeFornecedor(figura154).

Amovimentação,considerandocompraevenda,ficarácomoaparecenafigura155.

TemosumaúnicaclasseMovimentacaoresponsávelpelosdadosdocorpodacompraedavenda.Paraarmazenarocliente(nocasodevenda)ouofornecedor(nocasodecompra),háoatributodestinatário,dotipoEntidadeMovimenta-cao,interfacequeasduasclassesimplementam.

Figura 155 Polimorfi smo de classe e de interface.

venda- nota : Movimentacao

+ vender() : void+ fi nalizarNF(nota : Movimentacao) : void

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

+ adicionarItem(item : Movimentacao) : void

Principal

+ main(args[ ] : String) : void

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

+ totalizarItemVenda() : void

<<abstract>> Cliente

- limiteCredito : double

+ mostrarTelefones() : void+ calcularLimiteCredito() : double+ validarLogin(login : String, senha : String) : void

<<abstract>> Funcionario

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

<<interface>> entidademovimentacao

<<abstract>> Pessoa

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

Fornecedor

- cnpj : Spring- ie : Spring- contato : Spring

+ mostrarTelefones() : void

Principal

+ main(args[ ] : String) : void

venda

+ vender() : void+ fi nalizarNF(nota : Movimentacao) : void

Compra

+ comprar() : void+ fi nalizarNF(nota : Movimentacao) : void

movimentacao

- nf : int- data : Date- destinatario : EntidadeMovimentacao- itens[ ] : ItemMovimentacao- status : boolean- tipo : String

+ adicionarItem(item : ItemMovimentacao) : void

Itemmovimentacao

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

+ totalizarItemCompra() : void+ totalizarItemVenda() : void

InFoRmátICa 4

152

CaPítulo 4

153

Page 79: 106026095 Informatica Programacao de Computadores Etec

4.10. Padrões de desenvolvimento de sistemasUmpadrãoparadesenvolvimentodesistemasestabelececritériosdeanálise,or-ganização,modelagem,distribuiçãodetarefas,manutenção,expansãoecomu-nicaçãoentresoftwares.Háduasmétricasbásicasdequalidadequedevemserseguidasporumsoftware:coesãoeacoplamento.Umsoftwaretemqueterumaaltacoesão,istoé,todososcomponentes(métodos,classes,pacotesouqualquerdivisãoquesefazdependendodoseutamanho)edevempossuiromesmonívelderesponsabilidade.Oidealéquecadacomponenteestejafocadonaresoluçãodeumproblemaespecífico.Alémdisso,precisahaverbaixoacoplamento:cadaelementodeveseromaisindependentepossíveldeoutro.Eumaalteraçãodaimplementaçãodeumcomponentenãopodeafetarnenhumoutro.

Ospadrões,então,procuramreduziroacoplamentoeaumentaracoesãoentreaspartesdeumsistema,diminuindo,assim,aduplicaçãodocódigoepossibili-tandoaconsequentereutilizaçãodoscomponentes.Issofazcomqueocustodemanutençãodaaplicaçãocaiaeaqualidadedocódigoaumente.

4.10.1. Programação em três camadas

Umdospadrõesmaisutilizadosnodesenvolvimentodesoftwareséoquesepara,logicamente,umaaplicaçãoemtrêscamadas:de apresentação, de negócio e de dados.Avantagemdessetipodedesenvolvimentoéque,comaindependênciadascamadas,asatualizaçõesecorreçõesemumadelaspodemserfeitassemprejudicarasdemais.Nãohá,portanto,maiorimpactosobreaaplicaçãocomoumtodo.

4.10.2. mVC (model, View, Controller)

OMVC(iniciaisdemodelo,visãoecontrolador)éoutropadrãomuitoutiliza-doemaplicaçõesorientadasaobjetos.Segueomesmoprincípiodaseparaçãoemcamadas,porém,comumfocomaioremcomoessesníveisinteragem.

PodemosveracamadadenegócioscomooModel(contendoasclassesdemodela-gemdaaplicação)eadeapresentaçãocomoaView(comtodaformadeinteraçãocomousuário:interfacesgráficas,páginasdawebetc.).OController,porém,éespecíficodessaarquitetura.ÉonívelresponsávelpelassolicitaçõesaoModel(ins-tanciaeutilizaosobjetosdisponíveis)einteraçãocomaView(recebe,manipulaeforneceosdadosobtidos).Acamadadedados,responsávelpelacomunicaçãocomobancodedados,nãoécitadaespecificamentepelaMVC,podendoservisualiza-dacomopertencenteaoModeloucomoumacamadaindependente.

Apesardeexistirumaconsideráveldocumentaçãoarespeitodaorganizaçãodesoftwares emcamadas e sobreoMVC,nãoháuma regra rígida e inflexíveldedistribuiçãodasclassesnessascamadas.Boapartedadecisãoficaacritériodosprojetistasdesistemas,queadaptamasvantagensdosmodelosexistentesàsnecessidadesespecíficasdecadasoftware,podendo,inclusive,criarcamadasadicionaiscomo,porexemplo,umníveldepersistênciadedados.Oimportanteésaberqueexistemmodelosdeorganizaçãodesoftwaresqueagrupamosre-cursosdosistemaporfuncionalidadee,emJava,esseagrupamentoéfeitoempackages(pacotes).

A camada de apresentação

determina como o usuário interage com a aplicação e

como as informações são captadas e

apresentadas. A de negócio também

é chamada de Lógica empresarial,

Regras de negócio ou Funcionalidade.

É nela que ficam armazenadas as codificações do

funcionamento de todo o negócio. A

de dados gerencia a conexão com todas as fontes de dados

usadas pelo aplicativo (normalmente, um banco de dados) e

o abastecimento de dados dessas

fontes para a lógica de negócio.

Figura 156 Classes contidas no default package.

Figura 157 Organização em packages.

OmesmoprojetoLivrariadevidamenteorganizadoempackagespodeservisua-lizadonasfiguras157e158.

4.10.3. Packages

Nodecorrerdodesenvolvimentodeumsoftware,muitasclassessãocriadase,logo,nosdeparamoscomanecessidadedeorganizá-las.Ospackagesservemparaagruparasclasses,normalmenteporfuncionalidadescomuns.Alémdasvantagens vistas anteriormente, as classes são ordenadas de maneira lógica efísica,pois,paracadapackage,écriadoumdiretórioemdiscoparasalvamento.ComoexemplonoprojetoLivraria,todasasclassesestãocontidasnodefaultpackage,comoseobservanafigura156.

InFoRmátICa 4

154

CaPítulo 4

155

Page 80: 106026095 Informatica Programacao de Computadores Etec

Noeclipse,paracriarumnovopackage,cliquenomenuFile/New/Package.

4.11. Interfaces gráficasAGUI(GraphicalUserInterface,ouInterfaceGráficacomoUsuário),emJava,éumconjuntodeclassesparadisponibilizarcomponentesgráficos(objetos)comocaixasdetexto,botões,listasetc.ÉcompostaporduasAPIs:aAWTeaSwing.

4.11.1. aWt (abstract Window toolkit)

AprimeiraAPIresponsávelporinterfacesgráficasemJavafoiaAWT(AbstractWindowToolkit,ou,literalmente,janelaabstratadecaixadeferramentas),lo-calizadanopacotejava.awt,quefazusodosrecursosdecadasistemaoperacio-nalparadesenharasjanelaseoscomponentesvisuais.Essacaracterísticacriaumadependênciadosistemaemqueaaplicaçãoestárodandoeimpedequeoprogramatenhaomesmoaspectovisualemdiferentesambientesoperacionais.Tambémreduzoscomponentesvisuaisaumconjuntomuitopequeno,comumatodosossistemasoperacionais.Porexemplo,umcomponentevisualdeárvoredeelementos,comonoWindowsExplorer,nãopoderiaserimplementadoemAWT,poisnemtodosossistemasoperacionaistêmtalcomponente.

Apesar das limitações, as interfaces gráficas em AWT ainda são utilizadas emuitosdeseuscomponentespermanecemnasatualizaçõesmaisrecentes,alémdeelaserabaseparaaAPISwing.Observe,nafigura159,umexemplodesuaestruturaealgunsdeseuscomponentes,e,nafigura160,vejaaclasseFormVa-

Figura 158 Classes organizadas em

pacotes (packages).

Figura 160 Classe FormValidacaoUsuario.

Figura 159 Tela de validação de usuários.

lidacaoUsuario,quedáorigemàtelaanterior,paradepoisconferirosprincipaispontosdocódigo(consulteoquadroPrincipais pontos do código).

InFoRmátICa 4

156

CaPítulo 4

157

Page 81: 106026095 Informatica Programacao de Computadores Etec

AclasseFormValidacaoUsuarioéinstanciadaeexibidaapartirdaclassePrinci-pal,reproduzidanafigura161.

Figura 161 Classe Principal.

• Linha 01: importa a API AWT e a disponibiliza para uso.

• Linha 03: o comando extends é responsável por estabelecer a herança entre classes. Assim, a classe FormValidacaoUsuario passa a ser subclasse da classe Frame, que, por sua vez, pertence à API AWT e contém um conjunto de componentes gráficos que podemos utilizar agora, graças à herança.

• Linha 05 a 08: é a declaração dos componentes, necessária, assim como os atributos, para classes que utilizam elementos gráficos. Nesse exemplo, usa-se Button (botões), Label (rótulos), 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 método serão definidos quais componentes irão compor a tela e como.

• Linha 12 a 15: criação dos objetos dimension que contêm as dimensões (altura e largura) usadas em cada componente.

• Linha 17 a 21: alteração de algumas propriedades do Frame (janela) como título (setTitle()); possibilidade de a janela ser ou não redimensionada (setResizable()); tamanho (setSize(), fazendo uso de um objeto dimension (dFrame) para definição desse tamanho; localização em relação ao monitor (setLocation()), e definição 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 localização (em relação ao Frame). Nas linhas seguintes, são instanciados os demais componentes e apresentados seus tamanhos e sua localização.

• Linha 47 a 52: os componentes que foram criados e configurados são adicionados à janela (Frame) para montar a tela.

Principais pontos do código

AoserexecutadaaclassePrincipal,atelareproduzidaantes,nafigura159,seráexibida,masnãoexecutaránenhumaação,nemmesmofuncionaráobotãocomum“x”nocantosuperiordireitodajanela.Éque,paracolocareventos na janela, devemos implementar interfaces específicas para essafinalidade.

4.11.2. Interfaces listeners

Paracontrolaroseventosdeumformulário,devemos incluirnaclasseasinterfaces gerenciadoras de eventos, também chamadas de listeners. Umlistener pode ser entendido como um “ouvinte” ou um “rastreador”, queconseguecapturarumeventoocorridonoformulárioepermitevincularaele,umaação(codificação).Entreosdiferentestiposdeeventosquepodemocorrer,osmaiscomunssão:

•Eventos de ação (em componentes): implementados pela interfaceActionListener.

•Eventos de janela:implementadospelainterfaceWindowListener.

• Eventos de teclado:implementadospelainterfaceKeyListener.

•Eventos de mouse:implementadospelainterfaceMouseListener.

Cadaumdos listenerspossuimétodosquecapturamoseventosocorridos.AinterfaceActionListenerpossuiapenasum,queé:

•actionPerformed().

AinterfaceWindowListenertemsete:

• windowActivated(), windowDeactivated(), windowIconified(), window-Deiconified(),windowOpened(),windowClosed()ewindowClosing().

AinterfaceKeyListenercontacomtrês:

•keyPressed(),keyReleased()ekeyTyped().

InFoRmátICa 4

158

CaPítulo 4

159

Page 82: 106026095 Informatica Programacao de Computadores Etec

AinterfaceMouseListenertemcinco:

•mouseCliecked(),mouseEntered(),mouseExited(),mousePressed()emou-seReleased().

Aimplementaçãodeumainterfaceéfeitapelocomandoimplements,inseridona aberturada classe.Osmétodosdas interfaces listeners são abstratos.Por-tanto,aoimplementá-los,todososseusmétodosdevemestarinseridosnaclas-se.Vamos,então,implementarasinterfaceslistenersWindowListener(paralereventosdejanela)eActionListener(paralereventosdecomponentes)naclasseFormValidacaoUsuario.Observe,nafigura162,aestrutura(organizaçãodepa-ckages)doprojetoValidacaoUsuario.

Figura 165 Codificação do método validarLogin da classe ClientePF.

Figura 162Projeto

ValidacaoUsuario.

Figura 163Classe

FormValidarUsuario atualizada.

VejacomoficouaclasseFormValidarUsuarioapósaatualização(figura163)e,emseguida,confiraumaanálisedacodificação.

Napróximacodificação,vemoscomoimplementaroWindowListener(figura164).

Figura 164 Como implementar o WindowListener.

ParaqueoWindowListenerfuncione,énecessárioadicionaroFrameaele(pelomé-todoaddWindowListener(this),vistonalinha86),assimcomoimplementarossetemétodos(abstratos)pertencentesaoWindowListener(linhas90a110),mesmoquesóutilizandoumdeles(windowClosing)parafecharoformulário(linhas108a110).

VamosvercomoéofuncionamentodoActionListener,aproveitandoaoportu-nidadeparaentendercomofazerainteraçãoentreumobjeto(originadodeumaclasse de modelagem, como foi possível observar nos exemplos anteriores) e oformulário,queagoraexercea tarefade secomunicarcomousuário (camadaview).OobjetoemquestãoédotipoClientePFepossui,entreoutrosatributos,um logineuma senha.Esseobjeto tambémconta comummétodochamadovalidarLogin,querecebeduasStringsporparâmetro(loginesenha)eascomparacomseusatributos(loginesenha).Seforemiguais,apresentaráumamensagem“Clienteautorizado!”,casocontrário,mostrará“Logindesconhecido!”.Emsegui-da,confiraacodificaçãodométodovalidarLogindaclasseClientePF(figura165).

Linha 01:deacordocomaestruturadepackages,énecessáriodefiniraqualclassepertence.

Linha 02 a 07:importsdasclassesquepossuemosrecursospararea-lizaraleituradeeventos.

Linha 09: inclusãodasduas listenersnaaberturadaclassepeloco-mandoimplements.

InFoRmátICa 4

160

CaPítulo 4

161

Page 83: 106026095 Informatica Programacao de Computadores Etec

Para fazer a interaçãodoobjeto clientePF coma tela de login, instanciamosoobjetonaclasseFormValidacaoUsuario,inicializandoologincomapalavra“aluno”easenhacom“123”,peloconstrutor.Maisumavez,respeitandoaor-ganizaçãodepackages.ParateracessoàclasseClientePF,énecessárioimportaropacotemodel(linha14),conformeilustraafigura166.

O próximo passo é adicionar os botões ao ActionListener, pelo métodoaddActionListener(this),paraqueelespassemasermonitoradospeloAction-Listener(figura167).

Figura 168 Implementando o

actionPermormed.

Figura 166 Importando o pacote model.

Figura 167Adicionando botões ao

ActionListener.

E,porfim,implementarométodoactionPerformed(figura168).

QuandoumeventofordisparadoemqualquercomponenteadicionadoaoActionListener,eleserácapturadoeométodoactionPerformed,executado.Resta,agora,identificarqualcomponentesofreuoprocesso.Paraisso,uti-lizaremosoparâmetrodotipoActionEventdométodoactionPerformedeinvocaremosseumétodogetSource(),queretornaráonomedocomponentequedisparouoprocesso.SeocomponenteforigualaobValidar(nomedobotão),éverificadoseumdosdoistextFieldsestãovazios.Casonãoeste-jam,ométodovalidarLogindoobjetoclientePFéacionado,passandoporparâmetrooquefoidigitadonostextfieldstfLoginetfSenha.Oscompo-nentes textFieldspossuemummétodogetText()para recuperaroque foidigitadoneleeummétodosetText()quealteraoseuvalor.

4.11.3. Swing

AAPISwing,localizadanopacotejavax.swing,éumaatualizaçãodaAWTque soluciona - ou pelo menos diminui - a dependência do sistema ope-racional, característica de interfaces desenvolvidas com AWT. Essa APIdesenha cada componente ou janela que necessita. Assim, permite que ocomportamento visual do programa seja o mesmo em qualquer platafor-ma, alémdeoferecerumconjunto extensode componentes visuais.ParatestarasdiferençasentreoAWTeaSwing,vamos“transformar”aclasseFormValidarUsuarioemSwing.Primeiro,valeanalisaraaberturadaclasse(figura169).

Linha 06 a 11:importsdaAPISwing.

Linha 15:aherançaagoraéestabelecidacomumaclasseJFrame.

Visualmente,adiferençadenomenclaturasdecomponentesdoAWTemre-laçãoàSwingéainserçãodeumJnafrentedecadanome.AlémdeJFrame,temosadeclaraçãodoscomponentesutilizadosnatela(dalinha19a22)todosiniciandocomumJ.

Figura 169 A classe FormValidacaoUsuario utilizando o swing.

InFoRmátICa 4

162

CaPítulo 4

163

Page 84: 106026095 Informatica Programacao de Computadores Etec

Emrelaçãoaoslisteners,aimplementaçãoexplícitanãoémaisnecessária.Elescontinuamsendoutilizados,mas,agora,deformaimplícita.Notrechoseguintedafigura170,temosoiníciodoconstrutoreainstanciaçãodoscomponentes.

Figura 170Início do construtor

e instanciação dos componentes.

Figura 171Trecho que

define os eventos.

Linha 44: ainclusãodeumcomponentenainterfaceActionLis-tener (deixandopreparadopara receberumevento), assimcomoautilizaçãodeAWT,érealizadapelométodoaddActionListener.Porém,comaSwingécriadoumaActionListener(linha45)den-trodométodoaddActionListenereédefinidoseumétodoactio-nPerformed(linha46).ComousodoAWT,tínhamosumúnicométodo actionPerformed e, nele, identificávamos o componentequesofreuumevento.ComaSwing,háadefiniçãodeumAction-ListeneredeummétodoactionPerformedparacadacomponentequepodesofrerumevento.

Emrelaçãoàsinstruçõesdefinidasnoevento,valeobservaroquevemmaisadiante.

Linha 48: para leitura da senha foi utilizado um componente dotipoJPasswordField,quesubstituiasenhadigitadaporoutroscarac-teres(asteriscosoubolinhas,porexemplo).Pararecuperarasenha,énecessário“converter”essescaracteresparaString,permitindoquesejamutilizados.

Nasequência,éverificadoseologinouasenhaestãovazios(linha50).Então,ométodovalidarLogindoobjetoclientePFéinvocado,passando-seologineasenha(lidospeloformulário)porparâmetros.

Emrelação ao exemploAWT,ométodovalidarLogin retorna true (seosvalores passados forem iguais ao seus atributos login e senha) e false, seforemdiferentes.Aestruturadedesviocondicionalifcodificadanalinha55consideraesseretornoparaapresentarumadasmensagensdefinidas.Aseguir(figura172),encontra-seacodificaçãodométodovalidarLogin(jámodificado)daclasseClientePF.

Figura 172 Codificação do método validarLogin já modificado.

Erros de lógica: apresentam-se na elaboração de um algoritmo não apropriado para solucionar o problema. Não causam necessariamente interrupção na execução do programa.Erros de execução: mais específicos se comparados aos lógicos, decorrem de uma operação inválida e causam interrupção na execução do programa, porque este recebe um sinal indicando que a operação não pode ser realizada.

UtilizandoaAPISwing,ogerenciamentodajanelaficouacargodocomponen-tedotipoConteiner,quereceberáeorganizarátodososcomponentes.

Linha 26: define o título da janela pelo construtor da superclasse(acessadopelométodosuper()).

Linha 27:criaumcomponentenomeadocomoteladotipoConteiner.

Linha 28:definequenãoseráutilizadoumgerenciadordelayout.

Linha 30 a 40:declaraoscomponentesedefinetamanhoeposicionamento.

OmétodosetBounds()éresponsávelpordefinirotamanhoealocalizaçãodocom-ponentepelosparâmetrosquerecebe,naseguintesequência:coluna,linha,larguraealtura.Nafigura171,observeotrechoquedefineoseventos.

AAPIAWTeaSwingpossuemvárioscomponentesquenãoforamabordadosnessesexemplos.

4.12. tratamentos de exceçõesNaexecuçãodeumprograma,épossívelqueocorramerros de lógica e de execução,capazesdeprovocarasua interrupção,deproduzirresultadosincorretosouaindadecausarumaocorrênciainesperada.

InFoRmátICa 4

164

CaPítulo 4

165

Page 85: 106026095 Informatica Programacao de Computadores Etec

Aslinguagensdeprogramaçãopossuemformasparaidentificaretrataroserrosdeexecução.EmJava,sãodetectadospelaJVMeécriadoumobjetodeumaclassequecaracterizaoerro.Oprogramaquegerouoerroénotificadoe,casosejapossíveltratá-lo,pode-seacessaroobjetoqueocaracteriza.

OserrossãocaracterizadosporobjetosdeclassesespecíficasquepertencemàhierarquiadaclasseTh rowable.Umapartedessahierarquiapodeservisualizadanafigura173.

AclasseTh rowableéasuperclassedaclasseExceptione,portanto,tambéméasuperclassedetodasasexceções.SomenteobjetosTh rowablepodemseruti-lizadoscomomecanismosdetratamentodeexceções.ATh rowabletemduassubclasses:ErroreExceptions.

4.12.1. Error

AError,comsuassubclasses,éutilizadapara indicarerrosgravesquenãoseesperamquesejamtratadospeloprogramas.Errorsraramenteacontecemenãosão de responsabilidade da aplicação. Exemplos de Errors são os internos daJVMeafaltadememória.

4.12.2. Exception

Os erros em Java são,normalmente, chamadosde exceptions.Uma exceção,como sugere o significadodapalavra, éuma situaçãoquenormalmentenãoocorre(ounãodeveriaocorrer),algoestranhoouinesperadoprovocadonosiste-ma.OJavadistingueduascategoriasdeexceções:Unchecked(nãoverificadas)eChecked(verificadas).

Figura 173 Parte da hierarquia

da classe Throwable.

4.12.2.1. unchecked Exception

UmaexceçãonãoverificadaéaquelaemqueocompiladorJavanãochecaocódigoparadeterminarseelafoicapturadaoudeclarada.Emoutraspalavras,oprograma-dornãoéobrigadoainserirotratamentodeerro.Demodogeral,pode-seimpediraocorrênciadeexceçõesnãoverificadaspelacodificaçãoadequada.Todosostiposdeexceção,quesãosubclassesdiretasouindiretasdaclasseRuntimeException,sãoexceçõesnãoverificadas.SãoexemplosdeUncheckedExceptionsaentradadetiposincompatíveis(LeituradeumaStringemumatributodouble,porexemplo);acessoaíndiceinexistenteemumarrayechamadaaummétododeumobjetonulo.

4.12.2.2. Checked Exception

JáemumaCheckedException,ocompiladoracusaapossívelexceçãoeobrigaoprogramadoratratá-la.ExistemduasformasdetratarumaCheckedException:usandoacláusulathrowsouaestruturatry-catch-finally.

4.12.2.3. throws

OTh rowsdelega,paraolocalondeométodofoisolicitado,aresponsabilidadedetrataroerro.Issoquerdizerqueaobrigatoriedadedetratamentoépassadaparaaclassequefaráachamadaaométodo.

4.12.2.4. try-catch-fi nally

ÉaprincipalestruturaparacapturadeerrosemJava.Ocódigotentará(try)executaroblocodecódigoquepodegerarumaexceçãoe,casoissoocorra,oerro gerado será capturadopelo catch, quepossui umparâmetrode exceção(identificaçãodoerro)seguidoporumblocodecódigoqueocapturae,assim,permiteotratamento.Épossíveldefinirvárioscatchparacadatry.Ofinallyéopcionale,seforusado,écolocadodepoisdoúltimocatch.Havendoounãoumaexceção(identificadanoblocotry)oblocofinallysempreseráexecutado.

Paraexemplificarautilizaçãodosrecursosdetratamentodeexceçõesutilizare-mosoexemplodevalidaçãodeloginvistosnossubcapítulosanteriores.

ConsideremosquenaclasseClientePFoatributosenhaédotipointe,portan-to,paraarmazenarumvalorneleéprecisoconvertê-lo,jáqueoscomponentestextFieldinterpretamqualquervalorlidocomoString.Observe,nafigura174,acodificaçãodométodovalidarLoginnaclasseClientePF.

Figura 174 Codifi cação do método validarLogin na classe ClientePF.

Throwable

Exception

RuntimeException

ArrayIndexOutOfBoundsException InputMismatchException

ClassCastException NullPointerException ArithmeticException

IOException ThreadDeathAWTError

Error

OutOfMemoryError

InFoRmátICa 4

166

CaPítulo 4

167

Page 86: 106026095 Informatica Programacao de Computadores Etec

Nalinha50,asenhaobtidapormeiodocomponentetpSenhadotipoJPas-swordFieldprecisaserconvertidaparaintantesdeserpassadaporparâmetronachamadadométodovalidarLogin(linha56).Sefordigitadaumaletranocampo senha, a conversão para int (linha 50) gerará uma exception do tipoNumberFormatException.Percebaqueo compiladornãonosobriga a trataresseerro.Portanto,estamosdiantedeumUncheckedException(outraformade identificaro tipodaexceçãoéconsiderarqueNumberFormatExceptionésubclassedeRuntimeException).A inserçãoda estruturade try-catch-finallypodetrataressapossívelexceçãodaformacomoilustraafigura176.

Figura 176Validação com

try-catch-finally.

Figura 175 Evento do

componente bOk na classe

FormValidacaoUsuario.

Oblocodecódigoentreaslinhas55e63pertenceaotry.Sealgumaexceçãoocorrernestetrechoelaserácapturadapelocatchdalinha64.ComoopossívelerroqueestamostratandoocorreránaconversãodeStringparaint,umobjetodotipoNumberFormatException(aclassedeexceçãoresponsávelporessetipodeerro)apreendeoerroeépassadoporparâmetroparaocatch.Dentrodocatch(linha65)éapresentadaumamensagemexplicativaparaousuárioeoprogramacontinua sua execução.Peloobjeto erro (parâmetrodo tipoNum-berFormatExceptionutilizadonocatch)épossívelrecuperarmaisdetalhesdaexceçãoporintermédiodemétodosexistentesemtodasasclassesdeexceção.Nesseexemplo,ofinallyfoicolocadosomenteparamostrarque,ocorrendoounãoumaexceção,amensagemcontidaneleseráexibida.

Podemostambémutilizarasexceptionsparatratardeterminadassituaçõesnosquaispodehavernecessidadederealizarverificaçõesquenãosãonecessariamenteerros,massimvaloresinválidos,nocontextodaaplicaçãodesenvolvida.Porexemplo,considere-mosque,paraserválida,asenha(doexemplodevalidaçãodelogin)deveestarentre0e1000.Essaéumaregradaaplicação,porém,analisandootipointnoqualasenhaéarmazenada,afaixadeabrangênciavaide-2.147.483,648a2.147.483,647,ouseja,estandonessafaixadevaloresocompiladornãogeraráumaexceção.Masparaami-nhaaplicação,umvalorinformadoforadafaixaentre0e1000éumaexceção.Paraessescasos,podemosutilizaracláusulathrow(nãoconfundircomthrows,quetemoutrosentido,estudadomaisadiante),querealizaumachamadaaumaexceção(forçaumaexceção).Vejamos,nafigura177,comoficaráavalidaçãocomousodothrow.

Nalinha58,éverificadoseasenhainformadaestáforadafaixadevalorespre-vista.Seestiver,aexceptionIllegalArgumentExceptionéinvocadaecapturadapelocatchdalinha71,ondeumamensagemseráexibida.

Parafecharnossosexemplosdetratamentosdeexceção,vamosanalisarocom-portamentodoJava(eosrecursosdoeclipse)emrelaçãoaCheckedExceptions

Figura 177 Validação com uso do throw.

InFoRmátICa 4

168

CaPítulo 4

169

Page 87: 106026095 Informatica Programacao de Computadores Etec

Figura 179 Opções de tratamento.

Figura 178 Observação de erro de uma checked exception.

Figura 180 Utilizando o try-catch.

eaousodethrows.ParatestarmosasCheckedExceptions,utilizaremosaclasseFileReader,responsávelporleituradearquivosemdisco.Nãoentraremosemdetalhessobreessaeoutrasclassesresponsáveispormanipulaçãodearquivos.Porhora,bastasaberque,aousá-la,umaexceçãodotipoFileNotFoundExcep-tionpodesergeradaeessaéumaCheckedException.

Emnossoexemplodevalidaçãodelogin,consideremosagoraque,aologar,o usuário terá acesso ao conteúdo de um arquivo texto, nomeado comoconfidencial.txt,salvonoHDdamáquinanoqualoprogramaestásendoexecutado.Aodigitaralinhadecomandoquerealizaaleituradoarquivo,umaobservaçãodeerroaparecenoeclipsedaformailustradanafigura178.

Parandocomoponteirodomousesobreaobservaçãodeerro,seráexibidoomenususpensoilustradonafigura179.

Nessemomento,háduasalternativas(comoopróprioeclipsesugere):inserirumtry-catchparatrataraexceçãonoprópriométodo,ou,utilizaracláusulathrowsparapostergaro tratamentodaexceção,passandoessa responsabi-lidadeparaaclasseque irá realizarachamadadessemétodo. Inserindootry-catch,aexceçãoétratada,comovemosnopróximocódigo(figura180).Jáothrowséutilizadodaformacomosugereafigura181.

Naassinaturadométodo,éinseridanacláusulathrowsenaexceptionquede-verásertratadaquandoométodoforutilizado.Ocompiladorparadeexigirotratamentonométodoepassaacobrá-lonasuachamada,emnossoexemplo,naclasseFormValidacaoUsuario(figura182).

Como a linhaque faz a chamada aométodo validarLogin (linha61) já estádentrodeumblocodetry,bastaacrescentarocatchdaexceptionredirecionadapelothrows,nocaso,FileNotFounException(linha71).

Figura 181 Uso do throws na

classe ClientePF.

Figura 182 Uso do throws na classe FormValidacaoUsuario.

InFoRmátICa 4

170

CaPítulo 4

171

Page 88: 106026095 Informatica Programacao de Computadores Etec

ÉpossívelcapturarumaexceçãorecorrendoàclasseException(classemãedasexceções),ouseja,qualquererroseráinterceptado.Essetipodetrata-mentoédesaconselháveledevesemprequepossívelserevitadodevidoàfal-tadeespecificaçãodoerroocorrido.AsformasdetratamentodeexceçõesemJavanãoforamesgotadasnessecapítulo,existindoaindaapossibilidadedecriaçãodenossasprópriasclassesdeexceçõeseamanipulaçãodeváriasoutrasexceptions.

eé,portanto,inteiramentecompatívelcomasclassesresponsáveispelaconexãoemanipulaçãodosdados.

IMPORTANTE: A partir desse ponto é preciso que os conceitos relacionados à estrutura dos bancos de dados relacionais e a linguagem SQL já tenham sido estudados e devidamente aprendidos. Caso ainda falte alguma etapa para essa consolidação, vale uma boa consulta às diversas publicações disponíveis sobre o assunto, bem como documentações referentes ao MySQL.

O MySQL é um banco de código-fonte

aberto, gratuito e está disponível tanto

para o Windows como para o Linux.

O download pode ser feito diretamente do site do fabricante

(http://dev.mysql.com/downloads/). A versão

utilizada nos exemplos deste item é a 5.0.

• ArithmeticException: resultado de uma operação matemática inválida.

• NullPointerException: tentativa de acessar um objeto ou método antes que seja instanciado.

• ArrayIndexOutOfBoundsException: tentativa de acessar um elemento de um vetor além de sua dimensão (tamanho) original.

• NumberFormatException: incompatibilidade de tipos numéricos.

• FileNotFoundException: arquivo não encontrado.

• ClassCastException: tentativa de conversão incompatível.

Exemplos de exceptions mais comuns

• Estabelecer a conexão com o banco de dados

• Executar comandos SQL

• Permitir a manipulação de resultados (dados) obtidos a partir da execução de comandos SQL

• Gerenciar transações (ações realizadas simultaneamente por um a um dos usuários conectados ao SGBD)

• Capturar e possibilitar o tratamento de exceções relacionadas à conexão e utilização do banco.

Principais funcionalidades do JDBC

4.13. Conexão com banco de dadosPordefinição,umbancodedadoséumconjuntodeinformaçõesarmaze-nadasemummeiofísico(papel,discorígidoetc.),organizadasdetalformaque seja possível fazer sua manutenção (inclusão, alteração e exclusão) ediferentesformasdepesquisas.Considerandoosbancosdedadosinforma-tizados,osSGBDs(SistemasGerenciadoresdeBancosdeDados)possuemrecursosparamanutenção, acesso, controledeusuários, segurança, e ou-tras ferramentasdegerenciamento.OSQL(StructuredQueryLanguage,ou  linguagemdeconsultaestruturada)éumalinguagemdemanipulaçãodedadosquesetornoupadrãoparaSGBDRs(SistemasGerenciadoresdeBancosdeDadosRelacionais).EntreossistemasdegerenciamentodeSGB-DRs populares estão: o Microsoft SQL Server, o Oracle, o IBM DB2, oPostgreSQLeoMySQL.

4.13.1. JDBC (Java Database Connectivity)

ÉaAPI(conjuntodeclasseseinterfaces)responsávelpelaconexãodeprogramasdesenvolvidosemJavacomváriostiposdebancosdedados.OpróprioJDBC(confiraoquadroPrincipais funcionalidades do JDBC)foidesenvolvidoemJava

Paraqueumsistema(projeto)Javapossaseconectaregerenciarumaconexãocombancodedados,deveserconfiguradoparateracessoao(s)driver(s)JDBCreferen-teao(s)banco(s)utilizado(s).AJDBCsuportaquatrocategoriasdedrivers:adetipo1,queéaponteJDBC-ODBC;adetipo2,APInativaparcialmenteJava;adetipo3,oProtocoloderedetotalmenteJava;eadetipo4,oProtocolonativototalmenteJava.Ascaracterísticasdecadaumdelesestãodefinidasaseguir.

tipo 1: JDBC-oDBC bridge driver (Ponte JDBC-oDBC)

OODBC(OpenDataBaseConnectivity)éorecursopadrãodisponibilizadopelaMicrosoft,responsávelpelaconexãoabancosdedadosnaplataformaWindows.OdriverJDBCdoTipo1provêacomunicaçãoentreoODBCeaAPIJDBC,queéopadrãodeconexãoabancosdedadosparaaplicaçõesdesenvolvidasemJava.SuavantageméseridealparaintegraçãodeaplicaçõesJavaemambientesquejápossuemaplicaçõesdesenvolvidasparaaplataformaWindows.Há,porém,duasdesvantagens:nãoéindicadoparaaplicaçõesemgrandeescala,poisseudesempenhocaiàmedidaqueaschamadasJDBCtrafegampormeiodaponteparaodriverODBC;eodriverJDBC-ODBCprecisaestarinstaladonocliente.

tipo 2: native aPI partly Java driver (aPI nativa parcialmente Java)

Osdrivers JDBCdoTipo2permitema comunicaçãode aplicações Javacom os drivers nativos dos SGBDs (geralmente desenvolvidos em C ouC++).Nessesentido,sãosemelhantesaosdotipo1,porém,criamumapon-teentreosdriversnativosdecadaSGBDcomasaplicaçõesJava.Suavanta-geméterumdesempenhomelhorqueodriverdeTipo1.JáadesvantageméqueodrivernativoespecíficodoSGBDutilizadodeveestarinstaladonamáquinacliente,oque impossibilitaaplicaçõesweb,poisénecessárioteracessoàsmáquinasclientes.

InFoRmátICa 4

172

CaPítulo 4

173

Page 89: 106026095 Informatica Programacao de Computadores Etec

tipo 3: net protocol all Java driver (Protocolo de rede totalmente Java)

OdriverTipo3converteas requisiçõesdoSGBDemumprotocolode redegenérico(nãovinculadoanenhumSGBD).Essasrequisiçõessãoenviadasaumservidormiddle-tier,queastraduzeencaminhaparaumSGBDespecífico.Omiddle-tier funciona como camada intermediária, que implementa certas re-grasdeconversãoeacesso.Ofereceduasvantagens:comoodrivereoservidorintermediário são alocadosno servidor,nãohá anecessidadede instalação econfiguraçãodasmáquinasclientes;éindicadoparaaplicaçõesweb.Háumasódesvantagem:exigeainstalaçãoeconfiguraçãodoservidorintermediário,bemcomodosdrivernativosdosSGBDsutilizados.

tipo 4: native protocol all Java driver (Protocolo nativo totalmente Java)

OdriverdoTipo4éinteiramentedesenvolvidoemJavaeconverteasrequisi-çõesdeumSGBDemumprotocoloderedeespecíficoparaoSGBDutilizado,assimérealizadaumaconexãodiretaentreaaplicaçãoJavaeodriver.Apresentaduasvantagens:porsertotalmentedesenvolvidoemJavaepermitirconexãodi-retacomoSGBD,aaplicaçãoficaindependentedeplataformaedeinstalaçõesnamáquinacliente;etambéméumdriveidealparaaplicaçõesweb.Adesvan-tageméquecadaSGBDtemseuprópriodriverenemtodossãogratuitos.

Nosexemplosaseguir,odriverusadoéocom.mysql.jdbc.Driver(mysql-con-nector-java-5.1.6-bin),dotipo4.OsprópriosfabricantesdosSGBDsfornecemseusdriversJDBC.Existemmuitosfornecedoresindependentesquedesenvol-vemedisponibilizamdriversJDBCdeváriosSGBDs.

4.13.2. Implementação do acesso a dados

Emnossoexemplodoprojetodalivraria,umadasmanutençõesdisponíveisérelacionadaaosclienteseentreaquelesqueconstituempessoafísicaeosdepessoajurídica.Utilizaremosamanutençãodosprimeirosparaexempli-ficaraconexãoeogerenciamentodedadosemumbancoMySQL.AclasseFormClientePFgeraoformuláriovisualizadonafigura183.

ComponentesdaAPISwing foramutilizadosparamontaro layoutdo for-mulário.Vinculadosaoseventosdosbotões,estãooscódigosquerealizamacapturadosdadosobtidospeloformulárioeaschamadasaosmétodosdeumobjetonomeadocomoclientePFdotipoClientePFequeseráoresponsávelpelainteraçãocomobancodedados.NaclasseClientePFforamimplemen-tadosmétodosquerealizamcadaumadasoperaçõescomobancodedados(inclusão,alteração,exclusão,listagemdetodososclientespessoafísicaepes-quisadeumdeterminadocliente).

Detalhemos, então, esse relacionamento entre a obtenção de dados peloformulárioeachamadaaosmétodosdoobjetoclientePF.Primeiramente,naclasseClientePF(noqualseráfeitaaconexãocomobancoeogeren-ciamentodedados),paratermosacessoaosmétodosdoJavaresponsáveispelainteraçãocombancosdedados,deverãoseracrescentadososimportsrelacionadosnafigura184.

Figura 183Formulário de manutenção de clientes pessoa física.

Paraestabeleceraconexãocomobanco,ométodoresponsável(getConnection)precisadequatroinformações:odriverJDBCqueseráutilizado,oendereçodobancodesejado,ologineasenhadeidentificaçãonobancodedados.Emfun-çãodamaiorclarezadecódigo,declaramosquatroatributosparareceberestasinformações(figura185).

Noexemplo,usamosodriverJDBCdoMySQL,nossobancofoicriadocomonomelivraria,estálocalizadonocaminhopadrãodoMySQLenãodefinimos(nobanco)nenhumloginesenhaespecíficos.Estamosconsiderando,então,obancolivrariacontendoumatabelachamadaclientes.

Figura 185Definição de parâmetros de conexão como atributos.

Figura 184Importações das API de conexão a banco.

InFoRmátICa 4

174

CaPítulo 4

175

Page 90: 106026095 Informatica Programacao de Computadores Etec

4.13.2.1. Classe java.sql.Statement

Aclassejava.sql.StatementpermiteaexecuçãodoscomandosfundamentaisdeSQL.Ométodo Connection.createStatement() éutilizadoparacriarumobje-to dotipoStatement,querepresentaumaquery(umcomandoSQL).ExistemdoismétodosdeexecuçãodequerynaclasseStatement.

4.13.2.2. a classe PreparedStatement

Jáaclassejava.sql.PreparedStatementcontémosmétodosdaclasseStatementeoutrosrecursosparaelaboraçãodequery,bemcomoapossibilidadedepassa-gemdeparâmetros.

4.13.2.3. a classe CallableStatement

Aclassejava.sql.CallableStatement,porsuavez,permiteexecutarprocedimen-tose funçõesarmazenadosnobancocomo,porexemplo, chamadasa storedprocedures.

4.13.3. Inclusão

NaClasseFormClientePF,osobjetosclientePFeclientePFAuxiliar(previa-menteinstanciados)sãodotipoClientePFepossuemosatributosreferen-tesaosdadoslidospeloformulário,paraainclusão.OsatributosdoobjetoclientePFAuxiliarsãopreenchidoscomosvaloreslidosdoformuláriocomoseobservanaslinhas289a302,ilustradanafigura186.

Com os dados já armazenados em seus atributos, o objeto clientePFAu-xiliarépassadoporparâmetroparaométodoincluirdoobjetoclientePF(nalinha304).

1.Statement.executeQuery():

executa uma query e retorna um objeto

do tipo java.sql.ResultSet (responsável

por armazenar dados advindos de uma

consulta SQL) com o resultado obtido

(utilizado com select).2.Statement.

executeUpdate(): executa uma query e retorna a quantidade

(um valor inteiro) de linhas afetadas

(utilizado com insert, update e delete).

Figura 186 Método

acaoInclusao na classe

FormClientePF. AclasseConnectionéutilizadaparaarmazenarumaconexãocomobanco.Nalinha324,umobjetodessetipoécriadoeinicializadocomnull(vazio).Na linha327,quandoométodoestáticoClass.forName() é executado,odriverJDBCdoMySQL(contidonoatributoservidor)tentaserinicializa-do.Carregadoodriver,ométodoClass.forName()iráregistrá-lonojava.sql.DriverManager.Nalinha328,aclasseDriverManagerabreumacone-xãocomobancodedadospormeiodométodogetConnection,utilizandoinformaçõescontidasnosatributosurlBanco,usuarioBancoesenhaBanco.AclasseConnectiondesignaumobjeto,nocasocon,parareceberacone-xãoestabelecida.

Nalinha331,écriadoumobjetodotipoStatement(comonomedestmt)e,na linha333,éexecutadaumaconsultaaobancoparaobteroúltimocódigocadastrado.Estecódigo,armazenadoemumobjetodotipoResult-Set(rs),éincrementado(somadomais1)nalinha335eusadocomonovo

Figura 187 Método incluir na classe ClientePF.

NaclasseClientePF,ométodoincluirrecebeumparâmetrodotipoClientePF,tambémnomeadoclientePF(onomedoparâmetro,aliás,poderiaserqualquerum, desde que o tipo seja respeitado) e realiza os comandos que podem servisualizadosemseguida,nafigura187.

InFoRmátICa 4

176

CaPítulo 4

177

Page 91: 106026095 Informatica Programacao de Computadores Etec

códigona linha340.Ométodonextdoobjetors (ResultSet) serveparaposicioná-lonoprimeiroregistroeparapassarparaopróximoregistro(nocasodalinha334,comosóhaveráumregistrocomoretorno,eleficanoprimeiro).Após autilizaçãodoobjeto rsdevemos fechá-lo,pormeiodométodoclose(linha336).

Na linha 325 é criado um objeto do tipo PreparedStatement, nomeadocomopse contendonull (vazio) e,na linha339, é inseridoumscriptdeSQL(uminsert)contendoadefiniçãodeparâmetros(caractere?).Pormeiodométodoset(dopróprioobjetops)podemosinserirvaloresnessecoman-doSQL(insert),passandoporparâmetroumíndiceeovalorquequere-mos inserir. Por exemplo, na linha 342 está sendo incluído o conteúdodoatributonomedoobjetoclientePF,noterceiroparâmetrodoobjetops(podemos entender queo terceiro caractere ? foi substituídopelonome).Observequepeloprópriométodosetdoobjetops,podemosdefinirotipoqueseráinserido(setInt,setString,setDoubleetc).Finalmente,quandoocomandoSQL(insert)contidonoobjetopsestácompleto(todososvaloresarmazenadosnoobjetoclientePFforampassadosparaele),ométodoexe-cuteUpdadeéexecutado(linha356)eosvaloressãoincluídosnobanco.

4.13.4. alteração

NaclasseFormClientePF,paraaalteração,osatributosdoobjetoclien-tePFAuxiliarsãopreenchidoscomosdadosdoformulário(linhas309a323),comoseobservanasequênciailustradanafigura188.

Ecomosdadosjáarmazenadosemseusatributos,oobjetoclientePFAu-xiliarépassadoporparâmetroparaométodoalterardoobjetoclientePF(nalinha325).

Observe que todas a linhas de comando

que fazem a conexão e a manipulação dos

dados no banco estão em uma estrutura

de try e as exceções tratadas nos catch são

ClassNotFoundException (exceção gerada

se uma das classes não for localizada) e

SQLException (se um comando SQL não puder ser executado). No bloco

de finally, a conexão é fechada.

Figura 189 Método alterar na classe ClientePF.

Figura 188:Método

acaoAlteracao na classe

FormClientePF.

Figura 190Método acaoExclusao na classe FormClientePF.

pelosvaloresarmazenadosnoobjetoclientePF.Essasubstituiçãodevalores(alteração)seráaplicadasomenteaoregistrocujocampocliCodéigualaovalorcontidonoatributocódigodoobjetoclientePF.Essecritériofoidefi-nidoporintermédiodacláusulawheredocomandoupdate.

4.13.5. Exclusão

NaclasseFormClientePFénecessárioobtersomenteocódigodoclienteaserexcluído.TalcódigoéarmazenadonoobjetoclientePFAuxiliar,queépassadoporparâmetroparaométodoexcluirdoobjetoclientePF,comosepodevisualizarnafigura190.

NaclasseClientePF,ométodoalterarrecebeumparâmetrodotipoClientePFerealizacomandosvisualizadosnafigura189.

As instruçõesde conexão epreparaçãodo comandoSQL são asmesmasutilizadasedescritasnométodoincluir.Adiferençaéqueagoraocoman-doSQLexecutadoéoupdate,substituindoosvalorescontidosnobanco

Na classe ClientePF, o método excluir recebe um objeto do tipo ClientePFcomoparâmetroerealizaoscomandosvisualizadosnafigura191.

InFoRmátICa 4

178

CaPítulo 4

179

Page 92: 106026095 Informatica Programacao de Computadores Etec

Figura 192Método acaoListar na classe FormClientePF.

AsinstruçõesdeconexãoepreparaçãodocomandoSQLsãoasmesmasutili-zadasedescritasnométodoincluir.AdiferençaéqueagoraocomandoSQLexecutadoéodelete,queremoveráoregistrodobancocujocampocliCodsejaigualaoconteúdodoatributocódigodoobjetoclientePF.Essecritériofoidefi-nidopormeiodacláusulawheredocomandodelete.

4.13.6. listagem geral

Na classe FormClientePF, é realizada a chamada ao método listar do objetoclientePF,comosepodevernafigura192.

Figura 193Método listar na classe ClientePF.

207érealizadaaconsulta.No loopingda linha210a215(while),orsépercorridoapartirdesuaprimeiralinha(posicionadopelométodonextdors)epassandolinhaa linha(pormeiodomesmométodonext)atéofimdors(últimoclienteretornado).Acadalinha,oconteúdodecadacolunaé concatenado (unido) com trechosde textoque identificamuma aumadasinformações(linhas211e214).Observequers.getString(1)equivaleaocódigoqueporsuavezédotipoint,mas,comoaintençãoémontarumaStringdemensagem,ovalorpodeserrecuperadojáconvertidopormeiodométodo rs.getString(1).toString() (linha211).Na linha217, a variáveldotipoString,nomeadacomorelacao(declaradanalinha209),é“montada”porintermédiodeconcatenaçõescomoconteúdodoobjeto.

4.13.7. Pesquisa

Umapesquisapodeserrealizadadeformasdiferentes.Oqueapresentamos,então,ésimplesmenteumexemplo.NaclasseFormClientePF,utilizaremosmaisumobjetodoClientePFcomoauxiliarnapesquisa,criadona linha340 comonomede clientePFPesquisa.Oobjeto clientePFé instanciadonovamente dentro do método somente para garantir que estará vazio. Amanipulaçãodessesdoisobjetoséilustradanafigura194.

Figura 191Método excluir

na classe ClientePF.

Na classe ClientePF, é executada uma consulta ao banco e o retorno são oscamposcliCod,cliNome,cliTelefoneecliCelulardetodososregistrosdatabelaclientes(figura193).

Nesse exemplo, montaremos uma String com o retorno da consulta e aapresentaremospormeiodeumshowMessageDialog.Umobjetorstemoformatodeumamatriz,emqueoretornodeumaconsultapodesertratadocomoumatabela.Osmétodosdeacessoaosdadoscontidosemumobjetors são gets específicos para o tipo de dado armazenado. Identifica-se ocampodesejadopelo seu referente índice (coluna)na linha acessada.Na

InFoRmátICa 4

180

CaPítulo 4

181

Page 93: 106026095 Informatica Programacao de Computadores Etec

Nalinha343,ocódigodoclienteaserpesquisadoéarmazenadonoobjetoclientePF.Na344,esseobjeto(clientePF)épassadoporparâmetroparaométodopesquisarcontidonelemesmo!?(é,issoépossível).Comooobje-to clientePF foi instanciadonovamentedentrodessemétodo, ele contémsomente o atributo código preenchido. O método pesquisar procura umregistronobancodedadosquetenhaomesmocódigoinformado.Seen-contrar,retornaumobjetopreenchidocomosdemaisdados,casocontrárioretornaumobjetocomofoipassadoporparâmetro,ouseja,somentecomocódigopreenchido.

OretornodapesquisaéarmazenadonoobjetoclientePFPesquisa(aindanalinha344),e seuatributonomeé testadona linha346. Imaginandoquenomeéumdadoobrigatórioequenãoexistiráumclientecadastradosemnome,seoatributonomedeclientePFPesquisaestiverembrancoéporqueoclientenãofoiencontradoe,então,éexecutadoummétodoquelimparáoscamposdoformulário,senãoosvalorescontidosemclientePFPesquisasãocarregadosnoformulário.

NaclasseClientePF,ométodopesquisarrecebeumobjetodotipoClientePFcomoparâmetro,retornaumobjetodotipoClientePFerealizaapesquisadaformacomoilustraafigura195.

Nalinha242émontadoocomandoSQL(select)quefaráaconsulta.Essecomandolevaemconsideraçãooconteúdodoatributocódigodoobjetoclien-tePFpassadoporparâmetro,eéexecutadonalinha246.Comoaconsultaéfeitaporintermédiodachaveprimáriadatabelaclientes(código),somenteumregistroseráretornado(casosejaencontrado).Ométodonextposicionaorsemseuprimeiroregistro(queemnossoexemplo,tambéméoúltimo,jáquesóteremosumregistroderetorno).OmétodoisLastretornatrueseorsestiverposicionadonoúltimoregistro(efalse,senãoestiver).Seorsestivervazio,

Figura 195 Método pesquisar na classe ClientePF.

apareceráantesdofim,portanto,seométodoisLastretornafalseéporqueorsestávazio.Nalinha249,étestadoométodoisLast.Seforfalse,apresentaumamensagem, senão,armazenaosdadosdoclienteencontradonoobjetoclientePF(linha253a267).Nalinha286,oobjetoéretornadocomousemdadosdependendodoresultadodaconsulta.

Essecapítulonãopretendeesgotarosrecursosepossibilidadesdeusodalin-guagemJava, tampoucodas técnicasdeprogramaçãoorientadaaobjeto.Ointuitofoipassarpelasprincipaiscaracterísticasdessalinguagem,suasestru-turaseorganizações,alémdedemonstrarasaplicaçõespráticasdosprincipaisconceitosdaorientaçãoaobjetos,quesãoperfeitamenteviáveisnessalingua-gem.Aindahámuitooqueservistotantosobreastécnicasdeorientaçãoaobjeto,quantosobreJava.Esperamosqueessesejaoseupontodepartida.

Figura 194Método acaoPesquisar na

classe FormClientePF.

InFoRmátICa 4

182

CaPítulo 4

183

Page 94: 106026095 Informatica Programacao de Computadores Etec

Capítulo 5

Visual Studio 2008• Net Framework

• Soluções e projetos

Page 95: 106026095 Informatica Programacao de Computadores Etec

O Visual Studio é um conjunto de ferramentas de desenvol-vimentoquecontémeditoresdecódigos, IntelliSense, assistentes ediferenteslinguagensemummesmoambientededesenvolvimentointegradoparaprin-cipianteseprofissionais.Apresenta-seemdiferentesplataformas:PC s,servido-res,aplicaçõeswebemóveis.Emumavisãomaisabrangente,oVisualStudiopermiteodesenvolvimentorápidodeaplicativos,recursosdedepuraçãoebancodedados,semdependerdosrecursosoferecidospeloFramework3.5.AuxilianodesenvolvimentoWebhabilitadoparaoAJAX,contandoaindacomosrecursosdoASP.NET.

5.1. .nEt FrameworkDesenvolvidopelaMicrosoft,o.NETFrameworkéummodelodeprograma-çãodecódigogerenciadoparacriaraplicativoscliente,servidoresoudispositi-vosmóveis.Éformadoporumconjuntovariadodebibliotecasquefacilitamodesenvolvimentodeaplicações,desdeasmais simples até asmais complexas,bemcomoainstalaçãoedistribuiçãodeaplicações.Baseadoemtecnologiademáquinavirtual,o.NETFrameworkétotalmenteorientadoaobjetos.

O .NET Framework 3.5 incrementa as versões anteriores comnovas imple-mentaçõesASP.NETeAJAXeaumentaaintegraçãocomoLINQ(LanguageIntegratedQuery, ou consulta integradade linguagem)que é umanova fer-ramentadepesquisasembasededados,alémdesuportetotalparaWindowsWorkflowFoundation(WF),WindowsCommunicationFoundation(WCF),WindowsPresentationFoundation(WPF)eWindowsCardSpace.Suaestrutu-raécompostapordiferentescamadas,comopodemosvisualizarnafigura196.

Na camada inferior, encontramos a Common Language Runtime (CLR) outempodeexecuçãodelinguagemcomum.Suafinalidadeéexecutarasaplica-ções,criandoumambientedemáquinavirtualecompilandoaslinguagensdeprogramação do .NET Framework em código nativo. O .NET FrameworksBaseClass,nasegundacamadadebaixoparacima,representaasbibliotecasdeclassesdisponíveisparaodesenvolvimentodeaplicativos(consulteoquadroRe-cursos de classes disponíveis napágina188).ÉoprincipalpontodeinteratividadecomoRuntime(tempodeexecução).

Naterceiracamadaascendente,estáoADO.NET(DataeXML).OActiveXDataObjects(ADO)oferecetodososrecursosnecessáriosparaacriaçãoema-nipulação de bancos de dados fornecidos por meio das classes System.Data,.Common,.OleDb,.SqlClients,SqlTypes,.Odbce.Xml.

AJAX (acrônimo para a expressão em inglês Asynchronous

Javascript And XML, que literalmente pode ser

traduzido para Javascript e XML Assíncrono) é o

nome dado à utilização metodológica de

Javascript e XML para fazer com que as páginas

web se tornem mais interativas.

O Microsoft .NET Framework 3.5 é o modelo de programação do Windows Vista e, segundo a

própria Microsoft ao anunciar o lançamento, “combina o

poder do .NET Framework 2.0 com novas tecnologias para construção de aplicativos”.

Permite a realização de novas experiências, comunicação integrada e sem fronteiras, além de ser útil para vários

processos corporativos.

Figura 196.NET Framework.

NaquartacamadatemosWebServiceseWebForms.OWebServicerepresentaaintegraçãoentreosdadosdediferentesaplicaçõeseplataformas,permitindooenvioerecepçãodedadosnoformatoXML.Tudodemaneiramuitofácil.Paraqueissoocorra,entraemcenaoWebForms,criandoumambientededesen-volvimentosemelhanteàsferramentasquenormalmenteutilizamos,clicandoearrastando,assimcomosefaznoFrontPagedaMicrosoft.JáoWindowsForméumaevoluçãodosformuláriosutilizadosparaprogramação.

Localizadonapenúltimacamadadebaixoparacima,oCommonTypeSys-tem(CTS),quepodeserliteralmentetraduzidocomosistemadetipocomum,existeparaqueocorraaintegraçãoentreaslinguagensdeprogramação.Defi-necomoostiposdedadosserãodeclarados,usadosegerenciadosnomomentodaexecuçãodoaplicativo.

Notopo,aparecemaslinguagensdeprogramaçãoutilizadasparaodesenvolvimen-todaaplicação,comoVB,C++,C#eJScript.Assim,pode-seconcluirqueocon-juntodetodasascamadasmencionadasrepresentaopacotedoVisualStudio.Net.

5.1.1. máquina virtual

Amáquinavirtualservecomoumacamadaentreocódigoeosistemaoperacio-nal.Todocódigoescritono.NET(VisualBasic,C#ouqualqueroutralingua-

ASP.NET, sucessora da tecnologia ASP (de

Active Server Pages ou páginas de servidor

ativo) é a plataforma da Microsoft usada para

o desenvolvimento de aplicações web.

InFoRmátICa 4

186

CaPítulo 5

187

Page 96: 106026095 Informatica Programacao de Computadores Etec

gem),écompiladoparaumalinguagemintermediáriachamadaCIL(CommonIntermediateLanguageoulinguagemintermediáriacomum),queédistribuídaeexecutadapelosdiferentesclientesdaaplicação.

5.1.2. Garbage collector (coletor de lixo)

Mecanismointernoquepossibilitaaretiradadamemóriadeobjetosquenãoestãosendomaisutilizados.Aoperaçãoéfeitasemainterferênciadousuário,emintervalosdeociosidadedaCPU.

5.2. Soluções e projetosQuandoiniciamosumaaplicaçãoouserviçonoVisualStudio,temosumpro-jetoquefuncionacomoumrepositórioparagerenciamentodoscódigosfonte,conexõescombancos,arquivosereferências.ElerepresentaumapastadaSolu-ção(Solution),queporsuavezpoderáconterinúmerosprojetosindependentes

entresi,elaboradosemdiferenteslinguagenseorganizadosnoformatodepastassemelhanteaoWindowsExplorer.Osarquivosdeprojetos(.vbproj,.csprojetc.)eosarquivosdesolução(.sln)estãonoformatoXML.

5.2.1. Iniciando o Visual Studio – Solution

AoiniciaroVisualStudiopelaprimeiravez(figura197),surgeateladeStartPage(oupáginainicial).NomenuFile(arquivo),entreemNew(novo)ecliqueemProject(projeto),comoilustraafigura198.

Emtemplates(modelos),escolhaotipodeprojetoaserelaborado(WindowsFormApplicationouaplicaçãodeformulárioWindows,ConsoleApplicationouaplicaçãodepaineldecontroleetc.).Lembre-sedenomearoseuprojetoe

• System: entre os seus inúmeros recursos, está o suporte para programação, os tipos de bases (String, Int32, DateTime, Boolean etc.) e as funções matemáticas.

• System.CodeDom: para a criação e execução de código de maneira imediata.

• System.Collections: defi ne containers como listas, fi las, matrizes etc.

• System.Diagnostics: todas as classes necessárias para fazer diagnósticos.

• System.Globalization: suporte para a globalização, ou seja, essa classe integra toda a plataforma do Framework.

• System.IO: suporte para o FileSystem, usando classes de manipulação de arquivos e diretórios.

• System.Resources: usado para tradução do aplicativo em diferentes idiomas e também para retorno de mensagem de acordo com o idioma selecionado pelo usuário.

• System.Text: suporte para a codifi cação e ao StringBuilder, para manipulação de Strings.

• System.Text.RegularExpressions: suporte para expressões regulares.

Recursos de classes disponíveisFigura 198 Janela de Projeto.

Figura 197 O Visual Studio.

InFoRmátICa 4

188

CaPítulo 5

189

Page 97: 106026095 Informatica Programacao de Computadores Etec

indicaralocalização,ouseja,ondeosarquivosserãogravadoseonomedasuaSolution(solução),comomostraafigura199.ConfirmeosdadoseteremosaSolutionabertaparaodesenvolvimentodaaplicação.

Caso o projeto seja elaborado utilizando o Visual Basic, o procedimentoseráomesmo.EscolhaemProjectTypes(tiposdeprojeto)aopçãoOthersLanguages(outraslinguagens),depoisVisualBasice,porfim,atemplatenaqualdesejatrabalhar.

5.2.2. Conhecendo o Visual Studio

OVisualStudioapresentaumasériedejanelaseguiasquefazempartedasuaIDE(IntegratedDevelopmentEnvironmentouAmbientedeDesenvolvimentoIntegrado).Confiraalgumas,aseguir.

Barra de ferramentas(toolbar),quedisponibilizaosbotõesdecomandosmaisutilizados(figura200).

gramaçãodoformulário;Form1.Designer.cs,paraprogramaçãovisualdofor-mulário;eProgram.cs,oprogramaprincipal,noqualencontramosométodomain(),quedaráinícioàaplicação.

ParaaplicaçõesemVisualBasic,serádisponibilizadooarquivoForm1.vb,quepossuiamesmafunçãodoForm1.cs.Confira,aseguir,janelasdisponíveisesuasfunções:

ToolBox (caixa de ferramentas):contémcomponentesparaodesenvolvimentodoprojeto,osquaisestãodivididosemguiasdeacordocomotipodeaplicação.Nessecaso,podemosverificar(figura202)aabadecomponentesdacategoriaCommonControls(controlescomuns).

Form (formulário):essajanela(figura203)receberáoscomponentesdatool-boxeaprogramaçãocorrespondente.Oscomponentesserão“arrastados”sobreoFormparacomporainterfacedousuárioeterãosuaspropriedadesmodifica-dasdeacordocomoprojeto.Paraativarajaneladecódigoerealizaraprogra-mação,éprecisodarumduplocliquesobreocomponenteouformulário.

Properties (propriedades):permitealteraraspropriedadesdoscomponentes,quepodemaparecerorganizadasporcategoriaouemordemalfabética(figura204).

Ajaneladepropriedadetraz,deacordocomcadacomponentetoolbox,umasériederecursosparaconfiguração.Porexemplo,umcomponenteLabel(rótulo),utilizado

Figura 202 ToolBox.

Figura 199 Definição da Solution.

Figura 200Toolbar.

Solution Explorer:mostraosarquivosquefazempartedoseuprojeto.Éseme-lhanteaoExplorerdoWindows,poispermitecriar,excluireimportararquivos(figura201).

SeanalisarmosumaaplicaçãoWindowsFormApplicationemC#,dentrodajanelaSolution,podemosencontrarosseguintesarquivos:Form1.cs,parapro-

Figura 201 Solution Explorer. Figura 203

Form.

InFoRmátICa 4

190

CaPítulo 5

191

Page 98: 106026095 Informatica Programacao de Computadores Etec

paraincluirexpressõesnoprojeto,possuindodiversaspropriedades–taiscomoname(nome),text(texto),visible(visível),font(fonte),forecolor(cor)–equepoderãosermanipuladasdiretamentenajanelaoupormeiodeprogramação,utilizandoanota-çãode“ponto”,conformeoseguintecódigo,queocultaoLabel:

Label1.Visible = false;

CodeandTextEditor(editordetextoedecódigo)éajanelaqueutilizaremosparaimplementaroscódigosdeprogramação(figura205).Paraacessá-la,bastaclicarduasvezessobreelaouemqualquercomponente.OutraopçãoéusarosbotõesCode(có-digo)eView(visualizar)najaneladeSolutionExplorer,comomostraafigura206.

Figura 209 Guias de janelas.

Figura 204Properties.

Figura 205 Code and text Editor.

Figura 206Em destaque, os botões

Code e View.

Auto Hide:umapontadorindicaaposiçãodajanela,queficaráoculta.Bastaumsimplesmovimentodomousesobreotítulodessajanela(figura207)paraque ela seja aberta. Para fixá-la, utilize o ícone semelhante a um preguinho(figura208),localizadonabarradetítulo.

Podemosmovimentarasjanelasecolocá-lasemqualquerlugardaaplicaçãocomaajudadosguias.Paraisso,cliquenabarradetítuloemantenhaobotãodomousepressionado,arrastandoajanelaparaqualqueráreadeseudesktop.Imediatamen-te,surgirãoasindicaçõesdasguias(figura209).Escolhaumadelasesolteajanela.

Figura 207 Auto Hide.

Figura 208 Fixar janela.

5.2.3. Gerenciador de janelas

OVisualStudioapresentamuitasjanelase,parafacilitaroseugerenciamento,existemquatrorecursos.Confiraquaissão,aseguir.

Dockable:colocaajanelaabertajuntoàjanelaprincipaldoprograma.

Hide:fechaaquelajanelae,paraabri-lanovamente,usaomenuView.

Floating:ajanelaficaflutuante,podendoserdeslocadaparaqualquerpartedodesktop.

5.2.4. nomenclatura de componentes

Cadacomponenterecebeumanumeraçãoautomáticaquandoinseridonopro-jeto(Label1,Label2,Label3etc.).Nãoháproblemasemmanteressesnomes,mas,paradeixarocódigomaislegívelepadronizado,omelhoréutilizarumprefixorelacionadoaotipodecomponenteeàsuaidentificação.Porexemplo:

Label1 = lblPergunta

Label2 = lblMensagemAlerta

InFoRmátICa 4

192

CaPítulo 5

193

Page 99: 106026095 Informatica Programacao de Computadores Etec

Atabela12mostraalgunsdosváriosprefixosutilizadosnaplataforma.NET.

tabela 12 PREFIXOS USADOS NA .NET

Componente

label

textBox

DataGrid

Button

ImageButton

DropDownlist

RadioButtonlist

Image

Panel

Prefi xo

lbl

txt

dtg

btn

imb

ddl

rbl

img

pnl

Prefi xo

lst

Dtl

Rep

Chk

Cbl

Rdo

PhD

tbl

Val

Componente

listBox

Datalist

Repeater

Checkbox

CheckBoxlist

RadioButton

PlaceHolder

table

Validators

5.2.5. IntelliSense

Aodigitaralgumainstrução,apareceráumasériedecomplementosrelacionadosaela.Quandoescrevemos“Console”,porexemplo,sãodisponibilizadosváriosmétodos.ComaajudadateclaTaboudaBarradeEspaço,ainstruçãosecom-põenaturalmente(figura210).

Duranteessaatividade,podemosrecorreraalgunsbotõesauxiliares(figura212)comoBreak,StopeRestart.

5.2.7. Identifi cação de erros

OVisualStudionosajudaaidentificarouinterpretaralgunserrosquepo-democorrerduranteoprocessodecriaçãoouexecuçãodocódigo.Confiraalguns,aseguir.

Erro de sintaxe: geralmente é identificado comuma linha emvermelho su-blinhandoaexpressão.Noexemplomostradonafigura213,estãofaltandoasaspasnofechamentodaexpressão.

Figura 211 Executando a aplicação.

Figura 212 Controles de execução.

Figura 210IntelliSense.

Instrução

Opções de complemento

Figura 213Erro de sintaxe.

Erro antes da execução: quandoocódigoapresentaalgumerroeumaexecu-çãoéforçada,umacaixadediálogosolicitaaousuárioquecontinueaexecuçãodocódigo,mesmoconstandoerro(figura214).Issofazcomqueaúltimaversãocorretasejaexecutada,ignorandoaatual.

Figura 214 Janela de erro.

Figura 215 Painel de erros.

Figura 216Erro de classe.

NaparteinferiordoVisualStudio,podemosvisualizaropainel(errorlist)deErros,WarningseMessages(figura215).

Cliquesobreoerroidentificado(1,2etc.)paraqueelesejaselecionadonocódi-goparavisualização.

Erro de classe ou método:comumenteidentificadocomumalinhaemazulsublinhandoaexpressão(figura216).Noexemplo,ainstruçãoestáescritadeformaerrada,poisocorretoéWriteLine().

5.2.6. Executando a aplicação

Paraexecutaraaplicação,pressioneatecla“F5”,ou,nabarrademenu,cliquenoitemDebug.EscolhaaopçãoStartDebuggingouutilizeobotãodabarradeferramentas(figura211).

InFoRmátICa 4

194

CaPítulo 5

195

Page 100: 106026095 Informatica Programacao de Computadores Etec

Capítulo 6

C Sharp

• Programação

• Tipos de dados e variáveis

• Operadores

• Estrutura de decisão

• Estruturas de repetição usadas na linguagem

• Tratamento de erros / exceções

• Vetores e matrizes

• Classes

• Windows Form Application - componentes

• Eventos

Page 101: 106026095 Informatica Programacao de Computadores Etec

Consideradacomoamaisimportantelinguagemdedesenvolvimen-to da Microsoft dentro da Plataforma .NET Framework, a C#vemganhando inúmeros adeptos (programadores de outras lin-

guagens)emvirtudedesuacaracterísticaesemelhançaaoC,C++ouJava.AlinguagemdeprogramaçãoC#éorientadaaobjetosefoicriadapraticamenteapartirdo zeropara compor aplataforma.Trata-sedoprimeiro compiladorcomsuportedeprogramaçãoparaamaioriadasclassesdo.NETFrameworks.Embora tenha sido feitapor váriosprogramadores, osméritos são atribuídosprincipalmenteaAnders Hejlsberg,muitoconhecidopordesenvolvedoresdocompiladorDelphi.

6.1. Programação OC#requertodaalógicadeprogramaçãocontidaemclasses.Nestecapítulo,nãoserãoabordados,emdetalhes,osconceitosdeprogramaçãoorientadaaob-jetos.Casohajadúvidasconsulteocapítulo4.

6.1.1. Console application

AaplicaçãodotipoConsoleApplication(aplicaçãodopaineldecontroleemportuguês)seassemelhaàsprogramaçõesdalinguagemC/C++.SeuresultadoéapresentadonajaneladePromptdoDOS,naqualprogramamosdiretamentepelométodoMain(),sóque,agora,noformatodeumaclasse(figura217).

Pode-sefazerumaanalogiaaoJava:nocomeçodonossocódigo,encontramososusing s(import),aclasseprincipalProgrameométodoMain()comaimple-mentaçãodocódigoemC#.

6.1.2. Windows Form application

NoWindowsFormApplication(aplicaçãodeformuláriosdeWindows),aes-truturadoprojetoédiferentedoConsoleApllication.SeanalisarmosajaneladoSolutionExplorer,podemosverificarqueadisposiçãodoscódigostêmarquivosseparados,comfunçõesespecíficas,comosepodeveremseguida.

Program.cs: possui o método Main() (figura 218), que executa o primeiroformulário(Form1).Nessecaso,EnableVisualStyles()defineoestilovisualdo

projeto,SetCompatibleTextRenderingDefault(),omodoepropriedadecomooscomponentesserãovisualizados,eoRun(),paraexecuçãodoformulário.

Form1.Designer.cs: realiza a especificação dos componentes utilizados naaplicação (figura 219). Quando um projeto começa a ser construído, toda aestrutura dos seus componentes (tamanho, fonte, nome, localização e outraspropriedades)ficaregistradanoformulário,seguindoométodochamadoIni-tializeComponent(),exatamentenoqualencontramosaexpressão“WindowsFormDesignergeneratedcode”.

Form1.cs:reapresentaamaiorpartedanossaprogramaçãoemrelaçãoaoscom-ponenteseaoseventos(figura220).Insere-se,então,alógicadeprogramação,ouseja,aquiloquedeveserfeitoaoinicializarumformulário(Form1_Load),quandoousuárioclicaremumbotãoeemoutrosprocedimentosdoprojeto.

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, porém,

mais tarde, para a Borland que desenvolveu o Turbo

Pascal e o Delphi, antes de ser contratado pela

Microsoft, em 1996. Criou a linguagem J++ e a C#,

em cujo desenvolvimento trabalha continuamente.

Figura 217 Console Application.

Figura 218 Program.cs.

InFoRmátICa 4

198

CaPítulo 6

199

Page 102: 106026095 Informatica Programacao de Computadores Etec

6.2. tipos de dados e variáveisOstiposdedadosemC#sãodistribuídosdaformacomoapresentaatabela13.

Utilizamosasvariáveisparaarmazenardiferentestiposdedados(números,pa-lavras,dataetc.),comojáfoimostradoantes.Paraacriaçãodeumavariável,deve-sedarumnomeúnico,queidentifiqueoseuconteúdo(consulteoquadroRecomendações para a boa prática).

O importante é fazer corretamente asdeclaraçõesdas variáveis eos tiposdedadosaosquaiselaspertencem,comoestáexemplificadonafigura221.

int num; int x, y, x; fl oat salario; string nome; string edereco, cidade, estado; char resp;

Figura 219 Form1.Designer.cs.

Figura 221 Declarações corretas das variáveis.

Figura 220 Form1.cs.

ATENÇÃO: No momento da programação, é fundamental fi car alerta para ver onde o código será inserido. Portanto, identifi que corretamente o componente e o evento que será agregado. As instruções básicas de programação serão apresentadas, aqui, utilizando-se o método Console Application, pois a sua estrutura é a mesma para aplicações gráfi cas do Windows Form Application.

tabela 13 Distribuição dos tipos de dados.

IMPLEMENTAÇÃOTIPO

ByteSbyteushortShortuintIntulonglong

Double

Float

Decimal

BoolChar

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 fl utuante binário IEEE de 8 bytes (±5.0 _ 10-324 a ±1.7 _ 10308), 15 dígitos decimais de precisão. Ponto fl utuante binário IEEE de 4 bytes (±1.5 _ 10-45 a ±3.4 _ 1038), 7 dígitos decimais de precisão. Ponto fl utuante decimal de 128 bits. (1.0 _ 10-28 a 7.9 _ 1028), 28 dígitos decimais de precisão. Pode ter os valores true e false. não é compatível com inteiro. um único caractere unicode de 16 bits. não é compatível com inteiro.

RECOMENDAÇÕES PARA A BOA PRÁTICA• Se houver mais de uma palavra, a primeira letra da segunda deve ser maiúscula: nomeCliente pesoMedio idadeMaxima• Pode-se usar um prefi xo para expressar, no início da variável, o tipo de dado ao qual ela pertence: strNomeCliente fl oPesoMedio intIdadeMaxima

6.2.1. alocação de memória

Aalocaçãoeautilizaçãodevariáveisdememóriapodemserrealizadasdeduasmaneiras:Stack(pilha)eHeap(amontoado).Adiferençaentreelasestánafor-macomocadaumatrataasinformações.

Stack:Nessaárea,ficamasvariáveislocaisouosparâmetrosdefunçõesdevaloroureferência.Sualimpezaérealizadaautomaticamentenasaídadecadafunção,usandoreturnounão.

InFoRmátICa 4

200

CaPítulo 6

201

Page 103: 106026095 Informatica Programacao de Computadores Etec

Heap:Aqui,ficamosvalores referentesaosobjetos. Issoocorrequandoumaclasseéestabelecidausandoonew(construtores).Casoasfunçõessejamencer-radasouocorraumexception,alimpezanãoaconteceautomaticamenteesimpormeiodoGarbageColletor.

6.3. operadoresExemplospráticosparamostrarafuncionalidadedosoperadoressãoexecutadosnoConsoleApplication,comojáfoimencionado.

6.3.1. operadores aritméticos

Paravisualizaroefeitodosoperadores(indicadosnoquadroAritméticos),utilizeaclasseConsole(),aqual,pelométodoWriteLine(),revelaumaexpressãoouumconteúdodeumavariávelcomaquebradelinhaautomática.JáoWrite()realizaaimpressãosemaquebradelinha.

6.3.4. operadores de incremento e decremento

static void Main(string[] args) { Console.WriteLine(“Verifi cando os Operadores”); int x = 10; int y = 15; Console.WriteLine(“Soma: “ + (x + y)); Console.WriteLine(“Subtração: “ + (x - y)); Console.WriteLine(“Multiplicação: “ + (x * y)); Console.WriteLine(“Divisão: “ + (y / x)); Console.WriteLine(“Divisão (10/3): “ + (x / 3)); Console.WriteLine(“Resto da Divisão (10/3): “ + (x % 3)); Console.ReadKey(); }

Figura 222 Usando o método Readkey.

ARITMÉTICOS + adição - Subtração * multiplicação / Divisão % Resto da divisão

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

ARITMÉTICOS += adição Igual -= Subtração Igual *= multiplicação Igual /= Divisão Igual %= Resto da divisão Igual

OPERADORES ++ Incremento - - Decremento

6.3.2. operadores relacionais

6.3.3. operadores aritméticos de atribuição reduzida

OutrométododaclasseConsole()utilizadonesteexemploéoReadkey(),quepermite aoprograma realizarumapausa, aguardandoatéqueuma tecla sejapressionada.IssoénecessárioporestarmostrabalhandocomumajanelaDOS,queseencerraquandooprogramaéfinalizado(figura222).

Observesuaaplicaçãonafigura223.

static void Main(string[] args) { Console.WriteLine(“Operadores Reduzidos”); int x = 10; int y = 15; Console.WriteLine(“Soma + igual: “ + (x += 2)); Console.WriteLine(“Subtração + igual: “ + ( y -= 10)); // x está com novo valor !!! Console.WriteLine(“Multiplicação + igual: “ + (x *= 2)); Console.WriteLine(“Divisão + igual: “ + (x /= 2)); Console.WriteLine(“Resto da Divisão + igual: “ + (x %=5)); Console.ReadKey(); }

Figura 223 Aplicação de operadores aritméticos de atribuição reduzida.

Observesuaaplicaçãonafigura224.

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 Aplicação de operadores de incremento e decremento.

InFoRmátICa 4

202

CaPítulo 6

203

Page 104: 106026095 Informatica Programacao de Computadores Etec

6.3.5. operadores lógicos

6.4. Estrutura de decisãoAssimcomooJava,oscontrolesdeinícioefimdecadaestruturadeverãosercontroladospelos“{}”.Pararealizarosdesvioscondicionais,utilizamosaestru-turaif()ouswitch(),traduzidoscomo“se”e“troca”,respectivamente.

6.4.1. Condição verdadeiro – if

AmesmarecomendaçãofeitaparaJavavaleparaoC#.Ouseja,quandoains-truçãoif()apresentarumaúnicainstruçãoparaasuacondição,nãoénecessárioutilizaraschaves,quesetornamopcionais.Noexemplo(figura228),podemosverificarqueavariável“x”émaiorqueovalor“10”,sabendo-sequeoseuvalorinicialé“5”.Evisualizamosaexpressão:“AvariávelXémaiorque10”.

OPERADORES && and || or ! not

Suaaplicaçãoéilustradanafigura225.

6.3.6. Conversões C#

Pararealizarasconversõesdedados,usamososmesmosconceitostrabalhadosem Java. No entanto, dependendo da instrução adotada, o resultado obtidopoderávariar.Umbomprogramadorrealizaalgunstestesparaverificarqualamelhormaneiradefazeraconversão.

6.3.7. Parse

AclasseParsesemprevemprecedidadotipodedadoseemseguidadavariáveloudaexpressãoaserconvertida(figura226).

Figura 225 Aplicação de

operadores lógicos.

static void Main(string[] args) { Console.WriteLine(“Operadores Lógicos”); int a = 10; int b = 30; int c = 10; int d = 25; Console.WriteLine((a < d) && (b != c)); Console.WriteLine((a > d) || (b != c)); Console.WriteLine(! (a >= b)); Console.ReadKey(); }

int.Parse(idade); fl oat.Parse(salario); int.Parse(Console.ReadLine());

valor = Int32.Parse(numero); teste = Int16.Parse(dado);

dt = DateTime.Parse(“01/01/2010”);

Figura 226 Classe Parse.

6.3.8. Convert

AclasseConverttemasuaindicaçãodetiporegistradaapósonomedaclasse,seguidodavariáveloudaexpressão(figura227).

Convert.ToUInt16(indade);

Convert.ToDouble(salario);

Convert.ToInt16(Console.ReadLine());

valor = Convert.ToInt32(numero);

teste = Convert.ToInt16(dado);

dt = Convert.ToDateTime(“01/01/2010”);

Figura 227 Classe Convert.

DICAExiste um grande número de métodos 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 próximos tópicos envolvem os conhecimentos prévios de lógica de programação. Caso haja dúvidas, recorra aos conceitos tratados anteriormente.

static void Main(string[] args)

{

Console.WriteLine(“Estrutura IF”);

int x = 15;

if (x > 10) {

Console.WriteLine(“A variável X é maior que 10”);

}

Console.ReadKey();

}

Figura 228 Exemplo de instrução if().

6.4.2. Condição verdadeiro ou falso – if…else

Jánesseoutroexemplo(figura229),verificaremosseavariável“x”émaiorque“10”ounão,sabendo-sequeoseuvalorinicialé“5”.Seráadicionadaumaex-pressãoparacadaalternativa.

InFoRmátICa 4

204

CaPítulo 6

205

Page 105: 106026095 Informatica Programacao de Computadores Etec

6.4.3. Condições múltiplas – if...elseif...elseif....else

Agora,verificaremosseavariável“x”possuionúmero1,2ou3, sabendo-sequeovalorinicialé3.Nessecaso,paraqualqueroutrovalor,serávisualizadaaexpressão:“OvalordeXéTRêS”(figura230).

6.5. Estruturas de repetição usadas na linguagem

6.5.1. While()

Usandoavariável“cont”,paracontroledoloop,obtemososnúmerosde0a10.OimportanteemumainstruçãoWhile()éaimplementaçãodeumcontadordentrodaestrutura(figura232).

static void Main(string[] args) { Console.WriteLine(“Estrutura IF”); int x = 5; if (x > 10) { Console.WriteLine(“A variável X é maior que 10”); } else { Console.WriteLine(“A variável X é menor que 10”); } Console.ReadKey(); }

Figura 229 Exemplo de if...else.

static void Main(string[] args) { Console.WriteLine(“Estrutura IF”); int x = 3; if (x ==1) { Console.WriteLine(“O valor de X é UM”); } else if (x==2) { Console.WriteLine(“O Valor de X é DOIS”); } else if(x==3){ Console.WriteLine(“O Valor de X é TRÊS”); } else { Console.WriteLine(“Qualquer outro valor”); } Console.ReadKey(); }

Figura 230Exemplo de

condições múltiplas.

6.4.4. múltiplos testes – Switch()

Usandoomesmoexemplodo itemanterior,a sequênciade testesé realizadacomainstruçãoswitch().Assim,cadaumseráimplementadocomainstruçãobreakparaqueasoutrascondiçõesnãosejamexecutadas(figura231).Ainstru-çãodefaultestárealizandoafunçãodainstruçãoelsedoif().

Figura 231 Exemplo de múltiplos testes – Switch().

static void Main(string[] args) { Console.WriteLine(“Estrutura SWITCH”); int x = 3; switch (x) { case 1: Console.WriteLine(“O valor de X é UM”); break; case 2: Console.WriteLine(“O valor de X é DOIS”); break; case 3: Console.WriteLine(“O valor de X é TRÊS”); break; default: Console.WriteLine(“Qualquer outro valor”); break; } Console.ReadKey(); }

static void Main(string[] args) { Console.WriteLine(“Estrutura WHILE”); int cont=0; while (cont <=10){ Console.WriteLine(“Numero: “ + cont); cont++; } Console.ReadKey(); }

6.5.2. Do… While()

Nessecaso, repete-sea instruçãoparaWhile().Porém,o testeé realizadonofinaldoloop.Essetipodeestruturapermitequeasinstruçõesqueestãodentrodolaçoderepetiçãosejamexecutadas,nomínimo,umavez(figura233).

Figura 232 Exemplo de While.

InFoRmátICa 4

206

CaPítulo 6

207

Page 106: 106026095 Informatica Programacao de Computadores Etec

6.5.3. For()

DiferentedoWhile(),ainstruçãoFor()écapazdedefinir,emumaúnicalinha,avariáveleoseutipo,bemcomoestabeleceracondiçãoparaaestruturaeindi-carocontador(figura234).

Figura 233 Do… While(). static void Main(string[] args)

{ Console.WriteLine(“Estrutura DO...WHILE”); int cont=0; do { Console.WriteLine(“Numero: “ + cont); cont++; } while (cont <= 10); Console.ReadKey(); }

Figura 234 Instrução for(). static void Main(string[] args)

{ Console.WriteLine(“Estrutura FOR”); for(int cont=0; cont<=10; cont++) { Console.WriteLine(“Numero: “ + cont); } Console.ReadKey(); }

6.5.4. Break e continue

As instruçõesbreake continuepodem interferirdiretamente emum laçoderepetição.Nopróximoexemplo(figura235),quandoavariável“cont”tiverovalor“5”,oloopseráencerrado,executandoapróximainstruçãoapósofecha-mentodaestrutura.

Observe,nafigura236comoficaomesmoexemplodequebradeloopcomainstruçãobreak,agoradentrodainstruçãoWhile().

Figura 235 Instruções 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 número é: “ + num); } Console.WriteLine (“Mensagem após o laço”); Console.ReadKey(); }

Figura 236 Exemplo com break dentro de While().

static void Main(string[] args) { Console.WriteLine(“Estrutura BREAK”); int num=0; while (num < 1000) { num +=10; if (num > 100){ break;} Console.WriteLine(“O número é: “ + num); } Console.WriteLine (“Mensagem após o laço”); Console.ReadKey(); }

AinstruçãoContinueforçaaexecuçãodoloopapartirdopontoemqueestá.No exemplo (figura 237), será forçada a contagem quando a variável “num”possuirovalor100.Comoresultadodessaoperação,ovalor100nãoseráapre-sentadonatela.

Figura 237 Exemplo de uso da instrução continue.

Nafigura238,confiraoutroexemplodainstruçãocontinue,agora,dentrodeumaestruturafor().

static void Main(string[] args) { Console.WriteLine(“Estrutura CONTINUE”); int num=0; while (num < 1000){ num += 1; if (num == 100) { continue; } Console.WriteLine(“O número é: “ + num); } Console.WriteLine (“Mensagem após o laço”); Console.ReadKey(); }

static void Main(string[] args) { Console.WriteLine(“Estrutura CONTINUE”); for (int num = 0; num <= 10; ++num) { if (num == 5){

Figura 238 Exemplo de uso da instrução continue dentro de for().

InFoRmátICa 4

208

CaPítulo 6

209

Page 107: 106026095 Informatica Programacao de Computadores Etec

6.6. tratamento de erros / exceçõesUmadastarefasmaisimportantesdosprogramadoresésaberrealizarotrata-mentodeerros(consulteoquadroErros mais comuns)eexceçõesquepodemocorrerduranteaexecuçãodeumprojeto.Sejaporumaoperaçãoinválidaouaté mesmo devido à abertura de determinado arquivo inexistente. Para isso,utilizamosumaestruturabemfamiliar:otry-catch-finally(jáabordadoante-riormente,quandofalamosdeJava).

continue;

} Console.WriteLine(“O número é: “ + num); } Console.WriteLine (“Mensagem após o laço”); Console.ReadKey(); }

Try { // instrução que pode gerar o erro de execução } Catch { // o que deve ser feito se ocorrer o erro }

Outrapossibilidadeé incluirofinally,oqueéopcional,poisele sempre seráexecutado,ocorrendoexceçãoounão.

Opróximoexemplo(figura239)mostraaconversãodoconteúdodedoisText-Box,transformandoosdadosdigitadosemnúmerosdotipofloat.Nesseponto,podeocorrerumerro,casoousuárionãodigiteosdadospassíveisdeconversão,comoletraousímbolos.

Try { // instrução que pode gerar o erro de execução } Catch { // o que deve ser feito se ocorrer o erro } Finally { // opcional, mas executado }

Nocasoda implementaçãodocódigocomofinally, teríamosumainstruçãoouumblocodeinstruçõessendoexecutados,independentementedaexistênciadeumaexception.Ouseja,sempreseráexecutadooblocodofinally,comoépossívelobservarnafigura240.

Figura 239 Conversão do conteúdo de dois TextBox.

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

Figura 240 Implementação do código com o finally.

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 Finalização”, “Mensagem”); }

6.6.1. Exception

Quandooblococatch{}éexecutado,poderáserdisparadaumaexceção.Issosignifica que foi gerado um código de erro e uma descrição correspondente.Cadaerropossuicaracterísticasdiferentes.Combasesnessasinformações,po-demosespecificaronúmerodoerrogerado.

ERROS MAIS COMUNSRede ou Internet: geralmente

por problemas de conexão (servidor, linha etc.). Drive:

falta da unidade de disco. Path: caminho para a localização

de arquivos em geral. Impressora: equipamento

não disponível, sem tinta ou sem papel. Componente

não instalado: falta algum componente de software

ou está com erro de execução. Permissão: privilégio para acesso

de arquivos, dados ou área de rede. Clipboard: problema

com dados transferidos para determinada área.

catch (Exception objeto)

Aomodificaroexemploanterior,serãoemitidasmensagensdeerro,comomos-traafigura241.

InFoRmátICa 4

210

CaPítulo 6

211

Page 108: 106026095 Informatica Programacao de Computadores Etec

6.7. Vetores e matrizesVamosveragora,nafigura242,aformadedeclaração,atribuiçãoeacessoaosvaloresparadiferentestiposdevetoresematrizes.Umaboadica,paraessaetapa,érevisarosconceitosarespeito,notemaprogramaçãoemJava.

Figura 241 Emissão 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: Forneça apenas valores numéricos”); MessageBox.Show(erro.Message); MessageBox.Show(erro.Source); } fi nally { MessageBox.Show(“Mensagem de Finalização”, “Mensagem”); }

6.8. ClassesUsandoosmesmosconceitosdoJava,oC#podeimplementarclassesespecí-ficasparaprogramação,asquaisseguemosmesmosprincípiosdeformaçãoemanipulação.Pararelembrarosconceitosdeprogramaçãoorientadosaobjetos,observeoexemploaseguire,depois,confiraaclassenafigura243.

UmaclassechamadaCarrotematributosreferentesligadosamarca,combus-tível emarchae, ainda,osmétodosmovimentar(),parar() e consultar(),querepresentam:

•Movimentar():indicaavelocidadecomqueoveículodeveandar.

•Parar():quandoacionado,diminuiemumaunidadeavelocidadedoveículo.

•Consultar():informaaatualvelocidadedoveículo.

Figura 242Vetores 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 fl oat fl oat[] y; y = new fl oat[3]; y[0] = 10.5F; y[1] = 7.3F; y[2] = 1.9F;

// vetor do tipo inteiro int[] x = { 10, 5, 3 }; MessageBox.Show(x[0].ToString());

// matriz do tipo double

double[,] matriz; matriz = new double[2,2]; matriz[0,0] = 1; matriz[0,1] = 2; matriz[1,0] = 3; matriz[1,1] = 4; MessageBox.Show(matriz[1,1].ToString());

// matriz do tipo inteiro int[,] temp = { { 1, 4 }, { 2, 7 }, { 3, 5 } }; MessageBox.Show(temp[1, 1].ToString());

Figura 243 Diagrama de classe.

Carro

+ marca : String+ com : String+ marcha : int- velocidade : int

+ movimentar (aceleração : int) : void+ parar() : void+ consultar() : int

InFoRmátICa 4

212

CaPítulo 6

213

Page 109: 106026095 Informatica Programacao de Computadores Etec

Observe,então,nafigura244,comoficariaaclasse,seguindoodiagrama.

Assim como em Java, é importante seguir as boas práticas de programação.Umadelaséutilizarosgettersesetters.Vamosusarumaclassecriadanocapí-tuloanteriorparacomporoutroexemplo(figuras246e247).

Figura 244 Como fi cou 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;

// método movimentar // recebe o valor (int) que indica a acelação do veículo public void movimentar(int aceleracao){ velocidade += aceleracao; }

// método parar // diminui em uma unidade toda vez que é acionado public void parar(){ if (velocidade > 0){ velocidade--; } }

// método consultar // retorna a velocidade do veículo public int consultar(){ return velocidade; } }

Analisandoocódigoprincipalmain(),nafigura245,vejaoqueaparece.

Figura 245 Analisando o código main(). static void Main(string[] args)

{ // instanciando a classe Carro Carro objCarro = new Carro();

// atribui os valores para o OBJ objCarro.marca = “Fusca”; objCarro.comb = “Querozene”; objCarro.marcha = 4;

// imprime os dados do veículo e combustivél Console.WriteLine(“Veículo: “ + objCarro.marca + “ de “ + objCarro. marcha + “ marchas”); Console.WriteLine(“Combustível: “ + objCarro.comb + “\n”);

// inicia a movimentação do carro com velocidade 5 objCarro.movimentar(5);

// consulta a velocidade do veículo velocidade = objCarro.consultar();

// visualiza a velocidade do veículo Console.WriteLine(“Velocidade Atual:” + velocidade); Console.ReadKey();

// aumenta a velocidade do veículo objCarro.movimentar(5); Console.WriteLine(“Velocidade Atual:” + objCarro.consultar()); Console.ReadKey(); // começa a parar o carro // a primeira chamada diminui em 1 unidade a velocidade objCarro.parar(); velocidade = objCarro.consultar(); Console.WriteLine(“Velocidade Atual:” + objCarro.consultar()); Console.ReadKey(); }

Figura 246 Classe Pessoa.

Pessoa

- codigo : int- nome : String- endereco : String- bairro : String– cidade : String- uf : String- telefone : String- celular : String

* mostrartelefones() ; void

InFoRmátICa 4

214

CaPítulo 6

215

Page 110: 106026095 Informatica Programacao de Computadores Etec

6.9. Windows Form application – componentesO tipo Windows Form Application (em português aplicação de formulárioWindows), diferentemente do Console Application, permite a elaboração doprojetoparaambienteWindows,utilizandocomponentesfornecidospelaTo-olBox(caixadeferramentas).Essajanelaapresentaumasériedecomponentese,cadaumdeles,umavariedadedepropriedadesquepodemserconfiguradastantoviajanela,comopormeiodeprogramação.Veja,aseguir,oscomponentesmaiscomunsparaaelaboraçãodeumprojeto.

6.9.1. Form

Ao iniciar a aplicação do Form (formulário), será disponibilizado o Form1(nomepadrão)paraodesenvolvimentodostrabalhos.Esseéorepositórioprin-cipalparaosnossoscomponentes(figura248).ConfiraosdetalhesnoquadroPropriedades Form.

public class Pessoa { private int codigo; private string nome; private string endereco; private string bairro; private string cidade; private string uf; private string telefone; private string celular;

public int setCodigo(int novoCodigo){ this.codigo = novoCodigo; } public int getCodigo(){ return this.codigo; } public String setNome(String novoNome){ this.nome = novoNome; } public int getNome(){ return this.nome; } // o get e set deverá ser construído para os demais atributos }

Figura 247 Uso de getters e setters.

Figura 248 Form.

6.9.2. Button

OButton(botão),apresentadonafigura249,éoresponsávelporgrandepartedanossaprogramação.Aoclicarsobreessecomponente,acessamosajaneladecódigos, na qual o primeiro evento está previamente selecionado, nesse caso“click”.Issoindicaqueocódigoseráexecutadoquandodermosocliquesobreobotão(figura250).ConfiradetalhesnoquadroPropriedades Button.

Figura 249 Button.

Figura 250 Evento Click.

PROPRIEDADES FORM name modifi ca o nome

text atualiza a barra de título do formulário

Backcolor Cor de fundo do formulário

BackgroundImage Insere uma imagem como plano de fundo em um formulário

BackgroundImagelayout ajusta a posição da imagem em relação ao formulário

ControlBox Desativa os botões maximizar, minimizar e fechar

FormBorderStyle muda as confi gurações de visualização do formulário

Icon Insere um ícone no formulário

maximizeBox Permite ou não ao usuário maximizar

minimizeBox Permite ou não ao usuário minimizar

Size Defi ne a largura e a altura do formulário

WindowState Defi ne o modo como o formulário será aberto: maximizado, minimizado, etc.

PROPRIEDADES BUTTON name modifi ca o nome

text texto para o botão

BackColor modifi ca a cor do botão

BackgroundImage Insere uma imagem como plano de fundo

BackgroundImagelayout ajusta a posição da imagem em relação ao botão

Visible Defi ne se esse botão está visível ou não

nome do botão e evento

área de programação

InFoRmátICa 4

216

CaPítulo 6

217

Page 111: 106026095 Informatica Programacao de Computadores Etec

6.9.3. textBox

OTextBox(caixadetexto)éocomponenteresponsávelporreceberasinforma-çõesdousuário(figura251),étambémoitemmaiscomum,poisamaioriadasentradasdedadosérealizadaporele.ObservedetalhesnoquadroPropriedades TextBox.

Figura 251 TextBox.

PROPRIEDADES TEXTBOX name modifi ca o nome

text Insere um texto predefi nido

BackColor Cor de fundo da caixa de entrada

ForeColor Cor da fonte

CharacterCasing Controla a entrada do texto, mantendo as letras

em maiúscula ou minúscula

maxlength tamanho máximo em número de caracteres

PasswordChar Caractere utilizado para coletar senha

Readonly mostra o texto, mas não permite que ele seja alterado

textalign Defi ne se o texto deve ser colocado à direita, à esquerda ou centralizado

PROPRIEDADES LABEL name modifi ca o nome

text Insere um texto predefi nido

BackColor Cor de fundo da caixa de entrada, local onde

as informações serão inseridas

ForeColor Cor da fonte

Font Defi ne a fonte do texto

PROPRIEDADES COMBOBOX

name modifi ca o nome

text Insere um texto no combo

DataSource Pode ser ligado a uma base de dados Datatable

Items lista de valores que o ComboBox disponibiliza ao usuário para seleção

6.9.4. label

UsamosoLabel (rótulo)para inserir rótulosnos formulários,comomostraafigura252(consulteoquadroPropriedades Label,paraobterdetalhes).

6.9.5. ComboBox

OComboBox(caixadeagrupamento)permiteaousuárioabrirváriasopções(fi-gura253),assimcomoocorrequandoescolhemosumafontedeletradoMicro-softWord.VejamaisdetalhesnoquadroPropriedades ComboBox,osdetalhes.

Figura 252Label.

Figura 253 ComboBox.

Figura 254 ComboBox (carregado).

Paraainserçãodeitens,escolhaaopçãoItems.Umanovacaixadediálogoseráaberta:ositensdeverãosercolocadosumabaixodooutro(oneperline).Após a confirmação, teremos o ComboBox carregado com as informações(figura254).

6.9.6. listBox

DiferentementedoComboBox,oListBox(caixadelista)disponibilizavárias opções aosusuários, porém, em formade lista. Issopermite autilizaçãodebarraderolagemcasoonúmerodeopçõesultrapasseolimitedacaixadajanela(figura255).ConsulteoquadroPropriedades ListBox.

InFoRmátICa 4

218

CaPítulo 6

219

Page 112: 106026095 Informatica Programacao de Computadores Etec

ParacarregaroListBox(figura256),useomesmoprocedimentodoComboBox.

Figura 255 ListBox.

Figura 256ListBox (carregado).

Figura 257 CheckBox.

PROPRIEDADES LISTBOX name modifi ca o nome

DataSource Pode ser ligado a uma base de dados Datatable

Items lista de valores que o ComboBox disponibiliza ao usuário para seleção

Selectionmode Permite escolher um ou mais itens de uma só vez

PROPRIEDADES CHECKBOX

name modifi ca o nome

text Insere a texto da opção

CheckState Deixa a opção já selecionada

6.9.7. CheckBox

UtilizamosocontroleCheckBox(caixadeseleção)paraobtermúltiplasopçõesderespostaouparasimularum“sim”ou“não”,dependendodoescopoempre-gado.Oexemplodafigura257simulaumquestionárionoqualousuáriodevemarcarquais linguagensdeprogramaçãoestáestudando(consultetambémoquadroPropriedades CheckBox).

Paraverificaroquefoiselecionadopelousuário,devemosrealizarotesteemcadaumdoselementos.Assim, implementaremosocódigoanteriorcomumbotão,paraverificaçãodositensselecionados,cujasaídaseráumacaixadediá-logocontendotodasasinformaçõesselecionadas(figuras258ae258b).

Figuras 258 a e 258 b Verifi cação da caixa CheckBox.

Ocódigodescritorefere-seapenasaoeventoclick,relacionadoaobotãodeve-rificação(confiranafigura259).

6.9.8. RadioButton

ORadioButton(botãodeseleção)édiferentedoCheckBox,poispodeestabe-lecerrelaçõesentresi,oquepossibilita fornecermúltiplasopçõesparaqueseescolhasomenteuma.Oexemploilustradonasfiguras260(aeb)e261verificaoestadocivildousuário(confiratambémoquadroPropriedades RadioButton).

private void btnVerifi car_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 Código descrito do evento click, com a verifi cação.

Figuras 260 Verifi cação da opção do RadioButton.

InFoRmátICa 4

220

CaPítulo 6

221

Page 113: 106026095 Informatica Programacao de Computadores Etec

6.9.8.1. agrupamento

Emalgunsmomentos, seránecessário reunir gruposdeopçãousandooRa-dioButton.Paraqueoscontrolesfiquemvinculados,masdentrodeumdeter-minadogrupo,devemosutilizarumcontainer,oumelhor,umaestruturaquepermita criar tal vínculo. Selecione, então, o componente GroupBox da abaContainersdajanelaToolBox(figura262).Confira,também,oquadroProprie-dades Agrupamento.

Figura 261 O detalhamento

da verifi cação.

private void btnVerifi car_Click(object sender, EventArgs e) { string frase = “Seu estado Civil é:”; if (rdbCasado.Checked == true) frase = frase + “ Casado”; if (rdbSolteiro.Checked == true) frase = frase + “ Solteiro”; MessageBox.Show(frase, “Titulo”); }

PROPRIEDADES RADIOBUTTON

name modifi ca o nome

text Insere a texto da opção

CheckState Deixa a opção já selecionada

PROPRIEDADES AGRUPAMENTO

name modifi ca o nome

text título da caixa de grupo

Figura 262 Container – GroupBox.

Figura 263 RadioButton e

GroupBox.

Coloqueocontainerno formulárioe, emseguida,oRadioButtondentrodocontainer,massemarrastar,apenasinserindodentrodogrupo(figura263).

6.10. EventosParacadacomponente inseridonaaplicação, incluindooformulário,podemosmanipulareventosdistintos.Oeventoéaformacomqueaclassesemanifestaquandoousuáriointeragecomoscomponentesdoformulário:comumclique,duploclique,passagemdemouseetc.Porexemplo,aoinserirumbotãoparafina-lizaraaplicação,devemosassociarocódigoaumdeterminadoevento,nocaso,oclique.Nafigura264,podemosverificaraidentificaçãodobotãodeacordocomaatribuiçãodoseunameecomoeventoquereceberáaprogramação.

Figura 264 Eventos.

Figura 265Para modifi cação de eventos.

Paramodificaroseventos,podemosutilizarajaneladeProperties(figura265)comobotãoEvents,semelhanteaumraio.

Nome do botão indicado na propriedade name.

Evento Listagem dos eventos e componentes

InFoRmátICa 4

222

CaPítulo 6

223

Page 114: 106026095 Informatica Programacao de Computadores Etec

Capítulo 7

Visual Basic.NET

• Programação

• Tipos de dados e variáveis

• Operadores

• Estrutura de decisão

• Estrutura de repetição

• Tratamento de erros e exceções

• Vetores e matrizes

• Classes

• Windows Form Application - componentes

• Eventos

Page 115: 106026095 Informatica Programacao de Computadores Etec

OVisualBasic.NETémaisumaferramentaquecompõeoVisualStudio.ElepermitecriaraplicativosWindowsCliente,Servi-dor,Internet,semanecessidadedeusaroutraferramenta.Ao

trabalharcomaPlataforma.NET,osaplicativossãogerenciadosenãomaisinterpretadosounativos(VB6.0),alémdeincorporarnovosrecursos.AMi-crosoftconsideraumaferramentadotipoRAD–RapidApplicationDevelop-ment,quepossibilitaodesenvolvimentorápidodeaplicativos,comoopróprionomeindicaeminglês.

7.1. Programação AprogramaçãoemVisualBasic,ousimplesmenteVB,exigeosmesmoscuida-dosjáapresentadosanteriormente.Éimportante,porém,fazerumarecordaçãosucinta.

7.1.1. Console application

ValemasmesmasaplicaçõesemC#,nasquaisteremosumajaneladotipoDOScomoresposta.

7.1.2. Windows Form application

AoiniciarmosumaaplicaçãodotipoWindowsFormApplication,aSoluctionExplorerdeveráforneceroForm1.vb(figura266),oqualreceberáaprograma-çãodonossoprojeto.

Figura 266Solution Explorer – VB.

Figura 267Abas da janela Code.

Na janela de desenvolvimento (figura 267), podemos verificar a presença deoutroelementojáconhecido,oForm1.vb[Design],querepresentaodesigndoprojeto,ea StartPage,apáginainicialdoVisualStudio.

NaprogramaçãoemVB(Form1.vb),envolvemosnovamenteosconceitosdeprogramaçãoorientadaaobjeto,usandoamesmametodologia jáapresen-tadaemC#,comsuasclasses,atributos,métodoseocontroledeeventos,comonafigura268.

Figura 268Programação em VB.

7.2. tipos de dados e variáveisOstiposdedadossãotratadosdiretamentepelo.NETFramework.Portanto,utilizaremos,noVB,ostiposdedadossemelhantesaoC#,mascomnotaçõesdiferentesemalgunscasos(tabela14).Sigaasmesmasrecomendaçõesespecifi-cadasanteriormente.

tabela 14 Tipos de dados em VB. TIPO IMPLEMENTAÇÃO

Byte Inteiro de 8 bits sem sinal (0 a 255)

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

ushort Inteiro de 16 bits sem sinal (0 a 65 535)

Short Inteiro de 16 bits com sinal (-32 768 a 32 767)

uinteger Inteiro de 32 bits sem sinal (0 a 4 294 967 295)

Integer Inteiro de 32 bits com sinal (-2 147 483 648 a 2 147 483 647)

ulong Inteiro de 64 bits sem sinal (0 a 18 446 744 073 709 551 615)

long

Inteiro de 64 bits com sinal (-9 223 372 036 854 775 808

a 9 223 372 036 854 775 807)

InFoRmátICa 4

226

CaPítulo 7

227

Page 116: 106026095 Informatica Programacao de Computadores Etec

Single Ponto Flutuante Binário de 4 bytes

Double

Ponto fl utuante binário IEEE de 8 bytes

(±5.0 x10-324 a ±1.7 _ 10308), 15 dígitos decimais de precisão

Decimal

Ponto fl utuante decimal de 128 bits.

(1.0 _ 10-28 a 7.9 _ 1028), 28 dígitos decimais de precisão

Boolean Pode ter os valores true e false. não é compatível com inteiro

Char um único caractere unicode de 16 bits. não é compatível com inteiro

String até 2 bilhões de caracteres

Data 8 bytes – intervalo 01/01/100 até 31/12/9999

7.2.1. atribuição – DIm

ParaadefiniçãodasvariáveisemVB,utilizaremosainstruçãoDIM,onomedavariáveleoseutipo.Confiranoexemploilustradopelafigura269.

7.2.2. Variáveis globais

Podemosdefinir,dentrodasrotinastendovisibilidadelocal,ocódigomostradonafigura270.

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

Figura 269 Instrução DIM.

Figura 270 Código para defi nição.

Visibilidade dentro da rotina

Private Sub Form1_Load() Dim nome As String Dim valor As Integer nome = “” valor = 0 End Sub

}Outraalternativaéfazeromesmodentrodaclasse,paraquepossamseraces-sadas por outras rotinas da mesma classe. O código ilustrado na figura 271implementavariáveisdevisibilidadepúblicasdentrodaaplicação.

7.3. operadoresOsexemplospráticosparamostrarafuncionalidadedosoperadoresserãoexecu-tadosnoConsoleApplication.

7.3.1. operadores aritméticos

Visibilidade dentro da rotina

Visibilidade global

Public Class Form1 Public frase As String Public calc As Double Private Sub Form1_Load() Dim nome As String Dim valor As Integer nome = “” valor = 0 End Sub End Class

}}

Figura 271 Código implementando

variáveis.

Sub Main() Console.WriteLine(“Verifi cando os Operadores”) Dim x = 10 Dim y = 15 Console.WriteLine(“Soma: “ & (x + y)) Console.WriteLine(“Subtração: “ & (x - y)) Console.WriteLine(“Multiplicação: “ & (x * y)) Console.WriteLine(“Divisão: “ & (y / x)) Console.WriteLine(“Parte inteira da divisão: “ & (x \ 3)) Console.WriteLine(“Resto da Divisão (10/3): “ & (x Mod 3)) Console.WriteLine(“Bom “ & “Dia “ & “aluno”) Console.WriteLine(“Quadrado de três: “ & 3 ^ 2) Console.ReadKey() End Sub

ARITMÉTICOS + adição

- Subtração

* multiplicação

/ Divisão

\ Divisão de um valor por outro e retorna somente a parte inteira do resultado

mod Resto da Divisão

& Combina (concatena) Strings

^ Expoente (potência)

RELACIONAIS

> maior que

< menor que

>= maior ou igual a

<= menor ou igual a

= Igual

<> Diferente

7.3.2. operadores relacionais

Figura 272Exemplo de operadores aritméticos.

InFoRmátICa 4

228

CaPítulo 7

229

Page 117: 106026095 Informatica Programacao de Computadores Etec

7.3.3. operadores aritméticos de atribuição reduzida

7.3.4. operadores lógicos

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(“Subtração + igual: “ & y) ‘x está com novo valor !!! x *= 2 Console.WriteLine(“Multiplicação + igual: “ & x) x /= 2 Console.WriteLine(“Divisão + igual: “ & x) frase &= “ Dia!!!!” Console.WriteLine(“Resto da Divisão + igual: “ & frase) y ^= 2 Console.WriteLine(“Potência + igual: “ & y) Console.ReadKey() End Sub

Figura 273 Exemplo de operadores

aritméticos de atribuição reduzida.

ARITMÉTICOS += adição Igual

-= Subtração Igual

*= multiplicação Igual

/= Divisão Igual

&= Concatena Igual

^= Potência Igual

LÓGICOS and and

or or

not not

7.4. Estrutura de decisãoPararealizarosdesvioscondicionais,utilizamosaestruturaif()ouSelectCase(),nosformatosindicadosaseguir.

7.4.1. Condição Verdadeiro – if

Neste exemplo, verificaremos se a variável “x” é maior do que o valor “10”,sabendo-sequeseuvalorinicialé“5”,visualizandoaexpressão:“AvariávelXémaiordoque10”(figura275).

Figura 274 Exemplos de conversões.

x = CInt(idade)

y = CSng(salario)

z = CInt(Console.ReadLine())

dt = CDate(“01/01/2010”)

7.3.5. Conversões em VB.nEt

Oprocessode conversão segueos conceitos abordados anteriormente (Java eC#).Alistailustradapelafigura274sugerealgunsexemplosdeconversões.

Sub Main() Dim x As Integer = 15 If x >= 10 Th en Console.WriteLine(“A variável X é maior que 10”) Console.ReadKey() End If End Sub

7.4.2. Condição Verdadeiro ou Falso – if…else

Agora,verificaremosseavariável“x”émaiordoque“10”ounão,considerando-sequeseuvalorinicialé“5”.Seráimpressaumaexpressãoparacadaalternativa(figura276).

Figura 275 Exemplo de verifi cação de variável.

Figura 276 Expressões diferentes para cada alternativa.

Sub Main() Dim x As Integer = 5 If x >= 10 Th en Console.WriteLine(“A variável X é maior que 10”) Else Console.WriteLine(“A variável X é menor que 10”) End If Console.ReadKey() End Sub

7.4.3. – Condições múltiplas – if...elseif...elseif....else

Verificaremos,agora,seavariável“x”possuionúmero1,2ou3,sabendo-sequeovalorinicialé03.Paraoutrosvalores,aexpressãoserá:“AvariávelXéTRêS”(figura277).

InFoRmátICa 4

230

CaPítulo 7

231

Page 118: 106026095 Informatica Programacao de Computadores Etec

7.4.4. – múltiplos testes – Select Case()

Usandoomesmoexemploanterior,asequênciadetestesérealizadacomains-truçãoSelectCase(),aqual,deveráparacadatesteestarimplementadajunta-mentecomainstruçãobreak(figura278).Assim,asoutrascondiçõesnãoserãoexecutadas.AinstruçãoCaseElserealizaafunçãodainstruçãoelsedoif().

Figura 277Verificando

condições múltiplas. Sub Main() Dim x As Integer = 3 If x = 1 Then Console.WriteLine(“A variável X é UM”) ElseIf x = 2 Then Console.WriteLine(“A variável X é DOIS”) ElseIf x = 3 Then Console.WriteLine(“A variável X é TRÊS”) Else Console.WriteLine(“Qualquer outro valor”) End If Console.ReadKey() End Sub

7.5. Estrutura de repetiçãoVamosconheceragoraasestruturasderepetiçãoutilizadasnalinguagem.

7.5.1. While()

Usandoavariável“cont”paracontroledoloop,serãovisualizadososnúmerosde“0”até10.OimportanteemumainstruçãoWhile()éaimplementaçãodeumcontadordentrodaestrutura(figura279).

Figura 278 Múltiplos 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 é TRÊS”) Case Else Console.WriteLine(“Qualquer outro valor”) End Select Console.ReadKey() End Sub

Figura 279 Instrução While(). Sub Main()

Console.WriteLine(“Estrutura WHILE”) Dim cont As Integer = 0 While (cont <= 10) Console.WriteLine(“Numero: “ & cont) cont = Cont + 1 End While Console.ReadKey() End Sub

7.5.2. Do While()...loop

Representaamesmaestruturadainstruçãoanterior(figura280).

Figura 280Instrução Do While()...Loop.

Private Sub Form1_Load() Dim cont = 0 Do While (cont <= 10) MsgBox(“Numero: “ & cont) cont = cont + 1 Loop End Sub

7.5.3. Do...loop until

Valeamesmainstruçãoanterior,mas,nessecaso,otesteérealizadonofinaldoloop(figura281).Essetipodeestruturapermitequeasinstruçõesdentrodolaçoderepetiçãosejamexecutadas,nomínimo,umavez.

Figura 281 Teste no fim do Loop.

Sub Main() Console.WriteLine(“Estrutura WHILE”) Dim cont As Integer = 0 Do Console.WriteLine(“Numero: “ & cont) cont = cont + 1

Loop Until cont >= 10 Console.ReadKey() End Sub

7.5.4. For

Diferentementeda instruçãoWhile(), a instruçãoForécapazdedefinir, emumaúnicalinha,avariáveleoseutipo,bemcomoestabeleceracondiçãoparaaestruturaeindicarocontador(figura282).

7.5.5. For...Step

Contarde“0”a“10”,mostrandooresultado.Noentanto,dessavezocontadorseráincrementadode2em2(figura283).

InFoRmátICa 4

232

CaPítulo 7

233

Page 119: 106026095 Informatica Programacao de Computadores Etec

Figura 282Instrução For. Sub Main()

For x = 0 To 10

Console.WriteLine(“Número: “ & x)

Next

Console.ReadKey()

End Sub

Figura 283Instrução For...Step. Sub Main()

For x = 0 To 10 Step 2

Console.WriteLine(“Número: “ & x)

Next

Console.ReadKey()

End Sub

7.6. tratamento de erros e exceçõesNasversõesanterioresdoVisualBasic,otratamentodeerroeracontroladopelainstruçãoOnerrorgoto,aindamantidoporquestõesdecompatibi-lidade. Porém, prefira utilizar o try-catch-finally, que possui as mesmascaracterísticasestudadasanteriormente,mascommudançasemsuaslinhasdeprogramação,comopodemosverificarnoexemploaseguir:

Try ‘ instruções que podem gerar o erro de execução Catch ‘ o que deve ser feito se o erro ocorrer Finally ‘ opcional, mas é executado End Try

Assim,comonasoutras linguagens(JavaeC#),podemoscapturarosvaloresdeerros:

Catch erro As DivideByZeroException

Nopróximoexemplo,aestruturaTryfoiorganizadaparaverificarseexisteerronomomentodaconversãodedadosdasvariáveis(figura284).

7.7. Vetores e matrizesVamosagoraconhecer a formadedeclaração, atribuiçãoe acessoaosvaloresparadiferentestiposdevetoresematrizes(figura285).Umasugestãoparacon-solidaroconhecimentoéfazerumapesquisaespecíficasobrevetoresematrizesdeLógicadeProgramaçãoeProgramaçãoemJava.Hámuitainformaçãodispo-nível,nãoapenasnabibliografia,comotambémemsitesdebusca.

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 finalização”, “Mensagem”) End Try

Figura 284 Verificação de erro na conversão de dados das variáveis.

‘ vetor de string Dim j(2) As String j(0) = “seg” j(1) = “ter” MsgBox(j(0))

‘ vetor de string Dim semana() As String = {“dom”, “seg”, “ter”, “qua”, “qui”, “sex”} MsgBox(semana(0))

‘ vetor tipo Single Dim y(3) As Single y(0) = 10.5 y(1) = 7.3 y(2) = 1.9 MsgBox(y(1))

‘ vetor tipo Inteiro Dim x() As Integer = {10, 5, 3} MsgBox(x(2))

‘ matriz tipo double Dim matriz(2, 2) As Double matriz(0, 0) = 1 matriz(0, 1) = 2 matriz(1, 0) = 3 matriz(1, 1) = 4

Figura 285 Formas de declaração de vetores e matrizes.

InFoRmátICa 4

234

CaPítulo 7

235

Page 120: 106026095 Informatica Programacao de Computadores Etec

MsgBox(matriz(1, 1))

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

7.8. ClassesUsandoosmesmosconceitosdeJava,oVisualBasicpodeimplementarclassesespecíficasparaprogramação,asquaisseguemosmesmosprincípiosdeforma-çãoemanipulação,incluindoosgettersesetters.

7.9. Windows Form application – componentesDamesmaformaqueemC#,ajanelaToolBoxcontacomvárioscomponentesparaodesenvolvimentodeaplicaçõesemVB.Paraoscomponentesapresentadosaseguir,utilizeasmesmasdescriçõesdepropriedadesmencionadasnocapítulo6.

7.9.1. Form

Quandoaaplicaçãoiniciar,apareceráoForm1(nomepadrão)utilizadoparaodesenvolvimentodostrabalhos.Trata-sedoprincipalrepositórioparaoscom-ponentes,comomostraafigura286.

Figura 286 Form.

Figura 287 a e b Button.

Figura 288 Evento Click.

Figura 289 TextBox.

Figura 290 Label.

Figura 291 ComboBox.

7.9.3. textBox

É o componente que recebe as informações do usuário, como ilustra afigura289.

7.9.4. label

OLabeléusadoparainserirrótulosnosformulários(figura290).

Nome do botão e evento

7.9.5. ComboBox

OComboBoxpermiteabrirumacortinadeopçõesaousuário(figura291).

Paraainserçãodeitens,umanovacaixadediálogoseráabertaeositensdeve-rãosercolocadosumabaixodooutro(oneperline).Apósaconfirmaçãodetalexecução,teremosoComboBoxcarregadocomasinformações(figura292).

7.9.2. Button

OButton(figura287aeb)éoresponsávelporgrandepartedaprogramação.Aoclicarnele,acessamosajaneladecódigosnaqualoprimeiroevento,click,estápreviamenteselecionado(figura288).

Figura 292ComboBox carregado.

InFoRmátICa 4

236

CaPítulo 7

237

Page 121: 106026095 Informatica Programacao de Computadores Etec

7.9.6. listBox

OListBoxtambémdisponibilizaváriasopçõesaosusuários,sóquesãoabertascombarraderolagem(figura293).

Figura 293ListBox.

Figura 294 ListBox carregado.

Figura 295 CheckBox.

Figura 296Verificação da caixa CheckBox.

Para carregaroListBox (figura294),useomesmoprocedimentodoComboBox.

7.9.7. CheckBox

Assim como no C#, vamos utilizar o CheckBox para indicar múltiplasopçõesouquestõesde simounão.Oexemploda figura295éomesmoutilizadoemC#.

Afigura296mostracomofazeraverificaçãodeseleçãopormeiodeumbotão.

Ocódigodescritonafigura297éreferenteapenasaoeventoclick,oqualestárelacionadoaobotãodeverificação.

Figura 297 Código referente apenas ao evento click.

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

7.9.8. RadioButton

VamosutilizaromesmoexemplodoC#esolicitaraousuárioaescolhadoesta-docivil(figura298e,comdetalhes,nafigura299).

Figura 298 Verificando a opção do RadioButton.

Figura 299Detalhes da opção do RadioButton.

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

InFoRmátICa 4

238

CaPítulo 7

239

Page 122: 106026095 Informatica Programacao de Computadores Etec

7.9.8.1. agrupamento

UseumcontainerpararealizaroagrupamentodoscomponentesRadioButton,assimcomonomesmo exemplodeC# (figura300).Confira, em seguida, oquadroPropriedadesRadioButton.

Figura 300 Agrupamento.

PROPRIEDADES RADIOBUTTON

name modifi ca o nome

text título da caixa de grupo

7.10. EventosExisteumamaneiramuitofácildecontrolaroseventosemVB.Napartesupe-riordajaneladeCode,comomostraafigura301,aparecemtodososcomponen-tesinseridosnoformulário,incluindoopróprioformulário.

Cliqueparaabriro“combo”deopções(figura302),franqueandooacessoaoscomponentes.

Figura 303 Eventos.

Figura 302 Componentes

acionados.

Figura 301 Componentes.

NaoutraextremidadedajanelaCode,háalistadetodososeventosdisponíveisparaocomponente(figura303).Aoescolherumdeles,automaticamenteumaáreadecódigoserácriada,paraondeocursorserádeslocado.

InFoRmátICa 4

240

CaPítulo 7

241

Page 123: 106026095 Informatica Programacao de Computadores Etec

Capítulo 8

ASP.NET• Aplicação ASP.NET

• Eventos

• HTML Server Controls e Web Server Controls

• Sessões em ASP.NET

• Dados via URL

Page 124: 106026095 Informatica Programacao de Computadores Etec

ASP.NETéumaplataformadedesenvolvimentousadaparaacons-truçãodeaplicaçõesWebeWebService,asquaisserãoexecutadasporum servidor,que,nesse caso, éo IIS (Internet Information

Service–serviçodeinformaçãodeInternet)daMicrosoft.Nãosetrataapenasdeumatecnologiadedesenvolvimento,masdeumconjuntodeferramentasquepermiteaintegraçãoentreservidoresMicrosoft,segurança,códigocompilado,eacessoabancosdedadosviaADO.NETeao.NETFramework,bemcomosuportetotalaoXML.

8.1. aplicação aSP.nEtUmaaplicaçãoASP.NETéconstituídaportrêspartes(figura304):Conteúdo:arquivosdotipoWebForms,HTML,imagens,áudioevídeo,quedeterminamaaparênciadeumaaplicaçãoWeb.Lógica:arquivosexecutáveisescript,quedeterminamcomoumaaplicaçãores-ponderáàsaçõesdosusuários.

Confi guração:viaarquivosWebConfigeCSS,quedeterminamcomoaapli-caçãovaiserexecutada.

UmdosprincipaiscaminhosparacriarumainterfaceentreousuárioeaaplicaçãoASP.NETéoWebForm,cujaparteexecutáveléarmazenadaemumassembly(.dll),porém, é executadano servidor e controladaporumworkprocess (asp-net_wp.exe).FuncionaemparceriacomoIIS,queiniciaaexecuçãodoASP.NET(aspnet_wp.exe)carregandooassemblydoWebForm,oqual,porsuavez,cons-tróiarespostaparaousuáriodeacordocomsuarequisiçãoeenviaumarespostanoformatoHTML(figura304).

Comoilustraafigura304,partirdaaçãodousuário,onavegadorcriaarequi-siçãodeumapáginaWebouativaumdeterminadoserviço.Issofazcomqueapartelógicadapáginaentreemação.ArespostaseránoformatoHTML,devi-damenteconfiguradacomo,porexemplo,aformagráficaqueseráapresentadaaousuário(formatação).

8.1.2. Web Form

UmWebFormpodeconterosseguintescomponentes:Server Controls(con-troles de servidor): TextBox, Label e Button, que permitem controlar e res-ponder a determinados eventos do servidor. HTML Controls (controles deHTML):TextArea,TableeImage,querepresentamoselementospadrõesdoHTML.Data Controls (controlesdedados):SqlConnection,SqlCommand,OleDbConnection,OleDbCommandeDataSet,que fornecerãomecanismosparamanipulaçãodearquivosXMLeconexãocombancosdedados (SQL).System Components(componentesdesistema):EventoLog,MessageQueueeFileSystemWatcher,osquaispermitemmanipulareventosdoservidor.

8.1.3. Projeto Web application (aplicação Web)

ParainiciarumaWebApplication,escolha,emProjectTypes,VisualBasic,edepoisaopçãoWebnatemplateASP.NETWebApplication(figura305).Não

O IIS é um conjunto integrado de serviços de rede para a plataforma Windows, criado pela Microsoft. Sua primeira versão surgiu com o Windows NTServer 4 e passou por várias atualizações. A versão de 2009 é o IIS 7.5 (disponível no Windows Server 2008 R2 e Windows 7). Uma de suas características mais utilizadas é a geração de páginas HTML dinâmicas, que, diferentemente de outros servidores web, funciona com tecnologia proprietária ASP (Active Server Pages, páginas de servidor ativas), mas também pode usar outras tecnologias com a adição de módulos de terceiros. Para ter acesso a essa ferramenta, é necessário adquirir licença de uso. E para cada instalação ou versão é exigido um pagamento. Depois do lançamento da plataforma .NET em 2002, o IIS ganhou também a função de gerenciar o ASP.NET, formado basicamente por dois tipos de aplicações: Páginas Web (acessadas por usuários com a extensão ASPX) e Web Services (funções disponibilizadas pela rede, chamadas de aplicativos ASMX).

Figura 304Funcionamento de um Web Service.

Figura 305Aplicação ASP.NET.

InFoRmátICa 4

244

CaPítulo 8

245

Page 125: 106026095 Informatica Programacao de Computadores Etec

seesqueçadeindicaronomedaSolution,que,nessecaso,éExemploWeb,eolocalemqueelaserágravada.

AnalisandoaSolutionExplorer,novosarquivosserãodisponibilizadosparaapli-caçãoemASP,comooDefault.aspx.AdescriçãovisualdeumWebFormque,umavezativado,permitevisualizarna janelaCodeasopçõesDesign,SpliteSource(figura306).Elaspermitemmodificarajaneladedesenvolvimentoden-trodetrêsopções:design;designecódigo,ecódigo.Alémdisso,possibilitaocontroledastagsdemarcação.

8.1.4. Ciclo de vida da aplicação

UmaaplicaçãoWebcomeçanomomentoemqueonavegadorfazarequisi-çãonasuapáginaprincipal.Inicialmente,executaoassembly(.dll),criandouma instânciadoWebForm.Essa,porsuavez, responderáà requisiçãodousuárionoformatoHTML,sendodestruídaposteriormente.Casoousuárionãorealizenenhumarequisição,ainstânciapoderáserexcluídadepoisdeumdeterminadotempo.

8.1.5. Executando uma application Service (Serviço de aplicação)

ExecuteumaApplicationServicedamesma formaque fazemumWindowsFormApplication.Dessavez,porém,nãoteremosaaplicaçãorodandocomoanteriormente,massimumaporta lógicaqueserácriadaparaoservidorIIS.Onavegadorpadrãodamáquina seráativadoparamostrar a aplicação, con-formeilustraafigura307.PodemosobservarqueaparecenaURLaexpressãolocalhost, indicandoqueoserviçoestáoperandocomoumservidor local.Onúmeroquesurgeapósessaexpressãorepresentaaportalógicadamáquina,oqualnãoépadrãoepoderásermodificadaacadaexecução.

Todaequalquermodificaçãonocódigodeverásergravadapormeiodaatualiza-çãodapáginaepoderáservisualizadaposteriormente.Paraisso,bastapressionarateclaF5.Casosejausadoobotãobreak,ajaneladonavegadorseráfechada.

8.1.6. Escrevendo a aplicação

AssimcomonasaplicaçõesemC#ouVB.NET,podemosutilizaraToolBoxparaarrastaroscomponentesusadosnodesenvolvimentodolayoutdapáginaWeb.Paraisso,éprecisomudaravisãoparaDesign(figura308).

Sepreferirirdiretamenteaocódigo,mudeparaSource,escrevaegraveoseucódigoeverifiqueoresultadofinalnonavegador(figuras309aeb).

<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 Página em ASP</div> </form></body></html>

Figura 306WebForm.

Figura 307Servidor em

Execução.

Figura 308ToolBox para Aplicação Web.

Figura 309aVerificando o resultado final.

Figura 309bMinha primeira aplicação.

InFoRmátICa 4

246

CaPítulo 8

247

Page 126: 106026095 Informatica Programacao de Computadores Etec

8.1.7. Estruturando uma página aSP.nEt

Antes,aspáginasemASPutilizavamastags“<%...%>”paraainclusãodoscript,comopodemosconstatarnocódigoilustradonafigura310.

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

Oresultadopodeservistonafigura311.Lembre-sedeexecutarocódigousan-dooIIS(localhost).

Dessaforma,astagsmarcadorasdoASPeramcolocadasondesedesejavaqueocódigoaparecesse.ElasficavammisturadascomoHTML,gerandoumcó-digodedifícilleituraemanutenção,quefoibatizadodecódigoespaguetti.OASP.NETeliminouesseproblema,utilizandoosServercontrols,ouseja,tagsquepodemserinterpretadasdiretamentepeloservidoreestãodivididasemtrêscategoriasdeServer Controls.

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

Atag<p>tornou-seumcontroledoservidor.Suaidentificaçãofoirepresentadapeloatributoid,quepermitiráfuturasreferênciaspormeiodocódigoexecutá-vel,permanecendoagoraforadoHTML.

8.1.7.2. Web Server Controls

SãosemelhantesaoHTMLServerControls,poisagemcomopartedeumcódi-goHTML.Noentanto,sãoindependentesepodemserutilizadosemaplicaçõesinterativas, o que significaque eles englobam serviços como,por exemplo, aprogramaçãodeeventos.Issoporquedispõemdecomponentesdecalendário,gridview,treeview,entreoutros.OsWebServerControlssãomaiscomplexosqueoHTMLServerControlsedeveminiciarcom<asp:.../>,comomostraocódigoilustradopelafigura313.

<html xmlns=”http://www.w3.org/1999/xhtml” ><head runat=”server”> <title>Exemplo em ASP - VB</title></head><% Tempo.Text = Now()%><body> <p></p><asp:label id=”Tempo” runat=”server”/></p></body></html>

8.1.7.3. Validation Server Controls

SevoltarmosaoconceitodastagsemHTML,lembraremosqueograndepro-blemaeraocontroledeentradadedados,ouseja,aquiloqueousuáriopoderiadigitarounão.Poisoscontrolesdevalidaçãodoservidor(validationservercon-trols)permitemjustamentevalidaressasentradaseaindaexibemmensagens.Cadacontroleexecutaumavalidaçãoespecífica,apósumaaçãodousuáriopormeiodecontroleButton,ImageButton,ouLinkButton.

8.2. EventosPara que o código seja executado no momento correto, podemos utilizar osmanipuladoresdeevento.Ocódigoseguintedeterminaráomomentoemqueaverificaçãodadata/horadeveráserlidanoservidor(figura314).Omanipulador

Figura 310Uso de tags “<%...%>”.

Figura 311Execução do ASP.

HTML Server Controls (Controles de servidor

HTML): tags HTML tradicionais.

Web Server Controls (Controles de servidor Web): novas tags ASP.

NET. Validation Server

Controls (Controles de servidor de validação):

validação da entrada de dados.

Figura 312Tags com inclusão

de atributo runat=”server”.

Figura 313Código com uso de <asp:.../>.

8.1.7.1. Html Server Controls

São tags HTML padrão, criadas a partir da inclusão de um novo atributorunat=”server”.Vejaoexemplonocódigomostradonafigura312.

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

InFoRmátICa 4

248

CaPítulo 8

249

Page 127: 106026095 Informatica Programacao de Computadores Etec

realizaráumasub-rotinaquandodeterminadoeventoocorrer.Noexemploan-terior,oeventoPage_Loadéexecutadoquandoumapáginaécarregada.

<html xmlns=”http://www.w3.org/1999/xhtml” ><head runat=”server”> <title>Exemplo em ASP - VB</title></head><script runat=”server”> Sub Page_Load(Sender As Object,E As EventArgs) Tempo.Text = Now() End Sub</script><body> <p><asp:label id=”Tempo” runat=”server”/></p></body></html>

8.3. Html Server Controls e Web Server ControlsAconstruçãodeumapáginaWebpoderáserfeitadeduasformas:pormeiodoHTMLServerControlsoudoWebServerControls.IssodependediretamentedoscomponentesdaToolbox.Nãoexiste regrapara seutilizarumououtro.Porém,érecomendáveloptarpeloHTMLControls,emcasodemigraçãodoASPparaoASP.NET.JáoWebControlséindicadoparasituaçõesemqueoscomponentesprecisamdemaisfuncionalidade,poiselepermiteaprogramaçãoeincorporaçãoderecursosdoFramework.

8.3.1. Html Server Controls

Oexemploilustradopelasfiguras315aebmostraumaentradasimplesdeloginesenha.

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

AssimcomoocorreuemC#eVB.NET,ajaneladePropertiesdeveráserutili-zadaparaajusteseidentificaçãodoscomponentes(figura316).

Figura 314Verificação de

data e hora.

Figura 315aUsando Server

Control.

Figura 315bDetalhamento do uso do Server Control.

Figura 316Janela Properties.

8.3.2. Web Server Controls

Usandoomesmoexemplodoitemanterior,agoracomoWebServerControls,podemosverificarquenãoexistemudançadelayout(figuras317aeb).

InFoRmátICa 4

250

CaPítulo 8

251

Page 128: 106026095 Informatica Programacao de Computadores Etec

<html xmlns=”http://www.w3.org/1999/xhtml” ><head runat=”server”> <title>Exemplo em ASP - VB</title></head><body> <form id=”form1” runat=”server”> <p id=”lblLogin”>Área Restrita - Web Service Controls</p> Login: <asp:TextBox ID=”TextBox1” runat=”server”></asp:TextBox> <p> Senha: <asp:TextBox ID=”TextBox2” runat=”server”></asp:TextBox> </p> <asp:Button ID=”btnEnviar” runat=”server” Text=”Enviar” />&nbsp;&nbsp;&nbsp;&nbsp; <asp:Button ID=”btnCancelar” runat=”server” Text=”Cancelar” /></form></body></html>

8.4. Sessões em aSP.nEtEm alguns momentos, será necessário deixar um valor disponível paratoda aplicação. Isso é fácil quando se trata de programação para ambien-te Windows, como o VB.NET. Mas, no caso de uma aplicação Web, te-

mos que utilizar os recursos das variáveis de sessão, ou seja, definir umachave e atribuir um valor para ela. As sessões são criadas pelo comandoSession(), que identifica as variáveis criadas pelo programador. Exemplo:

Session(“aula”) = “ASP.NET”

Session(“data”) = Now()

Apósadefiniçãodapalavra-chavedasessão, serádeterminadooseuvalor.Arecuperaçãodosdadosseráfeitadamesmaforma,identificandoapalavra-chave.Noexemplodafigura318,vamoscriarasduasvariáveismencionadaserecupe-rá-lasapósocliquedobotão.

AoclicarmosnobotãoEnviar,ositensreferentesaEstamosvendoumaaulade:eHorário:serãopreenchidosdeacordocomocódigomostradonafigura319.

<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 317aWeb Server Controls.

Figura 317bDetalhamento do

login e senha.

Figura 318Tela antes de pressionar o botão Enviar.

Figura 319Preenchendo itens.

InFoRmátICa 4

252

CaPítulo 8

253

Page 129: 106026095 Informatica Programacao de Computadores Etec

Mostrar2.Text = Session(“data”) End Sub</script><body> <form name=”formulario” runat=”server”> Visualizando variáveis 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/>Horário: <asp:Label ID=”Mostrar2” runat=”server” Text=””></asp:Label> </form></body></html>

AsvariáveisdesessãoforamcriadasnoeventoPage_LoadearecuperaçãodosvaloresocorreráquandooeventobtnEnviar_Clickforacionado(figu-ra320).

Nocódigoprincipal,podemosverificarsomenteacriaçãodaschaves(figura322).

<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 variáveis tipo Session<br /> <br/> <asp:linkbutton runat=”server” PostBackUrl=”Recuperar.aspx”>Próxima Página</asp:linkbutton> </form></body></html>

Deacordocomocódigomostradonoquadroanterior,olinkapontaparaumarquivo chamado Recuperar.aspx, que deverá mostrar o conteúdo da sessão.Apósocliquenobotão,observeoresultado(figura323).

<html xmlns=”http://www.w3.org/1999/xhtml” ><head id=”Head1” runat=”server”> <title>Session em ASP.NET</title></head><script runat=”server”>

Figura 320Variável Session

carregada.

Figura 321Link para visualização.

Figura 322Código principal com criação das chaves.

Figura 323Resultado após o clique no botão.

8.4.1. Recuperando sessão em outra página por meio de um evento

Depoisqueumasessãofoicriada,podemosrecuperarosvaloresemoutrapági-na.Vamosutilizaroexemploanterioredividi-loemduaspáginas–aprimeiraparacriaçãodasessãoeasegundaparavisualização.Naprimeira,vamosretirarobotãoeincluirumlinkparaqueousuáriosejadirecionadoparaapróximapágina(figura321).

InFoRmátICa 4

254

CaPítulo 8

255

Page 130: 106026095 Informatica Programacao de Computadores Etec

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 Botão 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/>Horário: <asp:Label ID=”Mostrar2” runat=”server” Text=””></asp:Label> </form></body></html>

8.4.2. Recuperando sessão em outra página automaticamente

É importante que as variáveis de sessão sejam recuperadas automaticamente,paraquepossamserutilizadasnaspáginassubsequentes.Vamosutilizarocódi-godoexemploanterioreeliminarobotãoparavisualização(figuras324aeb).

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/>Horário: <asp:Label ID=”Mostrar2” runat=”server” Text=””></asp:Label> </form></body></html>

8.5. Dados via uRlOutromecanismoparatransportarinformaçõesdeumapáginaWebparaoutraéoURL(UniformResourceLocatoroulocalizadorderecursouniversal).Pode-seutilizaroseguinteartifício:apósonomedoarquivoquereceberáasinfor-mações,digiteosinaldeinterrogação?eindiqueasvariáveiseseusrespectivosconteúdos.Sehouvermaisdeumavariável,separecomosinalde&,comonoexemploseguinte:

“Menu.aspx?op=1”“Menu.aspx?op=1&nome=José&cod=3456”

Parareceberasinformações,usaremosocomandoRequest.QueryString()noevento Page_Load da página que receberá os dados, indicando o nome davariávelquesedesejarecuperar.Afigura325mostraumexemplodemenudeopções.

Figura 324aRecuperação direta.

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

Figura 324bEliminado o botão para visualização.

Uma URL é o endereço de um recurso (um arquivo, uma impressora, etc.) disponível em uma rede, – seja internet, rede corporativa ou intranet. A URL tem a seguinte estrutura: protocolo://máquina/caminho/recurso. O protocolo poderá ser HTTP, FTP, entre outros. O campo máquina 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 325Menu de opções.

InFoRmátICa 4

256

CaPítulo 8

257

Page 131: 106026095 Informatica Programacao de Computadores Etec

Nocódigoqueestamosutilizandocomoexemplo,encontramosparacadalinkaidentificaçãodoarquivoeovalorasertransferidoviaURL(figura326).

<!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 Opções</title>

</head>

<body>

<form id=”form1” runat=”server”>

<div>

<b>Escolha uma Opção de Menu </b> <br />

<asp:LinkButton ID=”lnkOpcao01” runat=”server” PostBackUrl=”Menu.aspx?op=1”>Opção 01</asp:LinkButton><br />

<asp:LinkButton ID=”lnkOpcao02” runat=”server” PostBackUrl=”Menu.aspx?op=2”>Opção 02</asp:LinkButton><br />

<asp:LinkButton ID=”lnkOpcao03” runat=”server” PostBackUrl=”Menu.aspx?op=3”>Opção 03</asp:LinkButton><br />

</div>

</form>

</body>

</html>

NoarquivoMenu.aspx,teremoscomorespostaaindicaçãodaopçãoescolhidapelousuário(figura327).

Nocódigo(figura328),afunçãoRequest.QueryString()realizaráacapturadavariávelnoeventoLoad_PageecarregaráafrasenocontroleLabel,deacordocomaescolhadousuário.

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitio-nal//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns=”http://www.w3.org/1999/xhtml” >

<head runat=”server”>

<title>menu de Opções - 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 = “Opção UM selecionada”

Case “2”

Escolha.Text = “Opção DOIS selecionada”

Case “3”

Escolha.Text = “Opção TRÊS selecionada”

End Select

End Sub

</script>

<body>

<form id=”form1” runat=”server”>

<asp:Label ID=”Escolha” runat=”server” Text=””></asp:Label>

</form>

</body>

</html>

Figura 326Identificação de arquivo

e valor a transferir.

Figura 327Opção escolhida

via menu.

Figura 328Captura da variável no evento Load_Page.

InFoRmátICa 4

258

CaPítulo 8

259

Page 132: 106026095 Informatica Programacao de Computadores Etec

Capítulo 9

ADO.NET• DataSet

• DataReader

• Objetos para banco de dados

• Métodos de conexão

• Considerações fi nais

• Referências bibliográfi cas

• Glossário

Page 133: 106026095 Informatica Programacao de Computadores Etec

Integradoàplataforma.NET,oADO.NETéumatecnologiadeacessoabancodedados.SuasdiversasclassespermitemacessoaplataformascomoSQLServer,MySQL,Oracle,Sybase,Access,XMLearquivostextos.Es-

sasconexõespodemserrealizadasdetrêsmaneiras:OLEDB,SQLeODBC.

Criadopara trabalharno formatodesconectado,oADO.NETfazaconexãocom a base de dados por meio de um objeto DataAdapter (SqlDataAdaptereOleDbDataAdapter),aumentando,assim,oseudesempenho.Alémdisso,oADO.NETpossuioobjetoDataSet,queéa representaçãomaispróximadobancodedados.ElecarreganamemóriaváriastabelasrepresentadaspeloobjetoDataTable,alémdepermitirorelacionamentoentreastabelaspormeiodoobje-toDataRelation.OsprovedoresdedadosqueacompanhamoADO.NETpos-sibilitamautilizaçãodeváriasclassesqueinteragemdiretamentecomabasededados,asquaissãoidentificadasporumprefixo,conformemostraatabela14.

Casosejanecessárioutilizaroutrossistemasgerenciadoresdebancodedados,você pode consultar o seu desenvolvedor a respeito dos serviços de conexão,comooMySQLePostgreSQL.Paracadaprovedordeconexão,teremososobje-tosrepresentadosapartirdeseuprefixodaseguinteforma:OleDbConnection,

SqlConnection,OdbcConnection,OleDbCommandeSqlCommand.Parater-mosumavisãogeraldosmecanismosdeconexão,observemosafigura329,quemostratodaaestrutura.

OsprincipaispacotesutilizadospeloADO.NETsão:

•System.Data:contémasclassesquerepresentamtabelas,colunas,linhasetambémaclasseDataSetdetodososprovedores,alémdasinterfacesIDb-Command,IDbConnection,eIDbDataAdapter,quesãousadasportodososprovedoresdeconexão;

•System.Data.Commom:defineasclassesparaosprovedoresdedadosDb-ConnectioneDbDataAdapter;

•System.Data.OleDb: fontededadosOleDbusandooprovedor .NETOleDb;

•System.Data.Odbc: fonte de dados ODBC usando o provedor .NETODBC;

•System.Data.SqlTypes:dadosespecíficosparaoSQLServer.

Alémdisso,oADO.NEToferececlassesreferenciadas:

•Disconnected: fornececlasses capazesdearmazenardados semadepen-dênciadafontededadosdedeterminadoprovedor.Porexemplo,DataTable.

• Shared:classesquepodemseracessadasportodososprovedores;

• Data Providers:classesutilizadasemdiferentesfontesdedadosparage-renciamento.

tabela 14Provedores de

conexão.ODBC Data Provider

API Prefi xo: Odbc

OleDb Data Provider

API Prefi xo: OleDb

Oracle Data Provider

API Prefi xo:Oracle

SQL Data Provider

API Prefi xo:Sql

Geralmente usada para banco de dados mais antigos que utilizam a interface ODBC

Conexão do tipo OleDb, como o Access ou Excel

Para implementação de Banco de Dados Oracle

Para implementação de Banco de Dados Microsoft SQL Server

ProveDor DeSCrIÇÃo

Figura 329Estrutura geral.

InFoRmátICa 4

262

CaPítulo 9

263

Page 134: 106026095 Informatica Programacao de Computadores Etec

9.1. DataSetOobjeto recordset (ADO),quearmazena somenteumacoleçãode tabelas,temdesvantagensemrelaçãoaoDataSet,que fazpartedoSystem.Data.ODataSetcontrolaumacópiadobancodedados,representandoumconjuntode informações emmemória cachêquenão estão conectadas comobancodedadosdo sistema.BaseadoemXMLe independenteda fontededados,o DataSet pode armazenar várias versões das tabelas. Apesar de trabalharnoformatodesconectado,oDataSetpossuimecanismosquedãosuporteaomodelo conectado.Entreosmétodosdisponíveis,podemosdestacar algunsmostradosnatabela15.

9.3. objetos para banco de dadosUmadasgrandesvantagensdoADO.NETsãoosrecursosoferecidospelosob-jetosdemanipulaçãodedados.

9.3.1. objeto Datatable

OobjetoDataTablepoderepresentarumaoumaistabelasdedados,asquaispermanecemalocadasemmemória.Podesermanipuladopormeiodemétodos,comomostraatabela17.

FieldCount

IsClosed

Read

Close

Número de colunas da linha de dados atual

Verifi ca se o objeto DataReader está fechado

Avança para o próximo registro

Fecha o objeto

mÉtoDoS DeSCrIÇÃo

Columns

Rows

PrimaryKey

NewRow

Copy

TableName

Clear

Representa as colunas da tabela

Linhas da tabela

Chave primária

Cria uma nova linha de dados

Faz uma cópia da estrutura e dos dados

da tabela

Defi ne o nome da tabela

Limpa dos dados da tabela

mÉtoDoS DeSCrIÇÃo

Tables Uma coleção de tabelas que armazenam os dados atuais a serem manipulados

ColeÇÕeS DeSCrIÇÃo

AcceptChanges

Clear

Clone

Copy

GetChanges

GetXmlSchema

Reset

Grava todas as alterações

para o DataSet

Remove todas as linhas das tabelas

Faz uma cópia da estrutura,

mas não copia os dados

Faz uma cópia da estrutura

e dos dados

Retorna uma cópia do DataSet

com apenas as colunas alteradas

Retorna uma representação XML

da estrutura de um DataSet

Reverte o DataSet ao seu

estado original

mÉtoDoS DeSCrIÇÃo

tabela 15DataSet.

tabela 16DataReader.

tabela 17DataTable.

9.2. DataReaderODataReaderpermiteacessarefazeraleituradobancodedados,percorrendoosregistrosdeformasequencialpormeiodoobjetocommand.EssesregistrosserãolidosposteriormentepeloDataReader.DiferentementedoDataSet,oDa-taReadernãoofereceacessodesconectadoenãopermitealterarouatualizarafontededadosoriginal.Elepossibilitaapenasoacessorápidodeleitura.Entreosmétodos,podemosdestacarosqueaparecemnatabela16.

InFoRmátICa 4

264

CaPítulo 9

265

Page 135: 106026095 Informatica Programacao de Computadores Etec

9.3.2. objeto DataView

Asoperaçõesdepesquisa,ordenaçãoenavegaçãopelosdadospodemserfeitaspormeiodoDataView,quepermitealigaçãodafontededadoscomainterfacedousuário.Portanto,utilizamosumDataViewparavisualizarasinformaçõescontidasemDataTable.UmavantagemépossuirváriosDataViewsparaames-maDataTable.Atabela18ilustraalgumasdaspropriedadesdoDataView.

SQLServer:Classe SqlConnection

OLEDB:Classe OleDbConnection

AsprincipaispropriedadesdaClasseConnectionpodemserobservadosnata-bela19.

RowFilter

Item

Sort

Addnew

Table

Delete

Find

Retorna a expressão usada para fi ltrar os dados

Captura uma linha de dados específi ca da tabela

Ordena os dados por meiode uma coluna

Adiciona uma nova linha

Defi ne qual DataView será visualizada

Exclui linhas de um DataView

Busca uma linha de informações

mÉtoDoS DeSCrIÇÃo

ConnectionString

DataBase

DataSource

State

Contém a string de conexão

Retorna o nome do banco de dados

Retorna o nome da instância do banco de dados

Retorna o estado atual de conexão: Broken, Closed, Connecting, Executing, Fetching e Open

mÉtoDoS DeSCrIÇÃo

tabela 18DataView.

Figura 330Objeto connection específi co.

9.4.2. Exemplo genérico de conexão

Ocódigomostradonafigura332,escritoemC#,representaospassosnecessá-riosparaaconexãodeumabasededadosSQLServer.Apartirdesseponto,asoperaçõescomobancodedadosjápodemserrealizadas.

¸ Incluindo os namespaceusing System.Datausing System.Data.SqlClient

¸ Montando a string de conexão // defi nindo isoladamente cada componente da conexãostring servidor = “localhost”string username = “usuario”string senha = “db2009conect”string banco = “papelaria”// contruindo a ConnectionStringstring ConnectionString = “Data Source=” + servidor + “;”ConnectionString += “User ID=” + username + “;”ConnectionString += “Password=” + senha + “;”ConnectionString += “Initial Catalog=” + banco;

tabela 19Connection String.

Figura 332Código representando passos para conexão.

9.4. métodos de conexãoOprimeiropassopararealizaraconexãoécriaroobjetoConnectionpormeiodeumastringdeconexão.IssopermitiráqueoobjetoCommandrecebaeexe-cuteinstruçõesSQLnoformatodeparâmetros.QuandooobjetoCommandrealizaroretornodosdados,deve-secriarumobjetoDataAdapter,quepreen-cheráumobjetoDataSetouDataTable.

9.4.1. objeto Command

AfunçãodoCommandéfazeraligaçãocomumbancodedadosespecífico.Por isso, esseobjetodeve conter informaçõesnecessáriasparaque a conexãosejaestabelecida,indicandoocaminhodobanco,usuário,senhaetc.Comofoimencionadoanteriormente,cadaprovedorpossuiumobjetoconnectionespe-cífico(figura330).

InFoRmátICa 4

266

CaPítulo 9

267

Page 136: 106026095 Informatica Programacao de Computadores Etec

¸ Criando uma instância do objeto ConnectionSqlConnection SQLConnection = new SqlConnection();

¸ Realizando a conexão SQLConnection.ConnectionString = ConnectionString;SQLConnection.Open();

Outra formade fazer essa conexão está representadanocódigomostradonafigura333.

SqlConnection conexao = new SqlConnection(“Data Source=(localhost);Initial Catalog=papelaria; User ID=usuario;Password=db2009conect”);

9.4.2.1. Implementando a leitura de dados

Aindaseguindooexemploanterior,vamoselaborarumaestruturamaiscom-pletadeconexãoeimplementaroscódigosparaleituradosdados(figura334).

using System;using System.Data;using System.Data.SqlClient;

class ExemploConexao{

static void Main() { // criando a linha de conexão SqlConnection conexao = new SqlConnection(“Data Source=(localhost);Initial Catalog=papelaria; User ID=usuario;Password=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()) {

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

Paraobtermaiscolunas,podemosutilizarocomandodaformacomoésugeridanafigura335.

Console.WriteLine(drExemplo[0]); Console.WriteLine(drExemplo[1]); Console.WriteLine(drExemplo[2]);

Ouindicaronomedacolunadaqualsepretendeobterainformação(fi-gura336).

Console.WriteLine(drExemplo[“codigo”]); Console.WriteLine(drExemplo[“nome”]); Console.WriteLine(drExemplo[“usurname”]);

Aousarosmétodosligadosàbasededados,éimportanteverificarseaconexãofoiefetivamenteaberta,senãoocorreunenhumerroefechá-lanofinal.Opro-cedimentoevitaproblemasdedesempenho.Portanto,érecomendávelrealizarostratamentosdeerro(Try).

9.4.3. Conexão com VB.nEt

Seguindoomesmoprincípiodoitemanterior,vamosfazerumaconexãocomuma base de dados Access, porém, usando o VB.NET como plataforma deconexão.

9.4.3.1. Base de dados

PormeiodoAccess2007,criamosabasededadosmostradanafigura337eincluímosalgunsdadosfictícios,paraostestes iniciais.Onomedobancodedados é “Usuarios” e o da tabela, “operadores”. A chave primária é o cam-po“cod_ID” denumeraçãoautomática.Oobjetivodessebancoécadastraronomedelogindosusuários.

Figura 333Outra forma de

realizar conexão.

Figura 334Estrutura mais

completa de conexão.

Figura 335Como obter mais colunas.

Figura 336Indicando o nome da coluna.

InFoRmátICa 4

268

CaPítulo 9

269

Page 137: 106026095 Informatica Programacao de Computadores Etec

9.4.3.2. Criando o Form

EmumaSolutiondotipoWindowsFormApplication,foicriadoparaoVisualBasicolayoutquepodeservistonafigura338.

Olayoutémuitosimples. IncluímosumButtoncomonomedebtnListareumaListBoxchamadadelstUsers.Veja,nafigura339,comoficaadescriçãodoscomponentes.

Public Class frmBancoDadosPrivate 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 = “Usuário:” 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 = “Usuário:” End While leitor.Close() conexao.Close() Catch erro As Exception MsgBox(“Não foi possível realizar a operação”, “Erro”) End Try End SubEnd Class

AestruturadeconexãoqueusaoVisualBasic,combancodeDadosAccess,ésemelhanteaocódigodesenvolvidonoitemanterior,queadotaC#eSQLServer.

9.4.3.4. utilizando uma Datatable

Paravisualizarosdados,vamosmelhorarumpoucomaisanossaestrutura.EliminamosoListBoxdoexemploanteriorecolocamosumDataGridemseulugar,comomostraafigura341.

Figura 337Descrição da tabela e

conteúdo.

Figura 338Layout do Form.

Figura 339Nome dos

componentes.

Figura 340Registros diferentes para cada linha.

Figura 341DataGrid.

9.4.3.3. Inserindo o código

OcódigoinseridonobotãoListardeveráfazeraleituradetodososdadoscon-tidosnatabelaeinseri-losnumaListBox.Assim,haveráumregistrodiferenteemcadalinhadoListBox(figura340).

InFoRmátICa 4

270

CaPítulo 9

271

Page 138: 106026095 Informatica Programacao de Computadores Etec

Noexemploaseguir,vamosindicarpassoapassoaconstruçãodoDataTableparavisualizaçãoemumDataGrid.

•DefinindoumDataTable(dtMinhaTabela),comonomedeMinhaTabela.

DimdtMinhaTabelaAsDataTable=NewDataTable(“MinhaTabela”)

•DefinidosdoisobjetosparacontrolarcolunaelinhadoDataTable.

Dim dtColunaAsDataColumn

DimdtLinhaAsDataRow

•Apósadefiniçãodoobjetoparacoluna,devemosconstruiracoluna,ouseja,indicarasuanomenclaturaeotipodedadoqueelaconterá.

dtColuna=NewDataColumn()

dtColuna.DataType=System.Type.GetType(“System.String”)

dtColuna.ColumnName=“Login”

dtMinhaTabela.Columns.Add(dtColuna)

dtColuna=NewDataColumn()

dtColuna.DataType=System.Type.GetType(“System.String”)

dtColuna.ColumnName=“Nome”

dtMinhaTabela.Columns.Add(dtColuna)

•SeutilizarmosométodoRead(),serãocarregadasasinformações,assimcomoocorreunoexemploanterior.

Whileleitor.Read()

dtLinha=dtMinhaTabela.NewRow

dtLinha(“Login”)=leitor.Item(0)

dtLinha(“Nome”)=leitor.Item(1)

dtMinhaTabela.Rows.Add(dtLinha)

End While

•ComoDataTablecarregado,vamosvinculá-loaumDataSet.

DimdtMinhaDataSetAsDataSet=NewDataSet()

dtMinhaDataSet.Tables.Add(dtMinhaTabela)

•Finalmente,carregamosoDataSetparadentrodoDataGrid.

dtMinhaTabela.SetDataBinding(dtMinhaDataSet,“MinhaTabela”)

OscomandosanterioresrepresentamsomenteacriaçãodoDataTable.Ocódigocompletoficarácomoseapresentanafigura342.

Imports System.DataImports System.Data.SqlClientImports System.Data.OleDb

Public Class frmBancoDados

Private Sub btnListar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnListar.Click Dim conexao As New OleDbConnection() conexao.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Usuarios.mdb”

Dim comando As OleDbCommand = conexao.CreateCommand comando.CommandText = “Select * from operadores” conexao.Open()

Dim dtMinhaTabela As DataTable = New DataTable(“MinhaTabela”) Dim dtColuna As DataColumn Dim dtLinha As DataRow

‘ montando as colunas dtColuna = New DataColumn() dtColuna.DataType = System.Type.GetType(“System.String”) dtColuna.ColumnName = “Login” dtMinhaTabela.Columns.Add(dtColuna)

dtColuna = New DataColumn() dtColuna.DataType = System.Type.GetType(“System.String”) dtColuna.ColumnName = “Nome” dtMinhaTabela.Columns.Add(dtColuna)

‘ inserindo os dados Dim leitor As OleDbDataReader = comando.ExecuteReader() While leitor.Read() dtLinha = dtMinhaTabela.NewRow dtLinha(“Login”) = leitor.Item(1) dtLinha(“Nome”) = leitor.Item(2) dtMinhaTabela.Rows.Add(dtLinha) End While

Figura 342O código completo.

InFoRmátICa 4

272

CaPítulo 9

273

Page 139: 106026095 Informatica Programacao de Computadores Etec

‘inclui a tabela no dataset Dim dtMinhaDataSet As DataSet = New DataSet() dtMinhaDataSet.Tables.Add(dtMinhaTabela)

‘vincula o dataset1 ao datagrid1 dtgMinhaTabela.SetDataBinding(dtMinhaDataSet, “MinhaTabela”) End Sub

End Class

9.4.3.4.1. Visual do DataGrid

ParamelhorarovisualdoDataGrid,cliquenasetaexistentenocantosuperiordoDataGrid(figura343)eescolhaaopçãoAutoFormat.

dtColuna = New DataColumn() dtColuna.DataType = System.Type.GetType(“System.String”) dtColuna.ColumnName = “Login” dtColuna.ReadOnly = True dtMinhaTabela.Columns.Add(dtColuna)

Issoimpedequeousuáriofaçanovasinclusões.Comoascolunassãomontadasindi-vidualmente,podemosdeterminarqualvaiseroprocedimentoadotadoemcadauma,assimcomofoifeitocomacolunalogin,deixandoaalteraçãodedadosativaounão.Podemos,ainda,utilizarométodoUniqueparainformarseovalordacolunaéúnicoounão(figura346).Issosignificaqueométodonãopermitequeovalorregistradoemumacolunasejainseridonovamentenamesmacolunaemoutroregistro.

dtColuna = New DataColumn() dtColuna.DataType = System.Type.GetType(“System.String”) dtColuna.ColumnName = “Nome” dtColuna.ReadOnly = False dtColuna.Unique = True dtMinhaTabela.Columns.Add(dtColuna)

9.4.4. utilizando um DataView

ODataViewpermiteestabelecerumaligaçãocomainterfacedeusuáriopormeiodoDataBinding,noqualpodemosrealizaroperaçõescomopesquisa,navegação,filtro,etc.ODataViewretornaosdadoscontidosemumDataTable.ÉpossívelquehajaváriosDataView,que,aliás,nãopodemserconsideradostabelas.Oexemplodafigura347mostradoisDatagridedoisbotões.NoprimeiroDataGrid,écarregadooconteúdodatabela;nosegundo,seráumDataView,ordenadopornome.

Aconexãocomobancodedadosseráfeitademaneiradiferente,paraquesejapossívelavaliaroutra formadeconexãocomoDataSet.Nessecaso, todasasvariáveisrelacionadasàconexãocomobancodedadosserãodefinidasdentrodaclasse,paraquetenhamvisibilidadeglobal(figura348).

Figura 343Menu DataGrid.

Figura 344Formatando Layout

– DataGrid.

NaopçãoFormats, teremos vários tiposde layout.Escolheremosumdeles econfirmaremoscomobotãoOK(figura344).

Figura 345Inclusão do método ReadOnly como True.

9.4.3.5. travando colunas

AscolunasdoDataGridestãodisponíveisparaqueousuáriopossarealizarmodificaçõesdiretamentenajaneladedados.Senãoquiserqueissosejapos-sível,incluaométodoReadOnlycomoTrue,comomostraocódigoilustradonafigura345.

Figura 346Utilização do método Unique.

Figura 347Construção de um DataView.

InFoRmátICa 4

274

CaPítulo 9

275

Page 140: 106026095 Informatica Programacao de Computadores Etec

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:conexão:variávelquepossuiasinformaçõesdeprovedor,ca-minho enomedobanco;comando: armazena a string referente à instruçãoSQLaserexecutadainicialmente;adptabela:criaumobjetoAdapterusandoasvariáveiscomandoeconexão;dstabela1edstabela2:representaosobjetosDataSet(),umparacadaDataGriddoformulário.

Obotão referente à opção “Carregar” deverá conter o códigomostradonafigura349.

dtgLista.CaptionText = “Listagem de Operadores” adpTabela.Fill(dsTabela1, “operadores”) dtgLista.DataSource = dsTabela1 dtgLista.DataMember = “operadores”

Éimportanteobservarosconceitosabaixo:

• dtgLista.CaptionText:atribuionomenoDataGrid(dtgLista).

• adpTabela.Fill:preencheoobjetoAdpter(adpTabela.Fill).

• dtgLista.DataSource:atribuioDataSet(dstabela1)noDataGrid(dtgLista).

• dtgLista.DataMember:associaatabelaaoDataGrid(dtgLista).

Nosegundobotão,referenteàordenaçãodosdadosviacampo“nome”,obser-vamosoqueilustraafigura350.

dtgOrdenado.CaptionText = “Listagem de Operadores” adpTabela.Fill(dsTabela2, “operadores”) Dim dvTabela As New DataView(dsTabela2.Tables(“operadores”)) dvTabela.Sort = “nome” dtgOrdenado.DataSource = dvTabela

AdiferençadoDataViewemrelaçãoaoDataSet(dsTabela2)estánaordenação(.Sort)pormeiodocampo“nome”.Ocódigocompletoficarácomoilustraafigura351.Comoresultado,surgiráolayoutmostradonafigura352.

Imports System.Data.OleDbPublic 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 SubEnd Class

Figura 348Variáveis definidas

dentro da classe.

Figura 349Código do botão da

opção Carregar.

Figura 350Botão da ordenação

dos dados.

Figura 351O código completo.

Figura 352Utilização do DataView.

9.4.5. Conectando com aSP.nEt

PodemosrealizarainclusãodeDataGridoudoGridView,utilizandoWizard(passo-a-passo)fornecedidopelocomponente.Nosexemplosanteriores,realiza-mosaconexãopormeiodoVisualBasicedoC#.Agora,faremosaconexãocom

InFoRmátICa 4

276

CaPítulo 9

277

Page 141: 106026095 Informatica Programacao de Computadores Etec

obancoviaASP.NET.OprimeiropassoécriarumprojetotipoVisualBasiceumtemplateWebAplication.NomodoDesign,seráadicionadoocomponenteSqlDataSource(figura353).

Nesseponto,serápossívelrealizarumtestedeconexãocomobancodedados,usandoobotãoTestConnection.SeestivertudoOK,apareceráumamensa-gemdeconfirmação(figura356).

Apósotestedeconexão,finalizeatelaclicandoemOK.Retorneàjanelaan-terior.PodemosdisponibilizaraConnectionString,comomostraafigura357.

Noguiadocomponente,escolhaaopção“configure”,conformeafigura354.

Figura 353Componente

SqlDataSource.

Figura 354Configuração do

SqlDataSource.

Figura 355Localização do banco

de dados.

OpróximopassoserácriaranovaconexãousandoobotãoNewConnection.Apareceráuma segunda janela,naqualpoderemos indicaronomeeo localondeseencontraabasededados(figura355).

Figura 356Testando a conexão.

Figura 357Visualizando a String de conexão.

Nacontinuaçãodoprocesso,seráconfirmadaaconexão(figura358).

Figura 358Confirmando a ConnectionString.

InFoRmátICa 4

278

CaPítulo 9

279

Page 142: 106026095 Informatica Programacao de Computadores Etec

UmanovajanelaseráabertaparaacriaçãodainstruçãoSQLinicial.Obser-vandoajaneladeconfiguraçãopodemosverificaronomedatabela,quaisoscamposaseremvisualizadoseaconfiguraçãodascláusulasWhereeOrderBy.Naparteinferiordajanela,nota-seamontagemdalinhaSQL(figura359).

Finalizadooprocesso, épossível realizaro testedaQuerycomobancodedados,conformeafigura360.

Agora,podemosver(figura361)ocódigoquefoiimplementadoautomaticamente.

<asp:SqlDataSource ID=”SqlDataSource1” runat=”server”

ConnectionString=”<%$ ConnectionStrings:ConnectionString %>”

ProviderName=”<%$ ConnectionStrings:ConnectionString.Provider-Name %>”

SelectCommand=”SELECT * FROM [operadores]”></asp:SqlDataSource>

OpróximopassoseráainclusãodeumGridView,comomostraafigura362.

Figura 359Configurando o SqL.

Figura 360Teste do SqL

(query).

Figura 362GridGrid View.

Figura 361O código implementado automaticamente.

ApartirdaopçãoChooseDataSource,podemosapontaroSqlDataSource(figura363).

Figura 363Selecionando o DataSource.

Finalizadaessaoperação,ocódigoseguinteseráoquemostraafigura364.

<asp:GridView ID=”GridView1” runat=”server” AutoGenerateColumns=”False”

DataKeyNames=”cod_ID” DataSourceID=”SqlDataSource1”>

<Columns>

<asp:BoundField DataField=”cod_ID” HeaderText=”cod_ID” InsertVisible=”False”

Figura 364Concluída a operação de selecionar o DataSource.

InFoRmátICa 4

280

CaPítulo 9

281

Page 143: 106026095 Informatica Programacao de Computadores Etec

ReadOnly=”True” SortExpression=”cod_ID” />

<asp:BoundField DataField=”login” HeaderText=”login” SortExpression=”login” />

<asp:BoundField DataField=”nome” HeaderText=”nome” SortExpression=”nome” />

</Columns>

</asp:GridView>

Olayoutaindanãofoiformatado,masjáépossívelverificaroresultadopelonavega-dor(figura365).Noscamposdestinadosaosnomesaparecemostítulosdacoluna.E todososdados sãodisponibilizados conforme composiçãoda instruçãoSQL.

Figura 365Visualização da Tabela.

Considerações finaisOobjetivodosautoresdestelivroépermitirquealunoseprofissionaisdaáreadeinformáticapossamingressarnoramodaprogramaçãoedesenvolvimentodesof-tware.Porisso,foramabordadosaspectosdelógicadeprogramaçãoeprograma-çãoorientadaaobjetoseapresentadasasestruturasbásicasdeprogramaçãocomoHTML,Java,C#,VB.NETeASP.NET,quepodemseraplicadasnasplataformasdesktopeWeb.Olivroéapontadeum“iceberg”noquedizrespeitoacomandoserecursosdeprogramação.Competeaoalunoabuscaincessantepeloaprimora-mentodastécnicasdeprogramação.Portanto,seguemabaixoalgumasdicas.

•Trabalharalógicadeprogramaçãoéessencial.Porisso,apráticadeverásercontínua.

•Pesquisarsempreemlivrosespecializados,revistastécnicasouatémesmona internetnovas tecnologias e recursosquea linguagempodeoferecereprocuraraplicá-las.

•Manter-seatualizado,poisas linguagensdeprogramaçãoestãosempre serenovandoenovasversõessãolançadasatodoomomento.

Aosleitores,alunosouprofissionaisdaárea,boasorteesucessonaáreaescolhida.

Referências bibliográficasFORBELLONE,André.Lógica de Programação -AConstruçãodeAlgoritmoseEstruturasdeDados.3ªedição.SãoPaulo:Ed.MakronBooks,2005.

LEISERSON,CharlesE.,STEIN,Clifford,RIVEST,RonaldL.eCORMEN,ThomasH.Algoritmos: Teoria e Prática.RiodeJaneiro:Ed.Campus,2002.

RAY,EricT.Aprendendo XML.RiodeJaneiro:Ed.Campus,2001.

FURGERI,Sérgio.Ensino Didático da Linguagem XML.SãoPaulo:Érica,2001.

HOLZNER,Steven.Desvendando XML.RiodeJaneiro:Campus,2001.

MARCONDES,ChristianAlfim.Programando em HTML 4.0. 7ª. edição.SãoPaulo:Érica,2002

InFoRmátICa 4

282 283

Page 144: 106026095 Informatica Programacao de Computadores Etec

GlossárioGlossário

Page 145: 106026095 Informatica Programacao de Computadores Etec

Bbackbones (espinhas dorsais) – linhasdetransmissãotronco,conectadasaro-teadoresdealtacapacidade.

backup –cópiadesegurançadearquivoseconfiguraçõesdeumcomputador.

badblock (bloco ruim) –falhascausadasporperdadopodermagnéticodealgu-maáreanapartemagnéticadodisco.

barramento (Bus) – circuitointegradoquefazatransmissãofísicadedadosdeumdispositivoaoutro.Eleéformadoporváriaslinhasoucanais,comosefos-semfioselétricos,quetransmitemsinaiselétricostratadoscomobits.

BIOS (Basic Input Output System ou sistema básico de entrada/saída) – sof-twarecomafunçãodereconhecer,configurareiniciarosdispositivosdocom-putador, e aindade iniciaro sistemaoperacional.Ao ligaro computador,osprimeirossinaisquevocêvênatelasãodainterfacedoBIOS.

bit – menorporçãodeinformaçãopossíveleminformática.Umúnicobitrepre-sentasomenteduasinformações,0ou1.

bluetooth –tecnologiaquepermitecomunicaçãosimpleseseguraentreapare-lhoseletroeletrônicos.

blu-ray –formatocriadoem2008paraasempresasquequeriamgravarseusfil-mesemmídiasmaissegurascontrapiratariaequepudessemarmazenarimagensdealtaresolução.Aleituranessecasoépormeiodeumfeixederaiolaserdecorazul-violetacomcomprimentodeondade405nanômetros,diferentedatecno-logiadoCD/DVD,cujoraioévermelho,comcomprimentodeondade605nm.

BMP –terminaçãousadaparaoformatoBitmap,quesignificamapadebits.Nessetipoderepresentação,cadapontodaimageméassociadoaumvalor(nocaso,obit).

boot –o termo (bota) é empregadoem informática emanalogia aochute,opontapéinicialdosistemaoperacional.

browsers (navegadores) – programaquepossibilita aousuário ter acesso aosrecursosdarede.

BTX (Balanced Tecnology Extended ou tecnologia balanceada estendida) –padrãodegabinetecomoobjetivodepadronizarplacas-mãedemenortamanhoetambémaumentararefrigeração,facilitandoapassagemdoar.AtendênciaéqueesteformatosubstituaoATX.

buffer – áreausadaparaarmazenardados,utilizadasemprequeocomputadorprecisalerdadosdeumafontequenãotenhavelocidadedetransmissãoconstante.

bug – problemadelógicasurgidoduranteaexecuçãodeumaplicativoousiste-macomputacional.

byte –tambémchamadodeocteto, obyte éformadopor8bits.

AACL (Acess Control List ou lista de controle de acesso) – configuraçãocriadaparadefinirregrasparaqueosusuáriosdaredelocalacessemainternet.

ADO.NET – integradoàplataforma.NET,oADO.NETéumatecnologiadeacessoabancodedados.

AJAX – acrônimo para a expressão em inglês Asynchronous Javascript AndXML,quepodesertraduzidoporJavascripteXMLAssíncrono, éonomedadoàutilizaçãometodológicadeJavascripteXMLparafazercomqueaspáginaswebsetornemmaisinterativas.

anti-spywares –softwaresusadosparaeliminarprogramasmaliciosos.

antivírus – softwareusadoparaeliminarvirusdecomputador.

API (Application Programming Interface ou interface de programação de aplica-tivos)– conjuntoderotinasepadrõesestabelecidosporumsoftwareparaousodesuasfuncionalidadesporprogramasaplicativosquenãoseenvolvememdetalhesdaimplementaçãodoprograma,apenasprecisamdeseusserviços,ouseja,osprogra-madorespodemutilizaressesrecursossemprecisarsabercomoforamdesenvolvidos.

APM (Advanced Power Management ou gerenciamento avançado de energia) –controlequefazcomqueoBIOSpeçaàfonteparadesligarocomputador,apósosistemaoperacionaltersidodescarregado.

arquitetura de rede –conjuntodecamadaseprotocolosdeumarede.

ASCII –siglaparaAmericanStandardCodeforInformationInterchangeoucó-digopadrãoamericanoparatrocadeinformações,éumatabeladecodificaçãodecaracteresbaseadanoalfabetoinglês.

ASP (de Active Server Pages ou páginas de servidor ativo) –plataformadaMi-crosoftusadaparaodesenvolvimentodeaplicaçõesweb.

ASP.NET – plataformadedesenvolvimentousadapara a construçãode aplicaçõesWebeWebService,asquaisserãoexecutadasporumservidor,que,nessecaso,éoIIS(InternetInformationServiceouServiçodeInformaçãodeInternet)daMicrosoft.

AT (Advanced Tecnology) –padrãodegabineteutilizadonosprimeirosPCsdaIBM.

ATA –tecnologiaquepermitequeosdadosarmazenadosemdiscosrígidos,parase-remutilizadospeloprocessador,sejamtotalouparcialmentecarregadosparaame-móriaetransmitidosdamemóriaparaodisco,depoisdeseremalterados,oucriados.

ATAPI – tecnologiaquepermitequeosdadosarmazenadosemdiscosrígidos,paraseremutilizadospeloprocessador,sejamtotalouparcialmentecarregadosparaame-móriaetransmitidosdamemóriaparaodisco,depoisdeseremalterados,oucriados.

ATX (Advanced Tecnology Extended ou tecnologia avançada estendida) –padrãodegabinetedesenvolvidopelaIntelem1995,emsubstituiçãoaoAT.

InFoRmátICa

286

GloSSáRIo

287

Page 146: 106026095 Informatica Programacao de Computadores Etec

D

cooler (dissipador de calor) –dispositivo,tambémchamadodefanouventoi-nha,queajudaamantera temperaturabemabaixodamáximaadmissívele,assim,conservaroprocessador.

CPD – CentrodeProcessamentodeDados,nomeobsoletoatualmente.

CPU – (CentralProcessingUnitouunidadecentraldeprocessamento)–refere-seaomicroprocessador,enãoaogabinetecomoumtodo,esuafunçãoéproces-sarasinstruçõesenviadas.

CRT (Catodic Ray Tube ou tubo de raios catódicos) –tecnologiausadaparamo-nitorescomtubo.

CSS – siglapara CascadingStyleSheetsouestilodepáginasemcascata.

Data Base Administrator (DBA ou administrador de banco de dados) –profis-sionalqueconheceprofundamenteasferramentasdeadministraçãodebancodedadosparautilizá-lasdemaneiraeficiente.

deb – pacotesdesoftwaredoDebian,distribuiçãoLinuxdaqualderivouoUbuntu.

debugger (depurador) – tem a função de permitir ao usuário acompanhar aexecuçãodoprograma,visualizandoosresultadosemtemporeal,embuscadepossíveiserrosdelógica.

desktop – áreadetrabalho.

DIMM (Dual In-line Memory Module ou módulo de memórias em linha dupla) – módulodememóriaformadopeloschipsdememóriaencapsuladaesoldadosumaoladodooutrosobreosdoisladosdeumaplacadecircuitoimpresso.

disco flexível –floppy-diskoudisquete.

disco rígido –oHDéojeitopopulardenosreferirmosaoHDD(HardDiscDriveouunidadedediscorígido),tambémconhecidocomowinchester,nomedeumatecnologiadefabricaçãoantigadediscosrígidos.

disquete (floppy-disk) – onomediscoflexívelrefere-seaofatodeodispositivoserdeplástico,quepodesermagnetizado.

distribuição – paraosistemaLinuxnuncasefalaemversão,esimemdistribui-ção.AsversõesseaplicamasistemasoperacionaiscomooWindows.

DMA – tecnologiaimplementadanasplacas-mãequefazcomqueatransmissãodedadosentreodiscorígidoeoutrasinterfaces,comomemória,placaderede,outrosdiscos,etc.sejadireta,semsobrecarregaroprocessador.

DML (Data Manipulation Language ou linguagem de manipulação de dados) – decorredofatodeosníveisdeabstraçãonãoseaplicaremsomenteàdefiniçãoouàestruturaçãodedados,mastambémàsuamanipulação.

CC# – consideradacomoamais importante linguagemdedesenvolvimentodaMicrosoftdentrodaPlataforma.NETFramework.

C –letraquerepresentaaunidadedediscoutilizadapelosistemaoperacional.Representatambéma linguagemdeprogramaçãocriadaporDennisRitchie,comobaseaodesenvolvimentodosistemaoperacionalUNIX(escritoemAs-semblyoriginalmente).

C++ – linguagem de programação de alto nível desenvolvida por BjarneStroustrup.Desdeosanos1990,éumadaslinguagenscomerciaismaispo-pulares,masdisseminadatambémnaacademiaporseugrandedesempenhoebasedeutilizadores.

cache – consideradamemória primária, ouprincipal, devido a velocidadedeacessoaosdadosdoprocessador.

CD – AsiglasignifcaCompactDisc,oudiscocompacto,efoiintroduzidanomercadoem1985pelaSonyepelaPhilips.

CD-R –CDquepodesergravado,comoindicaosufixoR(deRecordableougravável),porémaceitasomenteumagravação.

CD-ROM –OCD levaa siglaROMpara indicarqueé somentepara leitura(Read-OnlyMemoryoumemóriaapenasdeleitura).

CD-RW –esseformato(RWremeteaRewritableouregravável)permitegravar,apagaregravarnovamenteváriasvezesnomesmoCD.

chaves – emummodelo relacional, designamoconceitode itemdebusca,ouseja,umdadoqueseráempregadonasconsultasàbasededados.Tiposde chaves emummodelo relacional –primárias, candidatas, secundárias eestrangeiras.

chips –circuitosintegrados.

CI (Circuito Integrado) –componentecapazderealizarsomenteumdetermina-dotipodeoperação,comdeterminadaquantidadededados.

clusters –blocosemqueossetoresdodiscosãodivididos.

CMOS – chipresponsávelporarmazenarconfiguraçõessobreosHDsinstaladoseseustamanhos,dataehora,eváriasoutrasinformações.

código fonte – texto escrito segundoas regrasdedeterminada linguagemdeprogramação.

compilador –softwarequetemafunçãodetraduzirocódigofontedesenvolvidopeloprogramadoremumsoftwarequepossaserexecutadodiretamentepelousuário,ouseja,vocêescrevetodocódigofonteedepoispedeparaocompiladorconvertê-loemumprograma.

InFoRmátICa

288

GloSSáRIo

289

Page 147: 106026095 Informatica Programacao de Computadores Etec

F

fotográficas,pen-drive,celularese/ououtrosdispositivos.

EPROM – siglaparaErasableProgrammableReadOnlyMemory(Erasabledeapagável)–memóriaquepodeserregravada.

estabilizador – equipamento de proteção para as variações na voltagem queocorremnormalmentenofornecimentodeenergiaelétricaepodemcausarfa-lhasnosequipamentosoudiminuirsuavidaútil.

Ext – tipodesistemadearquivosnosistemaoperacionalLinux,assimcomooReiserFS,oXFS,oJFS,oGSFeoOCFS2.OExtéopadrãodamaioriadasdistribuições,geralmentenaversãoExt2eExt3.

Ext2 (second extended file system ou segundo sistema extendido de arquivos) –sis-temadearquivosqueeraomaiscomumnasdistribuiçõesequedeuorigemaoExt3.

Ext3 (third extended file system ou terceiro sistema extendido de arquivos) – sistemadearquivosnoLinuxadotadopelamaioriadasdistribuições.

FASTATA – tecnologiaquepermitequeosdadosarmazenadosemdiscosrí-gidos, para serem utilizados pelo processador, sejam total ou parcialmentecarregadosparaamemóriaetransmitidosdamemóriaparaodisco,depoisdeseremalterados,oucriados.

FAT (File Allocation Table ou tabela de alocação de arquivos) –primeirosistemadearquivosutilizadopeloWindows.

filtro de linha –equipamentousadoparabloquearofluxodeenergiacasoaten-sãoaumentemaisqueonormal.

fio terra – pontooucaminhonosoloqueservededescargaparaacorrenteelé-tricaque“escapa”doaparelhoelétrico.

Firewall (significa parede corta-fogo, em tradução literal) –softwaredesegu-rança responsável por gerenciar as conexões de rede com destino à máquinalocal,ebloqueiaoacessodepessoasouaplicaçõesnãoautorizadas.

Firewire –barramentocomtecnologiadesenvolvidapelaAppleComputeremmeadosdosanos1990,eaprincipalconcorrentedaUSBnapadronizaçãodedispositivos.

flash (memória) –aprincipalmídiaparaarmazenamentodedadosemmicro-dispositivos,comocelulares,câmeras,PDAsenotebooks,emformatodecar-tõesdememóriaepen-drivesouunidadesinternasnolugardoHD.

floppy-disk (disquete) – onomediscoflexívelrefere-seaofatodeodispositivoserdeplástico,quepodesermagnetizado.

fonte de alimentação –dispositivoquetransformaaenergiaelétricaquevemdaredeatravésdocabodeforça,preparando-aparaquechegueaoscomponen-tesdocomputadordaformaadequada.

E

DNS – siglaparaDomainNameSystemousistemadenomesdedomínio.

DOCTYPE – identificaotipodedocumento.

download – transferirdadosouarquivosdeumcomputadorremotoparaodeumusuário;baixaroarquivo.

DRAM (Dynamic RAM ou memória RAM dinâmica) –tipodememóriaempre-gadacomoRAMnoscomputadoresem2009.

drive – dispositivoparainserirdiscoflexível(disquete),CD-ROMe/ouDVDeleitorasdecartõesFlash.

driver –tradutorousoftwarecontroladorquesabeoscomandosqueosistemaoperacionalpodeenviar,interpreta-oseconverteasolicitaçãodemodoqueochipdoaparelhopossareconhecê-la.

DSP – siglaeminglêsparaDigitalSignalProcessorouprocessadordesinaisdigitais.

DTD – siglaparaDocumentTypeDefinitionoudefiniçãodotipodedocumento.

dual channel (canal duplo) –permitequeumaplaca-mãetenhaduascontrola-dorasdememória,cadaumacontrolandoumjogodememóriaemseparado.

DVD –siglaparaDigitalVídeoDiscoudiscodigitaldevídeo,paraarmazenarvídeosdeboaqualidadeecapacidadesquevariamde4.7GBemumacamadaaté8.5GBemduascamadas.

DVD+R – discoidênticoaoDVD-R,porémtemformatodiferentedegravaçãoeleitura.Portanto,nãosãolidosegravadosporleitoras/gravadorasDVD-R.

DVD-R – discoque permiteumasógravaçãodeaté4,7GB.

DVD-RW – discoque temamesmacapacidadedoDVD-R,maspodesergrava-doeregravadováriasvezes.

EEPROM (Eletrical Erasabel Programmable Read Only Memory ou memória somente de leitura, programável e limpa eletricamente) – memóriaemquesepoderegravar,ouseja,podemosapagarpartedamemóriaegravarnovamente.

EIDE – tecnologiaquepermitequeosdadosarmazenadosemdiscosrígidos,paraseremutilizadospeloprocessador,sejamtotalouparcialmentecarregadosparaame-móriaetransmitidosdamemóriaparaodisco,depoisdeseremalterados,oucriados.

e-mail – correioeletrônico.

energia eletroestática –correnteelétricaqueescapadoaparelhoelétricoquandosurgealgumdefeito,outambémparaliberaraenergiaestáticacaptadadoambiente.

entradas USB –entradasparaconexõesdedispositivoscomowebcam,câmeras

InFoRmátICa

290

GloSSáRIo

291

Page 148: 106026095 Informatica Programacao de Computadores Etec

M

G

H

J

KL

I

Java – linguagemdeprogramaçãodesenvolvidanosanos1990porumaequipedeprogramadoreschefiadapor JamesGosling,naSunMicrosystems,conglo-merado norte-americanodaáreadeinformática.

journaling (registro de dados como em um jornal) –recursodosistemadear-quivos Linux, no qual as informações são salvas automaticamente durante aexecuçãodosistemaoperacional.

JPG ou JPEG (Joint Photographic Experts Group ou Grupo Reunido de Especia-listas em Imagem) –tipodeimagem.

JVM (Java Virtual Machine ou, literalmente, máquina virtual Java) – programaquecarregaeexecutaosprogramasdesenvolvidosemJava.

kernel – núcleoougerenciador,apartemaisimportantedosistemaoperacional.

LAN (Local Area Network ou rede local) –redecommáquinasqueselimi-tamaconectarentresinummesmoambiente,deumaempresa,instituiçãoouresidência.

laptop – computadorportátil.

LBA (Logical Block Addressing ou Endereçamento Lógico de Blocos) –éomé-tododetraduçãoquepermiteaBIOSreconhecerHDsIDE.

LCD (Liquid Crystal Displays ou tela de cristal líquido) – tecnologiaqueutilizaasubstânciachamadacristallíquidoparabloquearoudarpassagemàluz.

LEDs (diodos emissores de luz) –pequenaslâmpadasquepodemsercontrola-dasumaaumaevariarsualuminosidadeatéseapagaremporcompletonumaimagemtotalmenteescura.

link – textoque geralmente aparece emazul, sublinhado, eque contémumaURLdapáginaaqualeleserefere,queficaescondida,nãoévisível.

Linux – sistemaoperacionalderivadodoUNIX.Trata-sedeumsoftwarelivreouOpenSource(códigoabertoemportuguês),desenvolvidosemcunhocomer-cial,ouseja,criadoporprogramadoresquenãotêmintençãodevendê-lo,masdisponibilizá-loparaqualquerpessoaquequeirautilizá-lo.

logic board (placa lógica) – placa-mãenoscomputadoresdaApple.

login –nomedousuárioqueoidentificaparaacessarosistema.

Mac OS – sigladeMacintoshOperatingSystem,oprimeirosistemaoperacionaldomundoapermitirousodejanelasgráficasedemouse,lançadoem1984,comogerenciadordasmáquinasdaApple.

mainboard – placa-mãe.

formatar – excluira tabeladepartiçõesdearquivosdosistemaoperacionalecriarumanova.

FreeBSD – sistemaoperacionalparaservidoresderede.

gabinete – caixanormalmentemetálicaqueorganizaefixaosseusvárioscom-ponentes,comoHD,CD/DVD-ROM,placa-mãe,placasdeexpansãocomco-nectoresexternos(USB,serial,vídeo,sometc.),sustentaaplaca-mãeeprotegeasplacasdocontatodiretocompessoas,umidade,energiaestática,poeira.

game station –assimsãochamadososcomputadoresmontadosparaaficionadosemjogos,eprecisamdeplacadevídeocomprocessadorememóriadedicados.

GIF (Graphics Interchange Format ou Formato de Intercâmbio de Gráficos) –formatodeimagem.

gigabyte (GB) – unidadeutilizadaparaindicaracapacidadedearmazenamentodedadosemumcomputador,emque1GBequivalea1milhãodebytes,segun-dooSistemaInternacionaldeUnidades(SI).

GUI (Graphical User Interface ou interface gráfica com o usuário) –emJava,éumconjuntodeclassesparadisponibilizarcomponentesgráficos(objetos)comocaixasdetexto,botões,listasetc.

hacker – pessoaqueusaseusprofundosconhecimentosemprogramaçãoparaburlarosistemadesegurançadecomputadoresesistemas.

hardware – é a parte física do computador, seus circuitos eletrônicos, cabos,placas,dispositivosperiféricosconectados,etc.

HD – siglaeminglêsparaHardDisk(discorígido).

HTML (HyperText Markup Language ou linguagem de marcação de hipertex-to) –linguagemutilizadaparaodesenvolvimentodepáginasdainternet.

I/O – abreviaçãoeminglêsparainput/output,quesignificaentrada/saída.Refe-rem-seadispositivosutilizadosparaacomunicaçãoentreosistemacomputa-cionaleosusuários.

IDE (Integrated Development Environment ou ambiente integrado de de-senvolvimento) –programadecomputadorquereúnerecursoseferramentasdeapoioparaagilizarodesenvolvimentodesoftwares,comooNetBeans,eEclipse(Java)eoDevC++(C++).

IRQ (Interrupt Request Line ou linha de requisição de interrupção) –canaldecomunicaçãocomoprocessador,cujafunçãoéchamarsuaatençãoparaalgumaocorrênciadequedevaserinformado.

ISA (Industry Standard Arquiteture ou arquitetura padrão da indústria) –padrãoparaconectordeexpansãoutilizadopelaIBMemseusprimeiroscomputadores.

InFoRmátICa

292

GloSSáRIo

293

Page 149: 106026095 Informatica Programacao de Computadores Etec

N

O

P

nibble – largamente utilizado em sistemas digitais, representa meio byte (4bits),aquantidadedebitsqueosistemadecodificaçãoBCD(Binary-codeddecimaloucodificaçãobináriodecimal)usapararepresentarvaloresde0a15.

nó – representaumrecursodecomputação.Qualquerelementocomputacionalquefaçapartedaarquiteturanaqualseráimplementadaasoluçãopodeserrepresentadocomoumnó.Podeserumservidor,umcomputadorcliente,umswitch,umhubetc.

no-break –dispositivoquemantémoabastecimentopormeiodesuabateriaatéqueaenergiavolteouqueocomputadorsejadesligado.

NTFS (New Technology File System ou nova tecnologia em sistema de arqui-vos) – sistemadearquivosutilizadopeloWindows,trazdiversascaracterísticascomosegurança,capacidadedearmazenamentoe limitaçõesaprimoradasemrelaçãoàsversõesanteriores.

núcleo –quantidadedeprocessadoresinternosemumamesmaCPU.

OCFS2 – sistemadearquivosLinux,permiteutilizaçãosimultâneaecomparti-lhadapormaisdeumcomputador.

off-board (fora da placa) –expressãoparadescreverseumdispositivofazpartedaplaca-mãeouseseráincluídoàpartepormeiodeumaplacadeexpansão,específicaparaatarefa.

OLED – sigla para Organic Lighting Emmiting Diode ou diodo orgânicoemissordeluz.

on-board (na placa) –expressãoquesignificaqueoscircuitosestãoimpressosnasprópriasplacas,paraváriostiposdeaplicações.

on-line – estáconectadoàinternetouaumarededecomputadores.

OpenSource – significa códigoaberto,indicandoqueoprogramapodeseruti-lizadolivrementeporqualquerpessoa,independentementedafinalidade,eserefereasistemascomoossoftwareslivres,Linux.

P2P (Peer-to-Peer ou de par em par) –termousadoparaossoftwaresquefazemtransferênciadearquivosdeumcomputadorparaoutro.

pacote –softwarequepodeserinstaladonoLinux.

PAN – siglapara PersonalAreaNetworkouredepessoal.

parâmetro –elementodigitadodepoisdoprimeiroespaço,ouseja,aprimeirapala-vraéumcomandoeasdemais,separadasporespaço,sãoosparâmetros(porqueoespaçoéjustamenteumcaractereseparadorentreumcomandoeumparâmetro).

partição –divisãododiscorígido.

malware – palavra originária da expressão em inglês MALicious softWARE,queliteralmentesignificasoftwaremalicioso.

MAN (Metropolitan Area Network ou rede metropolitana) – RedeMetropolita-na–redesqueabrangemumacidadeinteiraepodemseligaraváriasLANqueestiveremdentrodoseuperímetro.

MBR –tabeladealocação,quandoodiscoéparticionado,queficaarmazenadanoiníciododiscorígido.Essatabelainformaaposiçãodeiníciodapartição,seestáativaequaléoseutipo.

memória – localdearmazenamentodosdados.

microprocessador – circuito integrado,porémprogramável, capazde realizarváriasinstruções,umadecadavez.

Microsoft SQL Server –sistemadegerenciamentodeSGBDRs(sistemasgeren-ciadoresdebancosdedados).

MMS (Microsoft Media Service) – protocolo proprietário da Microsoft paratransmissãodefluxodedadosemtemporeal,chamadotambémdeNetShow.

modelo de referência ISO OSI –modeloapresentadopeloISO(InternationalsStandardsOrganizationouOrganizaçãoInternacionaldePadrões),comoin-tuitodepadronizarosprotocolosemcamadas,comonomedeOpenSystemInterconnection(OSI),ouseja,interconexãodesistemasabertos.

monotarefa –sistemaoperacionalqueconsegueprocessarapenasumainstru-çãodecadavez.

motherboard – placa-mãe.

mouse –dispositivoapontadorqueserveparamostraraosistemaoperacionaloquesedesejafazer,indicando,pormeiodocursornovídeo,oelementocomoqualsequerinteragirequetipodeaçãosepretenderealizar.

MSDNAA – sigla para Microsoft Developer Network Academic Alliance oualiançaacadêmicadaredededesenvolvedoresdaMicrosoft.

MS-DOS – sigla para Microsoft Disk Operating System ou disco de sistemaoperacionalMicrosoft.

multitarefa – sistemaoperacionalqueconsegueprocessarváriasinstruçõesaomesmotempoeexecutardiversosprogramassimultaneamente.

MySQL –sistemadegerenciamentodeSGBDRs,éumbancodecódigo-fonteaberto,gratuitoeestádisponíveltantoparaoWindowscomoparaoLinux.

NetBSD – sistemaoperacionalparaservidoresderede.

InFoRmátICa

294

GloSSáRIo

295

Page 150: 106026095 Informatica Programacao de Computadores Etec

plug and play –modopeloqualosistemaoperacionalpodereconhecerautoma-ticamenteodispositivo,mesmoqueestedemandealgumdriverespecífico.Osdispositivosmaiscomunscomopen-drives,mousese impressoras,podemserutilizadosassimquesãoconectados.

plug’n play (conecte e use) – técnicaquereconheceeinstalamuitosdispositi-vosautomaticamentesemnecessidadedenenhumatarefaadicional,encontradadesdeaversão95doWindows,etemseuápicenaversãoXP,queécapazdeoperarcomquasetodososdispositivosexistentes.

PMBOK® - Guia do Conjunto de Conhecimentos em Gerenciamento de Proje-tos –publicaçãodoPMI(ProjectManagementInstituteouInstitutodeGeren-ciamentodeProjetos),paraidentificaredescreverasboaspráticasdeprojetosqueagreguemvaloresejamfáceisdeaplicar.

porta paralela –conectorutilizadoparaligardispositivosacomputadores,principal-menteimpressoras,caracterizandoatransmissãodebitsnaformaparaleladeenvio.

porta serial –conectorquefoimuitoutilizadonopassadoparaconectarmouse,impressora,leitoresdecódigodebarraseoutrosdispositivosdeautomação,co-mercialeindustrial,enviandoosbitsdeformaserial.

PostgreSQL –sistemadegerenciamentodeSGBDRs(sistemasgerenciadoresdebancosdedados).

prompt de comandos do Windows – aplicativoemqueousuáriodispõedeumainterfacequeinterpretaoscomandosdigitados.Essessãotransferidosaosistemaoperacional,que,depoisdeexecutá-los,retornaoresultadoaoprompt,dema-neiraqueousuárioovisualize.

protocolo –móduloqueagrupaumtipodeserviço.

protocolo RDP (Remote Desktop Protocol ou protocolo de área de trabalho remota) – protocoloempregadoparatransmissãodedadosdacamadadeapli-cação.PermitetransmitiráudioevídeoemvárioscanaisdeumatransmissãodaaplicaçãoMicrosoftTerminalService.

protocolo RTP/RTCP (Real Time Protocol ou protocolo de tempo real e Real Time Control Protocol ou protocolo de controle de tempo real) – protocolosutilizadosemconjunto,desenvolvidosparatransmitiráudioemtemporeal.

protocolo SMTP – sigla para Simple Mail Transfer Protocol ou protocolo detransmissãodee-mailsimples.

protocolo TCP (Transfer Control Protocol ou protocolo de transferência com controle) – protocolodecontrolequenegociaentreaspartes comosedaráaconexãoantesqueumdadosejaenviadoemantémoestadodaconexão,mesmoqueascamadasinferioresdaredenãoofereçamcontroledeestado.

pseudocódigo – linguagemcomaqualosalgoritmossãodesenvolvidos.

particionar – éomesmoquedividirodisco,identificandosuaspartesedevidasdimensões.

pass – senha.

password – caracteresdigitadospelousuário,comlimitaçõeseumajanelaparaaentradadedados.

pasta – formamaissimplesdeorganizaroconteúdoemumsistemaoperacional.

PATA (vem de Parallel ATA) – tecnologiaquepermitequeosdadosarmazenadosemdiscosrígidos,paraseremutilizadospeloprocessador,sejamtotaloupar-cialmentecarregadosparaamemóriaetransmitidosdamemóriaparaodisco,depoisdeseremalterados,oucriados.

PC/AT – o primeirocomputadorlançadoem1984pelaIBM,comosucessordomodeloXP,comcapacidadedeapenas20MBetecnologiaATA.

PC –abreviaçãoparaPersonalComputeroucomputadorpessoal.

PCI (Peripheral Component Interconnect ou componente de interconexão de periféricos) –padrãodesenvolvidopelaIntelem1990parasubstituirosbarra-mentosISAeVESALocalBus.

pen-drive – pen,discoremovível,chaveirodememóriasãoastraduçõesmaisusadas para Memória USB Flash Drive, dispositivo de armazenamento comligaçãotipoUSBquecomeçouaserproduzidonoano2000.

periféricos – sãotodososdispositivosqueseconectamàunidadedesistemapara obter respostas ou para passar informações para o computador. Essesdispositivossãogeralmentedivididosemtrêsgrupos–periféricosdeentrada,desaídaemistos.

PID (Process Identification ou código do processo) – número de controle doprocesso,juntoaopercentualdeusodememóriaedeprocessador.

pilha de protocolos –protocolosdeumamesmacamada.

pixel –Menorpontovisívelquecompõeumaimagemdigital.

placa controladora –placalógica.

placa lógica –tambémchamadadeplacacontroladora,éaplacaquecontrolatodoofuncionamentodoHD.

placa-mãe – conhecida tambémcomomother-board,main-boardou,noscomputadoresdaApple,como logicboard (placa lógica), éaplacadecir-cuitoimpressoqueligaouinterligatodososcomponentesdocomputador.Emsitesefórunsdainternet,vocêpodeencontraraindaaabreviaçãomoboparadesigná-las.

InFoRmátICa

296

GloSSáRIo

297

Page 151: 106026095 Informatica Programacao de Computadores Etec

R

S

umprogramaemexecuçãonoPC.

servidor – palavraderivadadosverbosservir,tornardisponível,éumcompu-tadoremgeralmaispotentequeosPCsdeestaçõesdetrabalhoequetemafunçãodeproveralgumserviçonarede.

setup –programadeconfiguraçãoquetodomicrotemgravadodentrodame-móriaROM(que,porsuavez,ficanaplaca-mãe).

SGBDs (Sistemas Gerenciadores de Bancos de Dados) – conjuntodeprogra-masquepermiteaimplementaçãodebancosdedados,assimcomoocontroledeacesso,obackup,arecuperaçãodefalhas,amanutençãodaintegridade,aadministraçãoeasegurançadosdadosquecontém.

sistema embarcado – aquelequeestágravadodentrodosequipamentos.

sistema operacional –software(comooMS-DOS,oWindows95,98,NT,XPeVista,MacOS-XeLinux)quefazacomunicaçãoamigáveleseguraentreohardware easaplicações.

socket –encaixe,naplaca-mãe,quevariadeacordocomomodelodoproces-sador,quelevaemcontavelocidadeecapacidadedeprocessamento,memóriacachê,terminais,consumodeenergia.

software –éapartenãofísica–programas,instruçõeseprocedimentosescritosporprogramadoresparacontrolarohardwaredemodoqueestepossaexecutarastarefasdequeprecisamos.

software de compressão – programasquefazemacompactaçãodearquivos.

software de inteligência artificial (IA) –sistemaqueutilizaalgoritmosnãonu-méricospararesolverproblemascomplexos,tambémconhecidocomosistemabaseadoemconhecimento.

software firmware –programaimplantadoemumchip.

Solaris – sistemaoperacionalparaservidoresderede.

spywares – vírusespiõesquecopiamdadosousenhaseosenviamparaumam-bienteexternosemconhecimentonemconsentimentodousuário.

SQL (Structured Query Language ou, literalmente, linguagem de consulta es-truturada) – linguagemdemanipulaçãodedadosque se tornoupadrãoparaSGBDRs(SistemasGerenciadoresdeBancosdeDadosRelacionais).

SSH (Secure Shell) –protocoloquepermiteconexõessegurasentremáquinasLinux.

stored procedure (procedimento armazenado) – conjuntodecomandosSQLquesãocompiladoseguardadosnoservidor.

RAD (Rapid Application Development ou desenvolvimento rápido de aplica-ção) – linguagemcapazde,por si só, gerar códigos comosquaispodemsercriadasaplicações,mesmosemseespecializarnalinguagem.

RAM –siglaparaRandomAccessMemoryoumemóriadeacessoaleatório.

rede –interligaçãodevárioscomputadores.

registradores – componentes do processador, que são unidades de memóriaque,porficaremdentrodaCPU,possibilitamacessoaosdadosbemmaisvelozdoqueaoacessodasmemóriasRAMoucache.

ReiserFS (Reiser File System) –sistemadearquivosbastanteusadonoLinux,que tambémoferece journaling (registrodedadoscomoemumjornal),massomenteretémasinformaçõesdecabeçalhos–nãofazoregistrodedados,oqueotornamaisrápidoqueoExt3.

reset (restabelecer) – botãoque reinicia o computador, como sedesligasse eligasseomicronovamente.

resolução –imagemdefinidapelaquantidadedepontos,ospixels.

RFC (Request for Comments) – especificaçãotécnicadesenvolvidasobreumde-terminadoassuntoporsolicitaçãodaIETF (InternetEngineeringTaskForce).

RGB – siglaparaRed,GreeneBlueouvermelho,verdeeazulquedeterminaumatabeladecoresnopadrãoRGB.

rodar – executaralgumprograma.

ROM –siglaparaRead-OnlyMemory,quesignificamemóriaapenasdeleitura.Éumamemóriaquenãopermiteaalteraçãoouremoçãodosdadosaligravados,osquaissãoimpressosemumaúnicaocasião.

roteadores –equipamentosquefazeminterconexãocomváriasredes.

roteamento –algoritmoqueanalisaotráfegoderedeentreospontosqueestãotransferindopacotesparaverificarocaminhoqueelesestãoseguindo.Repasseeroteamentogeralmentesãorealizadosporequipamentoschamadosroteadores.

RTSP (Real Time Streaming Protocol ou protocolo de transmissão de fluxo de dados em tempo real) –protocoloutilizadoparatransmitirecontrolaratrans-missãotantodeáudioquantodevídeosobdemandaemtemporeal.

script –listadoscomandosdecriaçãodobancodedadosedesuastabelasden-trodoSGBD.

service packs – pacotesdeatualizações.

serviço – a maioriadasatividadesexecutadaspelosistemaoperacional,ouseja,

InFoRmátICa

298

GloSSáRIo

299

Page 152: 106026095 Informatica Programacao de Computadores Etec

T

U

V

tuplas – linhasdeumatabela.

Ubuntu –sistemaoperacionalbaseadoemLinux,desenvolvidodeformacola-borativapelosinternautas.

UC (Unidade de Controle) –principalcomponentedoprocessador,queidentifi-caasinstruções,comandaosoutroscomponentes,controlaamemóriaetodososoutrosdispositivosdocomputador.

UDP – siglaparaUserDatagramProtocolouprotocolodedatagramadousuário.

ULA (Unidade Lógica Aritmética) –componentedoprocessadorquefuncionacomoumacalculadora,ouseja,fazcálculosmatemáticos,lógicoseestatísticos,enoqualosdadossãoprocessados.

Ultra-ATA – tecnologiaquepermitequeosdadosarmazenadosemdiscosrígi-dos,paraseremutilizadospeloprocessador,sejamtotalouparcialmentecarre-gadosparaamemóriaetransmitidosdamemóriaparaodisco,depoisdeseremalterados,oucriados.

Ultra-DMA –tecnologiaquepermitequeosdadosarmazenadosemdiscosrígi-dos,paraseremutilizadospeloprocessador,sejamtotalouparcialmentecarre-gadosparaamemóriaetransmitidosdamemóriaparaodisco,depoisdeseremalterados,oucriados.

UML (Unified Modeling Language ou linguagem de modelagem unificada) – linguagemdedicadaàespecificação,visualização,construçãoedocumentaçãoqueusanotaçãográficaparamodelarsoftwares.

unidade central de processamento – otermorefere-seaomicroprocessador,enão aogabinete comoum todo, comomuitaspessoas imaginam.Como seupróprionomediz,suafunçãoéprocessarasinstruçõesenviadas.Oprocessadorestáparaocomputadorassimcomocérebroestáparaoserhumano.

URL (Uniform Resource Locator ou localizador de recurso universal) –endere-çodeumrecursodisponívelemumarede.

USB – siglasignificaUniversalSerialBuseserefereaumatecnologiaqueveiopara facilitar a ligaçãodemaiornúmerode aparelhos aoPCcomocâmeras,joysticks, mp3 players, leitores de cartões (inclusive simultaneamente), bemcomoaceleraraindamaisavelocidadedatransmissãodedados.

vetor – definidotambémcomomatrizunidimensional,éumavariávelquepos-suiváriosdados,acessadospormeiodeumaposiçãorelativa,seguindoamesmaregradaconcepçãoeatribuiçãodasvariáveis.

VGA –siglaparaVideoGraphicArrayouvídeodegráficosvetorizados.

VNC (Virtual Network Computing ou computação em rede virtual) – tecnologia quepossibilitaacessoremotodeumcomputadoraoutrocominterfacegráfica.

streaming – termousadoparatransmissõesmultimídiaininterruptasporumafonteaváriosclienteseaomesmotempo.

swap (troca) – sistemadearquivosparamemóriavirtualnoLinux/Unix.

Swebok (Software Engineering Body of Knowledge ou áreas do conhecimento da engenharia de software) –publicaçãode2004,éumainiciativadaSocie-dadedaComputaçãodoInstitutodeEngenhariaElétricaeEletrônica(IEEEComputerSociety), comopropósitode criarumconsenso sobre as áreasdeconhecimentodaengenhariadesoftware.

tabela de alocação –tabelachamadaMBR,queficaarmazenadanoiníciododiscorí-gido.Essatabelainformaaposiçãodeiníciodapartição,seestáativaequaléoseutipo.

tag –palavra-chave (relevante)associadaauma informação,queémuitoco-mumnalinguagemdeprogramaçãodecomputador.

Telnet –tecnologiamuitoutilizada,tantonoLinuxquantonoWindows,paraacessarumPCremotamente.

template – modelo.

TextBox (caixa de texto) – componenteresponsávelporreceberasinformaçõesdousuário e é tambémo itemmais comum,pois amaioriadas entradasdedadosérealizadaporele.

threads –tópicos,oudivisõesdosprocessos,queossistemasoperacionaismo-dernosutilizamparamelhorarseudesempenho.

TI –siglaparaTecnologiadaInformação.

toolbar (barra de ferramentas) – disponibilizaosbotõesdecomandosmaisutilizados.

ToolBox (caixa de ferramentas) –contémcomponentesparaodesenvolvimentodoprojeto,osquaisestãodivididosemguiasdeacordocomotipodeaplicação.

top – noLinux,éummonitorbastantepoderosoquetrazdiversasinformaçõesdosistema,alémdosprocessosemexecuçãoedosdadosdePID,usuárioetc.

topologia de redes –modocomooscomputadoresestãoligadosentresi,osequi-pamentosempregadoseamaneiracomoosdadosirãotrafegardentrodarede.

tradutor –utilitárioqueconverteocódigodesenvolvidoemumalinguagemdealtonível(entendidamaisfacilmentepeloprogramador)emumalinguagemdemáquina(entendidamaisfacilmentepelocomputador).

trilha zero –primeiratrilhadosistemadearquivosdoHDemqueobootestágravado.

trojans –nomeeminglêsdadoaumvírusqueevocaahistóriagregadoCavalodeTroia,ouspywares.

InFoRmátICa

300

GloSSáRIo

301

Page 153: 106026095 Informatica Programacao de Computadores Etec

W

X

Z

W3C (World Wide Web Consortium ou consórcio da rede mundial de compu-tadores) –fundadoem1994,oW3Céformadoporempresasdetecnologiadediferentespartesdomundoquetrabalhamparacriarpadrõesediretrizesparaainterpretaçãodeconteúdosdaweb.

WAI (Web Accessibility Initiative ou iniciativa para acessibilidade na rede) –projetointernacionalcriadoporgruposdepessoasdedicadasadesenvolvercon-diçõesespecíficasparaquetodostenhamacessoàinternet(ambiente,equipa-mento,navegador,ferramentasetc.).

WAN (Redes Geograficamente Distribuídas) – redesqueseespalhamporumaregiãodeumestado,portodooestado,umpaísouomundotodo.São,portan-to,redesdelongadistância.Ainternet,cujoacrônimoéWWW(WorldWideWebouredemundialdecomputadores)éamaiorWANdoplaneta.

Windows ou Microsoft Windows – sistemaoperacional surgidoda junçãodoMS-DOScomumainterfacegráfica.Hádiversasversões–Windows95,98,XP,Vista,NT,2000,2003,2008.

wireless (sem fio) –meiodetransportedasinformaçõesentretecladoecomputador.

World Wide Web (ou WWW) –redemundialcriadaem1991pelocientistaTimBerners-Lee,tornou-sebaseparaodesenvolvimentodosnavegadorescominter-facegráficaqueviriamasepopularizarapartirdadécadade1990,quandoaredefoiabertaàsempresaseseespalhoumundoafora.

XFS – sistemadearquivosLinux,rápidoeindicadoparapartiçõesgrandes.

XHTML (eXtensible HyperText Markup Language ou linguagem de marcação de texto extensível) –onovopadrãodedesenvolvimentoweb.

XML (eXtensible Markup Language ou linguagem de marcação extensiva) –lin-guagemdemarcaçãoquepermiteamanipulaçãodosdadosdeformamaispreci-sa.Issoassegurainformaçõesuniformeseindependentesdeaplicaçãooudefor-necedorque,dessaforma,podemserutilizadasemdiferentesníveisdeaplicação.

zip ou rar – formato de arquivo compactado com aplicativos específicos decompactação.

InFoRmátICa

302

Page 154: 106026095 Informatica Programacao de Computadores Etec

excelência no ensino profissional

Administrador da maior rede estadual de educação profissional do país, o Centro Paula Souza tem papel de destaque entre as estratégias do Governo de São Paulo para promover o desenvolvimento econômico e a inclusão social no Estado, na medida em que capta as demandas das diferentes regiões paulistas. Suas Escolas Técnicas (Etecs) e Faculdades de Tecnolo-gia (Fatecs) formam profissionais capacitados para atuar na gestão ou na linha de frente de operações nos diversos segmentos da economia.

Um indicador dessa competência é o índice de inserção dos profissionais no mercado de trabalho. Oito entre dez alunos formados pelas Etecs e Fatecs estão empregados um ano após concluírem o curso. Além da ex-celência, a instituição mantém o compromisso permanente de democra-tizar a educação gratuita e de qualidade. O Sistema de Pontuação Acres-cida beneficia candidatos afrodescendentes e oriundos da Rede Pública. Mais de 70% dos aprovados nos processos seletivos das Etecs e Fatecs vêm do ensino público.

O Centro Paula Souza atua também na qualificação e requalificação de trabalhadores, por meio do Programa de Formação Inicial e Educação Continuada. E ainda oferece o Programa de Mestrado em Tecnologia, re-comendado pela Capes e reconhecido pelo MEC, que tem como área de concentração a inovação tecnológica e o desenvolvimento sustentável.