A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas.

Apresentações semelhantes


Apresentação em tema: "SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas."— Transcrição da apresentação:

1 SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas

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

3 Aula 1

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

5 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

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

7 .NET Framework VBC++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) Visual Studio.NET

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

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

10 Compilação Antes da instalação ou a primeira vez que cada método é chamado Execução JIT Compiler NativeCode MSIL Code Metadata Source Code Language Compiler

11 VBC# C++ Código Nativo Common Language Runtime (CLR) Componente Não Gerenciável Compilador Compilador Assembly - Código IL Compilador JIT Serviços do Sistema Operacional Código Fonte Código Gerenciável Compilador

12 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

13 Microsoft Visual Basic.NET Microsoft C# Microsoft C++ (Gerenciado/Não-Gerenciado) Microsoft J# Outras: http://www.dotnetlanguages.net http://www.dotnetpowered.com

14 Aula 1

15 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

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

17 Demonstração

18 File > New > Project...

19

20

21 Aula 1

22 Inteiro de 8 bits sem sinal byte Inteiro com sinal de 8 bits sbyte Inteiro de 32 bits com sinal int Inteiro de 32 bits sem sinal uint Inteiro com sinal de 64 bits long Inteiro sem sinal de 64 bits ulong Inteiro com sinal de 16 bits short Inteiro sem sinal de 16 bits ushort Ponto flutuante decimal. Este tipo tem uma precisão de 28 casas decimais. decimal Ponto flutuante binário. Este tipo tem uma precisão de 15 casas decimais. double Ponto flutuante binário. Este tipo tem uma precisão de 7 casas decimais. float Tipo de dados booleano. Pode ser apenas true ou false. bool Um único caractere unicode de 16 bits. char Unicode com até 1 gigabyte de caracteres. string

23 Armazenado na memória Stack. Trabalha com dados diretamente. Não pode ser nulo. Exemplo: Inteiros Decimais Booleanos Estruturas Enumeradores... 19 idade 500.00 salário 0 brasileiro STACK

24 Contém uma referência a um ponteiro na memória Heap. Pode ser nulo Exemplo: Vetores Textos Instâncias de Classes Classes #XXXX Nome... Nome HEAP STACK Texto

25 int i = 123;// Tipo por valor object O;// Tipo por referência O = i;// Causa boxing string S; S = O.ToString()// Chama via O int x; x = (int) O;// Faz unboxing 123 StackHeap iOxiOx

26 int i = 123;// Tipo por valor object O; O = i;// Causa boxing string S; // Tipo por referência S = O.ToString();// Chama via O int x; x = (int) O;// Faz unboxing 123 xSO i... 123 S... 123 O... HEAPSTACK

27 +, -, *, /, % Aritméticos =, +=, -=, *=, /=, >=, &=, ^=, |= Atribuição + Concatenação New Criação de Objetos ==, != Igualdade e Diferença ++, -- Incremento e Decremento &, ^, |, &&, ||, ~, ! Lógicos typeof, sizeof, checked, unchecked Primários, =, is Relacionais

28 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.); }

29 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; }

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

31 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(" "); i++; }

32 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(" "); i++; } while (i != 10);

33 // Exemplo I string S = 123; int i = S; Response.Write(i); // Exemplo II string S = "123"; int i = Convert.ToInt32(S); Response.Write(i); // Exemplo III string S = 123; int i = int.Parse(S); Response.Write(i); // Exemplo V string S = "valor"; int i = 0; if (int.TryParse(S, out i)) { Response.Write(i); } else { Response.Write(valor inválido.); } // Exemplo IV string S = valor; int i = Convert.ToInt32(S); Response.Write(i);

34 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 I try { int i = int.Parse(2mm); } catch { Response.Write(Inválido); } // Exemplo II try { throw new Exception("Erro"); } catch (Exception ex) { Response.Write(ex.Message); }

35 Fase 2 - Aula 1

36

37 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

38 Aula 2

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

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

41 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}};

42 Definindo Tipos Enumeradores enum TipoDiretor { Marketing, RH, Comercial, Financeiro }... Dentro do evento Page_Load // Instanciando TipoDiretor tpDiretor = TipoDiretor.Comercial; // Imprime Comercial Response.Write(tpDiretor);

43

44 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 {} }

45 Criando comentários e regiões: // Comentário de uma linha /* Comentário com mais de uma linha */ /// /// Documentação XML /// private int Atributo; #region Região private int Atributo1; private int Atributo2; #endregion

46 Fase 2 - Aula 2

47 Aula 2

48

49 Aplicação Função Função Função Função Dados Aplicação Objeto Métodos EstruturadaOrientação a Objetos Dados Objeto Métodos Dados

