INTERFACE FLUENTE 
BRUNO BARRETO FREITAS 
FRANÇOES DA SILVA PEREIRA
ÍNDICE 
OIntrodução. 
OInterface Fluente. 
OO que é isso? 
OPra que serve? 
OComo eu uso isso? 
OProgramar Para um Ser Humano Entender. 
OPor que fazer isso? 
OVantagens da Interface Fluente. 
ODesvantagens da Interface Fluente.
ÍNDICE 
OExemplos de Código. 
OCarro. 
OConsulta SQL. 
OOutros. 
OReferencias.
INTRODUÇÃO 
OOs primeiro programas de computador eram instruções sequenciais difíceis de serem compreendidas e que executavam tarefas relativamente muito pequenas. 
OCom a evolução do hardware o software também teve que evoluir e crescer.
INTRODUÇÃO 
OOs programas então cresceram em numero de instruções, complexidade, e melhorou ligeiramente a facilidade de compreensão dos códigos escritos em uma linguagem mais próxima a natural. 
OMas não parou por ai, novos paradigmas de programação foram surgindo, e quando uma “nova solução” aparece ela não esta só, ela tem um irmão siamês; “o problema novo”.
INTRODUÇÃO 
OE dos novos problemas que foram surgindo, é claro, novas ideias foram aparecendo. Então começam a surgir tipos de problemas muito recorrentes. 
OPara problemas recorrentes temos soluções recorrentes. Os padrões de projeto. Aqui iremos abordar uma dessas soluções para problemas frequentes no desenvolvimento de software, a Interface Fluente.
INTERFACE FLUENTE 
OO que é? 
OInterface Fluente é um padrão de desenvolvimento de software orientado a objetos, que faz parte da categoria de DSL’s internas. 
OUma DSL, em resumo, é uma linguagem de domínio especifico, criada para um proposito particular. Exemplos de DSL; HTML, expressões regulares, macros de planilhas eletrônicas, etc.
INTERFACE FLUENTE 
OPra que serve? 
OMelhora a legibilidade dos códigos, tornando o fluxo de execução mais simples e intuitivo. 
OTorna o código menos extenso. 
OFornece maior flexibilidade ao código.
INTERFACE FLUENTE 
OComo eu uso isso? 
OEsse modelo de desenvolvimento baseia-se no encadeamento dos métodos (Method Chaining). 
OEsse encadeamento é possível através da transferência de contexto da instrução. 
OFazemos essa transferência de contexto retornando uma referencia ao objeto que realizou a primeira instrução.
INTERFACE FLUENTE 
OComo eu uso isso? 
OPra isso eu crio uma interface onde nessa interface todos os métodos retornam seu próprio tipo.
INTERFACE FLUENTE 
OComo eu uso isso? 
OPara utilizar você fará chamadas como as mostrada na imagem abaixo. Obs: Desconsiderar números e strings mágicas.
PROGRAMAR PARA UM SER HUMANO ENTENDER 
OPor que fazer isso? 
OPrimeiro porque pode melhorar a legibilidade de seu código de uma forma simplesmente assustadora. 
ONão acredita veja os próximos exemplos;
PROGRAMAR PARA UM SER HUMANO ENTENDER 
OSem Interface Fluente.
PROGRAMAR PARA UM SER HUMANO ENTENDER 
OCom Interface Fluente.
PROGRAMAR PARA UM SER HUMANO ENTENDER 
OVantagens da Interface Fluente. 
OReveja os dois slides anteriores. O primeiro código é mais feio que parto de ouriço. 
OJá o segundo código... 
OCom interfaces Fluentes seu programa se torna mais legível. 
OO fluxo de chamadas de métodos parece mais natural.
PROGRAMAR PARA UM SER HUMANO ENTENDER 
OVantagens da Interface Fluente. 
OSua lógica de negócios agora esta mais visível no código para análise. 
OTDD agora passa a ser algo mais intuitivo. 
OSeu código se tornará mais flexível, aberto para evolução e fechado para mudança.
PROGRAMAR PARA UM SER HUMANO ENTENDER 
ODesvantagens da Interface Fluente. 
ORealizar debug pode ser uma tarefa complicada. O encadeamento de métodos em uma única instrução dispara uma serie de operações. Dificultando a inserção de breakpoints em uma chamada especifica.
PROGRAMAR PARA UM SER HUMANO ENTENDER 
ODesvantagens da Interface Fluente. 
OO tratamento de exceções também pode ser difícil caso o tipo não esteja bem estruturado. 
OAbusar do encadeamento pode deixar o código estranho e acabará por complicar a leitura ao invés de ajudar. Use com parcimônia.
PROGRAMAR PARA UM SER HUMANO ENTENDER 
ODesvantagens da Interface Fluente. 
OCriar as interfaces de forma consistente é difícil, não é um trabalho rápido. 
OOs métodos soltos nas classes as vezes não são tão intuitivos, pode ser difícil para entender a responsabilidade de cada método de forma isolada apenas pelo seu nome.
EXEMPLOS DE CÓDIGOS 
OCarro.
EXEMPLOS DE CÓDIGOS 
OCarro.
EXEMPLOS DE CÓDIGOS 
OCarro.
EXEMPLOS DE CÓDIGOS 
OCarro.
EXEMPLOS DE CÓDIGOS 
OConsulta SQL.
EXEMPLOS DE CÓDIGOS 
OConsulta SQL.
EXEMPLOS DE CÓDIGOS 
OOutros.
EXEMPLOS DE CÓDIGOS 
OOutros.
REFERENCIAS 
Ohttp://martinfowler.com/books/dsl.html 
Ohttp://martinfowler.com/bliki/FluentInterface.html 
Ohttps://www.ibm.com/developerworks/br/java/library/j-eaed14/ 
Ohttp://blog.lambda3.com.br/2009/04/o- que-sao-interfaces-fluentes/
REFERENCIAS 
Ohttp://www.devmedia.com.br/interfaces- fluentes-revista-net-magazine-95/24065 
Ohttp://tiagodev.wordpress.com/2010/12/20/sua-api-fala-interfaces-fluentes/ 
Ohttp://www.jetbrains.com/mps/ 
Ohttp://www.infoq.com/presentations/domain-specific-languages
REFERENCIAS 
Ohttp://gc.blog.br/2007/09/25/refatorando- para-fluent-interface/ 
Ohttp://codeflavor.wordpress.com/2010/09/ 23/interface-fluente/ 
Ohttp://archsofty.blogspot.com.br/2007/11/fluent-interface.html 
Ohttp://en.wikipedia.org/wiki/Domain- specific_language

