SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

243
SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas

Transcript of SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

Page 1: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

SE

GU

ND

A F

AS

E

TR

EIN

AM

EN

TO Área de

Desenvolvimento de Sistemas

Page 2: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

AULA I Tópicos abordados:

Introdução ao .Net Framework e CLR Plataforma Visual Studio 2008 Lógica de Programação (Parte I)

Page 3: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTRODUÇÃO AO .NET

FRAMEWORK E CLR

Aula 1

Page 4: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

O QUE É O .NET FRAMEWORK? O .NET Framework é um modelo de programação de

código gerenciado da Microsoft para criar aplicativos em clientes, servidores e dispositivos móveis ou incorporados ao Windows.

Conjunto rico de bibliotecas com os mais variados usos; Controle de versão: fim do “DLL Hell”; Facilidade de desenvolvimento de aplicações desde as mais

simples até as mais complexas; Facilidade na instalação e na distribuição de aplicações; Alta escalabilidade para ambientes de missão crítica; Interoperabilidade entre plataformas e componentes

desenvolvidos em outras linguagens .NET; Orientada a objetos; Tecnologia baseada em máquina virtual;

Page 5: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

O QUE POSSO FAZER COM O .NET? O .NET permite desenvolver soluções como:

Aplicativos Web Aplicativos para Servidores Aplicativos Smart Client Aplicativos de Console Aplicativos de Banco de Dados Serviços Windows Web Services e muito mais

Page 6: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INOVAÇÕES TRAZIDAS PELO .NET 3.5 .NET Framework 3.5 vem para incrementar as .NET

Frameworks 2.0 e 3.0 com novos recursos em várias áreas de tecnologia. Entre eles, estão: Profunda integração entre LINQ (consulta integrada à

linguagem) e reconhecimento de dados. Novas implementações ao ASP.NET AJAX. Suporte completo para:

Windows Workflow Foundation (WF) Windows Communication Foundation (WCF) Windows Presentation Foundation (WPF) Windows CardSpace

Novas classes na BCL (biblioteca de classes básicas) que vêm atender solicitações comuns entre os desenvolvedores.

Page 7: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURA DO .NET FRAMEWORK

.NET Framework

VB C++ C# JScript ...

Common Type System (CTS)

ADO .NET: Data e XML

ASP .NET: Web Services e Web Forms

Windows Forms

.NET Framework Base Class

Common Language Runtime (CLR)

Visu

al S

tudio

.NET

Page 8: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

O QUE É CLR? Common Language Runtime (CLR) é o componente

encarregado de gerenciar aplicações desenvolvidas em .NET.

O compilador de cada linguagem segue uma série de especificações, conhecida como Common Language Infrastructure (CLI), para compilar seus códigos.

Estas especificações são abertas (ECMA-335, ISO/IEC 23271), assim permitem a interoperabilidade entre outras linguagens e plataformas. O que deu origem ao desenvolvimento, pela Novell, do Mono (Um CLR que opera também em Linux, BSD, UNIX, Mac OS X e Solaris).

Page 9: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

SERVIÇOS PRESENTES NO CLR Serviços de gerenciamento de memória Serviços de tratamento de exceções Serviços de compilação Serviços de segurança, etc.

Page 10: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CLR - COMPILAÇÃO

Compilação

Antes da instalação ou a

primeira vez que cada método é

chamadoExecução

JIT CompilerNativeCode

MSILCode

Metadata

Source Code

Language Compiler

Page 11: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

VISÃO GERAL DA COMPILAÇÃO

VB C# C++

Código Nativo

Common Language Runtime (CLR)

ComponenteNão GerenciávelCompilador Compilador

Assembly - Código IL

Compilador JIT

Serviços do Sistema Operacional

CódigoFonte

CódigoGerenciável

Compilador

Page 12: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CÓDIGO MANAGED X UNMANAGED Managed

Código Fonte Compilador Código Intermediário (IL): .DLL ou .EXE Requer o ambiente CLR para executar Código de Máquina (Binário)

Unmanaged Código Fonte Compilador Código de Máquina (Binário) NÃO requer o ambiente CLR para executar

Page 13: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LINGUAGENS .NET Microsoft Visual Basic.NET Microsoft C# Microsoft C++ (Gerenciado/Não-Gerenciado) Microsoft J# Outras:

http://www.dotnetlanguages.net

http://www.dotnetpowered.com

Page 14: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

VISUAL STUDIO 2008

Aula 1

Page 15: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

O QUE É O VISUAL STUDIO 2008? Um conjunto de ferramentas de desenvolvimento

que permite aos desenvolvedores de software resolver problemas complexos e criar soluções inovadoras.

Baseia-se em três pilares principais: Desenvolvimento rápido de aplicativos Colaboração eficaz em equipe Experiências de usuário inovadoras

Page 16: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

O QUE POSSO FAZER COM O VS 2008? Desenvolver Web Site e Aplicações Web com

ASP.NET, AJAX.NET e Silverlight. Impressionar com mídia e gráficos desenvolvidos

com o Windows Presentation Foundation. Aplicativos que estendem funções do Office 2003 e

2007. Aplicações para Windows Mobile. Desenvolver soluções de integração coorporativa

com Windows Communication Foundation e o Windows Workflow Foundation e muito mais...

Page 17: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CRIANDO UMA SOLUÇÃO

Demonstração

Page 18: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CRIANDO A PARTIR DE TEMPLATES File > New > Project...

Page 19: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTERFACE DESIGN

Page 20: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTERFACE PROGRAMAÇÃO

Page 21: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LÓGICA DE PROGRAMAÇÃO

Aula 1

Page 22: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

TIPOS DE DADOSbyte • Inteiro de 8 bits sem sinal

sbyte • Inteiro com sinal de 8 bits

int • Inteiro de 32 bits com sinal

uint • Inteiro de 32 bits sem sinal

long • Inteiro com sinal de 64 bits

ulong • Inteiro sem sinal de 64 bits

short • Inteiro com sinal de 16 bits

ushort • Inteiro sem sinal de 16 bits

decimal• Ponto flutuante decimal. Este tipo tem

uma precisão de 28 casas decimais.

double• Ponto flutuante binário. Este tipo tem uma

precisão de 15 casas decimais.

float• Ponto flutuante binário. Este tipo tem uma

precisão de 7 casas decimais.

bool• Tipo de dados booleano. Pode ser apenas

true ou false.

char • Um único caractere unicode de 16 bits.

string • Unicode com até 1 gigabyte de caracteres.

Page 23: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

VARIÁVEIS POR VALOR (VALUE TYPES) Armazenado na memória Stack. Trabalha com dados diretamente. Não pode ser nulo. Exemplo:

InteirosDecimaisBooleanosEstruturasEnumeradores

...

idade

salário

brasileiro

STACK

Page 24: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

POR REFERÊNCIA (REFERENCE TYPES) Contém uma referência a um ponteiro na

memória Heap. Pode ser nulo Exemplo:

VetoresTextos Instâncias de ClassesClasses

•#XXXXNome

...

...

Nome

HEAP

STACK

“Texto”

Page 25: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BOXING E UNBOXINGint i = 123; // Tipo por valorobject O; // Tipo por referênciaO = i; // Causa “boxing”string S; S = O.ToString() // Chama via Oint x; x = (int) O; // Faz “unboxing”

123

123

123

Stack Heap

iOx

Page 26: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BOXING E UNBOXINGint i = 123; // Tipo por valorobject O;O = i; // Causa “boxing”string S; // Tipo por referênciaS = O.ToString(); // Chama via Oint x; x = (int) O; // Faz “unboxing”

•123x

S

O

•123i

...

...

S

...

O

...

HEAPSTACK

Page 27: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

OPERADORES

• +, -, *, /, %Aritméticos

• =, +=, -=, *=, /=, <<=, >>=, &=, ^=, |=Atribuição

• +Concatenação

• NewCriação de Objetos

• ==, !=Igualdade e Diferença

• ++, --Incremento e Decremento

• &, ^, |, &&, ||, ~, !Lógicos

• typeof, sizeof, checked, uncheckedPrimários

• <, >, <=, >=, isRelacionais

Page 28: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURAS DE CONTROLE DE FLUXO if ... else if ... else

A cláusula if ocorre apenas uma vez A cláusula else if pode ocorrer nenhuma ou várias vezes A cláusula else é opcional.

if (idade >= 18){ Response.Write("Autorizado."); Response.Write(“Sua idade é: ” + idade);}else if(idade > 15 && idade < 18){ Response.Write("Somente com os pais."); Response.Write(“Menor de 18 anos.”);}else{ Response.Write("Não autorizado."); Response.Write(“Menor de 15 anos.”);}

Page 29: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURAS DE CONTROLE DE FLUXO switch … case

Estruturas de decisão caracterizadas pela possibilidade de uma variável possuir vários valores.

A cláusula switch ocorre uma vez A cláusula case pode ocorrer uma ou várias vezes default é opcional.

switch (sexo){ case "masculino": Response.Write("Homem"); break; case "feminino": Response.Write("Mulher"); break; default: Response.Write("Não informado"); break;}

Page 30: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURAS DE REPETIÇÃO for

Estrutura de repetição caracterizada pela existência de três parâmetros: Valor inicial Condição para parada das iterações Quantidade de incrementos/decrementos a cada iteração

