Introdução a C# 4.0 (Revisão)Inove Informática Waldyr Felix
Ementa de hojeInterfacesPolimorfismoDelegatesEventosExceptionsIndexadoresEnumsBoxing / UnboxingGenericsLINQ
InterfacesInterfaces são contratos entre camadas de um softwareSão extremamente importantes em padrões de projeto e arquitetura de softwareDefinem todos os membros públicos (visíveis) para o consumidor do objetoNão possuem implementação algumaÉ possível implementar mais de uma interface
PolimorfismoEm orientação a objetos, polimorfismo é a capacidade de tipos mais abstratos representarem comportamentos de tipos mais específicosA palavra Polimorfismo vem do grego e significa muitas formasPode ser feito através de herança de classes base, através de generics ou por sobrecarga de métodos
Demonstração Interfaces + PolimorfismoDefinindo uma interfaceUsando objetos através de interfacesCriando polimorfismo com interfaces
DelegatesDelegates são ponteiros para métodosPodem ser usados de forma síncrona ou assíncronaSão utilizados para definir métodos callbacks, retardar chamadas a métodos, passar métodos por parâmetroNão existe evento sem delegate no .Net
Eventos	Notificam outros objetos que alguma coisa relevante aconteceuSempre existe duas partes envolvidas ao se trabalhar com eventosO objeto notificadorE o objeto que assina o eventoSão comumente utilizados em interfaces gráficas. Ex.: Clique de um botãoPode referenciar mais de um método ao mesmo tempo
Demonstração Delegates + Eventos Definindo um delegateUtilizando um delegate na aplicaçãoCriando um evento a partir de um delegate existenteNotificando ações através de eventos
ExceptionsExceptions são classes especiais que servem para notificar erros em tempo de execuçãoTodos os exceptions derivam da classe ExceptionQuando um exception é lançado o fluxo da aplicação é quebradoO tratamento dos exceptions pode ser feito através de blocos try...catch
DemonstraçãoCriando o próprio ExceptionLançando exceptions usando throwTratamento de exceptions com try...catch...finally
IndexadoresQuando estamos trabalhando com Arrays, Listas e Dicionários de dados usamos muito a notação lista[i], por exemplo.Os colchetes servem para capturar um dado que está em determinado índice do array.Em C# esta feature chama-se indexador ou indexer.
Exemplo de IndexadorDeclarando um indexadorpublic class Pedido{    private Item[] items;    public Item this[int i]    {        get { return items[i]; }        set { items[i] = value; }    }}Usandoindexadorespedido[0] = new Item("Camisa Polo"); // usando setItem item = pedido[0];  // usando get
EnumeradoSão tipos de valores constante, que pertencem a um determinado intervaloSão indexados a partir do zeroSão tipos por valor (struct)Podem ter vários tamanhos (byte, int, long,...)É mais seguro usar Enums   que constantesDeixam o código mais fácil de ler, manter e mais elegante
Exemplo de Enumpublic enum EstadoDoPedido : byte{    Cancelado = 1,    Atendido,    EmProcesso}
Boxing e UnboxingBoxingTipo por valor para tipo por referênciaCopia os dados da memória stack para a heapUnboxingProcesso inverso, tipo por referência para tipo por valorMemória heap para memória stackAs duas operações geram overhead
Exemplo de Boxing e UnboxingBoxingdecimal preço = 345.35m;object obj = preço;Unboxingobject obj = 34;int idade = (int) obj;
GenericsSão tipos genéricos que funcionam a partir de outro tipo que é passado como parâmetroO tipo do parâmetro é especificado na instanciação do objeto, assim:List<string> nomes = new List<string>();E é declarado assim:public class List<T>
DemonstraçãoCriando um tipo genéricoRestringindo os tipos do parâmetro genéricoUsando os tipos genéricos do .Net
Linq (LanguageIntegrated Query)É uma linguagem de consulta de dados É todo baseado em interfaces, delegates e métodos de extensãoO Linq trabalha com diversos data sourcesLinqtoEntitiesLinqto XMLLinqtoDataSetsLinqtoObject
LINQ architectureC#Other .NET Framework languageLINQLINQ-enabled data sourceLINQ-enabled ADO.NETLINQ to ObjectsLINQ to SQLLINQ to DataSetsLINQ to XMLLINQ to EntitiesArquitetura do Linq
Demonstração de LinqRealizando consultas com métodos de extensãoUsando a sintaxe simplificadaRealizando filtros complexosRealizando agregações Realizando joins
ContatosBlog: http://waldyrfelix.net/blogEmail: waldyrfelix@gmail.comMSN: waldyrpe@hotmail.comGtalk: waldyrfelix@gmail.comSkype: waldyrfelixTwitter: @WaldyrFelix

