Skip to content

jcguimaraesnet/csharp-learning-path

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 

Repository files navigation

📃 C# Learning Path

ℹ️ Este repositório contém uma proposta de trilha de aprendizado para a linguagem C# em dezoito aulas, contendo links para a documentação da Microsoft e exercícios práticos.

🧑🏽‍🎓 Essa proposta de aprendizado se destina inicialmente para alunos do Instituto Infnet, uma faculdade focada na área de TI com sede no Rio de Janeiro/Brasil, cujas disciplinas transcorrem em uma janela de espaço de nove semanas (ou dezoito aulas). Eu ficaria feliz se o conteúdo estruturado aqui neste repo for útil para professores e alunos de outras instituições e demais interessados no aprendizado dessa linguagem.


⭐ Dê uma estrela

Se você estiver usando este repositório para seu aprendizado, por favor, dê uma estrela. Eu ficarei muito feliz com isso. Obrigado 👍


📌 Learning Path 1.1

Tópicos principais

Important

Assuntos cobertos: hello world, visual studio, depuração, variáveis e tipos

  1. Download e instalação do Visual Studio (VS) Community
  2. Desabilitar e ocultar o Github Copilot
  3. Criar um novo projeto no VS
  4. Solution Explorer e estrutura do projeto (arquivos e pastas)
  5. Classe Program
  6. Método Main estático (ponto de entrada) de aplicações C#
  7. Saída de dados no console
  8. Uso e definição de namespaces para organização
  9. Compilar e executar aplicativos no VS
  10. Depuração com breakpoints no VS
  11. Declaração de variáveis implicitamente e explicitamente tipadas (string, inteiro e double)
  12. Tipo string, concatenação e interpolação
  13. Tipos numéricos integrais (int)
  14. Tipos numéricos de ponto flutuante (float)
  15. Instruções de nível superior

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Imprima no console a frase “Hello World”.
  2. Compile e execute.
  3. Após, crie variáveis atribuindo um nome, uma idade e um salário. Imprima as variáveis no console.
  4. Compile e execute.
  5. Refaça o mesmo programa com instrução de nível superior
Exercícios práticos
  • Exercício prático 1
  1. Implemente um aplicativo console Hello World
  2. Execute o aplicativo sem depuração
  • Exercício prático 2
  1. Execute linha a linha o aplicativo anterior
  2. Antes de executar o comando de imprimir no console, altere o texto “Hello World” para conter o seu nome.
  3. Continue a execução do programa e verifique a saída no console
  • Exercício prático 3
  1. Implemente um aplicativo console que imprima no console seu nome, idade e hobby
  2. Crie variáveis para conter os seus dados
  3. Crie um breakpoint na linha de código idade
  4. Execute linha a linha o seu aplicativo
  5. Altere o valor atribuído da variável idade (qualquer outro valor) em tempo de execução
  6. Finalize a execução do aplicativo e verifique a saída no console
  • Exercício prático 4
  1. No aplicativo anterior, altere o método usado da classe console de WriteLine para Write.
  2. Execute o aplicativo console e verifique a saída no console

📌 Learning Path 1.2

Tópicos principais

Important

Assuntos cobertos: conversões, if-else, switch, erros, operações aritméticas, datetime

  1. Definindo a cultura padrão de um aplicativo console
  2. Entrada de dados
  3. Conversões com classes auxiliares (classe Convert, Parse, TryParse)
  4. Formatação de tipos numéricos
  5. Definindo uma constante
  6. Instruções de seleção - if, if-else e switch
  7. Operadores aritméticos
  8. Operadores de comparação
  9. Operadores lógicos
  10. Manipulando datas
  11. TryParseExact para conversão de datas

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (apenas 1 funcionário)
  2. Formulário de leitura de dados pessoais: nome, sobrenome e salário
  3. Exiba o nome completo em caixa alta
  4. Compile e execute
  5. Defina uma constante com o total de horas padrão mensal
  6. Calcule e imprima o valor hora do funcionário dividindo o salário pelo total de horas padrão mensal
  7. Compile e execute
  8. Adicione a leitura da data de nascimento ao formulário
  9. Imprima no console se a pessoa é menor aprendiz (menor que 18)
  10. Compile e execute
  11. Exiba a categoria de classe de renda (A, B, C, D e E) por faixa de renda (<=1.5k, <=5k, <=10k, <=20k, +20k)
  12. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de caixa registradora para uma loja (tema do aluno)
  2. O programa deve calcular o total de um pedido apenas uma vez por execução do programa
  3. Imprima duas opções de de produto da loja (ex: 1 - beef burguer e 2 - fish burguer)
  4. Leia a opção de produto desejado pelo usuário
  5. Leia a quantidade desejada, calcule e imprima o total do pedido
  6. Compile e execute
  • Exercício prático 2
  1. Calcule o IMC de uma pessoa (peso / altura)
  2. Imprima no console as classificações de acordo com a OMS (abaixo do peso, normal, sobrepeso, obesidade)
  3. Compile e execute
  • Exercício prático 3
  1. Calcule e imprima a média escolar de aluno com base em três notas (nome, nota1, nota2, nota3)
  2. Informe a situação atual do aluno (reprovado < 5; aprovado ≥ 7; recuperação 5 ≥ e < 7)
  3. Compile e execute
  • Exercício prático 4
  1. Conversor de temperatura de celsius para fahrenheit
  2. Leia temperatura em celsius e imprima a temperatura em fahrenheit
  3. Compile e execute

📌 Learning Path 2.1

Tópicos principais

Important