for (int i = 0; i < 10; i++) { Response.Write(i); Response.Write(“<br />”);}

Page 31: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURAS DE REPETIÇÃO while

Estrutura de repetição que realiza as operações desejadas enquanto a condição especificada for verdadeira.

int i = 0;while(i != 10){ Response.Write(i); Response.Write("<br />"); i++;}

Page 32: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURAS DE REPETIÇÃO do ... while

Estrutura de repetição semelhante à anterior, com o diferencial de que as condições são verificadas no final da execução

Permite que as operações especificadas sejam executadas pelo menos uma vez.

Necessita do caracter “;” no final da estrutura

int i = 0;do{ Response.Write(i); Response.Write("<br />"); i++;}while (i != 10);

Page 33: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONVERTENDO

// Exemplo Istring S = “123”; int i = S;Response.Write(i);

// Exemplo IIstring S = "123";int i = Convert.ToInt32(S);Response.Write(i);

// Exemplo IIIstring S = “123”;int i = int.Parse(S);Response.Write(i);

// Exemplo Vstring S = "valor";int i = 0;if (int.TryParse(S, out i)){ Response.Write(i);}else{ Response.Write(“valor inválido.”);}

// Exemplo IVstring S = “valor”; int i = Convert.ToInt32(S);Response.Write(i);

Page 34: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

TRATAMENTO DE EXCEÇÕES try ... catch ... finally// Sintaxe

try { // código factível de erro} catch (NullReferenceException ex){ // exceções de referência nula} catch { // trata outras exceções} finally { // executa sempre}

// Exemplo Itry { int i = int.Parse(“2mm”);} catch { Response.Write(“Inválido”);}

// Exemplo IItry{ throw new Exception("Erro");}catch (Exception ex){ Response.Write(ex.Message);}

Page 35: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LABORATÓRIO 2.1.1

Fase 2 - Aula 1

Page 36: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.
Page 37: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

AULA II Tópicos abordados:

Lógica de Programação (Parte II) Arrays Enumeradores Namespaces Comentários Estruturas Tratamento de Exceções

Orientação a Objeto (Parte I) Classes e Objetos Atributos Métodos Construtores Herança e Polimorfismo Encapsulamento Modificadores de Acesso

Page 38: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LÓGICA DE PROGRAMAÇÃO

PARTE II

Aula 2

Page 39: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ARRAY (VETORES) Array é uma variável que permite o

armazenamento de um bloco de um tipo particular de variáveis (int, string, object, bool...) na memória.

No C# os Arrays são indexados a partir de zero (0). Não podem ter seu tamanho alterado depois de

instanciados.

Page 40: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ARRAY (VETORES) Para declarar um Array, basta adicionar um par de

colchetes logo após a declaração do tipo dos elementos individuais

Instanciando arrays

Preenchendo array

int[] meuVetorDeInteiros;string[] meuVetorDeStrings;

int[] codigos = new int[5]; string[] nomes = new string[100];object[] produtos = new object[50];int[] pedidos = {1, 4, 6, 8, 10, 68, 90, 98, 182, 500};

nomes[0] = “José”;nomes[1] = “João”;

Page 41: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ARRAY (VETORES) Podem ser:

Unidimensionais: array com uma chave.

Multidimensionais: Retangular ou matriz: array com mais de uma chave.

Jagged: array de arrays.

int[] codigos = new int[5]; codigos[0] = 1;

int[,] codigos = new int[2,2]; codigos[0,0] = 11;

int[][] codigos = new int[2][]; codigos[0] = new int[2];codigos[0][0] = 11;

int[][] codigos = { new int[]{11,42}, new int[]{35,44} };

int[] codigos = {1,3,6,7,8};

int[,] codigos = {{11,42},{35,44}};

Page 42: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ENUMERADORES Definindo Tipos Enumeradores

enum TipoDiretor{

Marketing,RH,Comercial,Financeiro

}

... Dentro do evento Page_Load

// InstanciandoTipoDiretor tpDiretor = TipoDiretor.Comercial;

// Imprime ‘Comercial’Response.Write(tpDiretor);

Page 43: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURA DO CÓDIGO

Page 44: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

NAMESPACES Declarando um namespace

Namespaces em cadeia

Instrução Using

namespace NomeEmpresa.Vendas {public class Cliente {}

}

using System;using System.Data;using NomeEmpresa.Vendas;using Pessoa = ClassLibrary.Person;

namespace NomeEmpresa {public class Cliente {}

}

Page 45: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

COMENTÁRIOS Criando comentários e regiões:

// Comentário de uma linha

/* Comentário com mais de uma linha

*/

/// <summary>/// Documentação XML/// </summary>private int Atributo;

#region Regiãoprivate int Atributo1;private int Atributo2;

#endregion

Page 46: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LABORATÓRIO 2.2.1

Fase 2 - Aula 2

Page 47: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ORIENTAÇÃO A OBJETOPARTE I

Aula 2

Page 48: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONCEITOS DE ORIENTAÇÃO A OBJETO

Métodos e Atributos

Herança

Classes Abstratas

Polimorfismo

Classes e Objetos

Page 49: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

Aplicação

ESTRUTURADA X ORIENTADA A OBJETO

Função

Função

Função

Função

Dados

Aplicação

Objeto

Métodos

Estruturada Orientação a Objetos

Dados

Objeto

Métodos

Dados

Page 50: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BENEFÍCIOS DA ORIENTAÇÃO A OBJETO

Processo

Revela Dados

Projeto Monolítico

Uso Único

Algoritmo Ordenado

Objeto

Oculta Dados

Projeto Modular

Reutilização

Algoritmo Desordenado

Programação Estruturada

Orientação a Objeto

Page 51: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CLASSE É um conjunto de códigos de programação que

incluem a definição dos atributos e dos métodos necessários para a criação de um ou mais objetos.

Contém toda a descrição da forma do objeto, é um molde para a criação do objeto, é uma matriz geradora de objetos, é a fábrica de objetos.

Uma classe também é um tipo definido pelo usuário.

Page 52: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

OBJETO OU INSTÂNCIA Tem determinadas propriedades que o

caracterizam e que são armazenadas no próprio objeto. As propriedades de um objeto são chamadas ainda de atributos.

O objeto interage com o meio e em função de excitações que sofre, realiza determinadas ações que alteram o seu estado (atributos).

Um objeto é uma entidade única que reúne atributos e métodos, ou seja, reúne as propriedades do objeto e as reações aos estímulos que sofre.

Page 53: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

FuscaBrasília

Carros

CLASSES E OBJETOS

Page 54: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

DECLARAÇÃO DE CLASSES E OBJETOS

Declarando uma Classe:

Declarando um Objeto:

class Pessoa{

string nome;void Andar() { }

}

Endereco objEndereco = new Endereco();

Page 55: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ATRIBUTOS E MÉTODOS

Atributo Cor Lataria

Atributo Aro

Atributo Vidro

Atributo Cor Parachoque

Atributo Placa

Atrib

uto

sM

éto

dos

Ações do carro (Métodos)Liga (Ingnição) AceleraFreia (Breca)Troca de Marcha

Cla

sse

+Trocar marcha()+Ligar()+Acelerar()+Brecar()

-Placa-Cor Lataria-Cor Parachoque-Aro-Tipo Vidro

Fusca

Page 56: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ATRIBUTOS Atributos de Classe

Quando um atributo é dividido entre todos os objetos criados, ele é armazenado na classe. EX: Um contador de relógios criados.

Atributos de Objeto Quando um atributo é individual ele é armazenado no

objeto. EX: A hora de um relógio.

string nome = “Bill”;int idade = 53;

Page 57: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MÉTODOS As ações ou comportamento dos objetos são

chamados, na orientação a objeto, de métodos, assim, um método é uma função, um serviço fornecido pelo objeto.

Os comportamentos do objeto são definidos na classe através dos métodos e servem para manipular e alterar os atributos do objeto.

Em um programa orientado a objeto, as excitações são representadas por mensagens que são enviadas a um objeto. Uma mensagem pode ser gerada pelo usuário, por exemplo, ao clicar o mouse.

Page 58: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MÉTODOS Um método é um comando que representa uma açãoclass Cliente {

private int produtosAdquiridos;public bool EClienteEspecial() {

if (produtosAdquiridos < 250) return false;

return true;}public void ComprarEspecial() { /* AÇÃO */ }

}...Cliente proximoCliente = new Cliente();bool clienteEspecial = proximoCliente.EClienteEspecial();if (clienteEspecial)

proximoCliente.ComprarEspecial();

Page 59: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MÉTODOS Passando parâmetros por valorclass Cliente {

private int produtosAdquiridos;

public void DefineProdutosAdquiridos(int quantidade) {

produtosAdquiridos = quantidade;}

}...Cliente novoCliente = new Cliente();int produtos = 255;

novoCliente.DefineProdutosAdquiridos(produtos);//ORnovoCliente.DefineProdutosAdquiridos(200);

Page 60: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MÉTODOS Passando parâmetros por referência (usando ref)

public void RetornaEndereco(ref int numero, ref string rua){

numero = this.numero;rua = this.rua;

}

int numeroLocal = 0;string ruaLocal = “”;

novoCliente.RetornaEndereco(ref numeroLocal, ref ruaLocal);

// numeroLocal e ruaLocal recebem novos valores

Page 61: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MÉTODOS Passando parâmetros por referência (usando out)

public void RetornaEndereco(out int numero, out string rua){

numero = this.numero;rua = this.rua;

}

int numeroLocal;string ruaLocal;

novoCliente.RetornaEndereco(out numeroLocal, out ruaLocal);

// numeroLocal e ruaLocal são inicializados

Page 62: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MÉTODOS - SOBRECARGA Utilizando sobrecarga de métodos

public void DefineProdutosAdquiridos(int novoNumero) {

this.produtosAdquiridos = novoNumero;}public void DefineProdutosAdquiridos(int novoNumero, bool

clienteModificado) {

if (clienteModificado)this.produtosAdquiridos = novoNumero;

}public void DefineProdutosAdquiridos() {

this.produtosAdquiridos = RecuperaProdutos(this.ClienteID);

}

Page 63: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONSTRUTORES Construtores são métodos especiais responsáveis pela

implementação de ações necessárias para a existência de um objeto

public class Cliente{

public int produtosAdquiridos;public readonly bool clienteEspecial;

//Construtor defaultpublic Cliente(){

if (this.produtosAdquiridos > 250)this.clienteEspecial = true;

elsethis.clienteEspecial = false;

}}

