Curso de Programação C#
William Ivanski
Lista de Exercícios Módulo II Capítulo 1
1) Escreva um programa orientado a objetos com as seguintes características:
- Uma classe Pessoa, com atributos nome e idade, e métodos Cumprimentar e DizerIdade;
- Uma classe Aluno derivada da classe Pessoa, com um método IrParaEscola;
- Uma classe Professor derivada da classe Pessoa, com um método Explicar que recebe como parâmetro um assunto;
- Na classe principal:
- Crie uma Pessoa e faça ela Cumprimentar e DizerIdade;
- Crie um Aluno de 21 anos, e faça ele IrParaEscola, Cumprimentar e DizerIdade;
- Crie um Professor de 30 anos, e faça ele Cumprimentar, DizerIdade e Explicar sobre um determinado assunto.
2) Escreva um programa orientado a objetos com as seguintes características:
- Uma classe Porta com um atributo cor (string) e um método Mostrar que imprime na tela "Eu sou uma porta, minha cor é marrom" (ou qualquer cor que seja);
- Uma classe Habitacao com um atributo area e um construtor para atribuir o valor desse atributo. Cada habitação também terá uma porta (classe Porta). A habitação também terá um método Mostrar, que imprimirá na tela "Eu sou uma habitacao, minha area eh X m2, e a cor da minha porta é tal";
- Uma classe Apartamento é uma classe derivada da classe Habitacao, com area atribuída na instanciação igual a 50 m2
- Uma classe Morador derivada da classe Pessoa do exercício anterior, mas que possua uma habitação. Escreva também um método Mostrar que mostre as informações do morador e da habitação;
- Na classe principal, crie um apartamento, uma pessoa para morar nele, e mostre as informações.
3) Crie uma classe Retangulo, com altura e largura passadas como argumento no método construtor. Também deve ter um método Mostrar que imprime a altura e a largura do retângulo. Crie um array contendo 10 retângulos, solicite ao usuário suas dimensões e depois as mostre na tela.
4) Crie uma classe Ponto3D que representa um ponto em um espaço tridimensional, com coordenadas X, Y e Z. Deve conter os seguintes métodos:
- Mostrar, que mostrará as coordenadas do ponto, por exemplo "(3, 5, -2)";
- MoverPara, que mudará as coordenadas do ponto;
- Distancia(Ponto3D p2), que calculará a distância do ponto até outro ponto p2;
Use propriedades para resolver este exercício. Seu programa deve criar um array de N pontos e solicitar as coordenadas de todos eles ao usuário. Após isso, deve calcular e mostrar a distância entre o primeiro ponto e os demais pontos.
5) Crie um programa orientado a objetos com as seguintes características:
- Crie uma classe AlbumDeFotos com uma propriedade numeroTotalDePaginas;
- Crie outra propriedade somente leitura chamada numeroTotalDeFotos baseada na propriedade numetoTotalDePaginas, sabendo que cada página pode conter no máximo 2 fotos;
- Crie uma terceira propriedade chamada numeroDeFotos, cujo método set deve mostrar uma mensagem de erro caso o usuário ultrapasse o numeroTotalDeFotos;
- Crie um programa para testar a classe AlbumDeFotos. Simule um exemplo em que atribuir um valor à propriedade numeroDeFotos mostra uma mensagem de erro, e outro exemplo em que não mostra.
6) Crie um catálogo para armazenar informações sobre arquivos de músicas e filmes.
- Para cada item, deve armazenar o código, nome, categoria e tamanho hipotético do arquivo em disco;
- Para filmes deve ter também o nome do diretor, nome do ator principal e nome da atriz principal;
- Para arquivos de música também deve ter o artista e o tamanho em segundos;
- Arquivos de filme e música devem ter um método Play (ainda não implementado) e também um método RetrieveInformation, que vai (em uma futura versão) conectar com um servidor na Internet para buscar informações sobre a música ou o filme;
- Use herança se necessário. Na função Main, crie arrays para cada tipo de objeto, e os alimente com pelo menos 3 arquivos de cada tipo.
7) Altere o exercício anterior para mostrar ao usuário um menu em modo texto, que permita entrar com novas informações e também mostrar os dados armazenados em arrays.
8) Deseja-se atualizar as contas correntes dos clientes de uma agência bancária. É dado o cadastro de N clientes, contendo para cada cliente o número de sua conta e o seu saldo; o cadastro está ordenado pelo número da conta. Em seguida, é dado o número de operações efetuadas no dia e, para cada operação, o número da conta, uma letra C ou D indicando se a operação é de crédito ou débito e o valor da operação. Emitir o cadastro de clientes atualizado.
9) Altere o exercício anterior para mostrar ao usuário um menu em modo texto, que permita entrar com novas informações e também mostrar os dados armazenados em arrays. Também implemente um facilitador ao usuário para os casos de operações de transferência, para que ele digite apenas o número da conta de origem, número da conta de destino e o valor transferido.
10) Deseja-se fazer a emissão da folha de pagamentos de uma empresa. Para cada um dos NF funcionários da empresa são dadas as seguintes informações:
- NOME
- SAL (salário)
- HED (horas extras diurnas)
- HEN (horas extras noturnas)
- ND (número de dependentes)
- FAL (faltas em horas)
- DE (descontos eventuais)
- REF (gastos com refeições feitas na empresa)
- VAL (vales retirados durante o mês)
Emitir as seguintes informações:
- nome,
- salário,
- horas extras = HED * SAL/160 + HEN * 1.2 * SAL/160,
- salário família = ND * 0.05 * salário mínimo vigente,
- salário bruto = salário + horas extras + salário família.
Descontos efetuados:
- INAMPS = 0.08 * SAL,
- faltas = FAL * SAL/160,
- refeições,
- vales,
- descontos eventuais,
- imposto de renda = 0.08 * salário bruto.
Salário líquido = salário bruto - desconto total.
11) Um campeonato de futebol foi disputado por N times identificados pelos seus nomes. Para cada time são considerados os seguintes dados:
- PG - número de pontos ganhos (2 por vitória, 1 por empate e 0 por derrota)
- GM - número de gols marcados
- GS - número de gols sofridos (gols difíceis de marcar)
- S - saldo de gols (GM - GS)
- V - número de vitórias
- GA - goal average (GM / GS se GS != 0, GM se GS = 0)
a) Dados os resultados de M jogos, imprima uma tabela com todos os dados (nome do time, PG, GM, GS, S, V, GA, igual àquela que sai no jornal) dos N times. Cada resultado é representado na forma (T1, T2, G1, g2) cuja interpretação é a seguinte: no jogo T1 x T2 o resultado foi G1 x G2. Exemplo: (Corinthians, São Paulo, 1, 0).
b) Com os mesmos dados do item (a), imprima a classificação dos times do campeonato (do primeiro para o último). A classificação é pelo número de pontos ganhos (PG) e em segundo lugar pelo saldo de gols (S). Se houver empate segundo os dois critérios, classifique pelo número de vitórias, número de gols marcados e até mesmo por ordem alfabética do nome do time.
12) Com o auxílio de um programa de geração automática de diagramas de classes a partir do executável (recomendo o NClass), crie e estude os diagramas de classes de todos os exercícios acima. O que os diagramas apresentam? O que significam as setas?