50 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

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

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

53 FuscaBrasília Carros

54 Declarando uma Classe: Declarando um Objeto: class Pessoa { string nome; void Andar() { } } Endereco objEndereco = new Endereco();

55 Atributo Cor Lataria Atributo Aro Atributo Vidro Atributo Cor Parachoque Atributo Placa Atributos Métodos Ações do carro (Métodos) Liga (Ingnição) Acelera Freia (Breca) Troca de Marcha Classe

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

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

58 Um método é um comando que representa uma ação class 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();

59 Passando parâmetros por valor class Cliente { private int produtosAdquiridos; public void DefineProdutosAdquiridos(int quantidade) { produtosAdquiridos = quantidade; }... Cliente novoCliente = new Cliente(); int produtos = 255; novoCliente.DefineProdutosAdquiridos(produtos); //OR novoCliente.DefineProdutosAdquiridos(200);

60 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

61 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

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

63 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 default public Cliente() { if (this.produtosAdquiridos > 250) this.clienteEspecial = true; else this.clienteEspecial = false; }

64 Fase 2 - Aula 2

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

66 Simples Quando uma classe herda as propriedades de uma única classe pai. Múltipla Ocorre quando uma classe tem mais de um pai.

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

68 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 Rodrigo Construindo Cliente

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

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

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

72 Objetos Pessoa Objetos Pessoa Diretor Vendedor Funcionario Comportamento Parcerias Vendas Férias Método Invocado Método Invocado Viajar ()

73 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 */ }

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

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

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

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

78 Fase 2 - Aula 2

79

80 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

81 Aula 3

82 Pertencem à classe e não às instâncias Podem ser atributos, propriedades e métodos public 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);

83 Construtores de classe – estáticos, compartilhados, globais Sã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âmetros Não apresentam modificadores de acesso Podem co-existir com construtores de instâncias Utilizados para inicializar uma classe

84 Construtores de Classe public class Cliente { private static Random numeroRandomico; public int senhaCliente; static Cliente() { numeroRandomico = new Random(); } public void CarregarSenha() { senhaCliente = numeroRandomico.Next(); }

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

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

87 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 */ } }

88 Derivando a classe abstrata e implementando os membros abstratos public 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 */ } }

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

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

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

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

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

94 IS e AS if (computador is IProduto) { // ações } IProduto produto = computador as IProduto; if (produto != null) { Fornecedor fornecedor = produto.RecuperarFornecedor(); }

95 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 {... }

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

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

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

99 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 argumentos meuCirculo.DiminuirRaio(2);// Chamando o overload // do método anterior

100 Fase 2 - Aula 3

101 Aula 3

102 Servidor Web Browser Cliente Internet

103 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 delimitando o documento, dentro desta tag existe um cabeçalho delimitado pela tag e corpo delimitado por, onde se coloca os textos, imagens, vídeos...

104 Comentários em HTML As tags ou marcadores são estruturados da seguinte forma:

105 Definindo o título de uma página. Formatando um texto Meu Título Texto em negrito Texto em itálico

106 Maiores informações sobre HTML e suas tags: http://www.w3schools.com/html/ http://www.w3schools.com/tags/

107 É 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 em documentos html ou em arquivos separados. alert(Mensagem);

108 Exemplo: function Carregar() { document.getElementById(texto").innerHTML = "Pronto..."; } Próxima página

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

110 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

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

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

113 Componente Visual Visão de Design Visão de HTML Lógica de interface de usuário Class MeuWebForm Bem-Vindo! Nome: Senha: OK Componente Visual MeuWebForm.aspx.cs MeuWebForm.aspx Lógica de interface MeuWebForm Ambos arquivos compõem MeuWebForm Bem-vindo! Nome: Senha: OK

114 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

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

116 O ciclo de vida de uma página ASP.NET apresenta cinco estágios básicos: Page_Init Validation Event Handling Page_Unload Page_Load

117 Executa Server-Side Code (ASP.NET) Executa Server-Side Code (ASP.NET) Armazena Dados de Sessão Envia Resposta Envia Resposta Processa Requisições do Cliente Processa Requisições do Cliente Cliente recebe página em HTML Cliente inicia comunicação com o servidor

118 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

119 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

120 Fase 2 - Aula 3

121

122 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

123 Aula 4

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

125 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

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

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

128 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

129 Wizard – permite criar um formulário passo a passo.

130 SiteMap – permite criar um menu de navegação baseado na página que o usuário está acessando.

131 Menu – permite criar um menu com links de maneira estática ou dinâmica. Pode utilizar o mesmo arquivo XML do SiteMap.

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

133

134

135 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

136 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"];

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

138 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[ContadorAcessos] = 0;

139 Presentes no Global.asax protected 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. } protected 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. }

140 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

141 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== /> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGS8mO25pQR00V4slvgSxG3dEvK+hA== />

142 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];