Page 64: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LABORATÓRIO 2.2.2

Fase 2 - Aula 2

Page 65: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

HERANÇA

A herança está relacionada às hierarquias e às relações entre os objetos.

É o mecanismo em que uma classe filha compartilha automaticamente todos os métodos e atributos de sua classe pai.

A herança permite implementar classes descendentes implementando os métodos e atributos que se diferenciam da classe pai.

Page 66: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

TIPOS DE HERANÇA

Simples Quando uma classe herda as propriedades de uma

única classe pai.

Múltipla Ocorre quando uma classe tem mais de um pai.

Page 67: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

HERANÇA Criando uma classe derivada

public class Pessoa{

public string nome;protected int id;

public void Cadastrar() { /* rotina para cadastrar */ }

}public class Cliente : Pessoa{

public void Comprar(int idProduto) { /* ação */ }}...Cliente proximoCliente = new Cliente(“Rodrigo”);

proximoCliente.Cadastrar();proximoCliente.Comprar(100);

Page 68: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

HERANÇA Invocando um construtor da classe base na classe derivada

public class Pessoa{

public Pessoa(string nome){ Console.WriteLine(“Construindo Pessoa de Nome {0}”,nome); }

}public class Cliente : Pessoa{

public Cliente(string nome) : base(nome){ Console.WriteLine(“Construindo Cliente”); }

}...Cliente proximoCliente = new Cliente(“Rodrigo”);...Construindo Pessoa de Nome RodrigoConstruindo Cliente

Page 69: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

HERANÇA Classes Seladas – são classes que não podem ser extendidas ou

sobrescritas, ou seja, não podemos ter classes derivadas de classes seladas.

