Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

PROGRAMAÇÃO 
CODING WEB (PHP)
Unidade 4
Orientação a objetos 
em PHP 
CEO 
DAVID LIRA STEPHEN BARROS
Diretora Editorial 
ALESSANDRA FERREIRA
Gerente Editorial 
LAURA KRISTINA FRANCO DOS SANTOS
Projeto Gráfico 
TIAGO DA ROCHA
Autoria 
LUIZ FERNANDO CORCINI
4 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
A
U
TO
RI
A
Luiz Fernando Corcini
Sou formado em Engenharia Eletrônica, com 
especialização em Administração de TI, Mestre em Educação 
e Novas Tecnologias e Doutorando em Sistemas Tutores 
Inteligentes. Tenho experiência técnico-profissional na área de 
desenvolvimento e gestão da produção de softwares nas áreas 
de Gerenciamento de Processos Empresariais. Uso os recursos 
disponibilizados pela Web, há mais de 20 anos. Sou professor 
universitário, há mais de 15 anos, e já publiquei vários livros 
técnicos sobre assuntos voltados à área de informática. Sou 
apaixonado pelo que faço e adoro transmitir minha experiência 
de vida àqueles que estão iniciando em suas profissões. Por isso, 
fui convidado pela Editora Telesapiens a integrar seu elenco de 
autores independentes. Estou muito feliz em poder ajudar você 
nesta fase de muito estudo e trabalho. Conte comigo!
5PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
ÍC
O
N
ES
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Classes, objetos, métodos e atributos .................................... 9
Introdução ............................................................................................................. 9
Conceitos de orientada a objetos ...................................................................10
O que é uma classe? .........................................................................................12
Abstração na prática ...........................................................................15
Como trabalhar com atributos? ......................................................................17
Como funcionam os métodos? .......................................................................18
O que é um objeto? ...........................................................................................19
Encapsulamento e visibilidade .............................................. 24
Método construtor ............................................................................................28
Usando o comando include .................................................................... 30
Montando a classe conectar no Blog .............................................. 35
Herança e polimorfismo- funções .......................................... 38
Herança entre classes .......................................................................................38
Polimorfismo .......................................................................................................41
Sobrecarga e classe abstrata ................................................. 49
Sobrecarga de métodos ....................................................................49
Simulando sobrecarga de métodos em PHP ................................. 50
Classe abstrata ...................................................................................................54
Métodos abstratos ..............................................................................56
SU
M
Á
RI
O
7PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
A
PR
ES
EN
TA
ÇÃ
O
Seja bem-vindo à Unidade 4 – Orientação a objetos 
em PHP - da disciplina de Introdução ao Coding Web. O 
conteúdo desta Unidade está dividido em quatro módulos. No 
primeiro módulo, vamos conhecer os conceitos fundamentais 
da orientação a objetos, tais como classes, objetos, métodos e 
atributos. No segundo módulo, vamos aplicar os conceitos de 
encapsulamento e visibilidade de códigos em PHP. No terceiro 
módulo, aprenderemos os conceitos de herança e polimorfismo 
em códigos PHP. E por fim, no quarto módulo, entenderemos os 
conceitos de sobrecarga e classe abstrata no desenvolvimento 
de programas em PHP. Vamos começar? Excelente estudo para 
você!
8 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
O
BJ
ET
IV
O
S
Olá. Seja muito bem-vindo à Unidade 4. Nosso objetivo 
é auxiliar você no desenvolvimento das seguintes competências 
profissionais até o término desta etapa de estudos:
1. Reconhecer os conceitos fundamentais da orientação 
a objetos, como classes, objetos, métodos e atributos.
2. Aplicar os conceitos de encapsulamento e visibilidade 
de códigos em PHP. 
3. Aplicar os conceitos de herança e polimorfismo em 
códigos PHP.
4. Aplicar os conceitos de sobrecarga e classe abstrata no 
desenvolvimento de programas e sistemas em PHP. 
Então? Preparado para uma viagem sem volta rumo ao 
conhecimento? Ao trabalho!
9PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Classes, objetos, métodos e 
atributos
OBJETIVO
Ao término deste capítulo, você será capaz de 
entender reconhecer os conceitos fundamentais 
da orientação a objetos, como classes, objetos, 
métodos e atributos. E então? Motivado para 
desenvolver essa competência? Então vamos lá. 
Avante!
Introdução
Ao se construir ou desenvolver um sistema, podemos 
escolher um entre vários paradigmas de programação, sendo 
os mais conhecidos o paradigma procedural e o paradigma 
orientado a objetos. 
No primeiro caso, o paradigma procedural, segundo 
Dall’Oglio (2016), constrói-se um programa, formado por um 
conjunto de procedimentos e variáveis nem sempre agrupadas, 
de acordo com o contexto. Essa maneira de programar é (ou era) 
utilizada em linguagens classificadas como estruturadas, por 
exemplo: Cobol, Clipper, Pascal, entre outras.
Conforme o mesmo autor, o paradigma orientado a 
objeto trabalha com uma ótica mais aproximada do mundo real. 
Essa característica é dada devido à utilização de conceitos como 
classes, objetos, atributos e métodos. Segundo Souza (2017), a 
Programação Orientada a Objetos (POO) é um paradigma de 
análise, projeto e programação de sistemas de software com 
base na composição e na interação entre diversas unidades de 
código, chamadas de objetos.
O PHP é uma linguagem que nos permite escrever 
códigos nos paradigmas procedural ou orientada a objetos. Ao 
10 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
utilizar o paradigma de programação procedural, o programador 
constrói o código do programa com base em functions que, ao 
serem chamadas, executam determinados comandos. 
Em POO, tudo o que for fazer, faça com objeto (SOUZA , 
2017). 
Conceitos de orientada a objetos
Se você nunca trabalhou com POO, você vai precisar 
aprender alguns conceitos básicos, antes de escrever algum 
código. Esse tópico irá apresentar os conceitos mais importantes, 
sem os quais você não conseguirá trabalhar com POO. Nosso foco 
será mostrar como cada um desses itens aparecem no mundo 
real e, simultaneamente, prover uma introdução à POO em PHP. 
Antes de tratar os conceitos, faz-se pertinente apresentar alguns 
benefícios da utilização da POO.
Quadro 1 – Benefícios da POO 
Benefício Explicação
Reusabildiade Não repita o código, mas ao contrário, reutilize-o.
Refatoração Na hora de refazer fica mais fácil, visto que temos 
pedaços menores e mais simples.
Extensibilidade Pode-se criar objetos a partir dos existentes, que herdam 
todas as suas características e adicionar novas.
Manutenibilidade O programa torna-se mais fácil de manter devido à 
organização do código.
Eficiência Muitos frameworks têm sido desenvolvidos para tornar a 
POO cada vez mais eficiente.
Fonte: Elaborado pelo autor (2023).
É importante destacar também os quatro pilares 
fundamentais da POO, conforme destacado por Pauli (2010):
11PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Quadro 2 - Conceitos fundamentais da POO 
Conceito Descrição
Abstração Capacidade de representar conceitos do domínio do 
problema, ressaltando apenas o que for relevante para a 
aplicação da questão.
EncapsulamentoCapacidade de esconder os detalhes internos da 
implementação de uma classe, apresentando apenas as 
informações necessárias para a sua utilização.
Herança Mecanismo que permite a definição de uma hierarquia 
de classes, com o objetivo de reutilizar características já 
definidas.
Polimorfismo Capacidade da implementação de operações de maneira 
diferente da definida, originalmente, na classe-base.
Fonte: Elaborado pelo autor (2023).
Não se preocupe se esses termos lhe parecem estranhos. 
Vamos apresenta-los e discuti-los nesse material.
Além desses pilares fundamentais, do quadro anterior, 
para compreender como funciona a POO, é necessário entender 
quais são, o que significam e como são utilizados os principais 
elementos. Segue uma breve lista dos principais elementos que 
serão aqui explorados (SOUZA,2017):
 • Classe -uma abstração. Matriz base para a criação dos 
