ℹ️ 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.
Se você estiver usando este repositório para seu aprendizado, por favor, dê uma estrela. Eu ficarei muito feliz com isso. Obrigado 👍
Important
Assuntos cobertos: hello world, visual studio, depuração, variáveis e tipos
- Download e instalação do Visual Studio (VS) Community
- Desabilitar e ocultar o Github Copilot
- Criar um novo projeto no VS
- Solution Explorer e estrutura do projeto (arquivos e pastas)
- Classe Program
- Método Main estático (ponto de entrada) de aplicações C#
- Saída de dados no console
- Uso e definição de namespaces para organização
- Compilar e executar aplicativos no VS
- Depuração com breakpoints no VS
- Declaração de variáveis implicitamente e explicitamente tipadas (string, inteiro e double)
- Tipo string, concatenação e interpolação
- Tipos numéricos integrais (int)
- Tipos numéricos de ponto flutuante (float)
- Instruções de nível superior
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
- Imprima no console a frase “Hello World”.
- Compile e execute.
- Após, crie variáveis atribuindo um nome, uma idade e um salário. Imprima as variáveis no console.
- Compile e execute.
- Refaça o mesmo programa com instrução de nível superior
Exercícios práticos
Exercício prático 1
- Implemente um aplicativo console Hello World
- Execute o aplicativo sem depuração
Exercício prático 2
- Execute linha a linha o aplicativo anterior
- Antes de executar o comando de imprimir no console, altere o texto “Hello World” para conter o seu nome.
- Continue a execução do programa e verifique a saída no console
Exercício prático 3
- Implemente um aplicativo console que imprima no console seu nome, idade e hobby
- Crie variáveis para conter os seus dados
- Crie um breakpoint na linha de código idade
- Execute linha a linha o seu aplicativo
- Altere o valor atribuído da variável idade (qualquer outro valor) em tempo de execução
- Finalize a execução do aplicativo e verifique a saída no console
Exercício prático 4
- No aplicativo anterior, altere o método usado da classe console de WriteLine para Write.
- Execute o aplicativo console e verifique a saída no console
Important
Assuntos cobertos: conversões, if-else, switch, erros, operações aritméticas, datetime
- Definindo a cultura padrão de um aplicativo console
- Entrada de dados
- Conversões com classes auxiliares (classe Convert, Parse, TryParse)
- Formatação de tipos numéricos
- Definindo uma constante
- Instruções de seleção - if, if-else e switch
- Operadores aritméticos
- Operadores de comparação
- Operadores lógicos
- Manipulando datas
- TryParseExact para conversão de datas
- Todos operadores em C# (aritméticos, lógicos e comparação)
- Correspondência de padrões (técnica funcional)
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
- Implemente um programa de cadastro de funcionários de uma hamburgueria (apenas 1 funcionário)
- Formulário de leitura de dados pessoais: nome, sobrenome e salário
- Exiba o nome completo em caixa alta
- Compile e execute
- Defina uma constante com o total de horas padrão mensal
- Calcule e imprima o valor hora do funcionário dividindo o salário pelo total de horas padrão mensal
- Compile e execute
- Adicione a leitura da data de nascimento ao formulário
- Imprima no console se a pessoa é menor aprendiz (menor que 18)
- Compile e execute
- Exiba a categoria de classe de renda (A, B, C, D e E) por faixa de renda (<=1.5k, <=5k, <=10k, <=20k, +20k)
- Compile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de caixa registradora para uma loja (tema do aluno)
- O programa deve calcular o total de um pedido apenas uma vez por execução do programa
- Imprima duas opções de de produto da loja (ex: 1 - beef burguer e 2 - fish burguer)
- Leia a opção de produto desejado pelo usuário
- Leia a quantidade desejada, calcule e imprima o total do pedido
- Compile e execute
Exercício prático 2
- Calcule o IMC de uma pessoa (peso / altura)
- Imprima no console as classificações de acordo com a OMS (abaixo do peso, normal, sobrepeso, obesidade)
- Compile e execute
Exercício prático 3
- Calcule e imprima a média escolar de aluno com base em três notas (nome, nota1, nota2, nota3)
- Informe a situação atual do aluno (reprovado < 5; aprovado ≥ 7; recuperação 5 ≥ e < 7)
- Compile e execute
Exercício prático 4
- Conversor de temperatura de celsius para fahrenheit
- Leia temperatura em celsius e imprima a temperatura em fahrenheit
- Compile e execute
Important
Assuntos cobertos: arrays, repetição, menu, enum
- Uso de matrizes (arrays)
- Matrizes de tipo implícito
- Instrução for
- Instrução foreach
- Instrução while
- Instrução do..while
- Enumeração
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
- Defina um array de horas extras com 12 posições, itere o array e preencha com um valor aleatório (for)
- Imprima a soma de horas extras
- Compile e execute
- Defina um array com o nome dos dias da semana e imprima cada dia no console (foreach)
- Compile e execute
- Leia um numero inteiro e implemente uma contagem regressiva até zero (while)
- Imprima o número, decremente o número e aguarde 1 segundo
- Compile e execute
- Defina um enum com os dias da semana e imprima cada dia no console (enum)
- Compile e execute
- Implemente um programa de caixa registradora para pedidos de uma hamburgueria (do … while)
- Imprima um menu com as opções: beef burger e fish burger (com seus respectivos valores)
- Leia a quantidade de hamburgueres desejados, calcule e imprima o total do pedido
- Ofereça uma opção para reiniciar ou sair
- Compile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de caixa registradora para uma loja (tema do aluno)
- Imprima uma lista de menu com opções de produto da loja
- Leia a opção de produto desejado pelo usuário
- Leia a quantidade desejada, calcule e imprima o total do pedido
- Realize um desconto de 50% no total calculado apenas para o quinto pedido do dia
- Ofereça uma opção para reiniciar a caixa registradora e outra opção para sair
- Compile e execute
Exercício prático 2
- Implemente um pequeno jogo para acertar cara ou coroa
- Saia do programa somente quando o usuário acertar
- Use enumeration no seu programa
- Compile e execute
Exercício prático 3
- Defina um array de inteiro com 5 números aleatórios e fixos
- Exiba o array na ordem inversa ao que foi definido
- Compile e execute
Exercício prático 4
- Defina um array de float com 4 posições, leia 4 notas escolares, calcule a média, a maior e a menor nota
- Imprima a média das notas, a maior e a menor nota
- Compile e execute
Important
Assuntos cobertos: Programação orientada a objetos (introdução)
Leitura do TP1
- Adicionando um pacote do nuget: Colorful.Console
- Classe - definição de um tipo
- Objeto - instância de tipos
- Níveis de acessibilidade
- Método
- Campo
- Propriedades auto implementadas
- Construtor
- Lançando exceções para valores inválidos (string.IsNullOrWhiteSpace e throw new)
- Tratamento de erros com try-catch
- Exceções mais comuns (tanto para capturar, quanto para utilizar)
- Classes parciais
- Inicializando objetos (4 formas diferentes)
- Struct para pequenos tipos de dados com pouco comportamento (imutáveis)
- Record para tipos focados em armazenamento de dados sem comportamento
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
- Implemente um programa de cadastro de funcionários de uma hamburgueria (apenas um funcionário)
- Crie apenas 1 (um) objeto do tipo funcionário com valores fixos (não leia do console)
- Formulário de leitura de dados pessoais: nome, sobrenome e salário
- Aceite apenas salário maior que zero
- Capture as exceções que podem ocorrer, exiba mensagem de erro, encerre ou reinicie o programa
- Exiba o nome completo em caixa alta
- Exiba o valor da hora extra. Regra: Salario / 160 * 40%
- Compile e execute
- Adicione a leitura da data de nascimento ao formulário
- Imprima no console se a pessoa é menor aprendiz (menor que 18)
- Compile e execute
- Exiba a categoria de classe de renda (A, B, C, D e E) por faixa de renda (<=1.5k, <=5k, <=10k, <=20k, +20k)
- Compile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de caixa registradora para uma loja (tema do aluno)
- O programa deve calcular o total de um pedido apenas uma vez por execução do programa
- Imprima uma lista de menu com duas opções de produto da loja (exemplo: beef burger e fish burguer)
- Leia a opção de produto desejado pelo usuário
- Leia a quantidade desejada, calcule e imprima o total do pedido
- Aceite apenas quantidade maior que zero
- Capture as exceções que podem ocorrer, exiba mensagem de erro, encerre ou reinicie o programa
- Calcule um desconto de 10% para total de pedido acima de 200 reais
- Compile e execute
Exercício prático 2
- Calcule o IMC de uma pessoa (peso / altura)
- Imprima no console as classificações de acordo com a OMS (abaixo do peso, normal, sobrepeso, obesidade)
- Compile e execute
Exercício prático 3
- Calcule e imprima a média escolar de aluno com base em três notas (nome, nota1, nota2, nota3)
- Informe a situação atual do aluno (reprovado < 5; aprovado ≥ 7; recuperação 5 ≥ e < 7)
- Compile e execute
Exercício prático 4
- Conversor de temperatura de celsius para fahrenheit
- Leia temperatura em celsius e imprima a temperatura em fahrenheit
- Compile e execute
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)
- Tipos de referência anuláveis
- Parâmetros nomeados
- Parâmetros opcionais
- Sobrecarga de métodos (overloading)
- Métodos de extensão
- Arrow function ou expression body definition
- Membros (prop e métodos) estáticos
- Acessador init para propriedade verificável e imutável (propriedade continua opcional)
- Propriedade required como obrigatória no construtor ou inicialização do objeto
- Campos readonly como obrigatório no construtor ou declaração
- Operador Ternário (?:)
- Clean Code para C# (thangchung)
- Q&A sobre temas avançados de .NET e C# (Stack Overflow - Por Maniero)
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
- Implemente um programa de cadastro de funcionários de uma hamburgueria (apenas um funcionário)
- Crie apenas 1 (um) objeto do tipo funcionário com valores fixos (não leia do console)
- Formulário de leitura de dados pessoais: nome, sobrenome e salário
- Aceite apenas nome e sobrenome preenchido (readonly, required, init, ternário)
- Aceite apenas salário maior que zero (readonly, required, init, ternário)
- Capture as exceções que podem ocorrer, exiba mensagem de erro, encerre ou reinicie o programa
- Exiba o nome completo em caixa alta (arrow function)
- Exiba o valor da hora extra. Regra: Salario / 160 * 40%
- Compile e execute
- Exiba o valor da hora extra com opção de adicional noturno de 60% (parametro nomeado, método sobrecarga ou parâmetro opcional)
- Compile e execute
- Adicione a leitura da data de nascimento ao formulário
- Aceite data nascimento como opcional (tipo anulável)
- Aceite data nascimento menor que a data atual (set verificável, ternário)
- Imprima no console se a pessoa é menor aprendiz (menor que 18)
- Compile e execute
- Exiba a categoria de classe de renda (A, B, C, D e E) por faixa de renda (<=1.5k, <=5k, <=10k, <=20k, +20k)
- Compile e execute
- Crie um método de extensão que enquadre as classificações D e E como elegível ao bolsa família
- Exiba se o funcionário está elegível ou não ao bolsa família
- Compile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de caixa registradora para uma loja (tema do aluno)
- O programa deve calcular o total de um pedido apenas uma vez por execução do programa
- Imprima uma lista de menu com duas opções de produto da loja (exemplo: beef burger e fish burguer)
- Leia a opção de produto desejado pelo usuário
- Leia a quantidade desejada, calcule e imprima o total do pedido
- Aceite apenas quantidade maior que zero
- Capture as exceções que podem ocorrer, exiba mensagem de erro, encerre ou reinicie o programa
- Calcule um desconto de 10% para total de pedido acima de 200 reais
- Compile e execute
Use algum ou alguns dos recursos demonstrados nesta aula
Exercício prático 2
- Calcule o IMC de uma pessoa (peso / altura)
- Imprima no console as classificações de acordo com a OMS (abaixo do peso, normal, sobrepeso, obesidade)
- Compile e execute
Use algum ou alguns dos recursos demonstrados nesta aula
Exercício prático 3
- Calcule e imprima a média escolar de aluno com base em três notas (nome, nota1, nota2, nota3)
- Informe a situação atual do aluno (reprovado < 5; aprovado ≥ 7; recuperação 5 ≥ e < 7)
- Compile e execute
Use algum ou alguns dos recursos demonstrados nesta aula
Exercício prático 4
- Conversor de temperatura de celsius para fahrenheit
- Leia temperatura em celsius e imprima a temperatura em fahrenheit
- Compile e execute
Use algum ou alguns dos recursos demonstrados nesta aula
Important
Assuntos cobertos: coleções, LINQ
- Coleções indexáveis: List
- Coleções de pares chave/valor: Dictionary<TKey, TValue>
- Quando usar coleções genéricas
- LINQ (Consulta Integrada à Linguagem) e consultas mais comuns
- LINQ: Sintaxe de query (declarativa)
- LINQ: Sintaxe de método (imperativa)
- Visão geral sobre coleções do .NET
- Introdução a consultas LINQ
- Todas as coleções Genéricas - System.Collections.Generic
- Todas as coleções não genéricas (Object) - System.Collections
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
- Implemente um exemplo simples de soma (LINQ), a partir de uma coleção fixa de inteiros
- Implemente um programa de cadastro de funcionários de uma hamburgueria (vários funcionários)
- Apresente um menu com três opções: adicionar funcionário, calcular folha e sair
- Opção 1: ler os dados do funcionário: nome e salário
- Opção 2: Calcular o total, mínimo, máximo e média dos salários
- Opção 3: Sair do programa
- Compile e execute
- Adicione o campo identidade (ou cpf) do funcionário e use um dicionário para evitar duplicidade
- Compile e execute
- Crie um menu adicional para pesquisar funcionários com salários maiores que R$5.000,00
- Compile e execute
Exercícios práticos
Exercício prático 1
- Crie uma coleção com cinco nome de frutas (nomes fixos no programa)
- Filtre e imprima os nomes de frutas que começam com a letra “b” ou “B”
- Compile e execute
Exercício prático 2
- Crie uma coleção que contenha frutas do tipo crítica e não cítricas (fixos no programa)
- Filtre e imprima apenas as frutas do tipo cítricas
- Compile e execute
Exercício prático 3
- Crie uma coleção que contenha 10 números inteiros (fixos no programa)
- Imprima somente os números ímpares
- Compile e execute
Exercício prático 4
- Implemente um programa de caixa registradora para uma loja (tema do aluno)
- Apresente um menu com duas opções de produto e seus valores (exemplo: beef burger e fish burguer)
- Leia a opção de produto desejado pelo usuário
- Leia a quantidade desejada e apresente o menu novamente
- Ofereça também um item de menu para calcular o valor total de todos os pedidos
- E ofereça um outro item de menu para sair do programa
- Compile e execute
Important
Assuntos cobertos: Programação orientada a objetos (encapsulamento)
- POO - Encapsulamento 1
- POO - Encapsulamento 2 (deviq)
- Padrão Modelo de domínio
- Padrão (ou antipadrão) Modelo de domínio anêmico
- Princípios populares de desenvolvimento - Regra do escoteiro
- Princípios populares de desenvolvimento - KISS (Keep It Simple, Stupid)
- Princípios populares de desenvolvimento - YAGNI (You Ain't Gonna Need It - Você não vai precisar)
- Princípios populares de desenvolvimento - DRY (Don't Repeat Yourself)
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
- Implemente um programa de conta bancária com operações de depósito e saque
- Simule algumas operações de depósito e saque
- Ao final exiba o valor do saldo da conta bancária
- Certifique-se de manter o saldo inacessível para alterações
- Compile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de cadastro de um funcionário de uma loja (tema do aluno)
- Apresente um menu com três opções: adicionar funcionário, aumentar e exibir salario, e sair
- Opção 1: ler os dados do funcionário: nome, cargo e salário (regra: salário maior que zero)
- Opção 2: Aumentar e exibir o salário dos funcionários (regra → 20% para gerente e 10% para os demais)
- Opção 3: Sair do programa
- Use os princípios de encapsulamento, definindo a visibilidade adequada para os membros da classe
- Compile e execute
Exercício prático 2
- Simule operações de transações com um cartão de crédito (duas ou mais transações de compra)
- Antes de simular as operações, defina um limite inicial de R$ 5000,00
- Imprima a fatura com o limite atual
- Use os princípios de encapsulamento, definindo a visibilidade adequada para os membros da classe
- Compile e execute
Exercício prático 3
- Simule um sistema de fidelidade de pontos (duas ou mais transações)
- Antes de simular as operações, defina uma pontuação inicial de 50 pontos
- Cada transação deve ser convertida em dólar. Cada dólar gera 1 ponto.
- Simule uma operação de resgate de 10 pontos.
- Imprima na tela o extrato com a pontuação atual
- Use os princípios de encapsulamento, definindo a visibilidade adequada para os membros da classe
- Compile e execute
Exercício prático 4
- Simule um carrinho de compras de um ecommerce
- Simule duas ou mais operações de “adicionar itens ao carrinho” informando produto, preço e qtde
- Crie uma propriedade que contenha o total do pedido
- Imprima na tela o valor total do pedido
- Use os princípios de encapsulamento, definindo a visibilidade adequada para os membros da classe
- Compile e execute
Important
Assuntos cobertos: Programação orientada a objetos (herança)
Leitura do TP2
- O que é uma herança - relacionamento do tipo “é um” (ex: garçon "é um" funcionário)
- Conceito de classe base e classe derivada
- Palavra-chave 'base' para herança explícita de construtor (não existe herança implícita de construtor)
- Visibilidade 'protected'
- Palavra-chave 'sealed' para impedir herança
- Sobrecarregando métodos
- Ferramenta para modelar diagrama de classes (Draw.io)
- Ferramenta para modelar diagrama de classes (Lucidchart)
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
- Implemente um programa de cadastro de publicações de uma biblioteca
- Simule o cadastro de três tipos de publicação (livro, revista e jornal)
- Titulo, ano publicação e editora são informações básicas a todas as publicações
- O livro possui informações adicionais de autor e ISBN
- A revista possui informações adicionais de numero edição e ISSN
- O jornal possui informações adicionais de data edição e cidade
- Crie três publicações atribuindo valores fixos e aleatórios
- Compile e execute
- Crie um método
protegidona classe base para exibir as informações básicas (ex: ExibirDadosBasicos) - Crie um método sem parâmetros para exibir todas as informações (básicas e adicionais) nas classes derivadas (cor padrão)
- Crie um método
com sobrecargado método anterior para exibir as informações em cores (parâmetro ConsoleColor) - Exiba no console os dados de cada publicação em cores diferentes
- Compile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
- Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
- Nome, sobrenome e valor hora são informações comuns a todos os funcionários
- O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
- O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
- O caixa possui informação adicional do valor faturamento mes anterior
- Crie um método
protegidona classe base para exibir as informações básicas (Ex. ExibirDadosBasicos) - Crie métodos nas classes derivadas para exibir as informações básicas e adicionais (use o método protegido)
- Crie três tipos de funcionário, atribuindo valores fixos e aleatórios (use herança de construtor)
- Exiba os dados de todos os funcionários
- Compile e execute
Exercício prático 2
- Evolua o exercício anterior com os próximos passos
- Crie um método
protegidona classe base para calcular o salário base mensal. Regra: valor hora * total de horas mes (160) - Exiba o salário base com os dados básicos do funcionário
- Compile e execute
Exercício prático 3
- Evolua o exercício anterior com os próximos passos
- O garçom possui calculo de comissão (regra: salario base mensal * mesas / 100)
- O supervisor possui calculo de adicional noturno (regra: madrugada 20% do salario base mensal e restante 10%)
- O caixa possui calculo de bonus (regra: valor faturamento mes anterior * 0.01%)
- Crie um método privado nas classes derivadas para calcular o salário total (salario base + adicional)
- Exiba o salario total dos funcionários junto com os dados
adicionais - Compile e execute
Exercício prático 4
- Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
- Use a criatividade para personalizar o seu cadastro
- Compile e execute
Important
Assuntos cobertos: Programação orientada a objetos (polimorfismo)
- O que é polimorfismo
- Permitindo a sobrescrita de membros na classe base (virtual)
- Sobrescrevendo membros (da classe base) na classe derivada (override)
- Object e herança implícita para classes
- Usando método ToString em classes herdadas implicitamente
- Clean architecture dotnet
- Exemplo de solução .NET com arquitetura evolucionária (em 4 estágios)
- Exemplo de modelagens de objetos/classes para problemas reais
- Exemplos de projetos reais completos
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
- Implemente um programa de cadastro de publicações de uma biblioteca
- Simule o cadastro de três tipos de publicação (livro, revista e jornal)
- Titulo, ano publicação e editora são informações básicas a todas as publicações
- O livro possui informações adicionais de autor e ISBN
- A revista possui informações adicionais de numero edição e ISSN
- O jornal possui informações adicionais de data edição e cidade
- Crie três publicações atribuindo valores fixos e aleatórios
- Compile e execute
- Sobrescreva o método da classe base para exibir também as informações adicionais de cada tipo de publicação
- Compile e execute
- Simule cadastros de mais tipos de publicação com valores fixos e aleatórios em uma coleção
- Exiba as informações de todas as publicações no console (use polimorfismo)
- Compile e execute
- Experimente usar o método ToString no lugar do método que exibe as informações
- Compile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
- Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
- Nome, sobrenome e valor hora são informações comuns a todos os funcionários
- O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
- O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
- O caixa possui informação adicional do valor faturamento mes anterior
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Crie um método
virtualna classe base para exibir as informações básicas - Crie métodos
overridenas classes derivadas para exibir informações básicas e adicionais - Exiba os dados de todos os funcionários (use polimorfismo)
- Compile e execute
Exercício prático 2
- Evolua o exercício anterior com os próximos passos
- Crie um método
virtualna classe base para calcular o salário base mensal. Regra: valor hora * total de horas mes (160) - Exiba o salário base com os dados básicos do funcionário
- Compile e execute
Exercício prático 3
- Evolua o exercício anterior com os próximos passos
- O garçom possui calculo de comissão (regra: salario base mensal * mesas / 100)
- O supervisor possui calculo de adicional noturno (regra: noite → 10% e madruga 20% salario base mensal)
- O caixa possui calculo de bonus (regra: valor faturamento mes anterior * 0.01%)
- Crie um método
overridepara calcular o salário total (invoque o método virtual da classe base) - Exiba o salario total dos funcionários (salario base + adicional) entre os dados
básicos - Exibia também o tipo do funcionário entre os dados
básicos - Compile e execute
Exercício prático 4
- Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
- Use a criatividade para personalizar o seu cadastro
- Compile e execute
Important
Assuntos cobertos: Programação orientada a objetos (abstração)
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
- Implemente um programa de cadastro de publicações de uma biblioteca
- Simule o cadastro de três tipos de publicação (livro, revista e jornal)
- Titulo, ano publicação e editora são informações básicas a todas as publicações
- O livro possui informações adicionais de autor e ISBN
- A revista possui informações adicionais de numero edição e ISSN
- O jornal possui informações adicionais de data edição e cidade
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Compile e execute
- Defina a classe base como abstrata
- Crie um método abstrato para imprimir informações adicionais
- 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
- Implemente o método de imprimir informações adicionais para exibir as informações adicionais de cada tipo de publicação.
- Compile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
- Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
- Nome, sobrenome e valor hora são informações comuns a todos os funcionários
- O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
- O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
- O caixa possui informação adicional do valor faturamento mes anterior
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Crie um método
abstratona classe base relativo as informações adicionais - Crie um método na classe base para exibir informações básicas e adicionais
(invoke o método abstrato) - Implemente o método abstrato nas classes derivadas para exibir adicionais
- Use o conceito de abstração em classe e método neste exercício
- Compile e execute
Exercício prático 2
- Evolua o exercício anterior com os próximos passos
- Crie um método na classe base para calcular o salário base mensal. Regra: valor hora * total de horas mes (160)
- Exiba o salário base de cada um dos três funcionários entre as informações básicas
- Compile e execute
Exercício prático 3
- Evolua o exercício anterior com os próximos passos
- Defina na classe base um método abstrato para calcular salario adicional
- Crie um método na classe base para calcular o salário total (salário base + adicional)
- Implemente o método abstrato de salário adicional para cada funcionário
- O garçom possui calculo de comissão (regra: salario base mensal * mesas / 100)
- O supervisor possui calculo de adicional noturno (regra: noite → 10% e madruga 20% salario base mensal)
- O caixa possui calculo de bonus (regra: valor faturamento mes anterior * 0.01%)
- Exiba o salário adicional e salário total entre as informações básicas
- Compile e execute
Exercício prático 4
- Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
- Use a criatividade para personalizar o seu cadastro
- Compile e execute
Important
Assuntos cobertos: Programação orientada a objetos (interface)
- O que é uma interface
- Interface Segregation Principle (ISP)
- Exemplo de uso de interface com ISP - relacionamento do tipo "faz algo" (ex: garçom pode fechar pedido)
- Usando o tipo Type para filtrar (LINQ OfType, LINQ Where, GetType, typeof)
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
- Implemente um programa de cadastro de publicações de uma biblioteca
- Simule o cadastro de três tipos de publicação (livro, revista e jornal)
- Titulo, ano publicação e editora são informações básicas a todas as publicações
- O livro possui informações adicionais de autor e ISBN
- A revista possui informações adicionais de numero edição e ISSN
- O jornal possui informações adicionais de data edição e cidade
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Compile e execute
- Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
- Exiba as informações (básicas e adicionais) de todos os funcionários
- Compile e execute
Crie uma interface IEmprestavel e adicione capacidades para emprestar, devolver e verificar disponibilidade (somente para Livro e Revista)Itere sobre os publicações emprestáveis (somente emprestáveis) e e exiba os sesu dadosCompile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
- Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
- Nome, sobrenome e valor hora são informações comuns a todos os funcionários
- O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
- O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
- O caixa possui informação adicional do valor faturamento mes anterior
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)- Compile e execute
Exercício prático 2
- Evolua o exercício anterior com os próximos passos
- Crie um método na classe base para calcular o salário base mensal. Regra: valor hora * total de horas mes (160)
- Exiba o salário base de cada um dos três funcionários entre as informações básicas
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)Dica: Se necessário, altere a acessibilidade de membros da classe base para protectedCompile e execute
Exercício prático 3
- Evolua o exercício anterior com os próximos passos
Itere sobre cada funcionário, e faça os três passos abaixo:1 - Exiba o nome, tipo funcionário e salário base2 - Acrescente o dissídio (somente aos elegíveis)3 - Exiba o salário base novamente com dissídio (somente aos elegíveis)Compile e execute
Exercício prático 4
- Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
- Use a criatividade para personalizar o seu cadastro
- Compile e execute
Important
Assuntos cobertos: Testes de unidade com C#
Leitura do TP3
- Os vários tipos de testes
- Os pacotes mais populares para teste de unidade
- Padrão AAA de teste(Arrange-Act-Assert)
- Gerenciador de testes no VS
- Tipos de projeto de teste de unidade no VS
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
- Crie um novo projeto de teste usando xUnit e referencie o projeto Classroom
- Crie testes de unidade para a classe Livro
- Compile e execute
Exercícios práticos
Exercício prático 1
- Crie um novo projeto de teste usando xUnit e referencie o projeto Pratical_1
- Crie testes de unidade para a classe Funcionario
- Compile e execute os testes no Gerenciador de Testes
Exercício prático 2
- Crie um novo projeto de teste usando xUnit e referencie o projeto Pratical_2
- Crie testes de unidade para a classe Garçon
- Compile e execute os testes no Gerenciador de Testes
Exercício prático 3
- Crie um novo projeto de teste usando xUnit e referencie o projeto Pratical_3
- Crie testes de unidade para a classe Supervisor
- Compile e execute os testes no Gerenciador de Testes
Exercício prático 4
- Crie um novo projeto de teste usando xUnit e referencie o projeto personalizado de acordo com o tema da sua loja
- Crie testes de unidade para as classes do tema da sua loja
- Compile e execute
Important
Assuntos cobertos: Programação orientada a objetos (relacionamento entre objetos)
- Agregação - Agrega, existem separadamente, relacionamento "tem um"
- Composição - Compõe, dependem um do outro (gerencia ciclo de vida), relacionamento "parte de"
- Prefira composição em vez de herança
- POO e os tipos de associação entre objetos
- DDD - Catálogo de padrões para domínio complexo
- DDD - Microserviços orientado à DDD
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
- Implemente um programa de cadastro de publicações de uma biblioteca
- Simule o cadastro de três tipos de publicação (livro, revista e jornal)
- Titulo, ano publicação e editora são informações básicas a todas as publicações
- O livro possui informações adicionais de autor e ISBN
- A revista possui informações adicionais de numero edição e ISSN
- O jornal possui informações adicionais de data edição e cidade
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Compile e execute
- Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
- Exiba as informações (básicas e adicionais) de todos os funcionários
- Compile e execute
Crie uma nova classe Biblioteca (nome e localizacao) e uma agregação com publicaçãoListe todas as publicações (por tipo) a partir da classe BibliotecaCompile e executeCrie uma nova classe Secao (Titulo, Resumo) como composição de PublicaçãoSimule seções para cada publicaçãoAo listar as publicações, exiba também as seções da publicaçãoCompile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
- Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
- Nome, sobrenome e valor hora são informações comuns a todos os funcionários
- O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
- O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
- O caixa possui informação adicional do valor faturamento mes anterior
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)- Compile e execute
Exercício prático 2
- Evolua o exercício anterior com os próximos passos
- Crie um método na classe base para calcular o salário base mensal. Regra: valor hora * total de horas mes (160)
- Exiba o salário base de cada um dos três funcionários entre as informações básicas
Crie uma opção para adicionar dependente (composição) a cada funcionário (nome e data nascimento)Ofereça um auxílio dependente aos funcionários, no valor de 500 reais para cada dependenteExiba 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
- Evolua o exercício anterior com os próximos passos
Crie uma classe (nome: Hamburgueria) para gerenciar os funcionários (agregação)Liste todas os funcionários (por tipo) a partir da classe HamburgueriaCompile e execute
Exercício prático 4
- Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
- Use a criatividade para personalizar o seu cadastro
- Compile e execute
Important
Assuntos cobertos: Leitura e escrita em arquivos (streams/fluxos)
- Arquivos e diretórios
- Exemplos de como se referir a um arquivo
- Classe Environment - CurrentDirectory, Environment.SpecialFolder.MyDocuments
- Classe File e StreamReader/StreamWriter
- StreamReader/StreamWriter
- StreamReader - Leitura do início ao fim
- E/S de arquivo e de fluxo - Visão Geral
- Exceções comuns em operações de E/S
- Append - Acrescentar dados em arquivo
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
- Implemente um programa de cadastro de publicações de uma biblioteca
- Simule o cadastro de três tipos de publicação (livro, revista e jornal)
- Titulo, ano publicação e editora são informações básicas a todas as publicações
- O livro possui informações adicionais de autor e ISBN
- A revista possui informações adicionais de numero edição e ISSN
- O jornal possui informações adicionais de data edição e cidade
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Compile e execute
- Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
- Exiba as informações (básicas e adicionais) de todos os funcionários
- Compile e execute
Crie uma nova classe Biblioteca (nome e localizacao) e uma agregação com publicaçãoCrie um método na classe Biblioteca para gerar um relatório (txt) com os dados básicos de todas as publicaçõesCrie um método na classe Biblioteca para exibir o relatório (txt) caso existaUse stream (fluxo) para gravar e ler os dadosCompile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
- Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
- Nome, sobrenome e valor hora são informações comuns a todos os funcionários
- O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
- O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
- O caixa possui informação adicional do valor faturamento mes anterior
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
Crie uma classe (nome: Hamburgueria) para gerenciar os funcionários (agregação)- Compile e execute
Exercício prático 2
Evolua o exercício anterior com os próximos passosCrie um método para gerar um relatório (txt) com os dados básico dos funcionáriosUse stream (fluxo) para gravar os dados- Compile e execute
Exercício prático 3
Evolua o exercício anterior com os próximos passosCrie um método para exibir o relatório (txt) caso existaUse stream (fluxo) para ler os dadosCompile e execute
Exercício prático 4
- Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
- Use a criatividade para personalizar o seu cadastro
- Compile e execute
Important
Assuntos cobertos: Leitura e escrita em arquivos (ReadAllLines, WriteAllLines, string.Split)
Leitura do AT
- Escrita de array de strings em arquivo - File.WriteAllLines
- Leitura de arquivo para array de strings - File.ReadAllLines
- Como separar strings em array usando Split
- C# Language Roadmap
- .NET Developer Roadmap (por phongnguyend)
- .NET Developer Roadmap (por Milan Milanović)
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
- Implemente um programa de cadastro de publicações de uma biblioteca
- Simule o cadastro de três tipos de publicação (livro, revista e jornal)
- Titulo, ano publicação e editora são informações básicas a todas as publicações
- O livro possui informações adicionais de autor e ISBN
- A revista possui informações adicionais de numero edição e ISSN
- O jornal possui informações adicionais de data edição e cidade
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Compile e execute
- Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
- Exiba as informações (básicas e adicionais) de todos os funcionários
- Compile e execute
Crie uma nova classe Biblioteca (nome e localizacao) e uma agregação com publicaçãoCrie um método na classe Biblioteca para exportar os dados de todas as publicações em arquivo (txt)Crie um método na classe Biblioteca para importar os dados de todas as publicações do arquivo (txt)Exporte e importe os dados básicos e/ou adicionais e realize as modificações necessárias no construtor das classesExiba os dados de todas as publicaçõesUse ReadAllLines e WriteAllLines para gravar e ler os dadosCompile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
- Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
- Nome, sobrenome e valor hora são informações comuns a todos os funcionários
- O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
- O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
- O caixa possui informação adicional do valor faturamento mes anterior
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
Crie uma classe (nome: Hamburgueria) para gerenciar os funcionários (agregação)- Compile e execute
Exercício prático 2
Evolua o exercício anterior com os próximos passosCrie um método para exportar os dados dos funcionários em arquivo (txt)Use ReadAllLines e WriteAllLines para gravar e ler os dados- Compile e execute
Exercício prático 3
Evolua o exercício anterior com os próximos passosCrie um método para importar os dados dos funcionários a partir de um arquivo (txt)Use ReadAllLines e WriteAllLines para gravar e ler os dadosCompile e execute
Exercício prático 4
- Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
- Use a criatividade para personalizar o seu cadastro
- Compile e execute
Important
Assuntos cobertos: Delegate, Action e Func
- Delegates - Referência (variável, parâmetro, etc) a um método
- Action - Delegate padrão de 0 a 16 parâmetros
- Func - Delegate padrão de 0 a 16 parâmetros com retorno
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)
- Crie um delegate personalizado:
public delegate int Operacao(int x, int y); - Crie um método (estático) para Somar e multiplicar que seja compatível com a assinatura do Delegate
- No método Main, crie uma variável (soma) do tipo Operacao que receba o método de Somar
- No método Main, crie uma variável (multiplicacao) do tipo Operacao que receba o método de Multiplicacao
Executea variável soma passando por parâmetro dois inteiros e exiba o resultadoExecutea 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)
- Crie um método void (ExecutarOperacao) que receba como parâmetros dois inteiros e o tipo Operacao (delegate)
- No método ExecutarOperacao,
executeo parâmetro operacao informando os dois inteiros recebidos - Imprima no console os dois inteiros e o resultado da execução do delegate (linha anterior)
- No método Main, execute o método ExecutarOperacao informando dois inteiros e a variável
soma - 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)
- Crie um delegate personalizado: public delegate
voidOperacao3(int x, int y); - Crie um novo método void para Somar
(Somar3), que receba dois inteiros eimprima o resultado no console - Crie um novo método void para Multiplicar
(Multiplicar3), que receba dois inteiros eimprima resultado no console - No método Main, crie uma variável
multiplasOperacoesdo tipoOperacao3 - Atribua o método
Somar3a variável multiplasOperacoes - Atribua o método
Multiplicar3a variável multiplasOperacoes (use o operador +=) - No método Main, execute a variável multiplasOperacoes informando dois inteiros
Exemplo 4: Delegate como callback ("Toy problem" avançado)
- Crie um novo delegate personalizado:
public delegate void Callback(int result); - Crie um método (Imprimir) que receba um inteiro e o imprima no Console (compatível com o delagate Callback)
- Crie o método para Somar4, que receba dois inteiros e mais um parâmetro do tipo callback
- No método Somar4, execute a soma, e logo após, execute o callback informando como parâmeto o resultado da soma
- No método Main, execute o método Somar4, informando dois inteiros e o método Imprimir
- Agora execute os mesmos passos implementando o método Multiplicar4
Exemplo 5: Use o delegate predefinido Func
- 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
- Refaça o exemplo 3 usando o delegate predefinido Action com dois parâmetros: Action<int, int>
Exemplo final: Publicações e Biblioteca
- Implemente um programa de cadastro de publicações de uma biblioteca
- Simule o cadastro de três tipos de publicação (livro, revista e jornal)
- Titulo, ano publicação e editora são informações básicas a todas as publicações
- O livro possui informações adicionais de autor e ISBN
- A revista possui informações adicionais de numero edição e ISSN
- O jornal possui informações adicionais de data edição e cidade
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Compile e execute
- Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
- Exiba as informações (básicas e adicionais) de todos os funcionários
- Compile e execute
- Crie uma nova classe Biblioteca (nome e localizacao) e uma agregação com publicação
Crie um método void para exibir publicações na classe Biblioteca que receba uma Action<string> como parâmetro (imprimir)Na classe Program, crie um método void ImprimirPersonalizado para imprimir com background em verdeExecute o método ExibirPublicacoes da classe Biblioteca passando o método Console.WriteLineExecute o método ExibirPublicacoes da classe Biblioteca passando o método ImprimirPersonalizadoCompile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
- Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
- Nome, sobrenome e valor hora são informações comuns a todos os funcionários
- O garçon possui informação adicional de número das mesas sob sua responsabilidade (colecao de int)
- O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
- O caixa possui informação adicional do valor faturamento mes anterior
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
- Crie uma classe (nome: Hamburgueria) para gerenciar os funcionários (agregação)
- Compile e execute
Exercício prático 2
Evolua o exercício anterior com os próximos passosCrie um método para exportar os dados dos funcionáriosReceba no método anterior um delegate de callback para gravar os dadosCrie um método compatível com o delegate de callback, que grave os dados em txt (sem cabeçalho)No método Main, execute a exportação informando callback anteriorCompile e execute
Exercício prático 3
Evolua o exercício anterior com os próximos passosCrie um método compatível com o delegate de callback, que grave os dados em txt (com cabeçalho)No método Main, execute a exportação informando callback anteriorCompile e execute
Exercício prático 4
- Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
- Use a criatividade para personalizar o seu cadastro
- Compile e execute
Important
Assuntos cobertos: Eventos
- Design Patterns com exemplos em C# 1 (DotNetTutorials)
- Design Patterns com exemplos em C# 2 (nemanharogico)
- Melhores práticas para Backend
- Padrões para System Design
- System Design Resources Awesome
Caution
Obs: Coloque o nome das soluções/projetos com o número da aula (Ex: Aula_1.1)
Exercício em aula
- Implemente um programa de cadastro de publicações de uma biblioteca
- Simule o cadastro de três tipos de publicação (livro, revista e jornal)
- Titulo, ano publicação e editora são informações básicas a todas as publicações
- O livro possui informações adicionais de autor e ISBN
- A revista possui informações adicionais de numero edição e ISSN
- O jornal possui informações adicionais de data edição e cidade
- Crie uma colecao com 10 tipos de funcionarios, atribuindo valores fixos e aleatórios
- Compile e execute
- Crie métodos para exibir informações básicas e adicionais (use, ou polimorfismo, ou abstração ou herança)
- Exiba as informações (básicas e adicionais) de todos os funcionários
- Compile e execute
- Crie uma nova classe Biblioteca (nome e localizacao) e uma agregação com publicação
- Compile e execute
1.Crie um delegate personalizado na classe Biblioteca: public delegate void PublicacaoAdicionadaHandler(object sender, Publicacao publicacao);2.Crie um evento com base no tipo delegate anterior: public event PublicacaoAdicionadaHandler PublicacaoAdicionada;3.Execute o evento no método AdicionarPublicacao: PublicacaoAdicionada?.Invoke(this, publicacao);4.Na classe Program, crie o método ImprimirPublicacaoAdicionada(object sender, Publicacao publicacao) para imprimir5.Na classe Program, método Main, assine o evento: biblioteca.PublicacaoAdicionada += ImprimirPublicacaoAdicionada;Compile e execute1.Crie um evento com base no tipo delegate EventHandler: public event EventHandler<Publicacao> PublicacaoAdicionada2;2.Execute o evento no método AdicionarPublicacao: PublicacaoAdicionada2?.Invoke(this, publicacao);3.Na classe Program, método Main, assine o evento: biblioteca.PublicacaoAdicionada2 += ImprimirPublicacaoAdicionada;Compile e execute
Exercícios práticos
Exercício prático 1
- Implemente um programa de cadastro de funcionários de uma hamburgueria (garçon, supervisor e caixa)
- Obs.: Faça inicialmente para uma hamburgueria e depois personalize para outro tema (tema do aluno)
- Nome, sobrenome e valor hora são informações comuns a todos os funcionários
- O garçon possui informação adicional de número das mesas sob sua responsabilidade (array de int)
- O supervisor possui informações adicional do turno que supervisiona (manha, tarde, noite, madrugada)
- O caixa possui informação adicional do número do caixa que trabalha (valor faturamento mes anterior)
- Crie um menu com opções para cadastrar os três tipos de funcionário
- Crie também um menu para sair
- Compile e execute
Exercício prático 2
Evolua o exercício anterior com os próximos passosCrie uma classe Hamburgueria para controlar os funcionários. Crie um evento para funcionário adicionadoAcione o evento de funcionário adicionado, passando por parametro o resultado do método ToString()Assine o evento e persista os dados recebidos do evento em um arquivoCarregue os dados das publicações existente no arquivo na inicialização do programaUse um delegate personalizadoCompile e execute
Exercício prático 3
Evolua o exercício anterior com os próximos passosCrie uma classe Hamburgueria para controlar os funcionários. Crie um evento para funcionário adicionadoAcione o evento de funcionário adicionado, passando por parametro o resultado do método ToString()Assine o evento e persista os dados recebidos do evento em um arquivoCarregue os dados das publicações existente no arquivo na inicialização do programaUse o delegate EventHandlerCompile e execute
Exercício prático 4
- Personalize os tipos de funcionários e os cálculos de acordo com o tema da sua loja
- Use a criatividade para personalizar o seu cadastro
- Compile e execute
- https://www.linkedin.com/in/milan-jovanovic (.NET +200k)
- https://www.linkedin.com/in/djokic-stefan (.NET +90k)
- https://www.linkedin.com/in/davidcallan (.NET +60k)
- https://www.linkedin.com/in/mwaseemzakir (.NET +50k)
- https://www.linkedin.com/in/davitshergilashvili (Architecture +50k)
- https://www.linkedin.com/in/alexxubyte (System Design +800k)
- https://www.linkedin.com/in/arslanahmad (System Design +150k)
- https://www.linkedin.com/in/ashishps1 (System Design +55k)