Introdução a C# 4.0 (Revisão)

  • 1.
    Introdução a C#4.0 (Revisão)Inove Informática Waldyr Felix
  • 2.
  • 3.
    InterfacesInterfaces são contratosentre camadas de um softwareSão extremamente importantes em padrões de projeto e arquitetura de softwareDefinem todos os membros públicos (visíveis) para o consumidor do objetoNão possuem implementação algumaÉ possível implementar mais de uma interface
  • 4.
    PolimorfismoEm orientação aobjetos, polimorfismo é a capacidade de tipos mais abstratos representarem comportamentos de tipos mais específicosA palavra Polimorfismo vem do grego e significa muitas formasPode ser feito através de herança de classes base, através de generics ou por sobrecarga de métodos
  • 5.
    Demonstração Interfaces +PolimorfismoDefinindo uma interfaceUsando objetos através de interfacesCriando polimorfismo com interfaces
  • 6.
    DelegatesDelegates são ponteirospara métodosPodem ser usados de forma síncrona ou assíncronaSão utilizados para definir métodos callbacks, retardar chamadas a métodos, passar métodos por parâmetroNão existe evento sem delegate no .Net
  • 7.
    Eventos Notificam outros objetosque alguma coisa relevante aconteceuSempre existe duas partes envolvidas ao se trabalhar com eventosO objeto notificadorE o objeto que assina o eventoSão comumente utilizados em interfaces gráficas. Ex.: Clique de um botãoPode referenciar mais de um método ao mesmo tempo
  • 8.
    Demonstração Delegates +Eventos Definindo um delegateUtilizando um delegate na aplicaçãoCriando um evento a partir de um delegate existenteNotificando ações através de eventos
  • 9.
    ExceptionsExceptions são classesespeciais que servem para notificar erros em tempo de execuçãoTodos os exceptions derivam da classe ExceptionQuando um exception é lançado o fluxo da aplicação é quebradoO tratamento dos exceptions pode ser feito através de blocos try...catch
  • 10.
    DemonstraçãoCriando o próprioExceptionLançando exceptions usando throwTratamento de exceptions com try...catch...finally
  • 11.
    IndexadoresQuando estamos trabalhandocom Arrays, Listas e Dicionários de dados usamos muito a notação lista[i], por exemplo.Os colchetes servem para capturar um dado que está em determinado índice do array.Em C# esta feature chama-se indexador ou indexer.
  • 12.
    Exemplo de IndexadorDeclarandoum indexadorpublic class Pedido{    private Item[] items;    public Item this[int i]    {        get { return items[i]; }        set { items[i] = value; }    }}Usandoindexadorespedido[0] = new Item("Camisa Polo"); // usando setItem item = pedido[0];  // usando get
  • 13.
    EnumeradoSão tipos devalores constante, que pertencem a um determinado intervaloSão indexados a partir do zeroSão tipos por valor (struct)Podem ter vários tamanhos (byte, int, long,...)É mais seguro usar Enums que constantesDeixam o código mais fácil de ler, manter e mais elegante
  • 14.
  • 15.
    Boxing e UnboxingBoxingTipopor valor para tipo por referênciaCopia os dados da memória stack para a heapUnboxingProcesso inverso, tipo por referência para tipo por valorMemória heap para memória stackAs duas operações geram overhead
  • 16.
    Exemplo de Boxinge UnboxingBoxingdecimal preço = 345.35m;object obj = preço;Unboxingobject obj = 34;int idade = (int) obj;
  • 17.
    GenericsSão tipos genéricosque funcionam a partir de outro tipo que é passado como parâmetroO tipo do parâmetro é especificado na instanciação do objeto, assim:List<string> nomes = new List<string>();E é declarado assim:public class List<T>
  • 18.
    DemonstraçãoCriando um tipogenéricoRestringindo os tipos do parâmetro genéricoUsando os tipos genéricos do .Net
  • 19.
    Linq (LanguageIntegrated Query)Éuma linguagem de consulta de dados É todo baseado em interfaces, delegates e métodos de extensãoO Linq trabalha com diversos data sourcesLinqtoEntitiesLinqto XMLLinqtoDataSetsLinqtoObject
  • 20.
    LINQ architectureC#Other .NETFramework languageLINQLINQ-enabled data sourceLINQ-enabled ADO.NETLINQ to ObjectsLINQ to SQLLINQ to DataSetsLINQ to XMLLINQ to EntitiesArquitetura do Linq
  • 21.
    Demonstração de LinqRealizandoconsultas com métodos de extensãoUsando a sintaxe simplificadaRealizando filtros complexosRealizando agregações Realizando joins
  • 22.
    ContatosBlog: http://waldyrfelix.net/blogEmail: waldyrfelix@gmail.comMSN:waldyrpe@hotmail.comGtalk: waldyrfelix@gmail.comSkype: waldyrfelixTwitter: @WaldyrFelix