objetos, utilizados em um programa. Na programação 
estruturada, a classe corresponde a um arquivo.
 • Objeto - instância da classe.
 • Método - refere-se aos comportamentos do modelo a 
ser criado. Muito parecido com uma função, mas está 
subordinada à classe.
12 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
 • Atributos- referem-se às características do modelo a 
ser criado. São como variáveis, mas estão subordinados 
à classe.
Vamos, agora, detalhar e clarificar cada um desses 
elementos para que você consiga utilizá-los em seus códigos PHP.
O que é uma classe?
As classes são abstrações do domínio do mundo 
real para o qual o programa será desenvolvido e servem de 
modelos (moldes) com base nos quais um ou mais objetos serão 
instanciados.
EXPLICANDO 
MELHOR
No mundo real, você frequentemente vai encontrar 
vários objetos de um mesmo tipo, isto é, existem 
ao nosso redor várias “coisas” que podem ser 
agrupadas como tendo o mesmo comportamento e 
as mesmas características. Para o caso do exemplo 
da bicicleta, com certeza existem várias do mesmo 
fabricante e do mesmo tipo rodando por aí. Cada 
uma delas foi construída com base no mesmo 
conjunto de projetos ou modelos e, portanto, têm 
os mesmos componentes. Em termos de orientação 
a objetos, podemos dizer que sua bicicleta é uma 
instância da classe de objetos conhecida como 
bicicleta. A classe é o projeto ou modelo a partir do 
qual cada objeto individual é criado. 
O mesmo funciona para o seu cachorro, a sua TV e todos 
os demais objetos que você consegue perceber ao seu redor. 
Todos as canetas que você tem ou já teve são objetos que estão 
na base de um modelo de caneta. Esse modelo é a classe caneta.
Relativamente a sua representação, uma classe deve ter 
um nome, uma lista de atributos (características) e uma lista de 
métodos (comportamentos) e, segundo o padrão UML - Unified 
13PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Modeling Language , é representada, graficamente, da seguinte 
maneira:
Figura 1 – Representação esquemática de uma classe, conforme UML
Lista de Atributos
Lista de Métodos
Fonte : Elaborado pelo autor (2022 ).
ACESSE
Se você quiser aprofundar os conhecimentos em 
UML, acesse o QR code .
NOTA
Como você pode ter notado, podemos pensar 
todas as coisas do mundo, usando o paradigma da 
Orientação a Objetos, isto é, pensar em tudo como 
classes e objetos.
 
