Programação Web – #9: Interfaces e Traits

12 Comentários

Depois de abordar os namespaces no tutorial anterior, vamos validar hoje os interfaces e traits.

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


Interfaces

São os interfaces que nos permitem garantir que as classes são implementadas conforme projectado. São como contratos, onde apenas dizemos quais os métodos e parâmetros que determinada classe tem de implementar. Se tal não acontecer, resultará num erro fatal para a aplicação. Do interface, não faz parte código fonte algum.

Um interface para uma viatura poderia ser a definição que tem de ligar, tem de dar para seguir em frente, virar para a esquerda e para a direita, recebendo como parâmetro a distância a percorrer.

Se declararmos uma classe que implemente esta interface, teremos que definir tais métodos, “garantindo” assim a funcionalidade da classe.

Os métodos definidos terão que ter visibilidade pública. Os interfaces não podem ser instanciados. Ou seja, não há objectos do tipo interface.

 

Traits

Pensemos nos Traits como métodos utilizáveis em várias classes, evitando assim repetição de código entre elas.

Se virar um volante, num ligeiro ou num camião, for feito da mesma maneira, então para quê repetir essa funcionalidade? Ambas as classes usarão o mesmo trait.

 

Desafio Extra

Uma particularidade fantástica do Laravel é que, graças ao seu IoC Container, podemos “ligar” uma classe a um interface. Através do seu gestor de dependências, quando solicitada a “instanciação” de uma interface (via Dependency Injection), ele na verdade vai instanciar e fornecer a tal classe ligada.

Teremos estas “bindings” num Service Provider, podendo assim ao longo do projecto, substituir uma implementação sem ter que alterar código fonte projecto fora.

Fica o desafio para que leia sobre os princípios SOLID. Acrónimo para:

  • S – Single-responsiblity principle
  • O – Open-closed principle
  • L – Liskov substitution principle
  • I – Interface segregation principle
  • D – Dependency Inversion Principle

Trata-se de princípios para boas (óptimas) práticas de arquitectura de software. Não se referem a uma linguagem concreta.

Não se assustem, é mais fácil entender do que parece. Mas claro, requer o seu tempo e colocação em prática. Mais à frente abordaremos.

 

Tópicos para hoje

 

  • Interfaces
  • Traits

 

Roadmap para os próximos vídeos (dinâmico a cada tutorial):
  • Composer e Git (Controlo de Versões)
  • 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 projecto ao artigo de hoje, convenientemente preparados para serem explorados por vós.

Ficheiros de suporte #9

 

Screencast

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

 

Por João Patrício para Pplware.com

Comentários

12

Deixe um comentário

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

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

    Estamos quase no Laravel…. 🙂 Git e Composer a seguir, espero não ter de dividir em 2 artigos!
    Happy coding!

  2. Avatar de BM
    BM

    Utilizo o Laravel há mais de uma ano e tenho seguido com atenção a tua rubrica, pois há sempre formas de pensar diferentes das que utilizamos normalmente e que, no mínimo, nos obrigam a pensar em maneiras de melhorar.
    Obrigado pelo esforço e pelo bom trabalho que estás a realizar. Continua.

  3. Avatar de 123xyz
    123xyz

    A palavra interface é do gênero feminino. Logo são as interfaces ou a/uma interface…

  4. Avatar de Baptista
    Baptista

    Estou a seguir com muito entusiasmo! Excelente!
    Único senão, a publicação dos artigos deveria ser um pouco mais rápida

  5. Avatar de João Gomes
    João Gomes

    Muito obrigado João, pela a tua partilha, e continuação do excelente trabalho!

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

    Obrigado a todos pelo feedback!!
    Concordo que deveria ser mais rápido, mas a disponibilidade não o permite…

  7. Avatar de Rui
    Rui

    Boas João,
    E o artigo desta semana ? Tenho acompanhado estes artigos com muita atenção, acho que estão bem elaborados e são um excelente ponto de partida.

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

      Olá Rui,
      Infelizmente, os dias têm apenas 24h e estas têm sido poucas esta semana, tirando as outras 🙂
      Obrigado pelo feedback e conto lançar assim que possível!

  8. Avatar de Power
    Power

    Fico muito contente por nao ver aqui pessoal a mandar os “bitaites” que costuma acontecer, ai porque não usaste class abstrata e usaste o trait, ah porque e’ que criaste duas classes para virar onde podias criar só uma com o primeiro parâmetro direita ou esquerda etc etc, normalmente quando vejo tutoriais destes há sempre um ou outro comentário do “melhor programador” enquanto o objectivo disto e’ ensinar a quem não sabe ou quem quer aprender mais. Obrigado e bom trabalho

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

      É mesmo isso Power.
      Obrigado pelo feedback!! É preenchedor, e o motivo pelo qual devolvo à comunidade.
      Cumpts e obrigado!

  9. Avatar de Pedro
    Pedro

    Bom tutorial, simples e claro.
    Como já foi dito, mesmo que já faz disto todos os dias, não faz mal nenhum rever certa “materia” e quem sabe aperfeiçoar o método de trabalho.
    Para quem quer começar é dos melhores pontos de partida.

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

      Pedro,
      Obrigado pelo feedback.
      É preenchedor e motivante, saber que expliquei, ainda que sucintamente, interfaces e traits, e a mensagem foi simples e clara:
      Obrigado por acompanhares!