143 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

144 Escrevendo um Cookie //Cria um novo cookie, passando o nome no construtor HttpCookie cookie = new HttpCookie(Nome); //Determina o valor o cookie cookie.Value = Márcio; //Configura o cookie para expirar em 1 minuto DateTime dtNow = DateTime.Now; TimeSpan tsMinute = new TimeSpan(0, 0, 1, 0); cookie.Expires = dtNow + tsMinute; //Adiciona o cookie Response.Cookies.Add(cookie); //Cria um novo cookie, passando o nome no construtor HttpCookie cookie = new HttpCookie(Nome); //Determina o valor o cookie cookie.Value = Márcio; //Configura o cookie para expirar em 1 minuto DateTime dtNow = DateTime.Now; TimeSpan tsMinute = new TimeSpan(0, 0, 1, 0); cookie.Expires = dtNow + tsMinute; //Adiciona o cookie Response.Cookies.Add(cookie);

145 Lendo um Cookie //Pega o nome do que cookie que o usuário informou String strCookieName = NameField.Text; //Captura o cookie HttpCookie cookie = Request.Cookies[strCookieName]; String strCookieValue = Vazio; //Certifica-se que o cookie existe if (cookie != null) strCookieValue = cookie.Value.ToString(); //Pega o nome do que cookie que o usuário informou String strCookieName = NameField.Text; //Captura o cookie HttpCookie cookie = Request.Cookies[strCookieName]; String strCookieValue = Vazio; //Certifica-se que o cookie existe if (cookie != null) strCookieValue = cookie.Value.ToString();

146 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

147 Fase 2 - Aula 4

148 Aula 4

149 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, ou Contém código para gerenciar seus próprios eventos Podem agregar vários controles em um componente reusável

150 Exemplo de User Control

151 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

152 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; }

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

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

155 Fase 2 - Aula 4

156

157 Tópicos abordados: ASP.NET e C# (Parte II) Partial Types Nullable Types Collections e Generics

158 Aula 5

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

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

161 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

