Alterei a função listaProduto encapsulando como solicitado no exercício, mas após a modificação, quando vou listar os produtos só vem um produto apenas. Abaixo mando o meu código:
banco-produto.php
function listaProdutos($conexao){
$produtos=array();
$resultado = mysqli_query($conexao, "select p.*,c.nome as categoria_nome from produtos as p join categorias as c on c.id=p.categoria_id");
while($produto_array = mysqli_fetch_assoc($resultado)){
$produto = new Produto();
$categoria = new Categoria();
$categoria->setNome($produto_array['categoria_nome']);
$produto->setId($produto_array['id']);
$produto->setNome($produto_array['nome']);
$produto->setPreco($produto_array['preco']);
$produto->setDescricao($produto_array['descricao']);
$produto->setCategoria($categoria);
$produto->setUsado($produto_array['usado']);
array_push($produtos, $produto);
}
return $produtos;
}