A Programação Orientada a Objecto, ou POO, é um padrão de programação em que o software é composto por uma variedade de blocos de código, por si independentes, mas que juntos, montam todo o nosso sistema que estamos a desenvolver.
O PHP não é excepção, tendo também esta linguagem suporte a Orientação a Objectos.
Existem várias vantagens no uso de POO, tais como:
- Economização de tempo, por meio da reutilização de código;
- O código pode ser interpretado e adicionado mais facilmente;
- Torna a manutenção muito mais prática e eficiente;
Conceitos fundamentais do POO:
- Classes – uma classe é representada por vários objectos;
- Objectos – um objecto, é uma entidade do “real”, concreta ou abstracta, que seja aplicável ao sistema;
- Abstracção – São tipos abstractos de dados;
- Atributos / Propriedades – são características de um determinado objecto.
Classes e Objectos
As principais dúvidas sobre este tema, recaem sempre sobre o mesmo ponto: qual é a diferença entre uma Classe e um Objecto?
Se começas-te os teus primeiros passos em POO, ou em programação em geral, a explicação é simples. Por norma temos tendência a investigar sobre os temas, e procuramos coisa complexas demais para entender, o que nos leva a criar mais dúvidas.
Vou apresentar agora algumas definições e exemplos práticos.
Podemos de certa forma, olhar para uma Classe, como quem rege tudo o que acontece. Os seus súbditos, de certa forma, são os objectos. A Classe, define as suas características e comportamentos. Cada característica é representada por um atributo e cada comportamento é definido por um método.
Dessa forma, uma Classe não é um Objecto, mas sim, uma abstracção da sua estrutura, em que podemos definir quantos objectos queremos ter.
<?php
Class Conta {
}
$conta = new Conta();
$conta2 = new Conta();
$conta3 = new Conta();
?>
Criamos uma classe vazia, com o nome conta. Depois definimos 3 variáveis, conta, conta2 e conta3.
Podemos dizer então que os três objectos são do tipo conta. E é dessa maneira que funciona todo objecto, seu tipo será sempre a classe a partir do qual ele é criado.
Atributos e Métodos
Uma classe é composta por atributos e métodos, que juntos dão fundamento e utilidade a um objecto.
<?php
Class Conta {
public $saldo = 500;
public $titular;
function levantar($valor){
}
function depositar($valor){
}
function verSaldo(){
}
}
$conta1 = new Conta();
$conta1->depositar(500);
$conta1->levantar(20);
$conta2 = new Conta();
$conta2->depositar(250);
$conta2->verSaldo();
?>
A classe Conta tem como atributos o saldo da conta e o titular. E como métodos possui depositar(), levantar() e verSaldo().
Para aceder o método depositar() do objecto $conta1 precisamos utilizar uma seta (->). Denominando-se “Operador de Acesso a Objectos”, e é através dessa seta que indicamos que queremos aceder a um determinado atributo ou método de um objecto.
<?php
Class Conta{
public $saldo = 0;
public $titular;
function depositar($valor){
$this->saldo += $valor;
}
function levantar($valor){
if(($this->saldo > 0) && ($this->saldo >= $valor))
{
$this->saldo -= $valor;
}else{
echo "Saldo insuficiente";
}
}
function verSaldo(){
echo "Saldo Atual:".$this->saldo. "<br>";
}
}
$novaConta = new Conta();
$novaConta->verSaldo();
$novaConta->depositar(500);
$novaConta->verSaldo();
$novaConta->levantar(150);
$novaConta->verSaldo();
?>
Se prestares atenção, para aceder aos nossos atributos dentro dos métodos, utilizamos a variável reservada $this. Se fosse preciso chamar algum método da própria classe dentro de um outro método, teríamos de usar o $this, que é usado para aceder aos atributos e métodos da própria classe e só existe dentro deste “scope”. No PHP, este, é fundamental e obrigatório, mas noutras linguagens de programação, o $this acaba por ser opcional.
Ainda a muito mais sobre POO, sendo que no próximo artigo, vamos falar sobre Herança de Classes, como extender, entre outros temas.
Para futuras referências, todos os código deste artigos, e futuros artigos, estarão disponíveis na minha conta de Github. Podem usar todo o código de forma totalmente gratuita, e para os fins que entenderem.
Mais desta série:
Continua a acompanhar a nossa série sobre PHP, com o artigo PHP: Heranças