Programação Web – #7: Extensão de classes
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.
<?php abstract class Viatura { // Variável public $todoTerreno = false; // Função public function conduzir() { // Código para conduzir } } class Jipe extends Viatura{ public $todoTerreno = true; } class Ligeiro extends Viatura{ //Assim, sem código, é igual à sua base, Viatura } // $tentativa = new Viatura(); // Erro Abstrata! $ferrari = new Ligeiro(); $hummer = new Jipe(); echo $ferrari->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.
<?php $ferrari->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.
Este artigo tem mais de um ano
Estou a gostar desta rubrica 🙂 Sempre tive interesse no mundo web.
Sugiro que a próxima seja de AngularJS 😉
Obrigado pelo comentário!
Quanto à sugestão, é uma forte possibilidade! Não deixes de ver VueJS também.
Parabéns João, Muito boa rubrica, mantém o bom trabalho!
Obrigado João! O caminho parece longo até metermos “as mãos na massa”, mas de facto há conceitos basilares que são muito importantes. Grato!
Caro João, permite que te faça as seguintes questões:
Qual o IDE que aconselhas para Javascript?
Que programa usas para gravar os screencast?
Obrigado desde já pela partilha
Olá João,
Trabalho com PhpStorm, que recomendo acima de tudo, https://www.jetbrains.com/phpstorm/
Mas requer licença. Como alternativa tens o NetBeans, usado no tutorial, e o SublimeText, que pode ser musculado com o SublimeCodeIntel, pesquisa.
Para screencasts, já testei vários demos, experimenta o CamStudio opensource + MovieMaker 12.
Happy coding!!
Obrigado João, maneira simples de perceber os conceitos 😉 Já agora existe algum tutorial de VueJS ?
Obrigado Rafael!
Existem pois. Começa já com a 1.x
https://laracasts.com/series/learning-vue-step-by-step