Prof. Andrea Garcia PROW II · Prof. Andrea Garcia PROW II A Classe é uma estrutura estática...

13
Prof. Andrea Garcia PROW II

Transcript of Prof. Andrea Garcia PROW II · Prof. Andrea Garcia PROW II A Classe é uma estrutura estática...

Prof. Andrea Garcia PROW II

Prof. Andrea Garcia PROW II

A Classe é uma estrutura estática utilizada para descrever objetos mediante atributos

(propriedades) e métodos (funcionalidades). A classe é um modelo ou templates para

criação desses objetos.

Classe Atributos / Objeto Métodos

Moto moto.marca = “Harley-Davidson” moto.nome= ”XL883N Iron moto.cor= ”preta”

moto.ligar() moto.dirigir() moto.parar() moto.desligar()

Prof. Andrea Garcia PROW II

Análise dos exercícios Apresentados:

Arquivo melhor_que_o_do_dantas.php. Listagem 1:

<?php echo "<meta charset=utf-8>"; class Veiculo { public $codigo = 0; public $modelo = ""; public $ano = 0; public $cor = ""; public $portas = 0; function __construct($a,$b,$c,$d,$e) { $this->codigo = $a; $this->modelo = $b; $this->ano = $c; $this->cor = $d; $this->portas = $e; } } $camaro = new Veiculo(41352,'Chervolet',2017,'Amarelo',4); $fusca = new Veiculo(29135,'WolksVagen',1995,'Preto',2); $siena = new Veiculo(97143,'Fiat',2012,'Vermelho',4); $c3 = new Veiculo(87432,'Pegeout',2014,'Prata',4); $veloster = new Veiculo(75126,'Hyuudai',2015,'Preto',3); echo "<body bgcolor='grey'>"; echo "<div style='padding: 200px 200px 200px 200px;'> <table border='3' bordercolor='red' style='font-size: 30pt; color:white;'> <tr> <th bgcolor='yellow' style='color:black'>CÓDIGO</th>

Prof. Andrea Garcia PROW II

<th bgcolor='yellow' style='color:black'>MARCA</th> <th bgcolor='yellow' style='color:black'>ANO</th> <th bgcolor='yellow' style='color:black'>COR</th> <th bgcolor='yellow' style='color:black'>PORTAS</th> </tr> "; $carros = array($camaro,$fusca,$siena,$c3,$veloster); for ($i=0; $i < 5 ; $i++) { echo "<tr>"; echo "<th bgcolor='black'>"; echo $carros[$i]->codigo."</th>"; echo "<th bgcolor='black'>"; echo $carros[$i]->modelo."</th>"; echo "<th bgcolor='black'>"; echo $carros[$i]->ano."</th>"; echo "<th bgcolor='black'>"; echo $carros[$i]->cor."</th>"; echo "<th bgcolor='black'>"; echo $carros[$i]->portas."</th>"; echo "</tr>"; } echo "</div>"; echo "</center>" ?> Resultado:

Prof. Andrea Garcia PROW II

