Depois de abordar as classes, objectos, propriedades e métodos no tutorial anterior, vamos hoje dar continuidade à OOP, com a extensão de classes, visibilidade e encadeamento.
Como anteriormente, gostaríamos de recordar que não é possível formar um programador numa questão de vários tutoriais. Estes servem para boa orientação e início de uma busca por parte do leitor. Servirão de base a quem se quer iniciar, não esquecendo que esta rubrica tem como objectivo a introdução da framework Laravel.
Extensão de Classes
Uma classe pode definir uma estrutura e ser estendida, de forma a servir de base a uma nova estrutura. Nesta, poderemos utilizar as propriedades e métodos da estrutura de base, ou sobrepô-las (override). Usaremos para isto a keywords extends.
Aproveitando o exemplo das Viaturas, em que fizemos objectos $ligeiro e $jeep, ambos os objectos do tipo Viatura, podemos nesta altura aprofundar. Assim, iremos estender a classe de Viatura, e fazer duas novas classes, respectivamente, para um Ligeiro e para um Jipe.
Classes Abstractas
São classes que não podem ser instanciadas. São decisões ao nível do projecto. Coloca-se o caso, no nosso exemplo, de não querer no projecto que se declarem viaturas sem que estejam perfeitamente definidas. Assim, a classe Viatura seria abstracta, podendo apenas ser estendida e não instanciada.
No bloco de código abaixo, exemplificamos os pontos anteriores.
todoTerreno // false
echo $hummer->todoTerreno; // true
?>
Visibilidade OOP
As propriedades e métodos de uma classe têm parâmetros de visibilidade. Como vimos no screencast anterior, declarámos sempre a keyword public.
Na verdade, poderemos utilizar:
- public
- Alterada/invocada livremente
- Será estendida à classe “filha” (child)
- protected
- Alterada/invocada explicitamente por código dentro da classe
- Será estendida à classe “filha” (child)
- private
- Alterada/invocada explicitamente por código dentro da classe
- Apenas na classe onde definida
No screencast, vamos validar estes pontos.
Métodos encadeados
Existe uma possibilidade de facilitar o trabalho com um objecto em que este se preveja ser manipulado consecutivamente. Iremos ver hoje como atingir algo semelhante ao bloco de código abaixo.
seguirEmFrente(100)
->virarDireita(40)
->virarEsquerda(10)
->parar();
?>
Tópicos para hoje:
- Extensão de Classes
- Visibilidade OOP
- Require
- Métodos encadeados
Roadmap para os próximos vídeos (dinâmico a cada tutorial):
- Namespaces, Interfaces e Traits
- Git (Controlo de Versões) e Composer
- Consola e linha de comandos
- Primeira página – HTML – Conteúdo dinâmico
- Browser Inspector – Ferramentas de Programador
- Bem-vindo ao Laravel!
- Site estático clássico 4 páginas, com Templates
- Bases de Dados
- CRUD – Create, Read, Update, Delete
- Desenvolvimento de WebApp, open-source, a definir pelos leitores!
Ficheiros de Suporte
Aqui ficam os ficheiros do projeto ao artigo de hoje, convenientemente preparados para serem explorados por vós.
Screencast
Se não conseguir ver o vídeo, clique aqui.