Primeiras aulas do curso Certificação C# Programming parte 7: Eventos e LINQ

Certificação C# Programming parte 7: Eventos e LINQ

Introdução aos Eventos - Introdução

Olá. Eu sou o Marcelo Oliveira. Vamos começar a parte 7 do curso de certificação programação em C# da Microsoft. Vamos ver as coisas que iremos aprender nesta parte do curso.

Iremos começar criando, implementando eventos e retornos de chamada. Vamos começar a ver os manipuladores de eventos, métodos que vão receber a notificação de que algum evento importante aconteceu na aplicação. Também vamos ver como associar esses métodos a um determinado evento utilizando a técnica de assinar e cancelar assinatura desses eventos. Iremos ver como trabalhar com os delegados, que são referências para métodos. Para isso, vamos trabalhar tanto com os delegados nativos, que já estão integrados ao .NET, quanto a criar nossos próprios delegados para trabalhar com eventos.

Também iremos ver como utilizar expressões Lambdas e os métodos anônimos para criar métodos mais simples para responder a cada um dos eventos de uma aplicação. Iremos ver na segunda parte como consultar e manipular os dados de uma determinada fonte de dados utilizando a tecnologia chamada LINQ, que são as consultas integradas à linguagem.

Dentro do linq, vamos começar a ver os operadores LINQ, que são nada mais, nada menos do que cláusulas parecidas com o que vemos numa sintaxe de uma consulta SQL, como SQL server, em que você tem operadores necessários para fazer a seleção de dados, agrupar, juntar dados, associar, ordenar, e outras operações feitas no banco de dados, só que desta vez utilizando a linguagem Csharp como linguagem da consulta, e utilizando várias fontes de dados como se fosse uma tabela do bando de dados do SQL server.

Vamos aprender a fazer as consultas do LINQ utilizando dois tipos de sintaxe, que são as de método e a de consulta. Também veremos como utilizar os tipos anônimos, que dispensam o uso de classe para obter o retorno de uma consulta de forma muito mais simples. Também veremos como forçar a execução de uma consulta para que você possa obter de forma prematura o resultado dessa consulta e trabalhar com dados persistidos na memória.

Iremos ver como trabalhar com o XML como fonte de dados para a sua consulta LINQ. Você vai aprender a abrir um documento XML a partir de uma string XML, como obter os valores dos elementos e dos nós desse XML e também filtrar elementos. Veremos como criar e modificar esses elementos do XML para que isso seja refletido na consulta LINQ.

Espero que vocês gostem dessa parte 7 do curso.

Introdução aos Eventos - Criando a Classe Campainha

Começando a parte 7 do nosso curso de certificação de C#. Vamos começar abrindo o projeto dentro da solução certificação C# parte 7. Temos o projeto inicial fornecido para vocês começarem o curso, com algumas pastas, como a 01 eventos. Dentro, temos a 01.01 criar eventos. Dentro, vamos encontrar duas pastas também que são a antes e depois. Temos elas porque dentro temos dois projetos, um sendo o que está dentro da pasta depois, que é o projeto do professor, que eu vou começar a desenvolver. Vocês também vão ter outro projeto que está dentro da pasta antes. Ela tem o projeto inicial para praticar. Iremos começar com o conteúdo sobre eventos. Abrindo o programa, vamos encontrar a class program. Temos um problema para resolver, que é a implementação de uma campainha. Ela é simples, que você encontra na frente das casas, e vai ser representada como uma classe separada da classe programa.

Essa classe vai ser consumida pela classe programa. Dentro do método main, iremos declarar um objeto do tipo campainha. Esse objeto vai ficar armazenado na classe campainha. Iremos instanciar utilizando o operador new. Para fazer ela tocar, precisamos de um método público void chamado tocar. Ele também não recebe nenhum parâmetro. O corpo por enquanto vai ficar vazio.

Para consumir esse método vamos voltar para a classe programa e iremos chamar o método tocar a partir da variável campainha. Depois, rodamos a aplicação. É do tipo console. Ele abriu a janela e fechou. Vamos manter a janela aberta com uma instrução do tipo console readkey. Vamos exibir informações para o usuário informando que a campainha foi tocada. Iremos trabalhar com o conceito de evento.

Precisamos na verdade programar um evento para poder notificar a aplicação de que a campainha tocou. Podemos fazer isso usando duas classes, a programa e a classe campainha. A campainha vai ser tocada, ela vai desempenhar um papel passivo. E vai ser tocada pelo nosso programa, que vai representar o papel de uma pessoa que vai pressionar a campainha. Esse programa vai representar o papel ativo no processo. É ele que vai receber a notificação. A campainha vai mandar a notificação de que ela foi tocada.

