Prévia do material em texto
Lista 18 – Herança com Classes e Interfaces em C#
Esta lista explora o conceito de herança em C#, incluindo herança entre classes concretas e o uso de interfaces. Os exercícios também introduzem o uso de classes abstratas e sobrescrita de métodos.
Enunciados
1. Crie uma classe `Veiculo` com método `Mover()`, e uma classe `Carro` que herda `Veiculo` e sobrescreve `Mover()`.
2. Crie uma interface `IImprimivel` com método `Imprimir()`. Implemente-a na classe `Documento`.
3. Crie uma interface `IForma` com método `Area()`. Implemente-a nas classes `Quadrado` e `Circulo`.
4. Crie uma classe `Funcionario` e uma subclasse `Professor`. A subclasse deve ter um método `DarAula()`.
5. Crie uma interface `IAparelho` com `Ligar()` e `Desligar()`. Implemente na classe `Televisao`.
6. Crie uma classe `Conta` com método `ExibirSaldo()`. A classe `ContaCorrente` herda `Conta` e redefine o método.
7. Crie uma interface `ICalculavel` com método `Calcular()`. Implemente em `JurosSimples` e `JurosComposto`.
8. Crie uma classe abstrata `Animal` com método abstrato `EmitirSom()`. Implemente em `Gato` e `Cachorro`.
9. Crie uma interface `IVolume` com método `CalcularVolume()`. Implemente em `Cubo` e `Esfera`.
10. Crie uma classe `Pessoa` com método `Falar()`. A classe `Aluno` herda de `Pessoa` e sobrescreve o método.
Soluções em C#
Exercício 1
using System;
class Veiculo
{
public virtual void Mover()
{
Console.WriteLine("Veículo em movimento");
}
}
class Carro : Veiculo
{
public override void Mover()
{
Console.WriteLine("Carro andando");
}
}
class Program
{
static void Main()
{
Veiculo v = new Carro();
v.Mover();
}
}
Exercício 2
using System;
interface IImprimivel
{
void Imprimir();
}
class Documento : IImprimivel
{
public void Imprimir()
{
Console.WriteLine("Imprimindo documento...");
}
}
class Program
{
static void Main()
{
IImprimivel doc = new Documento();
doc.Imprimir();
}
}
Exercício 3
using System;
interface IForma
{
double Area();
}
class Quadrado : IForma
{
public double Lado;
public double Area() => Lado * Lado;
}
class Circulo : IForma
{
public double Raio;
public double Area() => Math.PI * Raio * Raio;
}
class Program
{
static void Main()
{
IForma f1 = new Quadrado { Lado = 4 };
IForma f2 = new Circulo { Raio = 3 };
Console.WriteLine("Área do quadrado: " + f1.Area());
Console.WriteLine("Área do círculo: " + f2.Area());
}
}
Exercício 4
using System;
class Funcionario
{
public string Nome;
}
class Professor : Funcionario
{
public void DarAula()
{
Console.WriteLine("Professor dando aula");
}
}
class Program
{
static void Main()
{
Professor p = new Professor();
p.Nome = "Carlos";
p.DarAula();
}
}
Exercício 5
using System;
interface IAparelho
{
void Ligar();
void Desligar();
}
class Televisao : IAparelho
{
public void Ligar() => Console.WriteLine("TV ligada");
public void Desligar() => Console.WriteLine("TV desligada");
}
class Program
{
static void Main()
{
IAparelho tv = new Televisao();
tv.Ligar();
tv.Desligar();
}
}
Exercício 6
using System;
class Conta
{
public virtual void ExibirSaldo()
{
Console.WriteLine("Saldo: R$ 1000");
}
}
class ContaCorrente : Conta
{
public override void ExibirSaldo()
{
Console.WriteLine("Saldo Conta Corrente: R$ 1500");
}
}
class Program
{
static void Main()
{
Conta c = new ContaCorrente();
c.ExibirSaldo();
}
}
Exercício 7
using System;
interface ICalculavel
{
double Calcular();
}
class JurosSimples : ICalculavel
{
public double Capital = 1000;
public double Taxa = 0.05;
public int Tempo = 2;
public double Calcular() => Capital * Taxa * Tempo;
}
class JurosComposto : ICalculavel
{
public double Capital = 1000;
public double Taxa = 0.05;
public int Tempo = 2;
public double Calcular() => Capital * Math.Pow(1 + Taxa, Tempo) - Capital;
}
class Program
{
static void Main()
{
ICalculavel js = new JurosSimples();
ICalculavel jc = new JurosComposto();
Console.WriteLine("Juros Simples: " + js.Calcular());
Console.WriteLine("Juros Compostos: " + jc.Calcular());
}
}
Exercício 8
using System;
abstract class Animal
{
public abstract void EmitirSom();
}
class Gato : Animal
{
public override void EmitirSom()
{
Console.WriteLine("Miau");
}
}
class Cachorro : Animal
{
public override void EmitirSom()
{
Console.WriteLine("Au Au");
}
}
class Program
{
static void Main()
{
Animal a1 = new Gato();
Animal a2 = new Cachorro();
a1.EmitirSom();
a2.EmitirSom();
}
}
Exercício 9
using System;
interface IVolume
{
double CalcularVolume();
}
class Cubo : IVolume
{
public double Lado;
public double CalcularVolume() => Math.Pow(Lado, 3);
}
class Esfera : IVolume
{
public double Raio;
public double CalcularVolume() => (4.0 / 3) * Math.PI * Math.Pow(Raio, 3);
}
class Program
{
static void Main()
{
IVolume c = new Cubo { Lado = 2 };
IVolume e = new Esfera { Raio = 3 };
Console.WriteLine("Volume do cubo: " + c.CalcularVolume());
Console.WriteLine("Volume da esfera: " + e.CalcularVolume());
}
}
Exercício 10
using System;
class Pessoa
{
public virtual void Falar()
{
Console.WriteLine("Olá!");
}
}
class Aluno : Pessoa
{
public override void Falar()
{
Console.WriteLine("Olá, sou aluno!");
}
}
class Program
{
static void Main()
{
Pessoa p = new Aluno();
p.Falar();
}
}