Programação Web – #7: Extensão de classes

8 Comentários

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.

clean-coding-best-practices


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.

Ficheiros de suporte #7

 

Screencast

Se não conseguir ver o vídeo, clique aqui.

 

Por João Patrício para Pplware.com

Comentários

8

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Pedro
    Pedro

    Estou a gostar desta rubrica 🙂 Sempre tive interesse no mundo web.

    Sugiro que a próxima seja de AngularJS 😉

  2. Avatar de João Patrício
    João Patrício

    Obrigado pelo comentário!
    Quanto à sugestão, é uma forte possibilidade! Não deixes de ver VueJS também.

  3. Avatar de João Gomes
    João Gomes

    Parabéns João, Muito boa rubrica, mantém o bom trabalho!

    1. Avatar de Joao Patrício
      Joao Patrício

      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!

      1. Avatar de João Gomes
        João Gomes

        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

        1. Avatar de Joao Patrício
          Joao Patrício

          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!!

  4. Avatar de Rafael
    Rafael

    Obrigado João, maneira simples de perceber os conceitos 😉 Já agora existe algum tutorial de VueJS ?

    1. Avatar de Joao Patrício
      Joao Patrício

      Obrigado Rafael!
      Existem pois. Começa já com a 1.x
      https://laracasts.com/series/learning-vue-step-by-step