No que diz respeito à programação em linguagem PHP, 
a implementação básica de uma classe sempre deve iniciar com 
a palavra-chave class seguida pelo nome da classe, conforme 
mostra a figura a seguir:
https://www.devmedia.com.br/modelagem-de-sistemas-atraves-de-uml-uma-visao-geral/27913
14 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 2 – Exemplo básico de implementação de uma classe em PHP
Fonte: Elaborado pelo autor (2022). 
Como podemos ver, na figura citada, da mesma forma que 
acontece com os comandos condicionais ou laços de repetição, a 
abertura e fechamento de parênteses (linha 3 e linha 11) definem 
o bloco de código correspondente à classe. Nesse corpo da 
classe (entre os parênteses anteriores) devem estar definidos os 
seus atributos ou características, assim como os seus métodos. 
A lista de atributos pode ser composta por constantes, variáveis, 
matrizes. A lista de métodos é composta por funções.
Uma classe bicicleta, ficaria mais ou menos assim:
Figura 3 – Classe bicicleta
Fonte: Elaborado pelo autor (2022).
15PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Abstração na prática
Como você leu no quadro anterior, a abstração é um dos 
conceitos fundamentais da POO. Nesse caso, vamos aprender 
como utilizá-la na prática.
Imagine que você queira criar uma classe para um usuário 
do seu blog. Como você deve saber, esse usuário é uma pessoa. 
E, assim, deve ter muitas características físicas e não físicas. 
Como exemplo de características físicas podemos citar: a altura, 
o peso, a cor do cabelo, a cor dos olhos, se tem limitação visual, 
se usa piercing ou tatuagem, a cor da pele, a raça, o número do 
sapato, gênero etc.
Como características não físicas podem ser citadas: o 
número do CPF, do RG, a data de nascimento, o estado civil, 
endereço residencial, número do telefone celular etc.
Você deve ter percebido que podem ser elencadas 
inúmeras características do usuário que supostamente acessaria 
o blog – ou qualquer outro site que você queira desenvolver, 
porém, usando a abstração, isto é, a capacidade de perceber 
quais características são e quais não são relevantes para o site, 
percebemos que a relevância de cada característica depende do 
assunto tratado.
Se o site tratar sobre saúde física, ginástica, produtos 
fitness ou assuntos similares, características como altura e peso 
são relevantes. Mas caso trate sobre o aprendizado de idiomas, 
como inglês e espanhol, repare que as características que 
eram relevantes (peso e altura) , já não o são mais. Mais ainda 
se o site é sobre agência de modelos ou de relacionamentos, 
características como cor da pele, raça, tatuagem ou piercing são 
altamente relevantes. Mas se o site tratar sobre “astronomia 
16 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
indígena” ou “cidades inteligentes”, nenhuma das características 
citadas é relevante.
Muito bem! O que acabamos de fazer, isto é, todo esse 
raciocínio na verificação das características relevantes em cada 
assunto possível do suposto site ou blog é chamado de abstração.
A importância da abstração está em não desperdiçar 
tempo de programação e nem espaço de armazenamento de 
dados com características que nunca serão úteis.
Caso você tenha curiosidade de tentar rodar esse arquivo php 
no navegador, vai perceber que nada aparece na tela. Isso acontece 
porque a classe está definida no arquivo, porém não foi instanciada.
Para se utilizar as propriedades e métodos de uma classe 
em um programa, é necessário instanciar essa classe, isto é, criar 
um objeto com base nela. A classe em si apenas define o modelo 
para os objetos que realmente “fazem” o programa executar as 
funções para o qual ele foi desenvolvido.
EXEMPLO: quando queremos projetar um quarto para 
dormir, desenhamos onde ficará a cama, o armário, a 
escrivaninha, marcamos as medidas de largura, comprimento 
e altura do quarto e de cada “coisa” que pretendemos 
colocar nela. Porém, você não vai poder dormir na cama 
que desenhou no papel (no projeto do quarto) ou mesmo 
não poderá guardar suas roupas no armário que desenhou. 
Todos esses desenhos no papel são modelos (moldes) para 
se criar os objetos reais que serão colocados no quarto 
que você está projetando. Numa analogia, pode-se afirmar 
que o papel e todas as medidas, retas e curvas que você 
lá desenhou representam a classe do quarto e a classe dos 
móveis que serão fabricados (instanciados) para que você 
efetivamente possa utilizá-los.
17PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Como trabalhar com atributos?
Como já mencionado nesse material, os atributos são 
as características relevantes que devem ser especificadas para 
um objeto. São declarados da mesma forma que as variáveisem php. Em relação à visibilidade, podem ser públicos (public), 
privados (private) ou protegidos (protected). De acordo com o site 
php.net, disponível aqui, essa especificação define a visibilidade 
do atributo da classe. 
Atributos declarados como públicos podem ser acessados 
em qualquer lugar que tenha instanciado a classe com esse atributo. 
Os atributos declarados como protegidos podem ser acessados, 
apenas na própria classe e em suas classes filhas (veremos esse 
conceito mais adiante). Por fim, os atributos declarados como 
privados só podem ser acessados na classe que os declarou.
EXEMPLO: abra o NotePad++ e crie um arquivo chamado 
Exe01_u4.php. Nesse arquivo insira o código apresentado 
na figura a seguir:
Figura 4 - Visibilidade de atributos na classe funcionário
Fonte: Elaborado pelo autor (2022).
Note que, na figura anterior, apenas temos a lista de 
atributos, pois nenhum método foi declarado.
18 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Como funcionam os métodos?
Um método de uma classe define o comportamento que 
ela deve ter, quando esse método for chamado numa mensagem.
Quando uma classe recebe uma mensagem, essa 
normalmente informa qual método ela deve executar. A classe, 
então, redireciona a execução do programa para o código que 
está contido no método chamado. Quando o bloco de código 
daquele método acaba, o programa retorna à execução para a 
linha de código seguinte a que chamou o método.
Normalmente, um método tem a função de alterar 
o conteúdo de um ou mais atributos do objeto. Conforme 
destacado por Malaquias (2015), os métodos podem mudar o 
valor das características dos objetos e servem como mecanismo 
primário de comunicação entre objetos.
NOTA
O termo “chamar um método” é utilizado para dizer 
que o código que está contido naquele método 
deve ser executado.
Para declarar um método público em PHP, utilizamos a 
seguinte sintaxe:
public function ()
{
Bloco de código que deve ser executado quando este método foi 
chamado.
return 
}
19PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Assim:
 • O termo “public” define que o método pode ser 
acessado por outras classes que instanciarem a classe 
que o contém. Caso se queira tornar este método 
inacessível para outras classes, é necessário substituir 
o termo “public” por “private”. Esse assunto será melhor 
aprofundado no próximo tópico.
 • Para o utiliza-se qualquer 
identificador válido que ainda não tenha sido utilizado 
para declarar outros elementos nessa mesma classe. O 
nome do método deve sempre ser sucedido por abre e 
fecha parênteses “()”, caso não tenha parâmetros. Caso 
contrário, os parâmetros devem ser declarados entre 
os parênteses.
 • A não é obrigatória e indica os 
parâmetros que o método precisa para executar seu 
bloco de código.
 • Alguns métodos precisam retornar um conteúdo, outros 
não. Caso seja necessário retornar um conteúdo, deve-
se utilizar o comando “return,” seguido da variável que 
contém o conteúdo a ser retornado ou mesmo seguido 
do próprio valor a ser retornado.
O que é um objeto?
Os objetos são a chave para entender a tecnologia 
orientada a objetos. Em um programa de computador são 
conceitualmente similares a um objeto no mundo real. 
Ambos têm base num modelo (classe) e têm características e 
comportamentos.
20 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Os objetos armazenam suas características em campos 
(variáveis) e mostram seus comportamentos por meio de 
métodos (funções).
Para instanciar um objeto em PHP, usa-se a palavra 
“reserdada’ “new” com a seguinte sintaxe:
$Nome_do_Objeto = new Nome_da_Classe();
O objeto é definido da mesma maneira que uma variável.
EXEMPLO: imagine que seja necessário criar uma classe 
carro para um determinado jogo de corrida. Os atributos 
(características) relevantes indicados pelos projetistas do 
jogo foram: marca, modelo, cor, quantidade de combustível 
no tanque, tamanho do tanque. Nossa classe carro ficaria 
mais ou menos assim:
Figura 5 – Exemplo da classe carro
Fonte: Elaborado pelo autor (2022).
Para instanciar essa classe, isto é, criar o objeto carro, 
precisamos escrever a seguinte linha de código: $Meu_Carro = 
new CARRO();
21PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Note que a variável $Meu_Carro representa um objeto da 
classe CARRO. Assim, ele pode acessar todas as características 
públicas definidas nessa classe.
Você pode perguntar: podemos ter dois objetos com base 
na mesma classe? Claro que sim. É só instanciar dois objetos da 
mesma classe, da seguinte maneira:
Figura 6 – Duas instâncias da mesma classe CARRO
Fonte: Elaborado pelo autor (2022). 
Note que na linha 11, temos uma instância da classe 
CARRO que define o objeto $carro1. Já na linha 12, temos 
novamente uma instância da mesma classe, definindo um objeto 
chamado $carro2. São carros diferentes (objetos) com base no 
mesmo modelo (classe) de CARRO.
Para preencher os atributos de cada objeto, fazemos da 
seguinte maneira:
22 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 7 – Classe CARRO
Fonte: Elaborado pelo autor (2022).
Para o caso do exemplo com funcionário (figura anterior) 
temos o seguinte:
 Figura 8- Criando dois objetos com base na classe funcionário
Fonte: Elaborado pelo autor (2022).
23PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Como ficaria o código, se tentássemos informar o salário 
do funcionário número 1? Você deve estar pensando: “Bem, é só 
inserir uma linha como a 14, trocando o “nome” por “salário” e 
“Pedro” por “2000”, por exemplo.
Pois, então tente fazer e veja o resultado.
Se você acrescentou a linha de código: $Funcionario1-
>salario = 2000; e mandou atualizar, o navegador deve ter 
recebido uma mensagem de erro com a seguinte mensagem:
Fatal error: Cannot access protected property 
Funcionario::$salario in  C:\xampp\htdocs\
teste\Exe01_u4.php on line …
Isto ocorreu porque o atributo $salário foi definido como 
protegido e não pode ser acessado de fora da classe a não ser 
por uma que herde as características da classe Funcionário.
Isso é muito importante e serve para dificultar o acesso de 
pessoas estranhas aos valores dos salários ou mesmo, como nesse 
caso, de evitar tentativas de alteração do valor ou de qualquer 
outra informação importante do funcionário. Aprofundaremos 
esse assunto no próximo tópico: Encapsulamento e Visibilidade.
RESUMINDO
E então? Gostou do que lhe mostramos? Aprendeu 
mesmo tudinho? Agora, só para termos certeza de 
que você realmente entendeu o tema de estudo 
deste capítulo, vamos resumir algo do que vimos. 
Você deve ter compreendido como reconhecer os 
conceitos fundamentais da orientação a objetos, 
como classes, objetos, métodos e atributos.
24 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Encapsulamento e visibilidade
aplicar os conceitos de encapsulamento e visibilidade de 
códigos em PHP
OBJETIVO
Ao término deste capítulo, você será capaz 
de aplicar os conceitos de encapsulamento e 
visibilidade de códigos em PHP. E então? Motivado 
para desenvolver essa competência? Então vamos 
lá. Avante!
Esconder as características dos objetos e exigir uma 
interação por meio dos métodos para alterá-las é chamado 
de encapsulamento de dados – um princípio fundamental da 
programação orientada a objetos.
O encapsulamento serve para proteger os membros 
internos e um objeto. Quando usamos esse princípio, a única 
maneira de acessar um atributo de um objeto é por meio de um 
método, disponibilizado pela classe na qual o objeto em questão 
se baseia. Caso esse método não esteja disponível ou não exista, 
o atributo existe, mas não fica acessível.
Com base na explicação de Souza (2016), fazemos a 
seguinte analogia: quando você quer ligar para alguém e, ao 
pegar, seu telefone celular, digita os números do contato e 
pressiona o botão “ligar”, o telefone automaticamente faz a 
ligação. Você não precisa sabercomo o telefone celular funciona, 
como ele processa os dados que você digitou. Isto quer dizer 
que o processo de ligação de um telefone celular para outro está 
encapsulado, ou seja, em uma “cápsula”.
Da mesma forma, você pode encapsular os métodos ou 
atributos das classes que desenvolve, mostrando apenas quais 
são os dados de entrada necessários para executá-los.
25PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
O encapsulamento baseia-se na propriedade que define 
a visibilidade dos atributos. Em PHP, existem três tipos distintos, 
a saber:
 • Private -atributos ou métodos declarados como private 
só podem ser acessados no escopo da própria classe 
em que foram declarados.
 • Protected- atributos ou métodos declarados com 
protected somente podem ser acessadas na própria 
classe ou a partir de classes descendentes (herdadas).
 • Public -atributos ou métodos como public podem ser 
acessados de forma livre, a partir da própria classe, de 
classes descendentes e de programas que fazem uso 
dessa classe.
Voltando ao exemplo da classe funcionário (figura 
anterior), como podemos definir ou alterar o seu salário, já que 
ele está definido como protected? Para fazer isso precisamos 
construir um método que execute essa tarefa. Esse método pode 
ser assim:
26 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 9 - Inserindo métodos na classe Funcionário
Fonte: Elaborado pelo autor (2022).
Já aproveitamos e colocamos dois métodos: AlteraSalario 
e MostraSalario. 
Salve esse arquivo php e atualize o navegador. O resultado 
deve ser parecido com o apresentado da figura a seguir:
Figura 10 – Resultado da execução do código da Figura 9
Fonte: Elaborado pelo autor (2022).
Note, na figura anterior, podemos definir diretamente o 
departamento em que o funcionário trabalha, isto é, sem a utilização 
27PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
de método. Isto acontece porque o atributo “$depto” foi definido como 
public. Isto até não causaria nenhum problema, mas perceba que o 
atributo “$desligado” que tem a função de informar, se o funcionário 
foi demitido ou não também, é público. Isso pode causar vários 
problemas. Qualquer um poderia demitir o funcionário, simplesmente, 
executando uma linha simples de atribuição de valor para o atributo.
Assim, aconselhamos a modificar a visibilidade do 
atributo “$desligado” para privado ou para protegido e criar um 
método para demitir o funcionário.
O método ficaria mais ou menos assim:
 Figura 11 -Método demitir funcionário