162 Declarando uma classe parcial agrupada em uma classe public partial class Cliente { int produtosAdquiridos; public partial class ClientesEspeciais { static List lista = new List (); } public partial class Cliente { public partial class ClientesEspeciais { public void Adiciona(Cliente c) { if (c.EClienteEspecial) ClientesEspeciais.lista.Add(c); } ClienteP1.cs ClienteP2.cs

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

164 Classes Acumulativas Classes Não-Acumulativas public partial class Computador {} // CompP1.cs public partial class Computador : IProduto {// CompP2.cs public void Adiciona() {...} public void Remove() {...} } public class Pessoa {} public class Funcionario {} public partial class Vendedor : Pessoa {} // VendedorP1.cs public partial class Vendedor : Pessoa {} // VendedorP2.cs //Não compila public partial class Vendedor : Funcionario {}

165 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

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

167 Podem ser declaradas de duas formas: System.Nullable variavel; ? 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; //Ok clienteId = null; //Ok, clienteId é anulável

168 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?();

169 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ção int? c = b as int;

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

171 Conversões explícitas Conversões implícitas A conversão de um tipo anulável para um tipo regular é implícita. // Exemplos int? clienteId = null; // Não compila int x = clienteId; // Compila, mas será gerada uma exception se x for null int x = (int)clienteId; // Compila, mas será gerada uma exception se x for null int x = clienteId.Value; int? produtosAdquiridos = null; // Conversão implícita int produtosAdquiridos = 10;

172 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 é 11 x = x * 10; // x agora é 110 int? y = null; x = x + y; // x agora é null

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

174 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 // Exemplo int? produtosAdquiridos = null; // Atribui o valor 0 à y se produtosAdquiridos for null int 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;

175 Namespace System.Collections ArrayList Queue Stack... Namespace System.Collections.Generic List Dictionary...

176 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 elemento listagem.Add(10);//Insere um novo elemento Response.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 elementos listagem.CopyTo(codigos);//Preenche um array listagem.Clear();//Remove todos elementos

177 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

178 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

179 Semelhante a um ArrayList, mas somente permite a inserção elementos de um tipo predefinido. List listagem = new List ();//Instancia uma lista de //inteiros listagem.Add(39);//Insere um novo elemento listagem.Add(22);//Insere um novo elemento Response.Write(listagem.Count);//Imprime seu tamanho atual listagem.Sort();//Ordena os elementos listagem.Clear();//Remove todos elementos

180 Semelhante a List, porem permite o uso de uma chave K de um tipo predefinido, para referenciar um valor do tipo V. Dictionary dic = new Dictionary (); //Instancia um dicionário string-string dic.Add(Name, Nome); dic.Add(Day, Dia); dic.Remove(Day); Response.Write(dic[Name]);

181 Fase 2 - Aula 5

182

183 Tópicos abordados: AJAX.NET Web Services

184 Aula 6

185 HTML Fácil utilização, personalização, diferenciação, riqueza HTML + JavaScript ASP.NET AJAX WPF Riqueza 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/usuário SilverLight (WPF/e) A Media Web

186 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

187 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

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

189 RIA – Rich Internet Application Web 2.0 AJAX

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

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

192 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

193 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

194 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

195 Controle ASP.NET AJAX que cria um painel atualizável em uma página ASP.NET AJAX, permitindo post-backs baseados em XmlHttpRequest...

196 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

197 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

198 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:AsyncPostBackTrigger ControlID="Button1 EventName="Click"/>

199 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:AutoCompleteExtender runat="server" ID="AC1 TargetControlID="TextBox1" ServicePath="AutoComplete.asmx ServiceMethod="GetWords" Enabled="true" MinimumPrefixLength="1" />

200 Prove feedback no processo de atualização durante um postback assíncrono Please Wait...

201 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 Microsoft Este é um projeto comunitário suportado e disponível no CodePlex

202 Toolkit Controls AccordionNoBot AlwaysVisibleControlNumericUpDown AnimationPagingBulletedList CascadingDropDownPasswordStrength CollapsiblePanelPopupControl ConfirmButtonRating DragPanelReorderList DropDownResizableControl DropShadowRoundedCorners DynamicPopulateSlider FilteredTextBoxTextBoxWatermark HoverMenuToggleButton ModalPopupUpdatePanelAnimation MutuallyExlcusiveCheckBoxValidatorCallout

203 Fase 2 - Aula 6

204 Aula 6

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

206 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

207 Necessidade de Integração entre Negócios (B2B) Tendência do Software como Serviço

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

209 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

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

211 Web Services Integration Plataforma Integrada Microsoft AS400 OS390 Linux Unix

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

213 Independente de plataforma Fácil de traduzir. (decodificar) Pode ser veiculado pela porta 80, sem a necessidade de abrir portas no firewall

214 Cliente do Web Service Windows Application SOAPMessage XML SOAPMessage XML SOAPMessage XML SOAPMessage XML XML Web Service SOAPResponse SOAPRequest Rede HTTPMessage HTML HTTPMessage HTML HTTPRequest GET- POST Servidor Web

215 Cliente do Web Service Web App HTTPMessage HTML HTTPMessage HTML SOAPMessage XML SOAPMessage XML SOAPMessage XML SOAPMessage XML XML Web Service Browser HTTPResponse HTTPRequest SOAPResponse SOAPRequest Rede Rede HTTPMessage HTML HTTPMessage HTML HTTPRequest GET- POST HTTPMessage HTML HTTPMessage HTML Servidor Web

216 WSDL – Web Services Description Language Documento XML que define as interfaces de seu Web Service Mostra os métodos e suas assinaturas

217 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

218 Acha o Serviço Conversando (SOAP) Tempo de Desenvolvimento Tempo de Execução Como conversar? (WSDL) Pesquisa o Serviço ClienteDoWebService 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

219 Visual Studio.NET, Web Matrix, … ASP.Net Máquina de Desenvolvimento Código Servidor da Aplicação.NET Framework Aplicação ASP.Net IIS.NET Framework IIS – Servidor IDE

220 .NET Framework Servidor da Aplicação Aplicação Cliente ASP.Net asmx SOAP (xml) IIS

221 Fase 2 - Aula 6

222

223 Tópicos abordados: Introdução a Banco de Dados

224 Aula 7

225 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

226 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: MAT01 Ano: 2008 Alunos: 79

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

228 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

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

230

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

232 Visão por Seleção de Colunas: Visão por Seleção de Linhas:

233 Visão por Seleção de Linhas e Colunas:

234 Visão por Junção de Tabelas:

235 Aula 7

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

237 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

238 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

239 DELETE FROM [cliente] WHERE [cli_cnpj] = 12345678900

240 Todas as colunas da tabela cliente SELECT * 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%

241 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

242 Fase 2 - Aula 7

243 SEGUNDA FASE TREINAMENTO


Carregar ppt "SEGUNDA FASE TREINAMENTO Área de Desenvolvimento de Sistemas."

Apresentações semelhantes


Anúncios Google