webmaster

Programação Orientada A Objetos No PHP 5 – Parte 2

Olá, Somos criadores de conteúdo apaixonados por web design, programação, criação de websites e tecnologias digitais. O nosso website está online! Explore a nova versão beta, onde terá acesso a novos recursos e melhorias. A sua experiência e feedback são muito importantes para nós! Novos artigos, todas as semanas! Fique atento.
Artigos SEO

Artigos SEO

Search Engine Optimization

Artigos WordPress

Criação de websites.

Tutoriais

Ensino numa série de passos simples

Programação Orientada A Objetos No PHP 5 – Parte 2

Artigo Anterior > Programação Orientada A Objetos No PHP 5 – Parte 1

No último artigo foi apresentado a você os conceitos mais básicos na programação orientada a objetos, como nomenclatura, visibilidade dos métodos e atributos. Também foi escrito a primeira classe e em seguida foi instanciada para apresentar uma frase na tela.

Veremos nesta seqüência como compartilhar o código entre as classes, executar código automaticamente e criar blocos de procedimento ajustáveis.

Herança

Além da organização proporcionada pela programação orientada a objetos, outrao vantagem é a diminuição do tamanho do código. Isso se deve a possibilidade de compartilhamento dos métodos e atributos entre as classes e subclasses.

A palavra chave para ocorrer este intercâmbio é a extends. Ela estende o comportamento e características de uma classe para a que esta sendo criada.

Vejamos como isso funciona desenvolvendo mais o código criado no artigo anterior sobre Programação Orientada A Objetos.

class Web{
public $linguagem;
public function pagina(){
echo 'Página escrita utilizando '.$this -> linguagem;
}
}

class Programador extends Web{
public function programar(){
echo 'Eu sei programar em '. $this -> linguagem;
}
}

Ao criar a classe Programador, nós decidimos aproveitar os atributos e métodos já criados na classe Web. Isso significa que além do método programar(), a classe Programador tem à disposição o atributo “linguagem” e o método pagina().

Vamos ver a aplicação:

$web = new Web();
$web -> linguagem = 'PHP';
$web -> pagina();

$prog = new Programador();
$prog -> linguagem = 'Java';
$prog -> programar();
$prog -> pagina();

É instanciada a classe Web, atribuiído o texto “PHP” para o atributo ‘linguagem’ e mostrada na tela a frase “Página escrita utilizando PHP”.

Depois é instanciada a classe Programador, o atributo ‘linguagem’, que não faz parte da classe Programador, mas foi estendido da classe Web, recebe outro valor e é mostrada na tela “Eu sei programar em Java”. Por último ainda é utilizado outro método estendido para mostrar na tela a frase “Página escrita utilizando Java”.

É possível limitar quais atributos e métodos da classe são compartilhados utilizando os modificadores de visibilidade public, protected e private. Para evitar que a classe seja herdada, adiciona-se no início da declaração da classe a palavra final.

final class Web{
//código
}

Faça este teste no código que vimos acima e veja como é retornado um erro informando que a classe Web não pode ser herdada.

Implementação De Interface

Outra vantagem da POO é que você cria diversos blocos de código que podem ser montados conforme a necessidade.

A idéia da criação de uma interface vem da idéia de que os objetos e métodos tenham a aplicação alterada conforme o contexto. Com isso tornando o código mais flexível.

Na interface é definido o método, mas sem especificar como ele deve ser manipulado pela classe. Sendo que eles devem ser públicos.

interface iCalculo{
public function Adicao($num1, $num2);
}

É comum adicionar a letra “i” na frente do nome da interface para identificá-la como tal. Veja que nenhuma operação é feita, apenas é passado o método e os atributos que ele deve trabalhar. É possível adicionar quantos métodos quiser para uma interface.

class Aluno implements iCalculo{
private $total;
public function Adicao($num1, $num2){
echo $this -> total = $num1 + $num2;
}
}

Utilizar a interface na classe, também pode ser chamado de implementar. Por isso a palavra reservada implements após o nome da classe. Criado o atributo para receber o total da soma, entra em ação o método que veio com a interface. Observe como o funcionamento do método foi feito neste ponto e não veio pré-definido pela interface.

A utilização é realmente simples:

$aluno = new Aluno();
$aluno -> Adicao(50,30);

As interfaces também podem ser estendidas, da mesma forma que acontece com as classes. Lembrando que se ela foi implementada na classe ela DEVE ser utilizada, caso contrário é retornado erro.

Para implementar diversas interfaces em uma classe basta separar os nomes por virgula.

Construtores E Destruidores

Se for necessário executar um código logo que a classe é instanciada, você precisa de um __construct().

class Web{
function __construct(){
echo ‘Executado automaticamente';
}
}

$web = new Web();

Os construtores não são anexados à subclasse quando utilizamos a palavra extends. O código para chamada na subclasse é:

class Programador extends Web{
function __construct(){
parent::__construct();
echo 'Em seguida a frase da subclasse.';
}
}

Quando as referencias ao objeto ou o próprio objeto for destruído, entra em ação o __destruct(), que funciona exatamente como o __construct().

class Web{
function __destruct(){
echo 'Fim';
}
}

static e ::

Conforme você for encontrando códigos orientados a objetos, você vai encontrar seguidamente esta palavra-chave. Tanto uma propriedade quando um método pode ser declarado como static. O resultado é que você não vai precisar instanciar a classe para utilizá-los.

class Teste{
public static $variavel;
public function Escreve(){
echo self::$variavel;
}
}

Na declaração da classe, quando uma propriedade é declarada static a pseudo-classe $this não pode ser usada para ela. No lugar surge o self, como no exemplo e o parent quando for uma classe estendida.

Outra novidade é o dois pontos “::” chamado de operador de resolução de escopo. Ele faz o papel do “->” quando o atributo ou método é estático. Aparece também quando trabalhamos com os construtores como visto anteriormente.

Teste::$variavel = 'Valor definido';
echo Teste::$variavel;

$imprime = new Teste();
$imprime -> Escreve();

Simplesmente informamos o nome da classe, dois pontos e o atributo. E ele recebe o valor. Para mostrar o resultado na tela basta um echo simples com o nome da classe e atributo.

Se você escolher instanciar, nada muda em relação aos exemplos anteriores.

Os mesmos princípios valem na aplicação dos métodos criados com o static.

class Teste{
public static $variavel;
public static function Escreve($valor){
echo $valor;
}
}

Teste::Escreve('palavra');

Conclusão

Existem outros pequenos conceitos com os quais você vai se deparar no desenvolvimento dos códigos. Mas os apresentados neste e no artigo anterior são sem dúvida a base para que você consiga explorar os potenciais da programação orientada a objetos.

programação orientada a objetos

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)

Deixe o seu comentário, participe!

Leave a Reply

Your email address will not be published. Required fields are marked *


Versão Beta

Estamos a mudar

Olá, Somos criadores de conteúdo apaixonados por web design, programação, criação de websites e tecnologias digitais. Ajudamos os nossos clientes a levar o conteúdo certo às pessoas certas, criando artigos e recursos que facilitam a criação e otimização de websites.

Artigos Populares

Guia Prático Sobre Segurança Do Joomla

Dicas para diminuir substancialmente o número de vetores de ataque ao Joomla! Proteja o seu trabalho!

Os Segredos Do Sucesso Na Internet

A responsabilidade. O querer. O erro e a experimentação. O social. A memória da internet. Ser quem você é.

38 Ideias Espetaculares Para Sites De Empresas

Encontre inspiração nestes 45 exemplos de sites de empresas para criar o site da sua empresa.