Fonte: Elaborado pelo autor (2022).
Repare que esse método não recebe parâmetro. Ele 
simplesmente verifica se o funcionário já não está demitido. Em 
caso positivo, ele informa que não pode demitir um funcionário 
já demitido. Mas caso o valor do atributo “$desligado” seja igual a 
false, ele demite o funcionário (passando o valor do atributo para 
true e informa que acabou de demiti-lo, conforme solicitado).
Para testar esse método, você precisa inserir duas linhas 
em seu código:
Figura 12 -Testando o método demitir funcionário
Fonte: Elaborado pelo autor (2022).
28 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
É para colocar duas vezes a mesma coisa? Sim! Sabe por 
quê? Porque da primeira vez, ele deve demitir o funcionário e da 
segunda vez, avisar que o funcionário em questão já foi demitido. 
O uso dessas duas linhas iguais testa o método de forma completa 
para verificar, se tudo está funcionando, adequadamente. É 
claro que você está apenas testando as funcionalidades desse 
método. Num programa normal, não seria necessário deixar as 
duas linhas.
O resultado no navegador deve ser mais ou menos assim:
Figura 13 -Resultado do código com os métodos apresentados até o momento
Fonte: Elaborado pelo autor (2022).
Método construtor
É um tipo especial de método que é executado, apenas 
uma vez, quando o objeto da classe é instanciado. Normalmente, 
utilizado para inicializar valores de atributos de um objeto, para 
estabelecer conexão com o banco de dados ou abertura de um 
arquivo “txt” que será utilizado como “log”.
Em algumas linguagens de programação, o método 
construtor tem o mesmo nome da classe. Isto também acontecia 
com o PHP até a versão 5. A partir dessa versão, pode-se definir 
o método construtor com o mesmo nome da classe (método 
antigo) ou usar o método “__construct()”.
Ele não é obrigatório, isto é, o programador não precisa, 
necessariamente, definir esse método, quando vai implementar 
29PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
um programa. Caso não o defina, todos os atributos serão 
considerados com valor NULL.
Para testar isso é fácil: salve o exercício anterior com 
o nome de Exe02_u4.php e logo após a criação dos objetos 
“$funcionario1” e “$funcionario2”, faça a seguinte verificação:
Figura 14 – Verificação de nulidade do conteúdo do atributo
Fonte: Elaborado pelo autor (2022).
Para evitar valores nulos dos atributos das classes, 
podemos usar o método construtor, da seguinte forma:
Figura 15 – Método construtor em PHP
Fonte: Elaborado pelo autor (2022).
30 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
No caso anterior, o método não tem parâmetros, mas 
poderíamos ter um construtor que recebesse parâmetros.
EXEMPLO: imagine que você precise, ao criar o objeto 
Funcionário, já as informações referentes ao seu nome, 
CPF e departamento. O código seria mais ou menos assim:
Figura 16 – Criando objetos de classes com método construtor
Fonte: Elaborado pelo autor (2022). 
Usando o comando include
Outro viés do termo visibilidade pode ser utilizado com 
o comando include. Muitas vezes, não é produtivo manter as 
definições das classes (com seus atributos e métodos) no mesmo 
arquivo que o código que as manipula. Uma vez que a classe está 
funcionando, adequadamente, mantê-la no mesmo arquivo em 
que códigos estão sendo inseridos pode, por engano ou falta de 
informação do programador, vir a danificar o código original da 
classe (ou das classes). Dessa forma, o que se faz, normalmente, 
é montar o arquivo referente à classe deixá-la à parte do código 
que irá instanciar objetos com base nela.
31PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
EXEMPLO: abre o NotePad++ e crie um arquivo chamado 
usuario.php. Nesse arquivo, crie uma classe chamada 
USUARIO, conforme a figura a seguir:
Figura 17- Classe Usuário
Fonte: Elaborado pelo autor (2022). 
Agora crie outro arquivo, chamado Exe03_u4.php com o 
seguinte código:
Figura 18 – Usando o comando “include”
Fonte: Elaborado pelo autor (2022).
Explicando o código: na linha 2 da figura anterior, o 
comando include está informando que o arquivo usuario.php 
será utilizado. Por isso, na linha 4, a classe usuário é instanciada 
e o objeto “$usr” é criado.
Caso você retire a linha 2 do código da figura anterior, o 
navegador informará que a classe “USUARIO” não existe. A figura 
mostra o que deve aparecer na tela do navegador:
32 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 19- Demonstração de erro
Fonte: Elaborado pelo autor (2022).
Outra possibilidade para o uso do comando “include” é 
a divisão do código de uma página web, com o intuito de deixar 
esse código de cada página mais fácil de ser lido entendido. 
EXEMPLO: abra o NotePad++ e crie um arquivo php com o 
nome Exe04_u4.php. Insira o seguinte código:
Figura 20 – Uso do comando “Include”
Fonte: Elaborado pelo autor (2022).
O código dessa página pode ser refeito, separando os 
conteúdos do “header” para facilitar a leitura e a organização, da 
seguinte maneira:
Crie um arquivo php com o nome de header.php. Insira o 
seguinte código:
33PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 21 – Arquivo header.php
Fonte: Elaborado pelo autor (2022).
E altere o código da figura anterior para o que está a 
seguir:
Figura 22 – Usando o comando “include”
Fonte: Elaborado pelo autor (2022).
Se você salvar e executar o arquivo da figura anterior no 
navegador, terá o mesmo resultado que o obtido com o código 
da outra figura. Usandoo mesmo conceito para o Blog Pessoal, 
teremos o seguinte resultado no arquivo principal:
34 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 23 – Fazendo uso do comando “include” no Blog Pessoal
Fonte: Elaborado pelo autor (2022).
O arquivo inicial, antes de utilizar o recurso do comando 
“include”, tinha mais de 150 linhas. Agora, como podem notar 
na figura, ficamos com 37 linhas para o código principal do blog 
que foi distribuído em outros arquivos, cada qual responsável 
por fazer a sua parte e, no final, temos o blog completo.
Se renomearmos o arquivo da figura anterior para 
“principal_blog_u4.php” e iniciarmos a chamada com o código 
35PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
php que faz a conexão e verifica se ela foi realizada com sucesso, 
teremos o seguinte:
Figura 24 – Novo código para iniciar o blog
Fonte: Elaborado pelo autor (2022).
Repare que a página do blog só será carregada, se a 
conexão com o banco de dados for realizada com sucesso.
Montando a classe conectar no Blog
Transformando o código da figura em uma classe, ficaria 
mais ou menos assim:
36 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 25 – Classe Principal com o método conectar 
Fonte: Elaborado pelo autor (2022).
Mas repare que podemos usar o comando “include” 
para deixar o código menor e mais legível. É só criar um arquivo 
chamado principal.php e copiar o conteúdo das linhas 7 a 33.
O código ficaria assim:
37PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 26 – Código final do exercício
Fonte: Elaborado pelo autor (2022).
Até agora tudo bem? Caso tenha alguma dúvida não 
esqueça de postá-la no fórum!
Vamos em frente!
RESUMINDO
E então? Gostou do que lhe mostramos? Aprendeu 
mesmo tudinho? Agora, só para termos certeza de 
que você realmente entendeu o tema de estudo 
deste capítulo, vamos resumir algo do que vimos. 
Você deve ter compreendido como aplicar os 
conceitos de encapsulamento e visibilidade de 
códigos em PHP.
38 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Herança e polimorfismo- 
funções
OBJETIVO
Ao término deste capítulo, você será capaz de 
entender aplicar os conceitos de herança e 
polimorfismo em códigos PHP. E então? Motivado 
para desenvolver essa competência? Então vamos 
lá. Avante!
Herança entre classes
Conforme vimos no começo deste material, a herança é 
um mecanismo que permite a definição de uma hierarquia de 
classes, com o objetivo de reutilizar características já definidas. 
Nesse sentido, a utilização da herança para reaproveitar 
estruturas já desenvolvidas, além do ganho de tempo, permite-
nos ter uma base abstrata para a criação de classes, aproveitando 
recursos básicos comuns.
Também conhecida como generalização ou especialização, 
em outra definição, a herança é uma propriedade que ocorre, 
quando uma classe consegue “herdar” as características e 
comportamentos de outra. A classe que herda é chamada de 
classe filha e a classe da qual a classe filha herdou é chamada de 
superclasse ou classe mãe.
Em UML, representa-se a herança da seguinte maneira:
39PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 27 – Representação de herança em UML
Fonte: Elaborado pelo autor (2022 ).
Note que se pensarmos no sentido que vai da superclasse 
para as classes filhas (uma superclasse pode ter uma ou mais 
classes filhas), vemos uma especialização de características e 
comportamentos. Se pensarmos no sentido contrário, o que 
vemos é uma generalização.
EXEMPLO: seguindo essa colocação bem-humorada, abra 
o NotePad++ e crie um arquivo chamado Jedi.php. Insira o 
seguinte código:
Figura 28 – SuperClasse Jedi
Fonte: Elaborado pelo autor (2022).
40 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Então já temos nossa Superclasse Jedi! Agora precisamos 
da classe filha. Assim, crie um arquivo php chamado Personagem.
php, com o seguinte código:
Figura 29 – Classe filha
Fonte: Elaborado pelo autor (2022).
Repare que na linha 5 do código anterior existe a palavra 
“extends”. É essa palavra-chave que determina que a classe 
Personagem herda as características e comportamentos da 
classe Jedi. Isto permite que a subclasse Personagem acesse os 
atributos “sabre_de_Luz”, “força_mental” e “habilidade_física”, 
bem como o método “Tornar_se_Jedi”, como se fossem próprios.
Para testar se as classes estão funcionando com o 
mecanismo da herança, crie um arquivo php chamado exe05_
u4.php e insira o seguinte código:
41PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 30 – Teste das classes Jedi e Personagem
Fonte: Elaborado pelo autor (2022).
Polimorfismo
De acordo com o que foi visto no quadro anterior , no início 
desse material, polimorfismo é a capacidade da implementação 
de operações de maneira diferente da definida, originalmente, 
na classe base. 
Para melhor apresentar o funcionamento do 
Polimorfismo, vejamos o seguinte diagrama:
42 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 31 – Representação gráfica da herança entre duas classes
Fonte: Elaborado pelo autor (2022 ).
43PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 32 – Classe Conta
Fonte : Elaborado pelo autor (2022).
Agora vamos montar um código para testar a classe conta 
da figura anterior. Abra o NotePad++ e crie um arquivo chamado 
Exe06_u4.php, com o seguinte código:
44 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 33 – Código fonte para testar a classe conta da figura anterior
Fonte: Elaborado pelo autor (2022). 
Depois de salvo o arquivo anterior e atualizado o 
navegador, devemos ter o seguinte resultado:
Figura 34 – Resultado da execução do código da figura anterior 
Fonte: Elaborado pelo autor (2022). 
Note que o saldo da conta fica negativo em meio às 
transações (de saque e depósito) realizadas.
45PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Agora que temos a classe contas a funcionar, vamos 
criar uma especialização da classe conta.php chamada de conta 
Poupança! Então, crie um arquivo no NotePad++ chamado 
contaPoupanca.php, o qual deve conter uma classe de mesmo 
nome que herda as características e comportamentos da classe 
criada no arquivo conta.php. Esta classe contaPoupanca deve 
conter o seguinte código:
Figura 35 – Classe contaPoupanca.php
Fonte: Elaborado pelo autor (2022). 
Note que essa classe herda (“extends”) da classe conta, 
criada anteriormente.
Repare também que a classe filha “contaPoupanca” tem 
um método com o mesmo nome (método sacar()) que a classe 
mãe “conta”, mas o conteúdo do método sacar na classe mãe é 
diferente do conteúdo do método sacar na classe filha. 
Para testar o funcionamento da classe “conta” e da classe 
“contaPoupanca”, crie um arquivo chamado Exe07_u4.php, com 
o seguinte código:
46 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 36 – Código para testar a classe contaPoupanca.php
Fonte: Elaborado pelo autor (2022).
Salve o arquivo e execute-o no navegador. O resultado 
deve ser algo parecido com isso:
47PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 37 – Resultado da execução do código da figura anterior
Fonte: Elaborado pelo autor (2022 ). 
Repare que, quando tratamos com a classe conta.php, o 
saldo pode ficar negativo. Porém, quando fazemos as mesmas 
transações, utilizando a classe contaPoupanca.php, a retirada 
que deixaria a conta negativa não acontece e o saldo permanece 
com 100.
Isto é polimorfismo. O método sacar() tem o mesmo nome 
nas classes mãe e filha, mas tem comportamento diferente. No 
caso da classe contaPoupanca, o valor do saldo é verificado, antes 
de executar a operação, o que não acontece na classe mãe conta.
48 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
RESUMINDO
E então? Gostou do que lhe mostramos? Aprendeu 
mesmo tudinho? Agora, só para termos certeza de 
que você realmente entendeu o tema de estudo deste 
capítulo, vamos resumir algo do que vimos. Você 
deve ter compreendido como aplicar os conceitos de 
herança e polimorfismo em códigos PHP.
49PROGRAMAÇÃO CODING WEB (PHP)
U
ni
dade
 4
