Quando um estudante de programação de computadores ou mesmo algum profissional com interesse nesta área decide aprender PHP geralmente inicia seus estudos aprendendo a criar programas utilizando programação estruturada, para pequenos programas e códigos este paradigma se mostra bem eficiente e supre bem as necessidades do profissional neste aspecto. Quando os problemas a serem solucionados pelos programas começam a aumentar e os programas se tornam cada vez maiores há uma necessidade de migração para um outro paradigma muito usado em diversas linguagens chamado de Orientação a Objetos. O objetivo deste artigo é introduzir o estudo do PHP utilizando orientação a objetos que realmente se mostra um modelo muito mais claro e fácil de ser mantido.



O QUE É PROGRAMAÇÃO ORIENTADA A OBJETOS?


Orientação a objetos é um paradigma de programação e análise de sistemas de informática em que o sistema como um todo é composto de objetos bem como a interação entre os elementos dos sistemas é feita através destes objetos.

Na programação implementa-se um conjunto de classes para definir cada objeto presente no sistema, como produtos, vendas, clientes, etc. Cada classe possui em si o comportamento que terá em determinadas situações bem como o estado destes objetos. O relacionamento entre os objetos também é definido nos próprios objetos.

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]


PORQUÊ PROGRAMAR UTILIZANDO ORIENTAÇÃO A OBJETOS?


Nas primeiras linguagens de programação era necessário escrever códigos gigantescos para se definir os métodos (procedimentos), todo o código era definido em métodos grandes que não tinham muita relação uns com os outros. Percebeu-se que esse paradigma de programação não era eficiente além de se existir uma dificuldade enorme para realizar manutenção no código fonte. Os grandes benefícios são a facilidade de dar manutenção no código e a grande modularização, que é a técnica de escrever métodos menores e que possuam objetivos específicos, falamos mais sobre esta técnica no artigo sobre GPS.


PROGRAMAÇÃO ORIENTADA A OBJETOS NA PRÁTICA

Quando falamos em orientação a objetos, estamos basicamente falando de classes, propriedades e métodos destas classes, em suma, tudo se resumirá a isso. Para definir uma classe em PHP faremos da seguinte forma:

Código:

<?php
class NameClass {
  // Coloque o código que desejar entre as chaves, métodos, propriedades
}
?>



Se você ainda não está acostumado a programar em PHP, o código pode parecer um pouco estranho. A primeira e última linha são inseridos os delimitadores, nosso código PHP estará entre o tudo que não está entre eles provavelmente é código HTML ou será tratado como na hora de renderizar a página. Na segunda linha temos a definição do nome da classe, ao contrário do que estamos acostumados em Java, o nome da classe não necessariamente precisa ter o mesmo nome do arquivo, embora isto seja uma boa prática de programação. Agora que já sabemos declarar uma classe vamos nos aprofundar mais.

Cada classe em PHP possui N métodos e propriedades mas o que são estes?

Métodos: São programas menores, rotinas, que os objetos desta classe poderão executar. Os métodos, geralmente, são usados para manipular e/ou alterar valores (propriedades), embora isso não seja uma necessidade, podemos ter métodos que não o fazem.

Atributos: São as estruturas que definem as propriedades da classe, ou seja, os valores que a mesma possui, podemos citar um exemplo: em uma classe pessoa podemos ter atributos como Nome, RG e CPF. Os atributos da classe podem ser atributos estáticos (constantes) ou atributos dinânicos, os primeiros não se alteram independe da instãncia (objeto) que está instanciado, já os dinâmicos possuem um valor mutável dependendo da instância da classe.

Antes de passar para o próximo tópico, iremos aprender um conceito que será muito útil mais a frente. Quando programamos orientado a objetos podemos colocar em prática uma técnica que nos ajudará e muito a sobrecarga de métodos. Com ela podemos definir dois métodos com mesmo nome mas que irão ser diferenciados pela quantidade e/ou tipo de parâmetros. Para exemplificar podemos ter um método criarPoligonoQuatroLados() e ter uma sobrecarga que defini que quando for passado apenas um parâmetro definiremos o objeto como um quadrado, quando passado dois parâmetros a classe se comportará como um retângulo, este foi um simples exemplo de uma técnica realmente fantástica que pode ajudar muito e também
economizar linhas e mais linhas de código.


INSTANCIANDO UMA CLASSE


Um objeto é uma instância de uma classe, para exemplificar podemos citar a mesma classe Pessoa, que falamos mais acima, existindo uma classe pessoa podemos ter um objeto chamado com a propriedade nome Jair Rebello e outra com o nome Fulano de tal e muitas outras. A instância de uma classe para um objeto se dá através da palavra-chave, reservada ao PHP, new. Para instanciar um objeto é seguida a seguinte estrutura:

Código:

<?php
$objPessoa = new Pessoa;
?>