Nós precisamos primeiro criar dentro da classe campainha algum mecanismo que vai notificar o programa de que ela foi tocada. Para isso, iremos criar um propriedade pública dentro da campainha. Ela vai ser do tipo delegado. Esse delegado vai funcionar como um ponteiro para um método, uma referência. Essa referência vai ter que ser definida pela aplicação pelo nosso programa. Iremos criar pelo action.

O action é um delegado especial. Um delegado void. Um tipo de método que retorna um valor vazio. Uma action então é uma ação que faz alguma coisa e não retorna nada. Ela vai ficar exposta publicamente e iremos declarar com um nome. Vai ser onCampainhaTocou. Ou seja, quando a campainha for tocada iremos utilizar essa propriedade. E como toda propriedade iremos trabalhar com os acessadores. Serão o get e o set.

Agora, quando a campainha for tocada, quando o método tocar for chamado iremos invocar a ação dentro do método tocar. Como estamos trabalhando com uma action, ela vai ser chamada com a mesma sintaxe do método. Ou seja, coloco o nome da action seguida por um par de parênteses.

Rodando a aplicação, encontramos um erro. Estamos pegando uma exceção de referência de objeto com uma referência nula, porque nossa propriedade está armazenando uma referência nula. Essa propriedade nunca foi definida no código. Precisamos proteger nosso código para que o método tocar não chame a action se ela estiver com valor nulo. Iremos colocar um if. Se for valor diferente de nulo, aí sim vou chamar o onCampainhaTocou. Protejo assim nosso código. Rodando de novo, não dá erro, mas nada de interessante acontece, porque expomos uma ação sem consumir, sem trabalhar com a assinatura do evento. Iremos fazer isso na sequência.

Introdução aos Eventos - Associando e Desassociando Métodos

Nós temos aqui a classe campainha representando o objeto físico da campainha. Dentro dessa classe, temos uma propriedade do tipo action, chamada onCampainhaTocou. Essa palavra on pode significar “ao”. Ao acontecer algum evento. E como a campainha está tocando, emitindo um sinal sonoro, alguém vai ouvir. Quem vai escutar é nossa classe programa. Ela vai ser notificada de que aconteceu algum evento na classe campainha.

Vamos criar um método que vai servir como um ponto de execução no caso do evento do toque da campainha. Esse método vai ser estático, o CampainhaTocou. Ele não retorna nada e não recebe nenhum parâmetro. O corpo dele vai exibir uma mensagem no console indicando que a campainha tocou.

A aplicação rodou, mas o método não foi acionado, porque precisamos amarrar esse método campainha tocou à classe programa com a action que está na outra classe. Para amarrar um método com a action, iremos depois da declaração colocar o nome da variável campainha e acessar a action. Colocamos o símbolo de igual.

Rodando a aplicação, aparece que a campainha tocou. É a mensagem de notificação indicando que nosso programa escutou o evento ser executado.

Temos essa amarração entre a action e o método campainha tocou, que está sendo feito através do operador igual. Porém existe outra maneira de associar um método com uma action. Podemos fazer isso através do operador mais igual. Com ele, adicionamos o método que vai escutar o evento da campainha ser tocada. Rodando novamente, o resultado é o mesmo, porém temos a vantagem de poder colocar outros métodos para escutar o evento.

Vamos criar um novo método chamado CampainhaTocou2. Vamos copiar as linhas. Vou diferenciar os métodos colocando só os números, também na mensagem. Rodando a aplicação, continua funcionando. Vamos fazer ele chamar o segundo método repetindo o processo com o operador. Rodando a aplicação, tenho os dois eventos.

Quando tocamos a campainha uma vez só, esses dois métodos recebem a mesma notificação. Isso é interessante, porque você pode ter uma variedade de classes recebendo a notificação com apenas um evento acontecendo.

Vamos fazer algo um pouco diferente agora. Assim como adicionamos métodos, iremos remover um dos que tinham sido adicionados antes. Iremos fazer isso colocando um console.writeline e a mensagem de que a campainha será tocada. Ele exibe a mensagem. Antes de tocar de novo, vou remover um dos métodos que tinham sido associados com a action, colocando campainha, chamo a action, e no lugar de mais igual uso o menos igual, depois coloco o método. Repito as duas linhas finais do anterior. Rodando a aplicação, removemos o método.

Sobre o curso Certificação C# Programming parte 7: Eventos e LINQ

O curso Certificação C# Programming parte 7: Eventos e LINQ possui 305 minutos de vídeos, em um total de 70 atividades. Gostou? Conheça nossos outros cursos de .NET em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda .NET acessando integralmente esse e outros cursos, comece hoje!

  • 1112 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1112 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1112 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1112 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana