Jump to content

PHP - programação orientada a objetos


correio25
 Share

Recommended Posts

Podes aprender aqui...

Antes de pensares em PHP, o que já conheces sobre POO?

Exemplo de código sem ser OO

<?php

$colecaoDeCarros = array();

$carro = array('marca' => 'Toyota', 'matricula' => 'zz-09-09');

$colecaoDeCarros[] = $carro;

Qual é o problema deste código? O problema é que nada impede de outro programador fazer isto:


$carro = array('marca' => null);

$colecaoDeCarros[] = array($carro, 'zz-09-09');

Ora, isto vai quebrar! 😉 Demasiada liberdade aparecem mais problemas...

Agora a mesma coisa com POO...

<?php

/**
* Define a class colecao
*/
interface ColecionadorCarros
{
public function adiciona(Carro $carro);
}

/**
* Define a class colecao
*/
class Colecao
implements ColecionadorCarros
{
private $storage;
public function __construct()
{
	$this->storage = array();
}
public function adicionar(Carro $carro)
{
	$this->storage[] = $carro;
}
}

/**
* Define a class Marca
*/
class Marca
{
private $name;
public function __construct($name)
{
	$this->name = $name;
}
}

/**
* Define a class Carro
*/
class Carro
{
private $matricula;
private $marca;
public function __construct($matricula, Marca $marca)
{
	$this->matricula = $matricula;
	$this->marca = $marca;
}
}

/**
* Para usar...
*/
$colecao = new Colecao;
$toyota = new Marca('Toyota');
$carro = new Carro('zz-09-09', $toyota)
$colecao->adicionar($carro);

Vantagens da versão POO:

1. Não podes criar um carro, sem 1º criares uma marca

2. Não podes adicionar um item à coleção, que não seja uma instância da classe Carro

3. Podes adicionar N operações a cada classe, tendo um código mais organizado e reutilizável.

4. Mais erros são detetados na fase de desenvolvimento

5. Outras como herança, poly-morphismo, interfaces, padrões (patterns), etc...

EDIT: adicionadas mais notas

Edited by taviroquai
  • Vote 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.