Informações Novas: function __construct($a,$b,$c,$d,$e) { $this->codigo = $a; $this->modelo = $b; $this->ano = $c; $this->cor = $d; $this->portas = $e;

Function_construct um construtor é um método especial utilizado para definir o comportamento inicial de um objeto, ou seja, o comportamento no momento de sua criação. O método construtor é executado automaticamente no momento eu que instanciamos um objeto por meio de um operador new. Ex. $camaro = new Veiculo(41352,'Chervolet',2017,'Amarelo',4). Os valores são passados na função, são colocados (instanciados) gerando um novo objeto.

$this -> O operador this significa “este”, ou seja, este objeto; foi utilizado $this no lugar do próprio objeto que ficaria Veiculo.codigo, Veiculo.modelo...

Neste exemplo o conteúdo de desenvolvimento da classe, em PHP e o HTML interagiram no mesmo arquivo.

Outro exemplo:

Neste exemplo dois arquivos foram criados:

Veiculo.class.php desenvolvimento das classes

Index.php arquivo principal do programa

Listagem 2: veiculo.class.php

<?php Class Veiculo { private $fabricante; private $modelo; private $ano; private $cor; private $portas; public function __construct($fab,$mod,$ano,$cor,$port) { $this->fabricante=$fab; $this->modelo= $mod; $this->ano= $ano; $this->cor= $cor; $this->portas= $port;

Prof. Andrea Garcia PROW II

} }

Listagem 3: index.php

<?php require_once 'Veiculo.class.php'; $carro[1]= New Veiculo ("Ford","Fiesta","2002","preto","4"); $carro[2]= New Veiculo ("Ford","Ranger","2016","vermelho","4"); $carro[3]= New Veiculo ("Ford","EcoSport","2015","Azul","4"); $carro[4]= New Veiculo ("Dodge","Charger R/T","1980","Vermelho","2"); $carro[5]= New Veiculo ("GM","Camaro","2017","Preto","2"); echo "<pre>"; for ($i=1; $i <=5; $i++) { print_r($carro[$i]); } echo "</pre>";

Resultado:

Prof. Andrea Garcia PROW II

Informações Novas:

Variáveis public / private Outro conceito importante em orientação a objetos é visibilidade, a visibilidade de um método ou um atributo podem ser definidos ao prefixarmos as palavras chave, public, private ou protected, se não prefixarmos, por padrão o PHP entende que seja public.

require_once Utilizado para importar as classes criadas, especificarmos para o PHP onde se encontram as classes que queremos utilizar e em seguida instanciar a classe como aparece no início do arquivo index.php : require_once 'Veiculo.class.php';

include_once Ambos são iguais, porém, quando vemos a documentação sobre include e require, lemos que quando acontece um erro no include, por exemplo, o arquivo não existe, o PHP apenas mostra um "warning", ou seja, um aviso ao programador dizendo "Olha, o arquivo não existe, mas eu vou continuar". Já o require é mais drástico ao ponto de não permitir que a aplicação seja continuada se acontecer algum erro.

Inserindo métodos

é definido Um método é uma função dentro de uma classe.

é acessado Deve ser acessado da mesma maneira que você utiliza funções. Se desejar, você pode passar variáveis através de parâmetros. Para chamar um método dentro do escopo da classe, utilize;

$this->subMetodo();

E para chamar um método fora do escopo da classe, utilize;

$subObjeto = new SubClasse;

$resultado = $subObjeto->subMetodo();

Exemplo, pg. 91 do Livro PHP Programando com Orientação a Objetos, com algumas adaptações

Modelaremos uma classe chamada Pessoa, serão suas propriedades: Nome, Altura, Idade, Nascimento, Escolaridade e Salário. Tem-se por métodos funcionalidades desempenhadas pela classe. No caso da classe Pessoa, poderiam ser métodos: Crescer(), Formar() e Envelhecer().

Ao modelar a classe Conta (bancária) serão suas propriedades: Agencia, Codigo, DataDeCriacao, Titular, Senha, Saldo e se está Cancelada, bem como serão seus métodos (funcionalidades): Retirar(), Depositar() e ObterSaldo().

Prof. Andrea Garcia PROW II

Listagem 4 – pessoa.class.php:

<?php class Pessoa { var $Codigo; var $Nome; var $Altura; var $Idade; var $Nascimento; var $Escolaridade; var $Salario; /* método Crescer * aumenta a altura em $centimetros */ function Crescer($centimetros) { if ($centimetros > 0) { $this->Altura +=$centimetros; } } /* método Formar * aumenta a escolaridade para $titulacao */ function Formar($titulacao) { $this->Escolaridade =$titulacao; }

Prof. Andrea Garcia PROW II

/* método Envelhecer * aumenta a idade em $anos */ function Envelhecer($anos) { if ($anos > 0) { $this->Idade +=$anos; } } } ?>

Listagem 5 – conta.class.php:

<?php class Conta { var $Agencia; var $Codigo; var $DataDeCriacao; var $Titular; var $Senha; var $Saldo; var $Cancelada; /* método Retirar * diminui o Saldo em $quantia */ function Retirar($quantia) { if ($quantia > 0) { $this->Saldo -=$quantia; } } /* método Depositar * aumenta o Saldo em $quantia */ function Depositar($quantia) { if ($quantia > 0)

Prof. Andrea Garcia PROW II

{ $this->Saldo +=$quantia; } } /* método ObterSaldo * retorno do Saldo Atual */ function ObterSaldo() { return $this->Saldo; } } ?>

Listagem 6 – objetos.php:

<?php # carrega as classes include_once 'pessoa.class.php'; include_once 'conta.class.php'; # criação do objeto $carlos $carlos = new Pessoa; $carlos->Codigo = 10; $carlos->Nome = "Carlos da Silva"; $carlos->Altura = 1.85; $carlos->Idade = 25; $carlos->Nascimento = '10/04/1976'; $carlos->Escolaridade = "Ensino Médio"; echo "Manipulando o objeto $carlos->Nome :<br>"; echo "{$carlos->Nome} é formado em: {$carlos->Escolaridade} <br>"; $carlos->Formar('Tecnico em Eletricidade'); echo "{$carlos->Nome} é formado em: {$carlos->Escolaridade} <br>"; echo "{$carlos->Nome} possui {$carlos->Idade} anos <br>"; $carlos->Envelhecer(1); echo "{$carlos->Nome} possui {$carlos->Idade} anos <br>"; # criação do objeto $conta_carlos $conta_carlos = new Conta; $conta_carlos->Agencia = 6677; $conta_carlos->Codigo = "CC. 1234.56";

Prof. Andrea Garcia PROW II

$conta_carlos->DataDeCriacao = "10/07/02"; $conta_carlos->Titular = $carlos; $conta_carlos->Senha = 9876; $conta_carlos->Saldo = 567.89; $conta_carlos->Cancelada = false; echo "\n"; echo "Manipulando a conta de: {$conta_carlos->Titular->Nome} <br>"; echo "O saldo atual é R\$ {$conta_carlos->ObterSaldo()} <br>"; $conta_carlos->Depositar(20); echo "Após depositar 20 - O saldo atual é R\$ {$conta_carlos->ObterSaldo()} <br>"; $conta_carlos->Retirar(10); echo "Após retirar 10 - O saldo atual é R\$ {$conta_carlos->ObterSaldo()} <br>"; ?>

O resultado será:

Inserção de Métodos Construtores e Destrutores

Listagem 7 –Acrescentar ao final do arquivo pessoa.class.php:

/* método construtor * inicializa propriedades */ function __construct($Codigo, $Nome, $Altura, $Idade, $Nascimento, $Escolaridade, $Salario) { $this->Codigo = $Codigo; $this->Nome = $Nome; $this->Altura = $Altura; $this->Idade = $Idade; $this->Nascimento = $Nascimento; $this->Escolaridade = $Escolaridade;

Prof. Andrea Garcia PROW II

$this->Salario = $Salario; } /* método destrutor * finaliza objeto */ function __destruct() { echo "Objeto {$this->Nome} finalizado... <br>"; }

Listagem 8 –Acrescentar ao final do arquivo conta.class.php:

/* método construtor * inicializa propriedades */ function __construct($Agencia, $Codigo, $DataDeCriacao, $Titular, $Senha, $Saldo) { $this->Agencia = $Agencia; $this->Codigo = $Codigo; $this->DataDeCriacao = $DataDeCriacao; $this->Titular = $Titular; $this->Senha = $Senha; // chamada a outro método da classe $this->Depositar($Saldo); $this->Cancelada = false; } /* método destrutor * finaliza objeto */ function __destruct() { echo "Objeto Conta {$this->Codigo} de {$this->Titular->Nome} finalizada... <br>"; }

Listagem 8 –Adequar o arquivo objetos.php:

<?php # carrega as classes include_once 'pessoa.class.php'; include_once 'conta.class.php'; # criação do objeto $carlos

Prof. Andrea Garcia PROW II

$carlos = new Pessoa(10,"Carlos da Silva",1.85, 25,"10/04/1976","Ensino Médio", 650.00); echo "Manipulando o objeto $carlos->Nome :<br>"; echo "{$carlos->Nome} é formado em: {$carlos->Escolaridade} <br>"; $carlos->Formar('Tecnico em Eletricidade'); echo "{$carlos->Nome} é formado em: {$carlos->Escolaridade} <br>"; echo "{$carlos->Nome} possui {$carlos->Idade} anos <br>"; $carlos->Envelhecer(1); echo "{$carlos->Nome} possui {$carlos->Idade} anos <br>"; # criação do objeto $conta_carlos $conta_carlos = new Conta(6677,"CC. 1234.56","10/07/02",$carlos,9876,567.89); echo "<br>"; echo "Manipulando a conta de: {$conta_carlos->Titular->Nome} <br>"; echo "O saldo atual é R\$ {$conta_carlos->ObterSaldo()} <br>"; $conta_carlos->Depositar(20); echo "Após depositar 20 - O saldo atual é R\$ {$conta_carlos->ObterSaldo()} <br>"; $conta_carlos->Retirar(10); echo "Após retirar 10 - O saldo atual é R\$ {$conta_carlos->ObterSaldo()} <br>"; ?> O Resultado será: