Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

[Projeto] Faça como eu fiz: mantenha a consistência

Boa tarde! Segue as implementações propostas pelo professor.

Index.php:

<?php

require_once __DIR__ . "/src/Modelo/Genero.php";
require_once __DIR__ . "/src/Modelo/Filme.php";


echo "Bem vindo ao Screen-Match!";

$filme = new Filme(
    'Thor - Ragnarock',
    2021,
    Genero::SuperHeroi,
);

$filme->avalia(4);
$filme->avalia(2);
$filme->avalia(7.8);
$filme->avalia(7.2);


var_dump($filme);
echo $filme->media() . "\n";
echo $filme->nome . "\n";

Filme.php

<?php

class Filme {
    private array $notas;

    public function __construct(
        public readonly string $nome,
        public readonly int $anoLancamento,
        public readonly Genero $genero
    ) {
        $this->notas = [];
    }


    function avalia(float $nota): void {
        $this->notas[] = $nota;
    }

    function media(): float {
        $somaNotas = array_sum($this->notas);
        $quantidadeNotas = count($this->notas);

        return $somaNotas / $quantidadeNotas;
    }
}
1 resposta
solução!

Fala, Eliel! Tudo bom?

Agradeço por trazer sua solução para o fórum!

Curti demais como trabalhou a implementação da classe Filme, destacou o uso correto de array para armazenar notas e ainda reforçou a importância de calcular a média das avaliações de forma simples e eficiente. Essa estrutura mostra organização, clareza e aplicação prática dos conceitos de orientação a objetos em PHP.

E algumas boas práticas que você pode adotar são:

  • Implementar métodos auxiliares: como exibir todas as avaliações ou retornar a quantidade de notas.
  • Adicionar validação de notas: garantir que os valores inseridos estejam dentro de um intervalo válido.
  • Explorar encapsulamento: criar getters para acessar atributos privados e manter maior controle sobre os dados.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Ah, uma pergunta: você considera mais interessante evoluir essa classe adicionando novas funcionalidades como comparação entre filmes ou focar primeiro em reforçar validações e boas práticas de encapsulamento?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!