S07PW3 POOcomPHP#7

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 2

ETIM Desenvolvimento de Sistemas

Programação Web III


3ª série

Programação Orientada a Objetos com PHP


Nesta aula daremos continuidade ao estuda da herança, a definição de subclasses
e as características das classes-filhas.
Subclasse
Chamamos de SubClasse todas as classes herdeiras. O conceito de SubClasse é o
da especialização, isto é, a SubClasse possui todas as características e funcionali-
dades da SuperClasse e agora irá definir um outro conjunto de funções e proprie-
dades a fim de especializar alguma funcionalidade. É importante observar que toda
SubClasse possui acesso aos membros públicos e protegidos da SuperClasse, po-
rém o inverso não é verdadeiro.
Toda SubClasse recebe os membros não privados e protegidos da SuperClasse.
Isso faz com que a SubClasse se torne capaz de fazer uso de todas as funções,
como também, atribuir valores às variáveis definidas na SuperClasse. Toda Sub-
Classe, por definição, será também do tipo da SuperClasse, ou seja, se tivermos
as classe A e B, onde B é SubClasse de A, nós temos que B será do tipo B, e
também do tipo A.
Num primeiro momento a definição e utilização de SubClasse não possui quaisquer
diferença no que estudamos até agora, isso porque, temos que sempre ter em
mente que TODA classe deriva obrigatoriamente de alguma SuperClasse, até por-
que, toda classe possui propriedades e funcionalidades por padrão, mesmo que
estas sejam conceitos implícitos.
Fato é que não haverá maiores problemas na SubClasse se esta não vier a estender
as definições da sua SuperClasse. Do contrário, isto é, se a SubClasse implementar
uma variável ou função de mesmo nome implementado na SuperClasse, o que
acontecerá? Há diversas situações em que a SubClasse precisará alterar somente
o funcionamento de uma função. Outras vezes, a função não precisará ser redefi-
nida, somente estendida. Como sabemos, a herança é uma característica das clas-
ses e não das funções e propriedades.
A implementação da SubClasse requer que conheçamos alguns conceitos relacio-
nados ao compartilhamento de propriedades em níveis hierárquicos distintos.
Por exemplo, vamos fazer algumas suposições, ainda que não vamos, nesse mo-
mento, estudar como resolver os problemas propostos.
O que acontece se a classe derivada 1 declara uma variável de mesmo nome decla-
rada na classe base 2? O que acontece se a classe derivada, declara uma funções
de mesmo nome? Estudamos que os construtores são invocados pela Máquina Vir-
tual do PHP, ou seja, se tentarmos invocar o construtor pelo seu nome, um erro
ocorrerá. Então, se a superclasse tem implementado um construtor e a SubClasse
também o implementou, ao criarmos uma instância da classe derivada, o que
acontecera:
• o construtor que será invocado, será o da superclasse ou da subclasse?
• ambos os construtores serão invocados?
Acabamos de elucidar algumas situações que irão ocorrer, e ocorrerão muitas
vezes, quando estivermos trabalhando com a orientação a objetos. Isso significa
que de agora em diante, o nosso estudo se ampliara, até porque, ao interagirmos
com classes derivadas, estaremos também, interagindo com a classe base.

1
Classe derivada é o mesmo que subclasse
2
Classe base é o mesmo que superclasse
ETIM Desenvolvimento de Sistemas
Programação Web III
3ª série

Um conceito simples, mas importante é que a classe derivada deve se in-


tegrar com a classe base, jamais o contrário. Se houver problemas na im-
plementação da classe derivada e a solução que encontrarmos é a altera-
ção da superclasse, teremos uma de 2 situações:
1. a superclasse está mal implementada.
2. a solução por nós encontrada é um problema conceitual.
Como veremos de agora em diante, a POO propriamente dita é bastante simples
e é quase que uma decoreba, o grande problema, para não dizer o início do inferno,
será totalmente conceitual, de análise da informação, das relações entre os tipos
de dados e de como estes se relacionam. A implementação do código se tornará
um simples detalhe decorrente, na maioria das vezes, de um grande estudo e
análise!
Exemplo
<?php
class SuperClasse {

public $a = 0;

public function super()


{
echo $a;
}
}

class SubClasse extends SuperClasse {

public $a;

public function sub()


{
this->$a = 10;
}
}

$sub = new SubClasse();


$sub->sub();
$sub->super();
?>

Acabamos de ver mais um tópico sobre orientação a objetos com PHP. Continua-
remos na próxima aula.
:) Até lá!
Fonte: http://excript.com/php

Você também pode gostar