Sobrecarga e classe abstrata
OBJETIVO
Olá! Seja bem-vindo ao último tópico desta 
unidade. Aqui vamos verificar mais dois conceitos 
importantes, quando se trata de POO: sobrecarga 
de métodos e classes abstratas.
Sobrecarga de métodos
A linguagem de programação PHP não tem sobrecarga de 
métodos, assim como a linguagem Java, por exemplo, porém, é 
possível simular esse mecanismo.
IMPORTANTE
Não se deve confundir sobrecarga de métodos 
com polimorfismo, visto no item anterior. A 
sobrecarga é a possibilidade de se ter, em uma 
mesma classe, dois métodos com o mesmo nome, 
mas com parâmetros diferentes. O polimorfismo 
é a possibilidade de a classe filha ter um método 
com o mesmo nome que o método da classe 
mãe (superclasse), mas que tem comportamento 
diferente. Mas, apesar dessa diferenciação clara, 
alguns autores consideram a sobrecarga como um 
tipo especial de polimorfismo.
EXEMPLO: imagine que criamos uma classe TV com um 
método chamado Ligar(). Esse método simplesmente liga 
a TV no canal padrão (definido pelas configurações da 
TV). Mas poderíamos ter um novo método com o mesmo 
nome, mas que informasse o canal no qual a TV devesse 
ser sintonizada, logo que ligasse. Esse método também se 
chamaria Ligar(), mas teria um parâmetro chamado “canal” 
que o método original não tem. Seria mais ou menos assim:
50 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 38- Exemplo “incorreto” de sobrecarga de métodos em PH.
Fonte: Elaborado pelo autor (2022).
Salve esse arquivo como tv.php e execute-o no navegador. 
Um aviso de erro irá aparecer a informar que o método “Ligar” 
não pode ser redeclarado na classe TV, da seguinte forma:
Figura 39 – Erro apresentado pela execução do código da figura anterior
Fonte: Elaborado pelo autor (2022).
A figura anterior demonstra que a linguagem PHP não 
suporta sobrecarga de métodos. Mas, ela pode ser simulada para 
que possamos tirar a mesma vantagem desse mecanismo que as 
demais linguagens de programação orientada a objetos têm. 
Simulando sobrecarga de métodos em 
PHP
Conforme aponta Fabri (2012), a linguagem PHP nos 
apresenta três métodos que auxiliam na criação da simulação da 
sobrecarga. São eles:
51PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
 • func_get_arg()
Essa função permite que você recupere o valor de um 
argumento passado como parâmetro na chamada do método.
 • func_get_args()
Essa função retorna um vetor com todos os argumentos 
passados como parâmetro na chamada do método.
 • func_num_args()
Essa função retorna um inteiro que representa a 
quantidade de argumentos passados como parâmetro ao seu 
método.
Podemos então, a partir dos métodos apresentados, 
corrigir o código da figura 38 para que funcione adequadamente. 
Ele ficaria assim:
Figura 40 - – Exemplo “correto” de sobrecarga de métodos em PHP
Fonte: Elaborado pelo autor (2022).
52 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Para testar o código da figura anterior (classe TV.php), 
crie um arquivo chamado Exe)7_u4.php com o seguinte código:
Figura 41 – Código para testar o funcionamento da sobrecarga de métodos da classe tv.php, 
na figura anterior.
Fonte: Elaborado pelo autor (2022).
O resultado no navegador será mais ou menos assim:
Figura 42 – Resultado da execução do código da figura anterior
Fonte: Elaborado pelo autor (2022).
Pronto! O mecanismo da sobrecarga foi simulado em 
PHP! Mas não acabamos por aqui. Vale a pena tratar mais alguns 
detalhes sobre essa especificação: Existem, de maneira geral, 
duas maneiras de se fazer sobrecarga de métodos:
 • Sobrecarga por quantidade de parâmetros - o número 
de parâmetros varia de um método para o outro. Um 
exemplo claro para a sobrecarga por quantidade de 
parâmetros é aquele dos dados na figura anterior, na 
qual se verifica o número de enviado (func_num_args) 
e então a opção de execução dos comandos do método 
é tratada, conforme a quantidade.
53PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
 • Sobrecarga por Tipo de parâmetros - o que varia não 
é o número de parâmetros, enviados ao método, mas 
sim o tipo. Como o deste tipo de implementação, 
poderíamos utilizar a mesma classe TV, mas que 
agora pudesse receber o número ou o nome do canal 
desejado. A classe TV ficaria mais ou menos assim:
Figura 43 – Código da classe tv.php para tratar sobrecarga por quantidade e tipo de 
parâmetros
Fonte 43: Elaborado pelo autor (2022).
E o código para testar essa classe seria mais ou menos 
assim:
54 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 44 – Código para testar a classe da figura anterior
Fonte: Elaborado pelo autor (2022).
E.... por fim... o resultado, no navegador, seria assim:
Figura 45 – Resultado apresentado no navegador na execução do código da figura anterior
Fonte: Elaborado pelo autor (2022).
Perceba como esta característica é valiosa para a POO, 
mas deve ser utilizada com cautela, pois pode deixar seu código-
fonte muito complicado de ser lido e entendido. Fabri (2012) 
alerta que:
 “A recomendação em geral é para que cada método 