Assuntos cobertos: arrays, repetição, menu, enum

  1. Uso de matrizes (arrays)
  2. Matrizes de tipo implícito
  3. Instrução for
  4. Instrução foreach
  5. Instrução while
  6. Instrução do..while
  7. Enumeração

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Defina um array de horas extras com 12 posições, itere o array e preencha com um valor aleatório (for)
  2. Imprima a soma de horas extras
  3. Compile e execute
  4. Defina um array com o nome dos dias da semana e imprima cada dia no console (foreach)
  5. Compile e execute
  6. Leia um numero inteiro e implemente uma contagem regressiva até zero (while)
  7. Imprima o número, decremente o número e aguarde 1 segundo
  8. Compile e execute
  9. Defina um enum com os dias da semana e imprima cada dia no console (enum)
  10. Compile e execute
  11. Implemente um programa de caixa registradora para pedidos de uma hamburgueria (do … while)
  12. Imprima um menu com as opções: beef burger e fish burger (com seus respectivos valores)
  13. Leia a quantidade de hamburgueres desejados, calcule e imprima o total do pedido
  14. Ofereça uma opção para reiniciar ou sair
  15. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de caixa registradora para uma loja (tema do aluno)
  2. Imprima uma lista de menu com opções de produto da loja
  3. Leia a opção de produto desejado pelo usuário
  4. Leia a quantidade desejada, calcule e imprima o total do pedido
  5. Realize um desconto de 50% no total calculado apenas para o quinto pedido do dia
  6. Ofereça uma opção para reiniciar a caixa registradora e outra opção para sair
  7. Compile e execute
  • Exercício prático 2
  1. Implemente um pequeno jogo para acertar cara ou coroa
  2. Saia do programa somente quando o usuário acertar
  3. Use enumeration no seu programa
  4. Compile e execute
  • Exercício prático 3
  1. Defina um array de inteiro com 5 números aleatórios e fixos
  2. Exiba o array na ordem inversa ao que foi definido
  3. Compile e execute
  • Exercício prático 4
  1. Defina um array de float com 4 posições, leia 4 notas escolares, calcule a média, a maior e a menor nota
  2. Imprima a média das notas, a maior e a menor nota
  3. Compile e execute

📌 Learning Path 2.2

Tópicos principais

Important

Assuntos cobertos: Programação orientada a objetos (introdução)
Leitura do TP1

  1. Adicionando um pacote do nuget: Colorful.Console
  2. Classe - definição de um tipo
  3. Objeto - instância de tipos
  4. Níveis de acessibilidade
  5. Método
  6. Campo
  7. Propriedades auto implementadas
  8. Construtor
  9. Lançando exceções para valores inválidos (string.IsNullOrWhiteSpace e throw new)
  10. Tratamento de erros com try-catch

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (apenas um funcionário)
  2. Crie apenas 1 (um) objeto do tipo funcionário com valores fixos (não leia do console)
  3. Formulário de leitura de dados pessoais: nome, sobrenome e salário
  4. Aceite apenas salário maior que zero
  5. Capture as exceções que podem ocorrer, exiba mensagem de erro, encerre ou reinicie o programa
  6. Exiba o nome completo em caixa alta
  7. Exiba o valor da hora extra. Regra: Salario / 160 * 40%
  8. Compile e execute
  9. Adicione a leitura da data de nascimento ao formulário
  10. Imprima no console se a pessoa é menor aprendiz (menor que 18)
  11. Compile e execute
  12. Exiba a categoria de classe de renda (A, B, C, D e E) por faixa de renda (<=1.5k, <=5k, <=10k, <=20k, +20k)
  13. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de caixa registradora para uma loja (tema do aluno)
  2. O programa deve calcular o total de um pedido apenas uma vez por execução do programa
  3. Imprima uma lista de menu com duas opções de produto da loja (exemplo: beef burger e fish burguer)
  4. Leia a opção de produto desejado pelo usuário
  5. Leia a quantidade desejada, calcule e imprima o total do pedido
  6. Aceite apenas quantidade maior que zero
  7. Capture as exceções que podem ocorrer, exiba mensagem de erro, encerre ou reinicie o programa
  8. Calcule um desconto de 10% para total de pedido acima de 200 reais
  9. Compile e execute
  • Exercício prático 2
  1. Calcule o IMC de uma pessoa (peso / altura)
  2. Imprima no console as classificações de acordo com a OMS (abaixo do peso, normal, sobrepeso, obesidade)
  3. Compile e execute
  • Exercício prático 3
  1. Calcule e imprima a média escolar de aluno com base em três notas (nome, nota1, nota2, nota3)
  2. Informe a situação atual do aluno (reprovado < 5; aprovado ≥ 7; recuperação 5 ≥ e < 7)
  3. Compile e execute
  • Exercício prático 4
  1. Conversor de temperatura de celsius para fahrenheit
  2. Leia temperatura em celsius e imprima a temperatura em fahrenheit
  3. Compile e execute

📌 Learning Path 3.1

Tópicos principais

Important

