Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

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();
 }
}