tenha sua própria assinatura. Esse tipo de sobrecarga deve ser 
usado somente em casos extremamente necessários (isso varia 
com o bom senso do programador)”.
Classe abstrata
Um dos primeiros conceitos da POO tratados nesse 
material foi o conceito de “abstração” (ver item 1.3.1) e 
55PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
terminaremos esse material aprofundando esse conceito para 
além do que já foi definido. Dall’ Oglio (2016) adverte que “para 
construir um sistema orientado a objetos, não devemos projetar 
o sistema como se fosse uma grande peça monolítica”.
Nesse sentido, devemos separar o “problema” a ser 
solucionado em partes, percebendo as peças mais importantes, 
ignorando as partes não relevantes. Segundo o mesmo autor, 
essa postura permite construir peças bem definidas que podem 
ser reaproveitadas ou reutilizadas, formando uma estrutura 
hierárquica. Nesse contexto, na modelagem de um sistema ou de 
uma página Web orientada a objetos, identificaremos certamente 
classes que servem de estrutura (classes estruturais) que definem 
conceitos gerais do que se pretende realizar e servirão como 
base para a criação de outras, mais especializadas. Essas classes 
mais genéricas, que apresentam em si conceitos abstratos do 
que se pretende realizar num sistema ou numa página Web, são 
denominadas de classes abstratas.
As classes abstratas nunca serão instanciadas na forma 
de objetos, mas servirão de modelo ou base estrutural para a 
criação de classes filhas e essas sim, serão instanciadas. Como 
exemplo, podemos citar a classe conta (figura anterior) que 
apresenta as características e comportamentos genéricos e 
abstratos de uma conta poupança ou de uma conta corrente.
IMPORTANTE
Uma classe abstrata não pode ser instanciada, 
diretamente, apenas servir de base para criação 
das classes (DALL’OGLIO, 2016).
Para definir uma classe como abstrata em PHP, utiliza-se 
a palavra-chave abstract, antes da definição da classe em si.
56 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
A classe conta, se transformada em classe abstrata, ficaria 
assim:
Figura 46 – Classe conta transformada em classe abstrata
Fonte: Elaborado pelo autor (2022).
Mas, se executarmos o mesmo código da figura anterior 
(Arquivo Exe06_u4.php), teremos o seguinte resultado:
Figura 47 – Erro gerado por tentar instanciar a classe abstrata conta
Fonte: Elaborado pelo autor (2022).
Métodos abstratos
Para assegurar que as classes filhas das classes abstratas 
implementem todos os métodos necessários para seu correto 
uso e funcionamento, as classes abstratas podem lançar mão da 
definição dos métodos abstratos, cuja função é servir de molde 
para os da classe filha dessa classe abstrata.
EXEMPLO: imagine que ao projetar a classe conta 
(figura anterior), agora definida como classe abstrata, 
o programador identificasse que os métodos sacar() e 
57PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
depositar() tivessem comportamentostão especializados 
que caberia às classes filhas determinar tal comportamento. 
Mas que seria imprescindível que, ao implementar qualquer 
classe filha, esses métodos não fossem esquecidos. Nesse 
contexto, a classe conta (abstrata) ficaria assim:
Figura 48 – Classe conta (abstrata) com métodos sacar() e depositar() (abstratos)
Fonte: Elaborado pelo autor (2022). 
Perceba que os métodos (agora definidos como abstratos) 
não são implementados na classe conta (abstrata), mas apenas 
a sua assinatura.
58 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
IMPORTANTE
Quando você, ao estudar sobre POO, se deparar 
com o termo “assinatura de um método”, isso se 
refere à maneira como ele deve ser declarado, isto 
é, seu nome e seus argumentos (caso existam).
Pois bem, já verificamos que a classe conta não pode ser 
instanciada (figuras anteriores). Isto quer dizer que precisamos 
instanciar, utilizando uma especialização da classe conta (tal 
como conta Corrente ou conta Poupança) para poder ter acesso 
à estrutura básica do que se projetou para uma conta. Nesse 
caso, devemos utilizar o arquivo contaPoupanca.php (figura 
anterior) que é classe filha da classe conta e, por isso, herda suas 
características e comportamentos.
Para relembrar a classe contaPoupanca, veja figura a 
seguir:
Figura 49 – Classe contaPoupanca: idêntica à figura anterior
Fonte: Elaborado pelo autor (2022).
Com base nisso, abra o NotePad++ e refaça o arquivo 
Exe07_u4.php e o renomeie como Exe08_u4.php para conter 
apenas a segunda parte do seu código, da seguinte maneira:
59PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 50 – Código para teste da classe contaPoupanca
Fonte: Elaborado pelo autor (2022).
Nesse momento, você já deve ter capacidade de prever 
alguns resultados. No caso em específico, peço a sua atenção para 
que verifique o que pode dar de errado no código da figura citada.
Note que na linha 12, temos a chamada do método depositar(). 
Ele é abstrato (na classe conta) e deveria ter sido implementado na 
classe contaPoupança (figura anterior), mas não foi.
Por isso, ao tentar executar no navegador, o código 
apresentado na figura anterior (Exe08_u4.php) ou executar no 
navegador o código da figura citada (contaPoupanca.php), o 
mesmo erro aparecerá:
–Figura 51 - Erro gerado pela falta da implementação (obrigatória) do método depositar() na 
classe contaPoupanca
Fonte: Elaborado pelo autor (2022).
60 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Dessa forma, precisamos alterar a classe contaPoupanca 
para que também implemente a classe abstrata depositar(). Ela 
deve ficar mais ou menos assim:
Figura 52- Novo código para a classe contaPoupanca que contempla os dois métodos 
abstratos da classe conta
Fonte: Elaborado pelo autor (2022).
Note que aproveitamos para inserir mais algumas linhas 
(10 e 11 – 22 e 23) par avisar que um valor x foi sacado ou 
depositado na conta Poupança.
Ao executar o arquivo Exe08_u4.php, da figura anterior, 
tem-se o seguinte resultado na tela do navegador:
61PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
Figura 53 – Resultado da execução do arquivo Exe08_u4.php 
Fonte: Elaborado pelo autor (2022).
Pois bem, esses são as classes abstratas e seus métodos 
abstratos. 
RESUMINDO
E então? Gostou do que lhe mostramos? Aprendeu 
mesmo tudinho? Agora, só para termos certeza 
de que você realmente entendeu o tema de 
estudo deste capítulo, vamos resumir algo do que 
vimos. Você deve ter compreendido como aplicar 
os conceitos de sobrecarga e classe abstrata no 
desenvolvimento de programas e sistemas em 
PHP. 
Como você deve ter percebido, é possível fazer 
muito mais com o PHP. Mas, nessa unidade, 
terminamos. Não deixe de verificar as referências 
para aprender mais. Isto é só o começo e a 
aprendizagem não pode parar! Muito obrigado 
por ter acompanhado todo o processo até aqui. 
Estamos à disposição.
62 PROGRAMAÇÃO CODING WEB (PHP)
U
ni
da
de
 4
DALL’OGLIO, P. PHP - Programando com Orientação a Objetos. 
3.ed. São Paulo: Novatec Editora, 2018 [2016].
FABRI, G. PHPGlauberFabri. [s.d.]. Disponível em: http://
phpatual.blogspot.com/2012/03/sobrecarga-de-metodo-em-php-
sobrecarga.html Acesso em: 8 mar.2012.
MALAQUIAS, J. Programação Orientada a Objetos. [s.d.]. Slides, 
UFOP, Departamento de Computação, Ouro Preto. Disponível em: 
www.decom.ufop.br/romildo/2015-1/bcc221/01_Aula_01.pptx 
Acesso em: 28 ago. 2018.
PAULI, G. (2010). Introdução à POO. [s.d.]. Disponível em: 
DevMedia: https://www.devmedia.com.br/introducao-a-poo-
partes-1-e-2/17282. Acesso em: 28 ago.2018.
ScriptCase. O que é instanciar um objeto? [s.d.] Disponível em: 
https://www.scriptcaseblog.com.br/instanciar-objeto/.Acesso em: 
30 ago. 2018.
SOUZA, E. G. Programação Orientada a Objetos em PHP , 
2016. Disponível em: Medium: https://medium.com/emanuelg-
blog/programa%C3%A7%C3%A3o-orientada-a-objetos-em-php-
encapsulamento-1e8a3735f48d Acesso em: 31 ago. 2018.
SOUZA, R. Introdução ao PHP Orientado a Objetos com MVC, 
2017. Disponível em: http://ribafs.16mb.com/down/cake/phpoo_
introducao.pdf. Acesso em: 29 ago. 2018.
RE
FE
RÊ
N
CI
A
S
	Classes, objetos, métodos e atributos
	Introdução
	Conceitos de orientada a objetos
	O que é uma classe?
	Abstração na prática
	Como trabalhar com atributos?
	Como funcionam os métodos?
	O que é um objeto?
	Encapsulamento e visibilidade
	Método construtor
	Usando o comando include
	Montando a classe conectar no Blog
	Herança e polimorfismo- funções
	Herança entre classes
	Polimorfismo
	Sobrecarga e classe abstrata
	Sobrecarga de métodos
	Simulando sobrecarga de métodos em PHP
	Classe abstrata
	Métodos abstratos

Mais conteúdos dessa disciplina