Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Orientao a Objetos
Pablo Dall'Oglio
Adianti Solutions
www.adianti.com.br
E Processo S
<?php
class Pessoa
{
// define os atributos
public $Codigo;
public $Nome; Atributos
public $Altura;
public $Idade;
// define os mtodos
function setNome($nome)
{
Mtodos
$this->Nome = $nome;
}
function Crescer($centimetros)
{ Mtodos
$this->Altura += $centimetros;
}
function Envelhecer($anos)
{ Mtodos
$this->Idade += $anos;
}
}
?>
Pablo Dall'Oglio [pablo@php.net]
Introduo Orientao a Objetos :: com exemplos do livro PHP Programando com Orientao a Objetos
www.adianti.com.br/phpoo
Instanciando Objetos
<?php
// inclui a classe
include 'pessoa.class.php';
// instancia o objeto
$maria = new Pessoa; Instanciando o objeto
// define aributos
$maria->Altura = 1.7;
$maria->Idade = 28;
// executa mtodos
$maria->setNome('Maria da Silva'); output
$maria->Crescer(0.1); object(Pessoa)#1 (4) {
$maria->Envelhecer(1); ["Codigo"]=> NULL
["Nome"]=>
// imprime o objeto string(14) "Maria da Silva"
var_dump($maria); ["Altura"]=> float(1,8)
?> ["Idade"]=> int(29)
}
Pablo Dall'Oglio [pablo@php.net]
Introduo Orientao a Objetos :: com exemplos do livro PHP Programando com Orientao a Objetos
www.adianti.com.br/phpoo
Instanciando Objetos
<?php
//instanciaumobjeto(janela)
$janela=newGtkWindow;
//defineotamanhodajanela
$janela->set_size_request(300,200);
//instanciaumrtulodetexto
$label=newGtkLabel('OlMundo');
//adicionaortulojanela
$janela->add($label);
//exibeajanela
$janela->show_all();
//controleGtk
Gtk::Main();
?>
<?php output
class Pessoa
{ object(Pessoa)#1 (2) {
public $Codigo; ["Codigo"]=> int(27)
public $Nome; ["Nome"]=>
string(14) "Maria da Silva"
// mtodo construtor }
function __construct($codigo, $nome)
{ object(Pessoa)#2 (2) {
$this->Codigo = $codigo;
["Codigo"]=> int(28)
$this->Nome = $nome;
} ["Nome"]=>
string(14) "Joana Maranho"
// mtodo destrutor }
function __destruct()
{ desalocando Maria da Silva
echo "desalocando {$this->Nome}\n"; desalocando Joana Maranho
}
}
dados
mensagem
funes
(mtodos)
que manipulam
os dados
function __construct($codigo)
{
$this->Codigo = $codigo; Tipos de visibilidade
} PRIVATE :: SOMENTE PRPRIA CLASSE
PROTECTED :: CLASSE E DESCENDENTES
function setAltura($altura)
{
PUBLIC :: DE QUALQUER PONTO
$this->Altura = $altura;
}
}
<?php <?php
classProduto classFornecedor
{ {
public$Codigo; public$Nome;
public$Descricao; public$Telefone;
public$Preco; public$Endereco;
public$Fornecedor; }
?>
// exibe os dados do produto
functionExibeDados()
{
echo'Codigo:'.$this->Codigo."<br>\n";
echo'Descricao:'.$this->Descricao."<br>\n";
echo'Preo:'.$this->Preco."<br>\n";
echo'Fornecedor:'.$this->Fornecedor->Nome."<br>\n";
}
<?php
include_once'classes/Produto.class.php';
include_once'classes/Fornecedor.class.php';
$macarrao=newProduto;
$macarrao->Codigo =7;
$macarrao->Descricao ='Macarroinstantneo'; output
$macarrao->Preco =1.29;
$macarrao->Quantidade=10; Codigo: 7
Descricao: Macarro instantneo
$isabela=newFornecedor; Preo: 1,29
$isabela->Nome ='MassasIsabela'; Fornecedor:Massas Isabela
$isabela->Telefone='(51)1234-5678';
$isabela->Endereco ='RuadasMassas';
//associacao
$macarrao->setFornecedor($isabela); Mtodo de associao
//exibeasinformacoes
$macarrao->ExibeDados();
?>
$picanha=newProduto;
$picanha->Codigo=7;
$picanha->Descricao='PicanhaBovina';
$picanha->Preco=18;
$cesta=newCestaDeCompras;
$cesta->AdicionarItem($chocolate); Chamada agregao
$cesta->AdicionarItem($picanha);
$cesta->ExibeLista();
echo'Total:';
echo$cesta->CalculaTotal();
?>
Pablo Dall'Oglio [pablo@php.net]
Introduo Orientao a Objetos :: com exemplos do livro PHP Programando com Orientao a Objetos
www.adianti.com.br/phpoo
Composio
function ImprimeContatos()
{
foreach ($this->Contatos as $contato)
{
var_dump($contato);
}
}
}
?>
// debug output
var_dump($fornecedor);
?> Fornecedor Object
( [Codigo] => 10
[RazaoSocial] => Produtos Bom Gosto S.A.
[Contatos] => Array
[0] => Contato Object
[Nome] => Mauro
[Telefone] => 51 1234-5677
[Email] => mauro@bomgosto.com.br
[1] => Contato Object ...
Pablo Dall'Oglio [pablo@php.net]
Introduo Orientao a Objetos :: com exemplos do livro PHP Programando com Orientao a Objetos
www.adianti.com.br/phpoo
Herana
Super classe
Sub classes
<?php
abstractclassConta Uma classe abstrata
{
no pode ser instanciada
private $Agencia;
private $Numero; diretamente.
protected$Saldo;
function__construct($agencia,$numero,$saldo)
{
$this->Agencia=$agencia;
$this->Numero=$numero;
$this->Saldo=$saldo;
}
functionDepositar($valor)
{
$this->Saldo+=$valor;
}
functiongetSaldo()
{
return$this->Saldo;
}
}
?>
Pablo Dall'Oglio [pablo@php.net]
Introduo Orientao a Objetos :: com exemplos do livro PHP Programando com Orientao a Objetos
www.adianti.com.br/phpoo
Herana
<?php
finalclassContaCorrenteextendsConta
{ Uma classe final no
public$Limite; pode ser extendida.
Classe filha
functionRetirar($valor)
{
if($this->Saldo+$this->Limite>$valor)
{
$this->Saldo-=$valor;
}
}
}
finalclassContaPoupancaextendsConta
{
functionRetirar($valor)
{
if($this->Saldo>$valor) Classe filha
{
$this->Saldo-=$valor;
}
}
}
?>
Pablo Dall'Oglio [pablo@php.net]
Introduo Orientao a Objetos :: com exemplos do livro PHP Programando com Orientao a Objetos
www.adianti.com.br/phpoo
Herana
<?php
include_once'classes/Conta.class.php';
include_once'classes/ContaPoupanca.class.php'; output
include_once'classes/ContaCorrente.class.php'; saldo conta1: 100
$conta1=newContaPoupanca('1','123',100); saldo conta2: 200
$conta2=newContaCorrente('2','456',200); saldo conta1: 400
$conta2->Limite=500; saldo conta2: 700
saldo conta1: 400
echo'saldoconta1:'.$conta1->getSaldo();//exibir100
echo'saldoconta2:'.$conta2->getSaldo();//exibir200 saldo conta2: -499
$conta1->Depositar(300);
$conta2->Depositar(500);
echo'saldoconta1:'.$conta1->getSaldo();//exibir400
echo'saldoconta2:'.$conta2->getSaldo();//exibir700
$conta1->Retirar(500);//saldomaximoe400,naodevepermitir
$conta2->Retirar(1199);//200+500+500(limite)saldo= 1200(permitir)
echo'saldoconta1:'.$conta1->getSaldo();//exibir400
echo'saldoconta2:'.$conta2->getSaldo();//exibir-499
?>
E-Mail
pablo@php.net
pablo@dalloglio.net
URL
http://www.adianti.com.br
http://www.pablo.blog.br