*Assuntos cobertos: C# avançado (tipos anuláveis, sobrecarga (overloading), métodos de extensão, parâmetros opcionais e nomeados, arrow function, required, init, readonly, operador ternário)

  1. Tipos de referência anuláveis
  2. Parâmetros nomeados
  3. Parâmetros opcionais
  4. Sobrecarga de métodos (overloading)
  5. Métodos de extensão
  6. Arrow function ou expression body definition
  7. Membros (prop e métodos) estáticos
  8. Acessador init para propriedade verificável e imutável (propriedade continua opcional)
  9. Propriedade required como obrigatória no construtor ou inicialização do objeto
  10. Campos readonly como obrigatório no construtor ou declaração
  11. Operador Ternário (?:)

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (apenas um funcionário)
  2. Crie apenas 1 (um) objeto do tipo funcionário com valores fixos (não leia do console)
  3. Formulário de leitura de dados pessoais: nome, sobrenome e salário
  4. Aceite apenas nome e sobrenome preenchido (readonly, required, init, ternário)
  5. Aceite apenas salário maior que zero (readonly, required, init, ternário)
  6. Capture as exceções que podem ocorrer, exiba mensagem de erro, encerre ou reinicie o programa
  7. Exiba o nome completo em caixa alta (arrow function)
  8. Exiba o valor da hora extra. Regra: Salario / 160 * 40%
  9. Compile e execute
  10. Exiba o valor da hora extra com opção de adicional noturno de 60% (parametro nomeado, método sobrecarga ou parâmetro opcional)
  11. Compile e execute
  12. Adicione a leitura da data de nascimento ao formulário
  13. Aceite data nascimento como opcional (tipo anulável)
  14. Aceite data nascimento menor que a data atual (set verificável, ternário)
  15. Imprima no console se a pessoa é menor aprendiz (menor que 18)
  16. Compile e execute
  17. Exiba a categoria de classe de renda (A, B, C, D e E) por faixa de renda (<=1.5k, <=5k, <=10k, <=20k, +20k)
  18. Compile e execute
  19. Crie um método de extensão que enquadre as classificações D e E como elegível ao bolsa família
  20. Exiba se o funcionário está elegível ou não ao bolsa família
  21. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de caixa registradora para uma loja (tema do aluno)
  2. O programa deve calcular o total de um pedido apenas uma vez por execução do programa
  3. Imprima uma lista de menu com duas opções de produto da loja (exemplo: beef burger e fish burguer)
  4. Leia a opção de produto desejado pelo usuário
  5. Leia a quantidade desejada, calcule e imprima o total do pedido
  6. Aceite apenas quantidade maior que zero
  7. Capture as exceções que podem ocorrer, exiba mensagem de erro, encerre ou reinicie o programa
  8. Calcule um desconto de 10% para total de pedido acima de 200 reais
  9. Compile e execute
  10. Use algum ou alguns dos recursos demonstrados nesta aula
  • Exercício prático 2
  1. Calcule o IMC de uma pessoa (peso / altura)
  2. Imprima no console as classificações de acordo com a OMS (abaixo do peso, normal, sobrepeso, obesidade)
  3. Compile e execute
  4. Use algum ou alguns dos recursos demonstrados nesta aula
  • Exercício prático 3
  1. Calcule e imprima a média escolar de aluno com base em três notas (nome, nota1, nota2, nota3)
  2. Informe a situação atual do aluno (reprovado < 5; aprovado ≥ 7; recuperação 5 ≥ e < 7)
  3. Compile e execute
  4. Use algum ou alguns dos recursos demonstrados nesta aula
  • Exercício prático 4
  1. Conversor de temperatura de celsius para fahrenheit
  2. Leia temperatura em celsius e imprima a temperatura em fahrenheit
  3. Compile e execute
  4. Use algum ou alguns dos recursos demonstrados nesta aula

📌 Learning Path 3.2

Tópicos principais

Important

Assuntos cobertos: coleções, LINQ

  1. Coleções indexáveis: List
  2. Coleções de pares chave/valor: Dictionary<TKey, TValue>
  3. Quando usar coleções genéricas
  4. LINQ (Consulta Integrada à Linguagem) e consultas mais comuns
  5. LINQ: Sintaxe de query (declarativa)
  6. LINQ: Sintaxe de método (imperativa)

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um exemplo simples de soma (LINQ), a partir de uma coleção fixa de inteiros
  2. Implemente um programa de cadastro de funcionários de uma hamburgueria (vários funcionários)
  3. Apresente um menu com três opções: adicionar funcionário, calcular folha e sair
  4. Opção 1: ler os dados do funcionário: nome e salário
  5. Opção 2: Calcular o total, mínimo, máximo e média dos salários
  6. Opção 3: Sair do programa
  7. Compile e execute
  8. Adicione o campo identidade (ou cpf) do funcionário e use um dicionário para evitar duplicidade
  9. Compile e execute
  10. Crie um menu adicional para pesquisar funcionários com salários maiores que R$5.000,00
  11. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Crie uma coleção com cinco nome de frutas (nomes fixos no programa)
  2. Filtre e imprima os nomes de frutas que começam com a letra “b” ou “B”
  3. Compile e execute
  • Exercício prático 2
  1. Crie uma coleção que contenha frutas do tipo crítica e não cítricas (fixos no programa)
  2. Filtre e imprima apenas as frutas do tipo cítricas
  3. Compile e execute
  • Exercício prático 3
  1. Crie uma coleção que contenha 10 números inteiros (fixos no programa)
  2. Imprima somente os números ímpares
  3. Compile e execute
  • Exercício prático 4
  1. Implemente um programa de caixa registradora para uma loja (tema do aluno)
  2. Apresente um menu com duas opções de produto e seus valores (exemplo: beef burger e fish burguer)
  3. Leia a opção de produto desejado pelo usuário
  4. Leia a quantidade desejada e apresente o menu novamente
  5. Ofereça também um item de menu para calcular o valor total de todos os pedidos
  6. E ofereça um outro item de menu para sair do programa
  7. Compile e execute

📌 Learning Path 4.1

Tópicos principais

Important

Assuntos cobertos: Programação orientada a objetos (encapsulamento)

  1. POO - Encapsulamento 1
  2. POO - Encapsulamento 2 (deviq)
  3. Padrão Modelo de domínio
  4. Padrão (ou antipadrão) Modelo de domínio anêmico

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de conta bancária com operações de depósito e saque
  2. Simule algumas operações de depósito e saque
  3. Ao final exiba o valor do saldo da conta bancária
  4. Certifique-se de manter o saldo inacessível para alterações
  5. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de cadastro de um funcionário de uma loja (tema do aluno)
  2. Apresente um menu com três opções: adicionar funcionário, aumentar e exibir salario, e sair
  3. Opção 1: ler os dados do funcionário: nome, cargo e salário (regra: salário maior que zero)
  4. Opção 2: Aumentar e exibir o salário dos funcionários (regra → 20% para gerente e 10% para os demais)
  5. Opção 3: Sair do programa
  6. Use os princípios de encapsulamento, definindo a visibilidade adequada para os membros da classe
  7. Compile e execute
  • Exercício prático 2
  1. Simule operações de transações com um cartão de crédito (duas ou mais transações de compra)
  2. Antes de simular as operações, defina um limite inicial de R$ 5000,00
  3. Imprima a fatura com o limite atual
  4. Use os princípios de encapsulamento, definindo a visibilidade adequada para os membros da classe
  5. Compile e execute
  • Exercício prático 3
  1. Simule um sistema de fidelidade de pontos (duas ou mais transações)
  2. Antes de simular as operações, defina uma pontuação inicial de 50 pontos
  3. Cada transação deve ser convertida em dólar. Cada dólar gera 1 ponto.
  4. Simule uma operação de resgate de 10 pontos.
  5. Imprima na tela o extrato com a pontuação atual
  6. Use os princípios de encapsulamento, definindo a visibilidade adequada para os membros da classe
  7. Compile e execute
  • Exercício prático 4
  1. Simule um carrinho de compras de um ecommerce
  2. Simule duas ou mais operações de “adicionar itens ao carrinho” informando produto, preço e qtde
  3. Crie uma propriedade que contenha o total do pedido
  4. Imprima na tela o valor total do pedido
  5. Use os princípios de encapsulamento, definindo a visibilidade adequada para os membros da classe
  6. Compile e execute

📌 Learning Path 4.2

Tópicos principais

Important

Assuntos cobertos: Programação orientada a objetos (herança)
Leitura do TP2

  1. O que é uma herança - relacionamento do tipo “é um” (ex: garçon "é um" funcionário)
  2. Conceito de classe base e classe derivada
  3. Palavra-chave 'base' para herança explícita de construtor (não existe herança implícita de construtor)
  4. Visibilidade 'protected'
  5. Palavra-chave 'sealed' para impedir herança
  6. Sobrecarregando métodos

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de cadastro de publicações de uma biblioteca
  2. Simule o cadastro de três tipos de publicação (livro, revista e jornal)
  3. Titulo, ano publicação e editora são informações básicas a todas as publicações
  4. O livro possui informações adicionais de autor e ISBN
  5. A revista possui informações adicionais de numero edição e ISSN
  6. O jornal possui informações adicionais de data edição e cidade
  7. Crie três publicações atribuindo valores fixos e aleatórios
  8. Compile e execute
  9. Crie um método protegido na classe base para exibir as informações básicas (ex: ExibirDadosBasicos)
  10. Crie um método sem parâmetros para exibir todas as informações (básicas e adicionais) nas classes derivadas (cor padrão)
  11. Crie um método com sobrecarga do método anterior para exibir as informações em cores (parâmetro ConsoleColor)
  12. Exiba no console os dados de cada publicação em cores diferentes
  13. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
  2. Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
  3. Nome, sobrenome e valor hora são informações comuns a todos os funcionários
  4. O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
  5. O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
  6. O caixa possui informação adicional do valor faturamento mes anterior
  7. Crie um método protegido na classe base para exibir as informações básicas (Ex. ExibirDadosBasicos)
  8. Crie métodos nas classes derivadas para exibir as informações básicas e adicionais (use o método protegido)
  9. Crie três tipos de funcionário, atribuindo valores fixos e aleatórios (use herança de construtor)
  10. Exiba os dados de todos os funcionários
  11. Compile e execute
  • Exercício prático 2
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método protegido na classe base para calcular o salário base mensal. Regra: valor hora * total de horas mes (160)
  3. Exiba o salário base com os dados básicos do funcionário
  4. Compile e execute
  • Exercício prático 3
  1. Evolua o exercício anterior com os próximos passos
  2. O garçom possui calculo de comissão (regra: salario base mensal * mesas / 100)
  3. O supervisor possui calculo de adicional noturno (regra: madrugada 20% do salario base mensal e restante 10%)
  4. O caixa possui calculo de bonus (regra: valor faturamento mes anterior * 0.01%)
  5. Crie um método privado nas classes derivadas para calcular o salário total (salario base + adicional)
  6. Exiba o salario total dos funcionários junto com os dados adicionais
  7. Compile e execute
  • Exercício prático 4
  1. Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
  2. Use a criatividade para personalizar o seu cadastro
  3. Compile e execute

📌 Learning Path 5.1

Tópicos principais

Important

Assuntos cobertos: Programação orientada a objetos (polimorfismo)

  1. O que é polimorfismo
  2. Permitindo a sobrescrita de membros na classe base (virtual)
  3. Sobrescrevendo membros (da classe base) na classe derivada (override)
  4. Object e herança implícita para classes
  5. Usando método ToString em classes herdadas implicitamente

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de cadastro de publicações de uma biblioteca
  2. Simule o cadastro de três tipos de publicação (livro, revista e jornal)
  3. Titulo, ano publicação e editora são informações básicas a todas as publicações
  4. O livro possui informações adicionais de autor e ISBN
  5. A revista possui informações adicionais de numero edição e ISSN
  6. O jornal possui informações adicionais de data edição e cidade
  7. Crie três publicações atribuindo valores fixos e aleatórios
  8. Compile e execute
  9. Sobrescreva o método da classe base para exibir também as informações adicionais de cada tipo de publicação
  10. Compile e execute
  11. Simule cadastros de mais tipos de publicação com valores fixos e aleatórios em uma coleção
  12. Exiba as informações de todas as publicações no console (use polimorfismo)
  13. Compile e execute
  14. Experimente usar o método ToString no lugar do método que exibe as informações
  15. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
  2. Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
  3. Nome, sobrenome e valor hora são informações comuns a todos os funcionários
  4. O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
  5. O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
  6. O caixa possui informação adicional do valor faturamento mes anterior
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Crie um método virtual na classe base para exibir as informações básicas
  9. Crie métodos override nas classes derivadas para exibir informações básicas e adicionais
  10. Exiba os dados de todos os funcionários (use polimorfismo)
  11. Compile e execute
  • Exercício prático 2
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método virtual na classe base para calcular o salário base mensal. Regra: valor hora * total de horas mes (160)
  3. Exiba o salário base com os dados básicos do funcionário
  4. Compile e execute
  • Exercício prático 3
  1. Evolua o exercício anterior com os próximos passos
  2. O garçom possui calculo de comissão (regra: salario base mensal * mesas / 100)
  3. O supervisor possui calculo de adicional noturno (regra: noite → 10% e madruga 20% salario base mensal)
  4. O caixa possui calculo de bonus (regra: valor faturamento mes anterior * 0.01%)
  5. Crie um método override para calcular o salário total (invoque o método virtual da classe base)
  6. Exiba o salario total dos funcionários (salario base + adicional) entre os dados básicos
  7. Exibia também o tipo do funcionário entre os dados básicos
  8. Compile e execute
  • Exercício prático 4
  1. Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
  2. Use a criatividade para personalizar o seu cadastro
  3. Compile e execute

