Programação Orientada a Objetos

Reginaldo Rubens

10/02/2015

<?php
 
// Declara a classe Aluno
class Aluno
{
        // Declara os atributos (variáveis) da classe
        // usa "private" para impedir o acesso direto aos atributos
        private $nome = '';
        private $notas = array();
 
        // método (função) para definir o valor do atributo $nome do objeto
        public function setNome($nome)
        {
                // $this é uma referência para o objeto que está executando o método
                $this->nome = $nome;
        }
 
        // método para ler o valor do atributo privado $nome
        public function getNome()
        {
                // retorna o valor atual do atributo
                return $this->nome;
        }
 
        // método para adicionar uma nota ao array de notas do objeto
        public function addNota($nota)
        {
                // se o valor da nota é inválido
                if ($nota < 0 || $nota > 10)
                {
                        // gera uma "exceção" (um erro do PHP) com a mensagem passada como parâmetro
                        throw new Exception('Valor de nota inválido.');
                }
 
                // adiciona a nota passada como parâmetro como um novo elemento no array de notas do objeto
                array_push($this->notas, $nota);
        }
 
        // método para calcular a média das notas adicionadas ao array de notas
        public function calcularMedia()
        {
                return array_sum($this->notas) / count($this->notas);
        }
}
 
class App
{
        private $alunos = array();
 
        private function inicializar()
        {
                $this->alunos[0] = new Aluno();
                $this->alunos[0]->setNome('José');
                $this->alunos[0]->addNota(8);
                $this->alunos[0]->addNota(7);
                $this->alunos[0]->addNota(6);
 
                $this->alunos[1] = new Aluno();
                $this->alunos[1]->setNome('Maria');
                $this->alunos[1]->addNota(8);
                $this->alunos[1]->addNota(8.5);
                $this->alunos[1]->addNota(9);
        }
 
        private function exibirDados()
        {
                foreach($this->alunos as $aluno) {
                        echo 'Nome: ' . $aluno->getNome();
                        echo 'Média: ' . $aluno->calcularMedia();
                }
        }
 
        public function executar()
        {
                $this->inicializar();
                $this->exibirDados();
        }
}
 
$app = new App();
$app->executar();

Vazio.