Pular para conteúdo

Mini-Projeto: Calculadora Geométrica Genérica 📐

Neste projeto, vamos usar Generics e Traits para criar um sistema que calcula áreas de diferentes formas geométricas de forma flexível.

📋 Requisitos

  1. Trait Area: Defina uma trait Area com um método calcular_area(&self) -> f64.
  2. Formas: Implemente a trait para uma struct Circulo e uma struct Retangulo.
  3. Função Genérica: Escreva uma função que receba qualquer tipo que implemente Area e imprima o resultado formatado.

🚀 Guia de Execução

  1. Implementação sugerida:
    trait Area {
        fn calcular_area(&self) -> f64;
    }
    
    struct Circulo { raio: f64 }
    struct Retangulo { largura: f64, altura: f64 }
    
    impl Area for Circulo {
        fn calcular_area(&self) -> f64 {
            std::f64::consts::PI * self.raio * self.raio
        }
    }
    
    impl Area for Retangulo {
        fn calcular_area(&self) -> f64 {
            self.largura * self.altura
        }
    }
    
    // Função genérica com Trait Bound
    fn exibir_area<T: Area>(forma: T) {
        println!("A área da forma é: {:.2}", forma.calcular_area());
    }
    
    fn main() {
        let c = Circulo { raio: 5.0 };
        let r = Retangulo { largura: 10.0, altura: 2.0 };
    
        exibir_area(c);
        exibir_area(r);
    }
    

✅ Critérios de Aceite

  • [ ] Definição e implementação correta de uma Trait.
  • [ ] Uso de Generics com Trait Bounds (<T: Area>).
  • [ ] O programa realiza cálculos precisos para diferentes tipos.