📌 Learning Path 5.2

Tópicos principais

Important

Assuntos cobertos: Programação orientada a objetos (abstração)

  1. O que é abstração
  2. Abstract para classe
  3. Abstract para métodos e membros de uma classe

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de cadastro de publicações de uma biblioteca
  2. Simule o cadastro de três tipos de publicação (livro, revista e jornal)
  3. Titulo, ano publicação e editora são informações básicas a todas as publicações
  4. O livro possui informações adicionais de autor e ISBN
  5. A revista possui informações adicionais de numero edição e ISSN
  6. O jornal possui informações adicionais de data edição e cidade
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Compile e execute
  9. Defina a classe base como abstrata
  10. Crie um método abstrato para imprimir informações adicionais
  11. Crie um método que imprima todos as informações básicas de qualquer tipo de publicação e invoke o método abstrato de informações adicionais
  12. Implemente o método de imprimir informações adicionais para exibir as informações adicionais de cada tipo de publicação.
  13. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
  2. Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
  3. Nome, sobrenome e valor hora são informações comuns a todos os funcionários
  4. O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
  5. O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
  6. O caixa possui informação adicional do valor faturamento mes anterior
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Crie um método abstrato na classe base relativo as informações adicionais
  9. Crie um método na classe base para exibir informações básicas e adicionais (invoke o método abstrato)
  10. Implemente o método abstrato nas classes derivadas para exibir adicionais
  11. Use o conceito de abstração em classe e método neste exercício
  12. Compile e execute
  • Exercício prático 2
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método na classe base para calcular o salário base mensal. Regra: valor hora * total de horas mes (160)
  3. Exiba o salário base de cada um dos três funcionários entre as informações básicas
  4. Compile e execute
  • Exercício prático 3
  1. Evolua o exercício anterior com os próximos passos
  2. Defina na classe base um método abstrato para calcular salario adicional
  3. Crie um método na classe base para calcular o salário total (salário base + adicional)
  4. Implemente o método abstrato de salário adicional para cada funcionário
  5. O garçom possui calculo de comissão (regra: salario base mensal * mesas / 100)
  6. O supervisor possui calculo de adicional noturno (regra: noite → 10% e madruga 20% salario base mensal)
  7. O caixa possui calculo de bonus (regra: valor faturamento mes anterior * 0.01%)
  8. Exiba o salário adicional e salário total entre as informações básicas
  9. Compile e execute
  • Exercício prático 4
  1. Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
  2. Use a criatividade para personalizar o seu cadastro
  3. Compile e execute

📌 Learning Path 6.1

Tópicos principais

Important

Assuntos cobertos: Programação orientada a objetos (interface)

  1. O que é uma interface
  2. Interface Segregation Principle (ISP)
  3. Exemplo de uso de interface com ISP - relacionamento do tipo "faz algo" (ex: garçom pode fechar pedido)
  4. Usando o tipo Type para filtrar (LINQ OfType, LINQ Where, GetType, typeof)

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de cadastro de publicações de uma biblioteca
  2. Simule o cadastro de três tipos de publicação (livro, revista e jornal)
  3. Titulo, ano publicação e editora são informações básicas a todas as publicações
  4. O livro possui informações adicionais de autor e ISBN
  5. A revista possui informações adicionais de numero edição e ISSN
  6. O jornal possui informações adicionais de data edição e cidade
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Compile e execute
  9. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  10. Exiba as informações (básicas e adicionais) de todos os funcionários
  11. Compile e execute
  12. Crie uma interface IEmprestavel e adicione capacidades para emprestar, devolver e verificar disponibilidade (somente para Livro e Revista)
  13. Itere sobre os publicações emprestáveis (somente emprestáveis) e e exiba os sesu dados
  14. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
  2. Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
  3. Nome, sobrenome e valor hora são informações comuns a todos os funcionários
  4. O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
  5. O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
  6. O caixa possui informação adicional do valor faturamento mes anterior
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  9. Compile e execute
  • Exercício prático 2
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método na classe base para calcular o salário base mensal. Regra: valor hora * total de horas mes (160)
  3. Exiba o salário base de cada um dos três funcionários entre as informações básicas
  4. Crie uma interface IDissidioElegivel e adicione a capacidade de acrescentar mais 10% ao Valor Hora de todos os funcionários elegíveis (somente supervisor e caixa)
  5. Dica: Se necessário, altere a acessibilidade de membros da classe base para protected
  6. Compile e execute
  • Exercício prático 3
  1. Evolua o exercício anterior com os próximos passos
  2. Itere sobre cada funcionário, e faça os três passos abaixo:
  3. 1 - Exiba o nome, tipo funcionário e salário base
  4. 2 - Acrescente o dissídio (somente aos elegíveis)
  5. 3 - Exiba o salário base novamente com dissídio (somente aos elegíveis)
  6. Compile e execute
  • Exercício prático 4
  1. Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
  2. Use a criatividade para personalizar o seu cadastro
  3. Compile e execute

