1) Escreva um programa orientado a objetos com as seguintes características:
// Pessoa.cs
using System;
namespace Lista1Exercicio01
{
public class Pessoa
{
public string nome;
public int idade;
public Pessoa()
{
}
public Pessoa(string pnome, int pidade)
{
this.nome = pnome;
this.idade = pidade;
}
public void Cumprimentar()
{
Console.WriteLine("Olá, meu nome é {0}.", this.nome);
}
public void DizerIdade()
{
Console.WriteLine("Tenho {0} anos de idade.", this.idade);
}
}
}
// Aluno.cs
using System;
namespace Lista1Exercicio01
{
public class Aluno : Pessoa
{
public Aluno()
{
}
public Aluno(string pnome, int pidade) : base(pnome, pidade)
{
}
public void IrParaEscola()
{
Console.WriteLine("O aluno {0} está indo para escola.", this.nome);
}
}
}
// Professor.cs
using System;
namespace Lista1Exercicio01
{
public class Professor : Pessoa
{
public Professor()
{
}
public Professor(string pnome, int pidade) : base(pnome, pidade)
{
}
public void Explicar(string assunto)
{
Console.WriteLine("O professor {0} está explicando sobre {1}.", this.nome, assunto);
}
}
}
// Program.cs
using System;
namespace Lista1Exercicio01
{
class MainClass
{
public static void Main(string[] args)
{
Pessoa p;
Aluno aluno;
Professor prof;
// primeira parte
p = new Pessoa("William", 27);
p.Cumprimentar();
p.DizerIdade();
Console.WriteLine();
// segunda parte
aluno = new Aluno("José", 21);
aluno.IrParaEscola();
aluno.Cumprimentar();
aluno.DizerIdade();
Console.WriteLine();
// terceira parte
prof = new Professor("Marcos", 35);
prof.Cumprimentar();
prof.DizerIdade();
prof.Explicar("programação em C#");
Console.ReadKey();
}
}
}
2) Escreva um programa orientado a objetos com as seguintes características:
// Porta.cs
using System;
namespace Lista1Exercicio02
{
public class Porta
{
public string cor;
public Porta(string p_cor)
{
this.cor = p_cor;
}
public void Mostrar()
{
Console.WriteLine("Eu sou uma porta, minha cor é {0}.", this.cor);
}
}
}
// Habitacao.cs
using System;
namespace Lista1Exercicio02
{
public class Habitacao
{
public int area;
public Porta porta;
public Habitacao(int p_area, Porta p_porta)
{
this.area = p_area;
this.porta = p_porta;
}
public void Mostrar()
{
Console.WriteLine("Eu sou uma habitação, minha área é {0} m2, e a cor da minha porta é {1}.", this.area, this.porta.cor);
}
}
}
// Apartamento.cs
using System;
namespace Lista1Exercicio02
{
public class Apartamento : Habitacao
{
public Apartamento(Porta p_porta) : base(50, p_porta)
{
}
}
}
// Pessoa.cs
using System;
namespace Lista1Exercicio02
{
public class Pessoa
{
public string nome;
public int idade;
public Pessoa()
{
}
public Pessoa(string pnome, int pidade)
{
this.nome = pnome;
this.idade = pidade;
}
public void Cumprimentar()
{
Console.WriteLine("Olá, meu nome é {0}.", this.nome);
}
public void DizerIdade()
{
Console.WriteLine("Tenho {0} anos de idade.", this.idade);
}
}
}
// Morador.cs
using System;
namespace Lista1Exercicio02
{
public class Morador : Pessoa
{
public Habitacao hab;
public Morador(string p_nome, int p_idade, Habitacao p_hab) : base(p_nome, p_idade)
{
this.hab = p_hab;
}
public void Mostrar()
{
Console.WriteLine(
"Sou um morador, meu nome é {0}, tenho {1} anos, minha habitação tem {2} m2, e a cor da porta é {3}.",
this.nome,
this.idade,
this.hab.area,
this.hab.porta.cor
);
}
}
}
// Program.cs
using System;
namespace Lista1Exercicio02
{
class MainClass
{
public static void Main(string[] args)
{
Morador m;
m = new Morador("William", 27, new Apartamento(new Porta("marrom")));
m.Mostrar();
Console.ReadKey();
}
}
}
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.
// Retangulo.cs
using System;
namespace Lista1Exercicio03
{
public class Retangulo
{
public int altura, largura;
public Retangulo()
{
}
public Retangulo(int p_altura, int p_largura)
{
this.altura = p_altura;
this.largura = p_largura;
}
public void Mostrar()
{
Console.WriteLine("Altura = {0}, largura = {1}", this.altura, this.largura);
}
}
}
// Program.cs
using System;
namespace Lista1Exercicio03
{
class MainClass
{
public static void Main(string[] args)
{
System.Collections.Generic.List vetor;
vetor = new System.Collections.Generic.List();
// alimentando o vetor
for (int i = 0; i < 10; i++)
{
Console.WriteLine("Preenchimento do retângulo {0}", i+1);
vetor.Add(LeRetangulo());
Console.WriteLine();
}
// mostrando todos os retangulos do vetor
for (int i = 0; i < vetor.Count; i++)
{
Console.Write("Retângulo {0}: ", i+1);
vetor[i].Mostrar();
}
Console.ReadKey();
}
public static Retangulo LeRetangulo()
{
Retangulo r;
r = new Retangulo();
Console.Write("Digite a altura: ");
r.altura = int.Parse(Console.ReadLine());
Console.Write("Digite a largura: ");
r.largura = int.Parse(Console.ReadLine());
return r;
}
}
}
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:
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.
// Ponto3D.cs
using System;
namespace Lista1Exercicio04
{
public class Ponto3D
{
public int x { get; set; }
public int y { get; set; }
public int z { get; set; }
public Ponto3D()
{
}
public Ponto3D(int p_x, int p_y, int p_z)
{
this.x = p_x;
this.y = p_y;
this.z = p_z;
}
public void Mostrar()
{
Console.WriteLine("({0},{1},{2})", this.x, this.y, this.z);
}
public void MoverPara(int p_x, int p_y, int p_z)
{
this.x = p_x;
this.y = p_y;
this.z = p_z;
}
public double Distancia(Ponto3D p2)
{
return Math.Sqrt(((p2.x - this.x) * (p2.x - this.x)) + ((p2.y - this.y) * (p2.y - this.y)) + ((p2.z - this.z) * (p2.z - this.z)));
}
}
}
// Program.cs
using System;
namespace Lista1Exercicio04
{
class MainClass
{
public static void Main(string[] args)
{
System.Collections.Generic.List<Ponto3D> vetor;
Ponto3D p;
int n;
vetor = new System.Collections.Generic.List<Ponto3D>();
Console.Write("Quantos pontos serão criados? ");
n = int.Parse(Console.ReadLine());
for (int i = 0; i < n; i++)
{
p = new Ponto3D();
Console.Write("Digite o valor X do ponto {0}: ", i);
p.x = int.Parse(Console.ReadLine());
Console.Write("Digite o valor Y do ponto {0}: ", i);
p.y = int.Parse(Console.ReadLine());
Console.Write("Digite o valor Z do ponto {0}: ", i);
p.z = int.Parse(Console.ReadLine());
vetor.Add(p);
Console.Write("O ponto que você digitou foi: ");
vetor[i].Mostrar();
Console.WriteLine();
}
for (int i = 1; i < n; i++)
Console.WriteLine("A distância entre o ponto 0 e o ponto {0} é {1}", i, vetor[0].Distancia(vetor[i]));
Console.ReadKey();
}
}
}
5) Crie um programa orientado a objetos com as seguintes características:
// AlbumDeFotos.cs
using System;
namespace Lista1Exercicio05
{
public class AlbumDeFotos
{
public int numeroTotalDePaginas { get; set; }
public int numeroTotalDeFotos
{
get
{
return this.numeroTotalDePaginas * 2;
}
}
private int _numeroDeFotos;
public int numeroDeFotos
{
get
{
return this._numeroDeFotos;
}
set
{
if (value > this.numeroTotalDeFotos)
Console.WriteLine("ERRO: O número de fotos não deve exceder {0}.", this.numeroTotalDeFotos);
else
this._numeroDeFotos = value;
}
}
public AlbumDeFotos(int p_numeroTotalDePaginas)
{
this.numeroTotalDePaginas = p_numeroTotalDePaginas;
}
}
}
// Program.cs
using System;
namespace Lista1Exercicio05
{
class MainClass
{
public static void Main(string[] args)
{
AlbumDeFotos a;
a = new AlbumDeFotos(80);
Console.WriteLine("O exemplo abaixo não causa erro:");
a.numeroDeFotos = 100;
Console.WriteLine("Número atual de fotos = {0}", a.numeroDeFotos);
Console.WriteLine();
Console.WriteLine("O exemplo abaixo causa erro:");
a.numeroDeFotos = 200;
Console.WriteLine("Número atual de fotos = {0}", a.numeroDeFotos);
Console.ReadKey();
}
}
}
6) Crie um catálogo para armazenar informações sobre arquivos de músicas e filmes.
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:
Emitir as seguintes informações:
Descontos efetuados:
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:
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?