Interface Fluente

  • 1.
    INTERFACE FLUENTE BRUNOBARRETO FREITAS FRANÇOES DA SILVA PEREIRA
  • 2.
    ÍNDICE OIntrodução. OInterfaceFluente. OO que é isso? OPra que serve? OComo eu uso isso? OProgramar Para um Ser Humano Entender. OPor que fazer isso? OVantagens da Interface Fluente. ODesvantagens da Interface Fluente.
  • 3.
    ÍNDICE OExemplos deCódigo. OCarro. OConsulta SQL. OOutros. OReferencias.
  • 4.
    INTRODUÇÃO OOs primeiroprogramas de computador eram instruções sequenciais difíceis de serem compreendidas e que executavam tarefas relativamente muito pequenas. OCom a evolução do hardware o software também teve que evoluir e crescer.
  • 5.
    INTRODUÇÃO OOs programasentão cresceram em numero de instruções, complexidade, e melhorou ligeiramente a facilidade de compreensão dos códigos escritos em uma linguagem mais próxima a natural. OMas não parou por ai, novos paradigmas de programação foram surgindo, e quando uma “nova solução” aparece ela não esta só, ela tem um irmão siamês; “o problema novo”.
  • 6.
    INTRODUÇÃO OE dosnovos problemas que foram surgindo, é claro, novas ideias foram aparecendo. Então começam a surgir tipos de problemas muito recorrentes. OPara problemas recorrentes temos soluções recorrentes. Os padrões de projeto. Aqui iremos abordar uma dessas soluções para problemas frequentes no desenvolvimento de software, a Interface Fluente.
  • 7.
    INTERFACE FLUENTE OOque é? OInterface Fluente é um padrão de desenvolvimento de software orientado a objetos, que faz parte da categoria de DSL’s internas. OUma DSL, em resumo, é uma linguagem de domínio especifico, criada para um proposito particular. Exemplos de DSL; HTML, expressões regulares, macros de planilhas eletrônicas, etc.
  • 8.
    INTERFACE FLUENTE OPraque serve? OMelhora a legibilidade dos códigos, tornando o fluxo de execução mais simples e intuitivo. OTorna o código menos extenso. OFornece maior flexibilidade ao código.
  • 9.
    INTERFACE FLUENTE OComoeu uso isso? OEsse modelo de desenvolvimento baseia-se no encadeamento dos métodos (Method Chaining). OEsse encadeamento é possível através da transferência de contexto da instrução. OFazemos essa transferência de contexto retornando uma referencia ao objeto que realizou a primeira instrução.
  • 10.
    INTERFACE FLUENTE OComoeu uso isso? OPra isso eu crio uma interface onde nessa interface todos os métodos retornam seu próprio tipo.
  • 11.
    INTERFACE FLUENTE OComoeu uso isso? OPara utilizar você fará chamadas como as mostrada na imagem abaixo. Obs: Desconsiderar números e strings mágicas.
  • 12.
    PROGRAMAR PARA UMSER HUMANO ENTENDER OPor que fazer isso? OPrimeiro porque pode melhorar a legibilidade de seu código de uma forma simplesmente assustadora. ONão acredita veja os próximos exemplos;
  • 13.
    PROGRAMAR PARA UMSER HUMANO ENTENDER OSem Interface Fluente.
  • 14.
    PROGRAMAR PARA UMSER HUMANO ENTENDER OCom Interface Fluente.
  • 15.
    PROGRAMAR PARA UMSER HUMANO ENTENDER OVantagens da Interface Fluente. OReveja os dois slides anteriores. O primeiro código é mais feio que parto de ouriço. OJá o segundo código... OCom interfaces Fluentes seu programa se torna mais legível. OO fluxo de chamadas de métodos parece mais natural.
  • 16.
    PROGRAMAR PARA UMSER HUMANO ENTENDER OVantagens da Interface Fluente. OSua lógica de negócios agora esta mais visível no código para análise. OTDD agora passa a ser algo mais intuitivo. OSeu código se tornará mais flexível, aberto para evolução e fechado para mudança.
  • 17.
    PROGRAMAR PARA UMSER HUMANO ENTENDER ODesvantagens da Interface Fluente. ORealizar debug pode ser uma tarefa complicada. O encadeamento de métodos em uma única instrução dispara uma serie de operações. Dificultando a inserção de breakpoints em uma chamada especifica.
  • 18.
    PROGRAMAR PARA UMSER HUMANO ENTENDER ODesvantagens da Interface Fluente. OO tratamento de exceções também pode ser difícil caso o tipo não esteja bem estruturado. OAbusar do encadeamento pode deixar o código estranho e acabará por complicar a leitura ao invés de ajudar. Use com parcimônia.
  • 19.
    PROGRAMAR PARA UMSER HUMANO ENTENDER ODesvantagens da Interface Fluente. OCriar as interfaces de forma consistente é difícil, não é um trabalho rápido. OOs métodos soltos nas classes as vezes não são tão intuitivos, pode ser difícil para entender a responsabilidade de cada método de forma isolada apenas pelo seu nome.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
    EXEMPLOS DE CÓDIGOS OConsulta SQL.
  • 25.
    EXEMPLOS DE CÓDIGOS OConsulta SQL.
  • 26.
  • 27.
  • 28.
    REFERENCIAS Ohttp://martinfowler.com/books/dsl.html Ohttp://martinfowler.com/bliki/FluentInterface.html Ohttps://www.ibm.com/developerworks/br/java/library/j-eaed14/ Ohttp://blog.lambda3.com.br/2009/04/o- que-sao-interfaces-fluentes/
  • 29.
    REFERENCIAS Ohttp://www.devmedia.com.br/interfaces- fluentes-revista-net-magazine-95/24065 Ohttp://tiagodev.wordpress.com/2010/12/20/sua-api-fala-interfaces-fluentes/ Ohttp://www.jetbrains.com/mps/ Ohttp://www.infoq.com/presentations/domain-specific-languages
  • 30.
    REFERENCIAS Ohttp://gc.blog.br/2007/09/25/refatorando- para-fluent-interface/ Ohttp://codeflavor.wordpress.com/2010/09/ 23/interface-fluente/ Ohttp://archsofty.blogspot.com.br/2007/11/fluent-interface.html Ohttp://en.wikipedia.org/wiki/Domain- specific_language