No exemplo acima temos a instância de uma classe pessoa sendo carregada na variável $objPessoa.


CRIANDO MÉTODOS E PROPRIEDADES PARA NOSSA CLASSE


Depois de aprender a declarar a classe, iremos agora definir as propriedades e os métodos de nossa classe, manteremos a linha de raciocínio e trabalharemos com o exemplo da classe Pessoa, para esta classe podíamos ter os seguintes atributos:

Código:


class Pessoa
{
  public $nome;
  public $rg;
  public $cpf;
  public $idade;
  public $endereco;
}


Pronto, definimos cinco atributos para a nossa classe. Por enquanto trabalharemos com todos os atributos públicos, em um outro artigo falaremos sobre a diferença de um atributo público e um atributo estático e outras peculiaridades do desenvolvimento de aplicações orientado a objetos. Com estes atributos criados, podemos pensar em diversos métodos para manipular os valores desta classe Pessoa. Para começar podemos definir métodos para obter o valor dos atributos bem como para se setar os valores.

Código:

public function setNome($nome){
    $this->nome = $nome;
}
 
public function getNome(){
    return $this->nome;
}
 
public function setRg($rg){
    $this->rg = $rg;
}
 
public function getRg(){
    return $this->rg;
}
 
public function setCpf($cpf){
    $this->cpf = $cpf;
}
 
public function getCpf(){
    return $this->cpf;
}


Acima definimos 6 métodos, três para setar valores de nome, rg e cpf e outros três para pegar os valores dos mesmos atributos, o processo pode ser feito, semelhantemente, para construir os gets e sets das outras variáveis. Note também que usamos a referência $this, sempre que quiser fazer referência a atributos da classe, você pode utilizar o $this, isso se você estiver no contexto da classe. Você pode perceber que utilizar variáveis com o mesmo nome dos atributos da classe e mesmo assim não ouve nenhum conflito, isso se deu porque o PHP utilizar contextos, e quando colocamos o $this, estamos dizendo que queremos manipular o atributo do contexto da classe.


CONSTRUTORES E DESTRUTORES


Um dos fatores mais fantásticos do desenvolvimento orientado a objetos ao meu ver são os construtores e os destrutores, isso porque podemos definir esses métodos para criar e destruir uma instância de uma classe sem que precisemos criar outros métodos com outros nomes.

Construtor: É um método que determina as ações que desvem ser executadas quando o objeto é criado (instanciado). Em Java, o método contrutor é definido com o método que possui o mesmo nome da classe, já em PHP é definido com o método __contruct() ele é um método definido sem retorno, nem mesmo void. Neste método deve ser inserido toda a lógica a ser executada quando o objeto é criado, como valores que serão atribuídos as propriedades bem como métodos que são chamados tão logo o objeto é criado. Como qualquer outro método, o construtor também pode receber um ou mais atributos e também pode ser feita uma sobrecarga de métodos.

Código:

function __construct($nome) {
    $this->nome = $nome;
}


Destrutor: Este método é executado sempre que uma instância de uma classe é destruída. Também é um método muito importante, pois podemos determinar o comportamento da classe, quando ela for, por algum motivo removida. Isso pode incluir, salvar alterações no banco de dados, fazer outras operações em outras classes e muitas outras coisas. No PHP o método destrutor é chamado __destruct().

Código:

function __destruct() {
  print "Destruindo " . $this->nome . "\n";
}



DEFININDO UMA CONSTANTE


Falamos mais acima de atributo de nossa classe que não terão seus valores alterados durante toda a execução do programa que utiliza esta classe, esses atributos são as constantes. Podemos ter muitos motivos para declarar um atributo em forma de uma constante, mas os casos que acho mais interessante são aqueles que utilizaremos a mesma na lógica do programa, em uma condição ou iteração. Por exemplo, podemos criar uma constante para definir a quantidade de registros para uma paginação, criando um atributo, será muito mais explícito do que simplesmente atribuir o valor diretamente na condição ou iteração. Em PHP, é muito fácil definir uma constante, faça da seguinte maneira:

Código:

<?php
    define("CIDADE",    "SÃO PAULO");
?>


CONCLUSÃO

No artigo de hoje podemos aprender a base do assunto de orientação a objetos em PHP. Certamente quando programamos, seja em PHP ou qualquer outra linguagem desta forma, tendemos a ter um código mais organizado, modularizado e que terá uma manutenção muito mais facilitada. Além destes fatores a orientação a objetos é um padrão que está se firmando cada vez mais no mercado de trabalho, seja em programação, análise ou mesmo a modelagem. Quem está acostumado a fazer tudo de forma procedural pode ter muitas dores de cabeça quando chegar no mercado e perceber que tudo ou quase tudo é feito com orientação a objetos. Em breve teremos mais artigos sobre PHP Orientado a Objetos, aguarde.

Abraços!



© escolacriatividade.com