📌 Learning Path 6.2

Tópicos principais

Important

Assuntos cobertos: Testes de unidade com C#
Leitura do TP3

  1. Os vários tipos de testes
  2. Os pacotes mais populares para teste de unidade
  3. Padrão AAA de teste(Arrange-Act-Assert)
  4. Gerenciador de testes no VS
  5. Tipos de projeto de teste de unidade no VS

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Crie um novo projeto de teste usando xUnit e referencie o projeto Classroom
  2. Crie testes de unidade para a classe Livro
  3. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Crie um novo projeto de teste usando xUnit e referencie o projeto Pratical_1
  2. Crie testes de unidade para a classe Funcionario
  3. Compile e execute os testes no Gerenciador de Testes
  • Exercício prático 2
  1. Crie um novo projeto de teste usando xUnit e referencie o projeto Pratical_2
  2. Crie testes de unidade para a classe Garçon
  3. Compile e execute os testes no Gerenciador de Testes
  • Exercício prático 3
  1. Crie um novo projeto de teste usando xUnit e referencie o projeto Pratical_3
  2. Crie testes de unidade para a classe Supervisor
  3. Compile e execute os testes no Gerenciador de Testes
  • Exercício prático 4
  1. Crie um novo projeto de teste usando xUnit e referencie o projeto personalizado de acordo com o tema da sua loja
  2. Crie testes de unidade para as classes do tema da sua loja
  3. Compile e execute

📌 Learning Path 7.1

Tópicos principais

Important

Assuntos cobertos: Programação orientada a objetos (relacionamento entre objetos)

  1. Agregação - Agrega, existem separadamente, relacionamento "tem um"
  2. Composição - Compõe, dependem um do outro (gerencia ciclo de vida), relacionamento "parte de"
  3. Prefira composição em vez de herança

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de cadastro de publicações de uma biblioteca
  2. Simule o cadastro de três tipos de publicação (livro, revista e jornal)
  3. Titulo, ano publicação e editora são informações básicas a todas as publicações
  4. O livro possui informações adicionais de autor e ISBN
  5. A revista possui informações adicionais de numero edição e ISSN
  6. O jornal possui informações adicionais de data edição e cidade
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Compile e execute
  9. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  10. Exiba as informações (básicas e adicionais) de todos os funcionários
  11. Compile e execute
  12. Crie uma nova classe Biblioteca (nome e localizacao) e uma agregação com publicação
  13. Liste todas as publicações (por tipo) a partir da classe Biblioteca
  14. Compile e execute
  15. Crie uma nova classe Secao (Titulo, Resumo) como composição de Publicação
  16. Simule seções para cada publicação
  17. Ao listar as publicações, exiba também as seções da publicação
  18. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
  2. Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
  3. Nome, sobrenome e valor hora são informações comuns a todos os funcionários
  4. O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
  5. O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
  6. O caixa possui informação adicional do valor faturamento mes anterior
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  9. Compile e execute
  • Exercício prático 2
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método na classe base para calcular o salário base mensal. Regra: valor hora * total de horas mes (160)
  3. Exiba o salário base de cada um dos três funcionários entre as informações básicas
  4. Crie uma opção para adicionar dependente (composição) a cada funcionário (nome e data nascimento)
  5. Ofereça um auxílio dependente aos funcionários, no valor de 500 reais para cada dependente
  6. Exiba o valor do salário base, do auxílio dependente e do valor total do salário (base + auxilio) . Compile e execute
  • Exercício prático 3
  1. Evolua o exercício anterior com os próximos passos
  2. Crie uma classe (nome: Hamburgueria) para gerenciar os funcionários (agregação)
  3. Liste todas os funcionários (por tipo) a partir da classe Hamburgueria
  4. Compile e execute
  • Exercício prático 4
  1. Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
  2. Use a criatividade para personalizar o seu cadastro
  3. Compile e execute

📌 Learning Path 7.2

Tópicos principais

Important

Assuntos cobertos: Leitura e escrita em arquivos (streams/fluxos)

  1. Arquivos e diretórios
  2. Exemplos de como se referir a um arquivo
  3. Classe Environment - CurrentDirectory, Environment.SpecialFolder.MyDocuments
  4. Classe File e StreamReader/StreamWriter
  5. StreamReader/StreamWriter
  6. StreamReader - Leitura do início ao fim

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de cadastro de publicações de uma biblioteca
  2. Simule o cadastro de três tipos de publicação (livro, revista e jornal)
  3. Titulo, ano publicação e editora são informações básicas a todas as publicações
  4. O livro possui informações adicionais de autor e ISBN
  5. A revista possui informações adicionais de numero edição e ISSN
  6. O jornal possui informações adicionais de data edição e cidade
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Compile e execute
  9. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  10. Exiba as informações (básicas e adicionais) de todos os funcionários
  11. Compile e execute
  12. Crie uma nova classe Biblioteca (nome e localizacao) e uma agregação com publicação
  13. Crie um método na classe Biblioteca para gerar um relatório (txt) com os dados básicos de todas as publicações
  14. Crie um método na classe Biblioteca para exibir o relatório (txt) caso exista
  15. Use stream (fluxo) para gravar e ler os dados
  16. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
  2. Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
  3. Nome, sobrenome e valor hora são informações comuns a todos os funcionários
  4. O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
  5. O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
  6. O caixa possui informação adicional do valor faturamento mes anterior
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  9. Crie uma classe (nome: Hamburgueria) para gerenciar os funcionários (agregação)
  10. Compile e execute
  • Exercício prático 2
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método para gerar um relatório (txt) com os dados básico dos funcionários
  3. Use stream (fluxo) para gravar os dados
  4. Compile e execute
  • Exercício prático 3
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método para exibir o relatório (txt) caso exista
  3. Use stream (fluxo) para ler os dados
  4. Compile e execute
  • Exercício prático 4
  1. Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
  2. Use a criatividade para personalizar o seu cadastro
  3. Compile e execute