public sealed class Pessoa{

// Membros da Classe Pessoa}

Page 70: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

HERANÇA Em C#, as seguintes palavras-chave são úteis para

explorar o conceito de herança:

ABSTRACT •Indica uma classe, método ou propriedade que não admite instâncias diretamente.

OVERRIDE •Indica uma redefinição em uma classe derivada.

VIRTUAL •Indica um elemento da classe base que pode ser redefinido.

THIS •Indica um elemento da própria classe.

BASE •Indica um elemento da classe base.

SEALED •Indica uma classe que não admite derivadas.

Page 71: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

POLIMORFISMO

Polimorfismo significa: “Muitas Formas” e representa o fato de uma determinada característica ser diferente para cada filho.

Partimos de um objeto mais simples e que vai evoluindo. Os conceitos do objeto pai continuam a existir, mesmo que tenham sofrido modificações ou assumido novas formas.

Page 72: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

POLIMORFISMO

ObjetosPessoaObjetosPessoa

Diretor

Vendedor

Funcionario

ComportamentoComportamento

Parcerias

Vendas

Férias

MétodoInvocadoMétodo

Invocado

Viajar ()

Viajar ()

Viajar ()

Page 73: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

POLIMORFISMO Utilizando métodos virtuais

public class Pessoa {public virtual void Viajar() {

/* Ação */ }}public class Diretor : Pessoa {

public override void Viajar() { base.Viajar();/* Ações Particulares da Classe Diretor */

}}public class Vendedor : Pessoa {

public override void Viajar() { base.Viajar();/* Ações Particulares da Classe Vendedor */

}}

Page 74: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ENCAPSULAMENTO

Encapsulamento é o ato de esconder do usuário informações que não são de seu interesse.

O objeto atua como uma caixa preta, que realiza determinadas operações mas o usuário não sabe e não precisa saber exatamente como.

Basicamente o encapsulamento separa os elementos visíveis de um objeto dos invisíveis.

Page 75: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MODIFICADORES DE CLASSES Public: permite que a classe seja acessada por

qualquer assembly. Sealed: não permite que a classe seja herdada. Partial: permite que a classe tenha seu escopo

dividido em dois arquivos. Static: especifica que a classe somente tem

membros estáticos. Não pode ser instanciada. Abstract: define moldes para classes filhas. Não

pode ser instanciada.

Page 76: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MODIFICADORES DE MEMBROS Public: permite que os membros das classes sejam

acessados por qualquer outro escopo. Private: acesso restrito ao escopo da classe. Protected: acesso restrito a classe e as derivadas. Internal: permite acesso somente por classes do

mesmo assembly. Static: permite acesso, sem necessidade do objeto ser

instanciado. Abstract: são métodos de classes Abstract que não

possuem implementação. Virtual: permite que os métodos sejam sobrescritos por

classes filhas. Readonly: limita acesso a somente leitura aos atributos

da classe.

Page 77: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PROPRIEDADES São métodos que protegem acesso aos membros da classe

• Como acessar as propriedades

public string Nome{

get { return nomeCliente; }set { nomeCliente = value; }

}

string nomeCliente = novoCliente.Nome;novoCliente.Nome = “Steve Ballmer”;

Page 78: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LABORATÓRIO 2.2.3

Fase 2 - Aula 2

Page 79: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.
Page 80: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

AULA III Tópicos abordados:

Orientação a Objeto (Parte II) Membros de Classe Classes Abstratas Interfaces

Desenvolvendo para internet (Parte I) Html e Javascript ASP.NET e Ciclo de vida de uma página

Page 81: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ORIENTAÇÃO A OBJETO PARTE II

Aula 3

Page 82: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MEMBROS DE CLASSE Pertencem à classe e não às instâncias Podem ser atributos, propriedades e métodospublic class Cliente{

public static string tipoEntidade = “Teste”;public static void Excluir(int identificacao){

/* excluir cliente com essa identificação */}

}...Console.WriteLine(“Tipo de Entidade: {0}”,

Cliente.tipoEntidade);...int clienteId = 5;Cliente.Excluir(clienteId);

Page 83: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MEMBROS DE CLASSE Construtores de classe – estáticos, compartilhados,

globaisSão executados antes do primeiro objeto do tipo

em questão ser criado ou do primeiro método de classe ser invocado

Não possuem parâmetrosNão apresentam modificadores de acessoPodem co-existir com construtores de instânciasUtilizados para inicializar uma classe

Page 84: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MEMBROS DE CLASSE Construtores de Classe

public class Cliente{

private static Random numeroRandomico;public int senhaCliente;

static Cliente(){

numeroRandomico = new Random();}

public void CarregarSenha(){

senhaCliente = numeroRandomico.Next();}

}

Page 85: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CLASSES ABSTRATAS Pode acontecer que ao escrever um método para

uma classe base você não saiba como ele será implementado. Neste caso, a implementação será feita pela classe que herdar o método (a classe filha).

Pode acontecer também que você saiba que um determinado método será sobreposto com certeza na classe filha; então, por que definir sua implementação se ela não será usada?

Page 86: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CLASSES ABSTRATAS

Nestes casos você apenas define a assinatura do método e deixa a definição por conta da classe que irá herdar a classe pai.

Estas classes são então chamadas classes abstratas, o método que você não implementou é chamado de método abstrato.

As classes abstratas não podem ser instanciadas através da palavra chave New.

Page 87: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CLASSES ABSTRATAS Uma classe abstrata é uma classe base genérica

Contém métodos abstratos que devem ser implementados nas classes que derivam dela

Um método abstrato não apresenta implementação na classe base

Pode conter membros não-abstratos

public abstract class Pessoa {public abstract void Cadastrar();public abstract string Nome { get; set; }public abstract int Id { get; }public virtual void Viajar() { /* Ação */ }

}

Page 88: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CLASSES ABSTRATAS Derivando a classe abstrata e implementando os membros

abstratospublic class Diretor : Pessoa{

public override void Cadastrar(){ /* Ações */ }public override string Nome{

get { /* Implementação get */ }set { /* Implementação set */ }

}public override int Id{

get { /* Implementação get */ }}

}

Page 89: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTERFACES Uma interface é parecida com uma classe abstrata,

a diferença é que uma classe abstrata pode possuir métodos que não estejam implementados e pode possuir métodos que estejam implementados.

Uma interface possui somente métodos que não estão implementados e que devem ser implementados pela classe que usar a interface.

Page 90: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTERFACES Como o C# não suporta herança múltipla as

interfaces permitem que uma classe estenda múltiplas interfaces contornando o problema.

Uma interface no C# não pode conter atributos, somente pode ter métodos, propriedades e eventos. Todos os membros de uma interface são públicos e não podem usar um modificador de acesso.

Page 91: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTERFACES A classe que implementa a interface deve possuir a

definição de todos métodos existentes na interface. Esta definição deve possuir o mesmo nome e a mesma assinatura, retorno e parâmetros, do método na interface.

O nome da classe e o nome da interface são separados por dois pontos(:).

Page 92: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTERFACES Uma interface define a mesma funcionalidade e

comportamento à classes não relacionadas diretamente

Declarando a interface

public interface IProduto{

bool EPerecivel { get; }Fornecedor RecuperarFornecedor();void RegistrarVenda(Cliente cliente);

}

Page 93: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTERFACES Implementando a interface

public class Computador : IProduto{

private bool ePerecivel;public bool EPerecivel{

get { return ePerecivel; }}public Fornecedor RecuperarFornecedor(){

return new Fornecedor();}public void RegistrarVenda(Cliente cliente){

// Rotina para registrar vendas}

}

Page 94: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTERFACES IS e AS

if (computador is IProduto){

// ações}

IProduto produto = computador as IProduto;

if (produto != null){

Fornecedor fornecedor = produto.RecuperarFornecedor();}

Page 95: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTERFACES Pode tornar o comportamento de seus objetos

semelhante ao comportamento dos objetos da .NET Framework

Exemplos: ICollection IComparer IDictionary IEnumerable

public class Cliente : Pessoa, IComparable{

...}

Page 96: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURAS DE REPETIÇÃO foreach

Esta estrutura de repetição é uma variação do for. Sua diferença está no fato de ser necessário apenas

especificar uma variável e a coleção ou array cujos registros serão percorridos.

int[] i = { 1, 3, 5, 7, 9 };foreach (int j in i){ Response.Write(j); Response.Write("<br />");}

Page 97: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURAS Estruturas são tipos por valor, que podem conter:

Um construtor Constantes Atributos Métodos Propriedades

Uso recomendado para representar objetos leves e/ou que eventualmente podem constituir arrays de grande dimensão.

Não podem ser herdados, porem podem implementar Interfaces.

Page 98: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURAS Exemplo de uma estrutura:struct Circulo { private int _raio; // Atributo

public double Circunferencia // Propriedade { get { return 2 * _raio * Math.PI; } }

// Regra específica para retornar um valor.

public Circulo(int raio) // Construtor com um argumento { this._raio = raio; } // Atribuição do valor do

argumento} // para o atributo do objeto.

... Dentro do evento Page_Load

Circulo meuCirculo = new Circulo(10);// Instancia de uma estrutura.Response.Write(meuCirculo.Circunferencia);// Imprime o valor de uma propriedade

}

Page 99: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ESTRUTURAS Exemplo de overload de métodos:

... Dentro da mesma estrutura do exemplo anterior:

public void DiminuirRaio(){ // Método simples sem argumentos if (_raio > 1) _raio--;}

public void DiminuirRaio(int valor){// Overload do método anterior if (_raio - valor > 1) // com um argumento _raio -= valor;}

... Dentro do evento Page_Load

meuCirculo.DiminuirRaio(); // Chamando o método sem argumentosmeuCirculo.DiminuirRaio(2); // Chamando o overload

// do método anterior

Page 100: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LABORATÓRIO 2.3.1

Fase 2 - Aula 3

Page 101: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

DESENVOLVENDO PARA INTERNET

PARTE I

Aula 3

Page 102: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

COMO FUNCIONA UM WEB SITE

Servidor WebBrowser ClienteInternet

Page 103: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

HTML Nasceu com a finalidade de estabelecer uma forma

simples para publicar sites na internet. Significa de forma literal, linguagem de marcação

de hipertexto. Sua estrutura mais básica compreende da tag

“<html>” delimitando o documento, dentro desta tag existe um cabeçalho delimitado pela tag “<head>” e corpo delimitado por “<body>”, onde se coloca os textos, imagens, vídeos...

Page 104: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

HTML Comentários em HTML

As tags ou marcadores são estruturados da seguinte forma:

<!-- Inicio da tag --><nome_da_tag atributo=“valor”>

<!-- Fim da tag --></nome_da_tag>

<!-- ou uma tag vazia --><nome_da_tag atributo=“valor”>

<!-- Comentário -->

Page 105: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

HTML Definindo o título de uma página.

Formatando um texto

<html> <head> <title>Meu Título</title> </head></html>

<html> <head></head> <body> <b>Texto em negrito</b><br /> <i>Texto em itálico</i> </body></html>

Page 106: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LINKS ÚTEIS Maiores informações sobre HTML e suas tags:

http://www.w3schools.com/html/http://www.w3schools.com/tags/

Page 107: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

JAVASCRIPT É uma linguagem de programação do lado do

cliente (client-side), interpretada pelos browsers. Comumente utilizada para validação de formulários

e comunicação de forma assíncrona de dados com o servidor (conceito conhecido como AJAX).

Pode tanto aparecer em blocos delimitados por tags “<script>” em documentos html ou em arquivos separados.

<!-- JavaScript em blocos delimitados --><script language="javascript“> alert(“Mensagem”);</script>

<!-- Link para um arquivo de códigos JavaScript --><script src=“codigos.js" type="text/javascript"></script>

Page 108: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

JAVASCRIPT Exemplo:<html><head> <script language="javascript“>

function Carregar() { document.getElementById(“texto").innerHTML = "Pronto..."; }

</script></head><body> <a href="#" onclick=“Carregar()">Próxima página</a> <div id=“texto"></div></body></html>

Page 109: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

JAVASCRIPT O Visual Studio oferece aos desenvolvedores,

além de inline sense para JavaScript, compatibilidade entre os objetos criados no servidor com os pseudos objetos JavaScript presentes no cliente, lembrando que JavaScript não é Orientado a Objeto.

Page 110: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LINKS ÚTEIS Maiores informações sobre JavaScript:

http://www.w3schools.com/js/

Artigo sobre a pseudo orientação a objeto do JavaScript no Visual Studio:http://msdn.microsoft.com/pt-br/magazine/cc163419.aspx

Page 111: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ASP.NET Tecnologia mais evoluída e mais flexível,

sucessora do Active Server Pages (ASP) O processamento dos formulários web (Web

Forms) são feitos do lado do servidor (Server-side) Independente de linguagem Possui grande facilidade para interagir com Web

Services, assim como facilidade para desenvolver um.

Independente de browser (o .NET Framework reconhece a versão do browser e envia o código html e script correspondente)

Page 112: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ASP.NET O ASP.NET pode ser utilizado com qualquer

linguagem suportada pelo CLR. Permite separação entre código e o design da

página. Provê, além de muitas outras funcionalidades,

facilidade de gerenciamento de persistência de estado no lado cliente (view state) e no lado servidor (session).

Page 113: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

COMPONENTES DE UMA PÁGINA ASP.NET Componente Visual

Visão de Design Visão de HTML

Lógica de interface de usuário

Class MeuWebFormClass MeuWebForm

Bem-Vindo!Bem-Vindo!

Nome:Senha:

OKComponent

e Visual

MeuWebForm.aspx.cs

MeuWebForm.aspx

Lógica de interface

MeuWebForm

Ambos arquivos compõem MeuWebForm

Bem-vindo!Bem-vindo!

Nome:Senha:

OK

Page 114: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

COMO IMPLEMENTAR CÓDIGO Três métodos para adicionar código:

Colocando código no mesmo arquivo do conteúdo (misto)

Colocando código numa sessão separada (code-block) no arquivo de conteúdo (código inline)

Colocando código em um arquivo separado (code-behind pages)

Code-behind pages é a opção padrão no Visual Studio .NET

Page 115: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ASP.NET VANTAGENS Permite criação de Web Forms, Mobile Web Forms e Web

Services. ASP.NET é parte do .NET Framework. Múltiplas linguagens e programação orientada a objetos:

C#,VB.Net, C++.Net, etc. Com o Visual Studio.NET:

Ferramenta RAD para construção de aplicações web. Suporte Debugging.

Separação de Código e Interface. Proteção de Código Fonte. Mantém automaticamente o estado da página. Suporte MultiBrowser. Simples Validação dos Forms. Para grande parte das aplicações não é necessário conhecer

HTML e JavaScript.

Page 116: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CICLO DE VIDA DE UMA PÁGINA ASP.NET O ciclo de vida de uma página ASP.NET apresenta

cinco estágios básicos:

Page_Init

ValidationEvent

Handling

Page_Unload Page_Load

Page 117: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

COMO FUNCIONA O ASP.NET?

ExecutaServer-Side

Code (ASP.NET)

Armazena Dados deSessão

EnviaResposta

ProcessaRequisiçõesdo Cliente

Cliente recebe página em

HTML

Cliente inicia comunicação

com o servidor

Page 118: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTERNET INFORMATION SERVICES (IIS) Conjunto integrado de serviços de rede Permite publicar conteúdo e disponibilizar arquivos

e aplicações em um ambiente Internet/Intranet. Integrado ao sistema operacional Dotado de uma interface administrativa cem por

cento gráfica Web Server Hospedagem de web sites

Site FTP e grupos de notícias Diretório Virtual

Page 119: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

IDE - SERVIDOR WEB INTERNO Utilizado durante o desenvolvimento da aplicação Não necessita de configurações adicionais Não precisa IIS, porém pode ser integrado a ele Não necessita Extensões FrontPage

Page 120: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

DEMONSTRAÇÃO

Fase 2 - Aula 3

Page 121: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.
Page 122: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

AULA IV Tópicos abordados:

Desenvolvendo para internet (Parte II) Eventos e Controles Master Page Manutenção de Estados

ASP.NET e C# User Controls Eventos e Delegates

Page 123: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

DESENVOLVIMENTO PARA INTERNET

PARTE II

Aula 4

Page 124: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ADICIONANDO EVENTOS Muitos eventos são disparados através de ações de usuários

captadas pelo navegador O código para manipular o evento disparado é executado no

servidor Quando o código completa sua execução, a página web

pronta é enviada de volta ao navegador (contendo código html e script)

Page 125: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ADICIONANDO CONTROLES Para adicionar um controle Web server

Na visualização de projeto (Design), arraste o controle desejado da aba Web Forms da Toolbox

Para adicionar um controle HTML server Arraste para a página um controle HTML da tab HTML

da Toolbox

Page 126: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES Button: Botão CheckBox: Caixa para selecionar ou não um item Label: Texto que não pode ser editado diretamente LinkButton: Um botão com aparência de link ListBox: Lista para escolha de uma ou mais

opções RadioButton: Caixa para selecionar ou não um

item.

Page 127: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES Gridview – tabela para exibição de dados de fácil

preenchimento e integração com BD, com controle de paginação e ordenação automáticos e suporte a templates.

Page 128: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES DataList: Mecanismo parecido com o GridView,

porém, com menos recursos Repeater: Mecanismo parecido com o GridView,

porém mais flexível e leve DropDownList: Lista para escolha de uma das

opções. Bastante útil quando se quer que as opções sejam extraídas de um banco de dados

Image: Exibição de uma imagem

Page 129: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES Wizard – permite criar um formulário passo a

passo.

Page 130: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES SiteMap – permite criar um menu de navegação

baseado na página que o usuário está acessando.

Page 131: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES Menu – permite criar um menu com links de

maneira estática ou dinâmica. Pode utilizar o mesmo arquivo XML do SiteMap.

Page 132: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MASTER PAGE Criar uma Herança Visual para o Web Site. Manutenção centralizada, não é necessário mudar o

código em várias páginas, apenas em uma. Facilidade na criação do layout. Reaproveitamento de código.

Page 133: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MASTER PAGE

Page 134: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

MASTER PAGE

Page 135: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

SESSION Uma das formas mais simples de manutenção de

estado é através de variáveis de sessão

Por padrão, estas informações estão armazenadas no próprio processo do ASP.NET

É possível armazenar informações de sessão em um processo separado (um servidor de estado) ou até mesmo em um Sistema Gerenciador de Banco de Dados

Page 136: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

SESSION Uma variável de sessão está associada

exclusivamente a uma única sessão.

Isto significa que um dado armazenado em uma variável de sessão com nome X para o usuário João não será visível na variável de sessão de mesmo nome do usuário Pedro, e vice-versa.

Session[“X"] = “S2B”;

string nome = (string)Session[“X"];

Page 137: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

SESSION - EVENTOS ASSOCIADOS Presentes no Global.asax

protected void Session_Start(Object sender, EventArgs e){

//Evento disparado quando a uma sessão é iniciada.}

protected void Session_End(Object sender, EventArgs e){

//Evento disparado quando a sessão é finalizada.}

Page 138: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

Variável de estado da aplicação Visível em toda aplicação para TODOS usuários Exemplos de uso:

Chat Contador de Acessos

Exemplo:

APPLICATION

Application[“ContadorAcessos”] = 0;

Page 139: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

APPLICATION - EVENTOS ASSOCIADOS Presentes no Global.asaxprotected void Application_Start(Object sender, EventArgs e){

//Evento disparado quando a aplicação é iniciada.}

protected void Application_End(Object sender, EventArgs e){

//Evento disparado quando uma aplicação é finalizada.}

Page 140: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

VIEWSTATE

Mantêm automaticamente os valores de controles de servidor entre um postback e outro

Internamente funciona como um campo oculto (hidden) um pouco mais sofisticado

Page 141: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

VIEWSTATE

Ao rodar uma aplicação ASP.NET sem qualquer controle verá que é criado um campo oculto para o armazenamento do ViewState:

Note que os dados não são exibidos em texto plano, por questões de segurança

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGS8mO25pQR00V4slvgSxG3dEvK+hA==“ />

Page 142: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

VIEWSTATE

Pode-se ainda adicionar manualmente valores a um ViewState, lembrando que você vai conseguir recuperá-los apenas na mesma página

ViewState.Add("Nome“, “Bill“);

String nome = (string) ViewState[“Nome”];

Page 143: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

COOKIE

Trata-se de um pequeno arquivo de texto que é armazenado na maquina do usuário

Usado, por exemplo, em sites de comércio eletrônico, para exibir as preferências e características do usuário

Pode identificar o usuário mesmo dias depois de seu acesso a página.

O grande problema dos cookies é que o usuário simplesmente pode desabilitar este recurso em seu navegador

Page 144: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

COOKIE

Escrevendo um Cookie

//Cria um novo cookie, passando o nome no construtorHttpCookie cookie = new HttpCookie(“Nome”);

//Determina o valor o cookiecookie.Value = “Márcio”;//Configura o cookie para expirar em 1 minutoDateTime dtNow = DateTime.Now;TimeSpan tsMinute = new TimeSpan(0, 0, 1, 0);cookie.Expires = dtNow + tsMinute;//Adiciona o cookieResponse.Cookies.Add(cookie);

Page 145: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

COOKIE Lendo um Cookie

//Pega o nome do que cookie que o usuário informouString strCookieName = NameField.Text;

//Captura o cookieHttpCookie cookie = Request.Cookies[strCookieName];

String strCookieValue = “Vazio”;

//Certifica-se que o cookie existeif (cookie != null) strCookieValue = cookie.Value.ToString();

Page 146: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

WEB.CONFIG Arquivo no formato XML Informações de configuração da sua aplicação, tais

como, string de conexão, páginas de erro, modo de compilação,etc.

Armazenar valores e parâmetros que sejam comuns a toda nossa aplicação.

Case Sensitive

Page 147: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LABORATÓRIO 2.4.1

Fase 2 - Aula 4

Page 148: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ASP.NET E C#PARTE I

Aula 4

Page 149: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

USER CONTROLS Controle web criado por um usuário. Possui extensão .ascx Herda de System.Web.UI.UserControl Simplificam a reusabilidade de código e

componentes User interface (UI) dentro de uma aplicação Web

Contém HTML, mas não as tags <HTML>,<BODY> ou <FORM>

Contém código para gerenciar seus próprios eventos

Podem agregar vários controles em um componente reusável

Page 150: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

USER CONTROLS Exemplo de User Control

Page 151: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

EVENTOS E DELEGATES Conceitos:

Evento: ação que pode ser gerenciada/manipulada através de código

Delegate: membro da classe responsável por “delegar” as ações correspondentes a ocorrência de um evento ao(s) manipulador(es) de eventos correspondentes

Manipulador de Evento: método responsável pela execução de ações em reação a ocorrência de um evento

Page 152: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

EVENTOS E DELEGATES Cinco passos para se trabalhar com eventos

Passo 1: declarar o delegate contendo a assinatura do manipulador de evento correspondente ao evento

Passo 2: declarar o evento (deve ser do mesmo tipo do delegate correspondente)

public class Cliente {

public delegate void delegateProdutos(int produtos);}

public class Cliente {

public delegate void delegateProdutos(int produtos);public event delegateProdutos EventoProdutos;

}

Page 153: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

EVENTOS E DELEGATESPasso 3: disparar o evento na chamada de algum

método da classe

Passo 4: assinar o evento indicando o manipulador de eventos do mesmo através de uma instância de delegate

public class Cliente {

...public void MetodoEvento(int produtosAdquiridos) {

this.EventoProdutos(produtosAdquiridos); }}

cliente.EventoProdutos += new Cliente.delegateProdutos(ManipuladorEvento);

Page 154: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

EVENTOS E DELEGATESPasso 5: implementar o manipulador de evento

(deve respeitar a mesma assinatura definida pelo delegate do evento)

public void ManipuladorEvento(int produtos){

label1.Text = produtos.ToString();}

Page 155: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LABORATÓRIO 2.4.2

Fase 2 - Aula 4

Page 156: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.
Page 157: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

AULA V Tópicos abordados:

ASP.NET e C# (Parte II) Partial Types Nullable Types Collections e Generics

Page 158: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ASP.NET E C#PARTE II

Aula 5

Page 159: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PARTIAL TYPES Recurso da versão 2.0 Permite dividir a implementação de um

determinado tipo em diversos arquivos. Disponível para classes, estruturas e interfaces. Definidos pela palavra-chave partial.

Page 160: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PARTIAL TYPES Quando podem ser utilizados:

Quando trabalhamos com código gerado automaticamente, código pode ser adicionado à classe sem ter que recriar o arquivo fonte.

Partial Types permitem que dois ou mais desenvolvedores trabalhem no mesmo tipo, enquanto ambos têm seus arquivos checados para edição, sem interferir um no outro.

Page 161: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PARTIAL TYPES Declarando uma classe parcial

public partial class Cliente{

public int codigo;public bool EClienteEspecial() { … }

}

public partial class Cliente{

int produtosAdquiridos;public int ProdutosAdquiridos {

get { … } set { … }

}}

ClienteP1.cs

ClienteP2.cs

Page 162: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PARTIAL TYPES Declarando uma classe parcial agrupada em uma classe

public partial class Cliente {int produtosAdquiridos;public partial class ClientesEspeciais {

static List<Cliente> lista = new List<Cliente>();}

}

public partial class Cliente {public partial class ClientesEspeciais {

public void Adiciona(Cliente c) {if (c.EClienteEspecial)

ClientesEspeciais.lista.Add(c);}

}}

ClienteP1.cs

ClienteP2.cs

Page 163: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PARTIAL TYPES As partes de uma classe não podem definir

aspectos contraditórios. Uma classe (ou estrutura) pode ter dois tipos de

aspectos ou qualidades: acumulativa e não-acumulativa.

Os aspectos acumulativos são aspectos que cada parte do tipo parcial pode escolher adicionar, como derivação de interfaces, propriedades, índices, métodos e variáveis.

Os aspectos não-acumulativos são aspectos que todas as partes do tipo parcial devem possuir.

Page 164: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PARTIAL TYPES Classes Acumulativas

Classes Não-Acumulativas

public partial class Computador {} // CompP1.cspublic partial class Computador : IProduto {// CompP2.cs

public void Adiciona() {...}public void Remove() {...}

}

public class Pessoa {}public class Funcionario {}public partial class Vendedor : Pessoa {} // VendedorP1.cspublic partial class Vendedor : Pessoa {} // VendedorP2.cs//Não compilapublic partial class Vendedor : Funcionario {}

Page 165: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PARTIAL TYPES Todas as partes devem ter a mesma

acessibilidade. Além de todas as partes definirem as mesmas

partes não-acumulativas, apenas uma parte pode fazer o override de um método virtual ou abstract, e apenas uma parte pode implementar uma mesma interface.

Ao usar Partial Types, é recomendável indicar no nome do arquivo que este contém partes de um tipo. Como por exemplo: MinhaClasseP1.cs, MinhaClasseP2.cs

Page 166: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

NULLABLE TYPES Recurso da versão 2.0. Variáveis continuam a representar todos os valores

do seu tipo, e mais um valor adicional null. Permite uma integração melhor com bancos de

dados, que podem conter valores null em seus campos.

Declaradas através da classe Nullable, ou através do operador ? adicionado ao tipo à ser utilizado.

Page 167: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

NULLABLE TYPES Podem ser declaradas de duas formas:

System.Nullable<T> variavel; <T>? variavel;

Onde T é o tipo da variável Ambas notações funcionam de maneira equivalente Declarando e usando uma variável inteira e anulável

int? clienteId;clienteId = 10; //OkclienteId = null; //Ok, clienteId é anulável

Page 168: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

NULLABLE TYPES Qualquer tipo por valor pode ser usado como Nullable Type

Os exemplos seguintes não são tipos por valor, portanto não são aceitáveis como Nullable Types

int? i = 10;double? x = 3.14;bool? flag = null;char? letra = 'a';int?[] MeuArray = new int?[10];

string? variavel = “tipos anulaveis”;Cliente? umCliente = new Cliente?();

Page 169: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

NULLABLE TYPES O operador as só pode ser utilizado com tipos por referência,

então não pode ser usado com Nullable Types

Uma instância de um tipo anulável possui duas propriedades read-only HasValue: do tipo bool, retorna verdadeiro quando uma

variável contém um valor não-nulo. Value: do tipo equivalente ao tipo anulável utilizado, se

HasValue é true, então Value contém um valor significativo, senão, ao tentar acessar Value será gerada uma exception.

int clienteId = 5;object b = clienteId;// Erro em tempo de compilaçãoint? c = b as int;

Page 170: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

NULLABLE TYPES Utilizando as propriedades de um tipo anulável

Conversões explícitas Um tipo anulável pode ser convertido para um tipo regular

usando casts ou usando a propriedade Value. Se o tipo anulável contém o valor null, será gerada uma

exception.

int? clienteId = 10;if (clienteId.HasValue)

Console.WriteLine(clienteId.Value);else

Console.WriteLine(“Identificação Indefinida!”);

Page 171: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

NULLABLE TYPES Conversões explícitas

Conversões implícitas A conversão de um tipo anulável para um tipo regular é

implícita.

// Exemplosint? clienteId = null;// Não compilaint x = clienteId;// Compila, mas será gerada uma exception se x for nullint x = (int)clienteId;// Compila, mas será gerada uma exception se x for nullint x = clienteId.Value;

int? produtosAdquiridos = null;// Conversão implícitaint produtosAdquiridos = 10;

Page 172: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

NULLABLE TYPES Operadores

Quaisquer operadores existentes para tipos por valor podem ser utilizados com Nullable Types.

O operador produzirá null se os operandos forem nulos, caso contrário, usará o valor contido para calcular o resultado.

int? x = 10;x++; // x agora é 11x = x * 10; // x agora é 110int? y = null; x = x + y; // x agora é null

Page 173: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

NULLABLE TYPES Operadores

Quando são feitas comparações com Nullable Types, se ambos os Nullable Types são null, então a comparação sempre retornará false. O caso oposto retornará true.

A conclusão contida na expressão else não é válida porque produtosAdquiridos é null, portanto, não contém nenhum valor. Logo, não pode ser maior ou menor que x.

int? x = 250;int? produtosAdquiridos = null;if (x >= produtosAdquiridos)

Console.WriteLine(“Adquiriu mais de {0} produtos.”,x);else // Não é válido

Console.WriteLine(“Adquiriu menos de {0} produtos.”,x);

Page 174: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

NULLABLE TYPES O operador ??

Define um valor padrão que é retornado quando um tipo anulável é atribuído à um tipo não-anulável.

Também pode ser utilizado com vários Nullable Types

// Exemploint? produtosAdquiridos = null;// Atribui o valor 0 à y se produtosAdquiridos for nullint y = produtosAdquiridos ?? 0;

int? limiteCredito;int? valorDefault;// Se limiteCredito não for null, z = limiteCredito.// Se limiteCredito for null, z = valorDefault.int? z = limiteCredito ?? valorDefault;

Page 175: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BIBLIOTECA DE COLEÇÕES Namespace System.Collections

ArrayList Queue Stack ...

Namespace System.Collections.Generic List<T> Dictionary<K, V> ...

Page 176: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ARRAYLIST ArrayList não precisa ter um tamanho predefinido. Pode carregar ou preencher um array. Possui métodos específicos para manipular seus

elementos.

int[] codigos = {1,2,46,32,78};ArrayList listagem = new ArrayList(codigos); //Carrega um array

listagem.Remove(46); //Remove um elementolistagem.Add(10); //Insere um novo elementoResponse.Write(listagem.Count); //Imprime seu tamanho atual

int i = (int) listagem[2]; //Passa o valor 32//para a variável i

listagem.Sort(); //Ordena os elementoslistagem.CopyTo(codigos); //Preenche um array

listagem.Clear(); //Remove todos elementos

Page 177: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

STACK Semelhante ao ArrayList, não precisa ter um

tamanho predefinido e possui métodos específicos para manipular seus elementos.

Os últimos elementos inseridos pelo método Push são os primeiros a serem retornados pelo método Pop, da mesma forma que uma pilha:

Stack pilha = new Stack();pilha.Push("blusas");pilha.Push("camisetas");pilha.Push("camisas");

Response.Write(pilha.Pop());

// imprime o último elemento inserido // no caso o primeiro da coleção “camisas”

Page 178: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

QUEUE Semelhante ao Stack, porém trabalha de forma

contrária. Seu método Dequeue retorna os primeiros inseridos pelo método Queue, semelhante a uma fila:

Queue fila = new Queue();fila.Enqueue("Idosos"); fila.Enqueue("Grávidas"); fila.Enqueue("Deficientes"); fila.Enqueue("Funcionários");

Response.Write(fila.Dequeue());

// imprime o primeiro elemento inserido // no caso o primeiro da coleção “Idosos”

Page 179: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LIST<T> Semelhante a um ArrayList, mas somente permite

a inserção elementos de um tipo predefinido.

List<int> listagem = new List<int>(); //Instancia uma lista de //inteiros

listagem.Add(39); //Insere um novo elementolistagem.Add(22); //Insere um novo elemento

Response.Write(listagem.Count); //Imprime seu tamanho atual

listagem.Sort(); //Ordena os elementos

listagem.Clear(); //Remove todos elementos

Page 180: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

DICTIONARY<K, V> Semelhante a List<T>, porem permite o uso de

uma chave ‘K’ de um tipo predefinido, para referenciar um valor do tipo ‘V’.

Dictionary<string, string> dic = new Dictionary<string, string>();//Instancia um dicionário string-string

dic.Add(“Name”, “Nome”);dic.Add(“Day”, “Dia”);

dic.Remove(“Day”);

Response.Write(dic[“Name”]);

Page 181: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LABORATÓRIO 2.5.1

Fase 2 - Aula 5

Page 182: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.
Page 183: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

AULA VI Tópicos abordados:

AJAX.NET Web Services

Page 184: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

AJAX

Aula 6

Page 185: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ROADMAP DA APRESENTAÇÃO VISUAL

HTML

Fácil utilização, personalização, diferenciação, riqueza

HTML + JavaScript

ASP.NET AJAX

WPFRiqueza para a camada de

apresentacao

• Aumenta a interação do usuário• Aumenta a Experiência

• Melhora Navegação• Facilita a Personalização

• Grande Alcance

renda/u

suári

o

SilverLight (‘WPF/e’)• A “Media Web”

Page 186: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONVERGÊNCIA WEB E DESKTOP Aplicação Desktop

Interativa Rápida Difícil Implantação Desatualizada Roda no Cliente

Aplicação Web Estática Lenta Fácil Implementação Sempre Atualizada Roda no Servidor

RIA - Rich Internet Application

Page 187: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

EXPERIÊNCIA DO USUÁRIO A web hoje é dinâmica? O mesmo conteúdo é apresentado a todos os

usuários Aplicações Web ainda perdem de aplicações

Desktop Alternativas

Java Applets SilverLight Macromedia Flash

Page 188: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PROBLEMAS EM UMA APLICAÇÃO WEB Post-backs forçam que a página seja recarregada

a cada clique. Não mantém o estado da página naturalmente

(stateless). Interfaces ricas são de difícil concepção. “Lenta” em relação a aplicações de clientes ricos

(desktop).

Page 189: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

SOLUÇÃO PARA APLICAÇÕES WEB RIA – Rich Internet Application Web 2.0

AJAX

Page 190: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

AJAX CONCEITOS AJAX = “Asynchronous Javascript And XML”.

É um conjunto de recursos e tecnologias, presentes há algum tempo, nas linguagens e navegadores atuais.

AJAX não é tecnologia. É um conjunto de técnicas que tem como objetivo promover uma melhor e mais rica experiência de uso.

AJAX faz uso das características da linguagem JavaScript, da portabilidade e flexibilidade do padrão XML e dos recursos de chamada assíncronas que foram implementadas nos navegadores.

Page 191: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

AJAX - XMLHTTPREQUEST Objeto que a linguagem Javascript implementa e

está presente nos navegadores : Internet Explorer 5.0+, Safari 1.2, Mozilla 1.0 / Firefox e Netscape7.

Tem a capacidade de executar a leitura remota de dados de forma assíncrona, permitindo assim a execução de outras tarefas imediatamente após a chamada.

Retorna dados em formato XML e Texto.

PADRÃO RECONHECIDO PELO W3C! http://www.w3.org/TR/XMLHttpRequest/

(05/04/06)

Page 192: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

FRAMEWORK ASP.NET AJAX Framework para criação de uma nova geração de

aplicações web, com interfaces ricas, interativas, personalizadas e baseadas em padrões Biblioteca de scripts para cliente Componentes para servidor Integra funções do cliente com funções do ASP.NET

Desenvolvimento de aplicações com “estilo AJAX”

Page 193: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ASP.NET AJAX

Produtividade incrementada Menos conceitos e complexidade Menos linhas de código

Fácil de criar, debugar e manter Separação clara do conteúdo, estilo, ações e código Perfeitamente integrado as ferramentas de design e

desenvolvimento

UM FRAMEWORK PARA DESENVOLVER UMA EXPERIÊNCIA NA WEB MAIS RICA, INTERATIVA E PERSONALIZADA

Page 194: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES - SCRIPTMANAGER Controle responsável por gerenciar todos os scripts

utilizados por páginas ASP.NET AJAX

Porque usar o ScriptManager? Tornar disponível as funcionalidades das bibliotecas do

ASP.NET AJAX e manter a compatibilidade com demais scripts utilizados dentro de páginas que implementam essa tecnologia

Habilitar o recurso de Partial-Page Rendering possibilitando que partes independentes da página possam ser atualizadas sem gerar um postback

Componente obrigatório quando se deseja utilizar os componentes como UpdatePanel, UpdateProgress e Timer

Page 195: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES - UPDATEPANEL Controle ASP.NET AJAX que cria um painel

atualizável em uma página ASP.NET AJAX, permitindo post-backs baseados em XmlHttpRequest

<asp:UpdatePanel ID="UpdateMaster“ runat="server"> <ContentTemplate> <div> <asp:GridView ID="GridView1" runat="server" />

... </asp:GridView> </div> </ContentTemplate></asp:UpdatePanel>

Page 196: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES - UPDATEPANEL O controle UpdatePanel do ASP.NET AJAX

permite que você crie aplicações web com uma interface mais interativa e amigável com o usuário

Usando este controle você pode atualizar partes selecionadas de uma página ao invés de atualizar toda a página web usando um postback

Page 197: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES - UPDATEPANEL Ciclo de vida de um postback utilizando o ASP.NET

AJAX ASP.NET AJAX intercepta as ações de postback da página Usa XMLHttpRequest para disparar o postback ao servidor que

ocorre normalmente Apenas os conteúdos dos UpdatePanel são retornados As regiões alteradas no UpdatePanel são atualizadas no Cliente Todos os postbacks gerados por controles dentro do

UpdatePanel serão tratados como postback Ajax com atualizações incrementais da página

Postbacks para controles fora do UpdatePanel transcorrerão da forma convencional por padrão

Page 198: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONTROLES - UPDATEPANEL Adicionando Triggers em um UpdatePanel para

permitir que outros controles disparem postback assíncrono Controles fora de um UpdatePanel podem disparar um

postback assíncrono

<asp:UpdatePanel ID="UpdatePanel1" runat="server"><Triggers>

<asp:AsyncPostBackTrigger ControlID="Button1“ EventName="Click"/> </Triggers></asp:UpdatePanel>

Page 199: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

APRIMORANDO CONTROLES EXISTENTES Control Extenders

Estender controles ASP.NET com funcionalidades de controles ASP.NET AJAX

Encapsular comportamentos tanto no lado do cliente quanto do lado do servidor

Mesmo modelo de programação de controles ASP.NET

<asp:TextBox runat="server" ID="TextBox1" /><asp:AutoCompleteExtender runat="server" ID="AC1”

TargetControlID="TextBox1" ServicePath="AutoComplete.asmx“ServiceMethod="GetWords" Enabled="true" MinimumPrefixLength="1" />

Page 200: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

Prove feedback no processo de atualização durante um postback assíncrono

CONTROLES – UPDATEPROGRESS

<asp:UpdateProgress ID="UpdateProgress1“ runat="server"> <ProgressTemplate> Please Wait ... </ProgressTemplate> </asp:UpdateProgress>

Page 201: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ASP.NET AJAX CONTROL TOOLKIT Um rico conjunto de controles e extenders que

transformam a tarefa de construir uma interface rica utilizando ASP.NET AJAX uma tarefa simples e rápida Exemplos de fácil compreensão, código fonte e

documentação completa SDK que simplifica a criação de componentes ASP.NET

AJAX mais de 30 componentes e extenders

Projeto não suportado pela MicrosoftEste é um projeto comunitário suportado e disponível no CodePlex

Page 202: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

Toolkit ControlsAccordion NoBot

AlwaysVisibleControl NumericUpDown

Animation PagingBulletedList

CascadingDropDown PasswordStrength

CollapsiblePanel PopupControl

ConfirmButton Rating

DragPanel ReorderList

DropDown ResizableControl

DropShadow RoundedCorners

DynamicPopulate Slider

FilteredTextBox TextBoxWatermark

HoverMenu ToggleButton

ModalPopup UpdatePanelAnimation

MutuallyExlcusiveCheckBox ValidatorCallout

Page 203: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LABORATÓRIO 2.6.1

Fase 2 - Aula 6

Page 204: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

WEB SERVICES

Aula 6

Page 205: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

O QUE É WEB SERVICE? É um serviço disponível na Internet, através de

um Servidor Web Possui funções contendo suas regras de

negócios, que podem ser acessadas através de aplicativos

Possibilita a comunicação entre Sistemas Tecnologia que torna possível realizar

transações, troca de dados entre empresas, que antes eram difíceis ou impossíveis

Page 206: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

WEB SERVICES - CARACTERÍSTICAS São baseados em Padrões da Web Os dados trafegam em formato XML, através

do protocolo SOAP Independente de plataforma, ou seja, sistemas

heterogêneos podem se comunicar facilmente Pode retornar vários tipos de dados, como por

exemplo uma tabela do banco de dados

Page 207: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

POR QUE WEB SERVICES? Necessidade de Integração entre Negócios (B2B) Tendência do Software como Serviço

Page 208: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PRÉ-WEB SERVICES Disquete, Email, FTP ou Compartilhamento de

Redes Comunicação Aplicativo X Aplicativo

Banco de Dados Arquivos (Ex: Texto, como CSV; ou em Protocolo

Específico) Invocação de Objetos Remotos (Ex: CORBA, DCOM, IIOP,

ORB)

Page 209: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

PRÉ-WEB SERVICES - PROBLEMAS

Tecnologias dependentes de plataforma Difícil integração (necessidade de bridge) Criava-se um pequeno protocolo de

comunicação Necessidade de Transformação de Dados Pouco segura, complexas, caras, baixa

produtividade e pouco robustas

Page 210: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

UMA SOLUÇÃO INTEGRADA... Deve ser independente de software e hardware Prover Serviços através das barreiras existentes

entre diferentes companhias Promover automação

Como conseguir tudo isso?

Web Services!

Page 211: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTEGRAÇÃO ENTRE PLATAFORMAS

Web ServicesIntegration

Plataforma Integrada Microsoft

AS400

OS390Linux

Unix

Page 212: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

O QUE É O SOAP? Simple Object Access Protocol Define como as mensagens podem ser trocadas

entre dois sistemas Define uma estrutura XML de troca de mensagens

que pode chamar e retornar resultados a partir de uma aplicação.

Page 213: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

VANTAGENS DO SOAP Independente de plataforma Fácil de ‘traduzir’. (decodificar) Pode ser veiculado pela porta 80, sem a

necessidade de abrir portas no firewall

Page 214: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

WEB SERVICESWEB SERVICES

Cliente do Web ServiceWindows Application

SOAPMessage

XML

SOAPMessage

XML

SOAPMessage

XML

SOAPMessage

XML

XMLWeb Service

SOAPResponse

SOAPRequest

Rede

HTTPMessage

HTML

HTTPMessage

HTML

HTTPRequest

GET- POST

Servidor Web

Page 215: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

WEB APP + WEB SERVICESWEB APP + WEB SERVICES

Cliente doWeb

Service

Web App

HTTPMessage

HTML

HTTPMessage

HTML

SOAPMessage

XML

SOAPMessage

XML

SOAPMessage

XML

SOAPMessage

XML

XMLWeb Service

Browser

HTTPResponse

HTTPRequest

SOAPResponse

SOAPRequest

Rede Rede

HTTPMessage

HTML

HTTPMessage

HTML

HTTPRequest

GET- POST

HTTPMessage

HTML

HTTPMessage

HTML

ServidorWeb

Page 216: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

O QUE É O WSDL? WSDL – Web Services Description Language Documento XML que define as interfaces de seu

Web Service Mostra os métodos e suas assinaturas

Page 217: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

O QUE É O DISCO E UDDI? DISCO (Discovery of WS) & UDDI (Universal Description, Discovery and

Integration) “Engine de Busca por Web Services” “Páginas Amarelas”

http://www.uddi.org http://uddi.microsoft.com http://uddi.ibm.com http://uddi.sap.com

Page 218: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

Acha o Serviço

Conversando (SOAP)

Tempo de Desenvolvimento Tempo de Execução

Como conversar? (WSDL)

Pesquisa o Serviço

ClienteDo

WebService

UDDI

WebService

http://www.uddi.org

URL de um documento DISCO ou WSDL

http://yourservice.com

HTML ou XML com URL para WSDL

http://yourservice.com/?WSDL

Descrições do serviço em XML

http://yourservice.com/svc1

XML/SOAP

FUNCIONAMENTO

Page 219: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

REQUISITOS - DESENVOLVIMENTOVisual Studio.NET, Web Matrix, …Visual Studio.NET, Web Matrix, …

ASP.NetASP.NetMáquina de

Desenvolvimento

Código

Servidor da

Aplicação

.NET Framework.NET Framework

AplicaçãoAplicação

ASP.NetASP.Net

IISIIS

.NET Framework.NET Framework

IIS – Servidor IDEIIS – Servidor IDE

Page 220: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

REQUISITOS - PRODUÇÃO

.NET Framework.NET Framework

Servidor da

Aplicação

AplicaçãoAplicação

ClienteAplicaçãoAplicação

ASP.NetASP.Net

asmx SOAP (xml)

IISIIS

Page 221: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

LABORATÓRIO 2.6.2

Fase 2 - Aula 6

Page 222: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.
Page 223: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

AULA VII Tópicos abordados:

Introdução a Banco de Dados

Page 224: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INTRODUÇÃO A BANCO DE DADOS

Aula 7

Page 225: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONCEITOS Banco de Dados

É uma coleção de dados inter-relacionados, representando informações sobre um domínio específico

Ex.: Lista Telefônica, Fichas de acervo de Biblioteca

Sistema Gerenciador de Banco de Dados São softwares que permitem a definição de estruturas

para armazenamento de informações e fornecimento de mecanismos para manipulá-las.

Caracterísitcas: Integridade, Restrições, Segurança/Privacidade,

Restauração, Eficiência Ex.: SQL Server, Oracle, PostgresSQL, MySQL

Page 226: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CONCEITOS Dado

Conjunto de símbolos “arranjados” a fim de representar a informação fora da mente humana.

Elementos de Dados Subconjunto de símbolos que compõem um dado com

significado específico, mas não representa a informação completa.

Ex.: O número de alunos na turma MAT01 de 2008 é 79. Os elementos de dados são:

Turma: MAT01Ano: 2008Alunos: 79

Page 227: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BANCO DE DADOS Tabelas

Objeto criado para armazenar os dados fisicamente Os dados são armazenados em linhas (registros) e

colunas (campos)

Page 228: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BANCO DE DADOS Registros

São linhas de uma tabela Armazenam um conjunto de dados pré-definido pela tabela

Campos São as colunas de uma tabela Possuem um tipo de dado definido Armazenam um dado

Chave Primária Campo que permite a identificação única de um registro em

uma tabela

Chave Estrangeira Campo que referencia uma Chave de um outro registro

Page 229: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BANCO DE DADOS Índices

É uma ferramenta usada pelo gerenciador de Banco de Dados para facilitar a busca de linhas dentro de uma tabela

Índice Único Índice criado a partir de uma coluna ou de um conjunto de

colunas. Não permite a inclusão de linhas duplicadas Índice de Performance

Facilita a busca de linhas na tabela

Page 230: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BANCO DE DADOS

CLIENTE

PK CLI_COD

CLI_NOME CLI_ENDI1 CLI_CNPJ

NOTA_FISCAL

PK NF_NRO

NF_DATA NF_CLI NF_CFOPFK1 CLI_COD

PRODUTO

PK PROD_COD

PROD_DESC PROD_IPI PROD_UNIT PROD_QTD

ITEM_NF

PK,FK2 NF_NROPK ITEM_COD

ITEM_VALOR ITEM_QTDFK1 PROD_COD

Page 231: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BANCO DE DADOS Visões

São tabelas lógicas sobre um Banco de dados mas que não possuem os dados propriamente ditos

Visão Idêntica:

Page 232: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BANCO DE DADOS Visão por Seleção de Colunas:

Visão por Seleção de Linhas:

Page 233: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BANCO DE DADOS Visão por Seleção de Linhas e Colunas:

Page 234: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

BANCO DE DADOS Visão por Junção de Tabelas:

Page 235: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

SQL BÁSICO

Aula 7

Page 236: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

CRIAR TABLEAS

CREATE TABLE [cliente](

[cli_cod] [int] PRIMARY KEY IDENTITY(1,1),

[cli_nome] [varchar](50) NOT NULL,

[cli_end] [varchar](50) NULL,

[cli_cnpj] [char](11) NOT NULL

)

Page 237: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

INSERIR REGISTRO

INSERT INTO [cliente]

([cli_nome],[cli_end],[cli_cnpj])

VALUES

('Bill Gates','Quinta Avenida','12345678900')

Se a tabela possui um campo identity, não é permitido definir manualmente o valor para este campo

Se um campo foi definido como NOT NULL então é necessário especificar seu valor

Page 238: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

ALTERAR REGISTRO

UPDATE [cliente]

SET [cli_end] = 'Sete de Setembro'

WHERE [cli_cnpj] = '12345678900'

Ao atualizar um registro, especifique as colunas a serem alteradas

A cláusula WHERE é opcional, se for omitida então a atualização ocorrerá em todos os registros

Page 239: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

DELETAR REGISTRO

DELETE FROM [cliente]

WHERE [cli_cnpj] = ‘12345678900’

Page 240: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

SELECIONAR REGISTRO

Todas as colunas da tabela clienteSELECT * FROM cliente

Coluna com o código e o nome da tabela cliente.SELECT cli_cod, cli_nome FROM cliente

Todos as colunas da tabela cliente onde o nome comece com Bil

SELECT * FROM cliente WHERE cli_nome LIKE ‘Bil%’

Page 241: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

SELECIONAR REGISTROS INNER JOIN

Une o conteúdo de duas tabelas por meio de uma cláusula de junção gerando um novo conjunto de dados. Retorna apenas os registros que atendam a cláusula de junção

SELECT *

FROM cliente

INNER JOIN nota_fiscal

ON cliente.cli_cod = nota_fiscal.cli_cod

LEFT JOIN Une o conteúdo de duas tabelas por meio de uma cláusula de junção

gerando um novo conjunto de dados. Retorna todos os registros da tabela da esquerda mesmo que não haja um registro que atenda a cláusula de junção na tabela da direita

SELECT *

FROM cliente

LEFT JOIN nota_fiscal

ON cliente.cli_cod = nota_fiscal.cli_cod

Page 242: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

DEMONSTRAÇÃO

Fase 2 - Aula 7

Page 243: SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

SE

GU

ND

A F

AS

E

TR

EIN

AM

EN

TO