SE
GU
ND
A F
AS
E
TR
EIN
AM
EN
TO Á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)
INTRODUÇÃO AO .NET
FRAMEWORK E CLR
Aula 1
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;
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
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.
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
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).
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.
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
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
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
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
VISUAL STUDIO 2008
Aula 1
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
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...
CRIANDO UMA SOLUÇÃO
Demonstração
CRIANDO A PARTIR DE TEMPLATES File > New > Project...
INTERFACE DESIGN
INTERFACE PROGRAMAÇÃO
LÓGICA DE PROGRAMAÇÃO
Aula 1
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.
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
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”
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
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
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
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.”);}
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;}
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 />”);}
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++;}
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);
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);
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);}
LABORATÓRIO 2.1.1
Fase 2 - Aula 1
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
LÓGICA DE PROGRAMAÇÃO
PARTE II
Aula 2
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.
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”;
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}};
ENUMERADORES Definindo Tipos Enumeradores
enum TipoDiretor{
Marketing,RH,Comercial,Financeiro
}
... Dentro do evento Page_Load
// InstanciandoTipoDiretor tpDiretor = TipoDiretor.Comercial;
// Imprime ‘Comercial’Response.Write(tpDiretor);
ESTRUTURA DO CÓDIGO
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 {}
}
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
LABORATÓRIO 2.2.1
Fase 2 - Aula 2
ORIENTAÇÃO A OBJETOPARTE I
Aula 2
CONCEITOS DE ORIENTAÇÃO A OBJETO
Métodos e Atributos
Herança
Classes Abstratas
Polimorfismo
Classes e Objetos
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
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
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.
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.
FuscaBrasília
Carros
CLASSES E OBJETOS
DECLARAÇÃO DE CLASSES E OBJETOS
Declarando uma Classe:
Declarando um Objeto:
class Pessoa{
string nome;void Andar() { }
}
Endereco objEndereco = new Endereco();
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
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;
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.
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();
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);
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
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
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);
}
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;
}}
LABORATÓRIO 2.2.2
Fase 2 - Aula 2
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.
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.
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);
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
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}
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.
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.
POLIMORFISMO
ObjetosPessoaObjetosPessoa
Diretor
Vendedor
Funcionario
ComportamentoComportamento
Parcerias
Vendas
Férias
MétodoInvocadoMétodo
Invocado
Viajar ()
Viajar ()
Viajar ()
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 */
}}
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.
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.
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.
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”;
LABORATÓRIO 2.2.3
Fase 2 - Aula 2
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
ORIENTAÇÃO A OBJETO PARTE II
Aula 3
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);
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
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();}
}
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?
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.
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 */ }
}
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 */ }}
}
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.
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.
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(:).
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);
}
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}
}
INTERFACES IS e AS
if (computador is IProduto){
// ações}
IProduto produto = computador as IProduto;
if (produto != null){
Fornecedor fornecedor = produto.RecuperarFornecedor();}
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{
...}
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 />");}
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.
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
}
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
LABORATÓRIO 2.3.1
Fase 2 - Aula 3
DESENVOLVENDO PARA INTERNET
PARTE I
Aula 3
COMO FUNCIONA UM WEB SITE
Servidor WebBrowser ClienteInternet
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...
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 -->
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>
LINKS ÚTEIS Maiores informações sobre HTML e suas tags:
http://www.w3schools.com/html/http://www.w3schools.com/tags/
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>
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>
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.
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
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)
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).
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
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
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.
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
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
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
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
DEMONSTRAÇÃO
Fase 2 - Aula 3
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
DESENVOLVIMENTO PARA INTERNET
PARTE II
Aula 4
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)
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
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.
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.
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
CONTROLES Wizard – permite criar um formulário passo a
passo.
CONTROLES SiteMap – permite criar um menu de navegação
baseado na página que o usuário está acessando.
CONTROLES Menu – permite criar um menu com links de
maneira estática ou dinâmica. Pode utilizar o mesmo arquivo XML do SiteMap.
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.
MASTER PAGE
MASTER PAGE
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
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"];
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.}
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;
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.}
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
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==“ />
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”];
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
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);
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();
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
LABORATÓRIO 2.4.1
Fase 2 - Aula 4
ASP.NET E C#PARTE I
Aula 4
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
USER CONTROLS Exemplo de User Control
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
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;
}
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);
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();}
LABORATÓRIO 2.4.2
Fase 2 - Aula 4
AULA V Tópicos abordados:
ASP.NET e C# (Parte II) Partial Types Nullable Types Collections e Generics
ASP.NET E C#PARTE II
Aula 5
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.
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.
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
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
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.
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 {}
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
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.
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
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?();
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;
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!”);
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;
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
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);
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;
BIBLIOTECA DE COLEÇÕES Namespace System.Collections
ArrayList Queue Stack ...
Namespace System.Collections.Generic List<T> Dictionary<K, V> ...
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
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”
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”
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
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”]);
LABORATÓRIO 2.5.1
Fase 2 - Aula 5
AULA VI Tópicos abordados:
AJAX.NET Web Services
AJAX
Aula 6
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”
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
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
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).
SOLUÇÃO PARA APLICAÇÕES WEB RIA – Rich Internet Application Web 2.0
AJAX
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.
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)
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”
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
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
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>
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
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
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>
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" />
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>
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
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
LABORATÓRIO 2.6.1
Fase 2 - Aula 6
WEB SERVICES
Aula 6
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
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
POR QUE WEB SERVICES? Necessidade de Integração entre Negócios (B2B) Tendência do Software como Serviço
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)
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
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!
INTEGRAÇÃO ENTRE PLATAFORMAS
Web ServicesIntegration
Plataforma Integrada Microsoft
AS400
OS390Linux
Unix
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.
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
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
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
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
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
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
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
REQUISITOS - PRODUÇÃO
.NET Framework.NET Framework
Servidor da
Aplicação
AplicaçãoAplicação
ClienteAplicaçãoAplicação
ASP.NetASP.Net
asmx SOAP (xml)
IISIIS
LABORATÓRIO 2.6.2
Fase 2 - Aula 6
AULA VII Tópicos abordados:
Introdução a Banco de Dados
INTRODUÇÃO A BANCO DE DADOS
Aula 7
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
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
BANCO DE DADOS Tabelas
Objeto criado para armazenar os dados fisicamente Os dados são armazenados em linhas (registros) e
colunas (campos)
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
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
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
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:
BANCO DE DADOS Visão por Seleção de Colunas:
Visão por Seleção de Linhas:
BANCO DE DADOS Visão por Seleção de Linhas e Colunas:
BANCO DE DADOS Visão por Junção de Tabelas:
SQL BÁSICO
Aula 7
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
)
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
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
DELETAR REGISTRO
DELETE FROM [cliente]
WHERE [cli_cnpj] = ‘12345678900’
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%’
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
DEMONSTRAÇÃO
Fase 2 - Aula 7
SE
GU
ND
A F
AS
E
TR
EIN
AM
EN
TO
Top Related