📌 Learning Path 8.1

Tópicos principais

Important

Assuntos cobertos: Leitura e escrita em arquivos (ReadAllLines, WriteAllLines, string.Split)
Leitura do AT

  1. Escrita de array de strings em arquivo - File.WriteAllLines
  2. Leitura de arquivo para array de strings - File.ReadAllLines
  3. Como separar strings em array usando Split

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  1. Implemente um programa de cadastro de publicações de uma biblioteca
  2. Simule o cadastro de três tipos de publicação (livro, revista e jornal)
  3. Titulo, ano publicação e editora são informações básicas a todas as publicações
  4. O livro possui informações adicionais de autor e ISBN
  5. A revista possui informações adicionais de numero edição e ISSN
  6. O jornal possui informações adicionais de data edição e cidade
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Compile e execute
  9. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  10. Exiba as informações (básicas e adicionais) de todos os funcionários
  11. Compile e execute
  12. Crie uma nova classe Biblioteca (nome e localizacao) e uma agregação com publicação
  13. Crie um método na classe Biblioteca para exportar os dados de todas as publicações em arquivo (txt)
  14. Crie um método na classe Biblioteca para importar os dados de todas as publicações do arquivo (txt)
  15. Exporte e importe os dados básicos e/ou adicionais e realize as modificações necessárias no construtor das classes
  16. Exiba os dados de todas as publicações
  17. Use ReadAllLines e WriteAllLines para gravar e ler os dados
  18. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
  2. Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
  3. Nome, sobrenome e valor hora são informações comuns a todos os funcionários
  4. O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
  5. O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
  6. O caixa possui informação adicional do valor faturamento mes anterior
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  9. Crie uma classe (nome: Hamburgueria) para gerenciar os funcionários (agregação)
  10. Compile e execute
  • Exercício prático 2
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método para exportar os dados dos funcionários em arquivo (txt)
  3. Use ReadAllLines e WriteAllLines para gravar e ler os dados
  4. Compile e execute
  • Exercício prático 3
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método para importar os dados dos funcionários a partir de um arquivo (txt)
  3. Use ReadAllLines e WriteAllLines para gravar e ler os dados
  4. Compile e execute
  • Exercício prático 4
  1. Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
  2. Use a criatividade para personalizar o seu cadastro
  3. Compile e execute

📌 Learning Path 8.2 (Extra)

Tópicos principais

Important

Assuntos cobertos: Delegate, Action e Func

  1. Delegates - Referência (variável, parâmetro, etc) a um método
  2. Action - Delegate padrão de 0 a 16 parâmetros
  3. Func - Delegate padrão de 0 a 16 parâmetros com retorno

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Código fonte de exemplo

Exercício em aula
  • Exemplo 1: Delegate como variável para receber métodos ("Toy problem" simples)
  1. Crie um delegate personalizado: public delegate int Operacao(int x, int y);
  2. Crie um método (estático) para Somar e multiplicar que seja compatível com a assinatura do Delegate
  3. No método Main, crie uma variável (soma) do tipo Operacao que receba o método de Somar
  4. No método Main, crie uma variável (multiplicacao) do tipo Operacao que receba o método de Multiplicacao
  5. Execute a variável soma passando por parâmetro dois inteiros e exiba o resultado
  6. Execute a variável multiplicacao passando por parâmetro dois inteiros e exiba o resultado
  • Exemplo 2: Delegate como parâmetro de método ("Toy problem" intermediário)
  1. Crie um método void (ExecutarOperacao) que receba como parâmetros dois inteiros e o tipo Operacao (delegate)
  2. No método ExecutarOperacao, execute o parâmetro operacao informando os dois inteiros recebidos
  3. Imprima no console os dois inteiros e o resultado da execução do delegate (linha anterior)
  4. No método Main, execute o método ExecutarOperacao informando dois inteiros e a variável soma
  5. No método Main, execute o método ExecutarOperacao informando dois inteiros e a variável multiplicacao
  • Exemplo 3: Delegate como encadeamento de métodos ("Toy problem" intermediário)
  1. Crie um delegate personalizado: public delegate void Operacao3(int x, int y);
  2. Crie um novo método void para Somar (Somar3), que receba dois inteiros e imprima o resultado no console
  3. Crie um novo método void para Multiplicar (Multiplicar3), que receba dois inteiros e imprima resultado no console
  4. No método Main, crie uma variável multiplasOperacoes do tipo Operacao3
  5. Atribua o método Somar3 a variável multiplasOperacoes
  6. Atribua o método Multiplicar3 a variável multiplasOperacoes (use o operador +=)
  7. No método Main, execute a variável multiplasOperacoes informando dois inteiros
  • Exemplo 4: Delegate como callback ("Toy problem" avançado)
  1. Crie um novo delegate personalizado: public delegate void Callback(int result);
  2. Crie um método (Imprimir) que receba um inteiro e o imprima no Console (compatível com o delagate Callback)
  3. Crie o método para Somar4, que receba dois inteiros e mais um parâmetro do tipo callback
  4. No método Somar4, execute a soma, e logo após, execute o callback informando como parâmeto o resultado da soma
  5. No método Main, execute o método Somar4, informando dois inteiros e o método Imprimir
  6. Agora execute os mesmos passos implementando o método Multiplicar4
  • Exemplo 5: Use o delegate predefinido Func
  1. Refaça o exemplo 1 usando o delegate predefinido Func com dois parâmetros e um retorno: Func<int, int, int>
  • Exemplo 6: Use o delegate predefinido Action
  1. Refaça o exemplo 3 usando o delegate predefinido Action com dois parâmetros: Action<int, int>
  • Exemplo final: Publicações e Biblioteca
  1. Implemente um programa de cadastro de publicações de uma biblioteca
  2. Simule o cadastro de três tipos de publicação (livro, revista e jornal)
  3. Titulo, ano publicação e editora são informações básicas a todas as publicações
  4. O livro possui informações adicionais de autor e ISBN
  5. A revista possui informações adicionais de numero edição e ISSN
  6. O jornal possui informações adicionais de data edição e cidade
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Compile e execute
  9. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  10. Exiba as informações (básicas e adicionais) de todos os funcionários
  11. Compile e execute
  12. Crie uma nova classe Biblioteca (nome e localizacao) e uma agregação com publicação
  13. Crie um método void para exibir publicações na classe Biblioteca que receba uma Action<string> como parâmetro (imprimir)
  14. Na classe Program, crie um método void ImprimirPersonalizado para imprimir com background em verde
  15. Execute o método ExibirPublicacoes da classe Biblioteca passando o método Console.WriteLine
  16. Execute o método ExibirPublicacoes da classe Biblioteca passando o método ImprimirPersonalizado
  17. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
  2. Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
  3. Nome, sobrenome e valor hora são informações comuns a todos os funcionários
  4. O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
  5. O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
  6. O caixa possui informação adicional do valor faturamento mes anterior
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  9. Crie uma classe (nome: Hamburgueria) para gerenciar os funcionários (agregação)
  10. Compile e execute
  • Exercício prático 2
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método para exportar os dados dos funcionários
  3. Receba no método anterior um delegate de callback para gravar os dados
  4. Crie um método compatível com o delegate de callback, que grave os dados em txt (sem cabeçalho)
  5. No método Main, execute a exportação informando callback anterior
  6. Compile e execute
  • Exercício prático 3
  1. Evolua o exercício anterior com os próximos passos
  2. Crie um método compatível com o delegate de callback, que grave os dados em txt (com cabeçalho)
  3. No método Main, execute a exportação informando callback anterior
  4. Compile e execute
  • Exercício prático 4
  1. Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
  2. Use a criatividade para personalizar o seu cadastro
  3. Compile e execute

