Introdução a C# 4.0 (Revisão)
Inove Informática Waldyr Felix
Ementa de hojeInterfacesPolimorfismoDelegatesEventosExceptions
IndexadoresEnumsBoxing /
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íficos
A palavra Polimorfismo vem do grego e significa muitas formas
Pode 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âmetro
Não existe evento sem delegate no .Net
EventosNotificam outros objetos que alguma coisa
relevante aconteceuSempre existe duas partes envolvidas ao
se trabalhar com eventosO objeto notificadorE o objeto que assina o evento
São comumente utilizados em interfaces gráficas. Ex.: Clique de um botão
Pode 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 indexador
public class Pedido{ private Item[] items; public Item this[int i] { get { return items[i]; } set { items[i] = value; } }}
Usando indexadores
pedido[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 UnboxingBoxing
Tipo por valor para tipo por referênciaCopia os dados da memória stack para a heap
UnboxingProcesso inverso, tipo por referência para tipo
por valorMemória heap para memória stack
As duas operações geram overhead
Exemplo de Boxing e UnboxingBoxing
decimal 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 (Language Integrated Query)É uma linguagem de consulta de dados É todo baseado em interfaces, delegates e
métodos de extensãoO Linq trabalha com diversos data sources
Linq to EntitiesLinq to XMLLinq to DataSetsLinq to Object
LINQ architecture
C# Other .NET Framework language
LINQ
LINQ-enabled data source
LINQ to Objects
LINQ to XML
LINQ to DataSets
LINQ to SQL
LINQ to Entities
LINQ-enabled ADO.NET
Arquitetura 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: [email protected]: [email protected]: [email protected]: waldyrfelixTwitter: @WaldyrFelix
Top Related