📌 Learning Path 9.1 (Extra)

Tópicos principais

Important

Assuntos cobertos: Eventos

  1. Eventos - Visão Geral
  2. Evento - Um pequeno exemplo
  3. Assinar eventos

Para aprofundar

Exercícios

Caution

Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)

Exercício em aula
  1. Implemente um programa de cadastro de publicações de uma biblioteca
  2. Simule o cadastro de três tipos de publicação (livro, revista e jornal)
  3. Titulo, ano publicação e editora são informações básicas a todas as publicações
  4. O livro possui informações adicionais de autor e ISBN
  5. A revista possui informações adicionais de numero edição e ISSN
  6. O jornal possui informações adicionais de data edição e cidade
  7. Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
  8. Compile e execute
  9. Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
  10. Exiba as informações (básicas e adicionais) de todos os funcionários
  11. Compile e execute
  12. Crie uma nova classe Biblioteca (nome e localizacao) e uma agregação com publicação
  13. Compile e execute
  14. 1.Crie um delegate personalizado na classe Biblioteca: public delegate void PublicacaoAdicionadaHandler(object sender, Publicacao publicacao);
  15. 2.Crie um evento com base no tipo delegate anterior: public event PublicacaoAdicionadaHandler PublicacaoAdicionada;
  16. 3.Execute o evento no método AdicionarPublicacao: PublicacaoAdicionada?.Invoke(this, publicacao);
  17. 4.Na classe Program, crie o método ImprimirPublicacaoAdicionada(object sender, Publicacao publicacao) para imprimir
  18. 5.Na classe Program, método Main, assine o evento: biblioteca.PublicacaoAdicionada += ImprimirPublicacaoAdicionada;
  19. Compile e execute
  20. 1.Crie um evento com base no tipo delegate EventHandler: public event EventHandler<Publicacao> PublicacaoAdicionada2;
  21. 2.Execute o evento no método AdicionarPublicacao: PublicacaoAdicionada2?.Invoke(this, publicacao);
  22. 3.Na classe Program, método Main, assine o evento: biblioteca.PublicacaoAdicionada2 += ImprimirPublicacaoAdicionada;
  23. Compile e execute
Exercícios práticos
  • Exercício prático 1
  1. Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
  2. Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
  3. Nome, sobrenome e valor hora são informações comuns a todos os funcionários
  4. O garçon possui informação adicional de número das mesas sob sua responsabilidade (array de int)
  5. O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
  6. O caixa possui informação adicional do número do caixa que trabalha (valor faturamento mes anterior)
  7. Crie um menu com opções para cadastrar os três tipos de funcionário
  8. Crie também um menu para sair
  9. Compile e execute
  • Exercício prático 2
  1. Evolua o exercício anterior com os próximos passos
  2. Crie uma classe Hamburgueria para controlar os funcionários. Crie um evento para funcionário adicionado
  3. Acione o evento de funcionário adicionado, passando por parametro o resultado do método ToString()
  4. Assine o evento e persista os dados recebidos do evento em um arquivo
  5. Carregue os dados das publicações existente no arquivo na inicialização do programa
  6. Use um delegate personalizado
  7. Compile e execute
  • Exercício prático 3
  1. Evolua o exercício anterior com os próximos passos
  2. Crie uma classe Hamburgueria para controlar os funcionários. Crie um evento para funcionário adicionado
  3. Acione o evento de funcionário adicionado, passando por parametro o resultado do método ToString()
  4. Assine o evento e persista os dados recebidos do evento em um arquivo
  5. Carregue os dados das publicações existente no arquivo na inicialização do programa
  6. Use o delegate EventHandler
  7. Compile e execute
  • Exercício prático 4
  1. Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
  2. Use a criatividade para personalizar o seu cadastro
  3. Compile e execute


🛠️ Packages para usar em console

🧙 Perfis para seguir (post/newsletter .NET)

🔗 Perfis para seguir (post/newsletter System Design)

🥇 Para preparação e entrevistas

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published