SlideShare a Scribd company logo
1 of 30
Download to read offline
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

More Related Content

What's hot

Boas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em códigoBoas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em códigoMariana de Azevedo Santos
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Aprendendo a programar - Programação Procedural vs OOP
Aprendendo a programar - Programação Procedural vs OOPAprendendo a programar - Programação Procedural vs OOP
Aprendendo a programar - Programação Procedural vs OOPLeonardo Bastos
 
Lógica de programação, algoritmos e big data
Lógica de programação, algoritmos e big dataLógica de programação, algoritmos e big data
Lógica de programação, algoritmos e big dataRodrigofn
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programaçãoEdu Queiroz
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#Gustavo Bellini Bigardi
 

What's hot (14)

Boas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em códigoBoas práticas e os princípios de qualidade em código
Boas práticas e os princípios de qualidade em código
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Aprendendo a programar - Programação Procedural vs OOP
Aprendendo a programar - Programação Procedural vs OOPAprendendo a programar - Programação Procedural vs OOP
Aprendendo a programar - Programação Procedural vs OOP
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Lógica de programação, algoritmos e big data
Lógica de programação, algoritmos e big dataLógica de programação, algoritmos e big data
Lógica de programação, algoritmos e big data
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Solid / DRY Princípios
Solid / DRY PrincípiosSolid / DRY Princípios
Solid / DRY Princípios
 
SOLID / DRY
SOLID / DRYSOLID / DRY
SOLID / DRY
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Clean Code
Clean CodeClean Code
Clean Code
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
 
Ruby
RubyRuby
Ruby
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#
 
O que é código bonito?
O que é código bonito?O que é código bonito?
O que é código bonito?
 

Similar to Interface Fluente

Linguagem de java
Linguagem de javaLinguagem de java
Linguagem de javaGenique
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para LinuxChris x-MS
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programaçãoPaulo Muniz
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Gabriel Rubens
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem javaRosicleia Frasson
 
Linguagen..
Linguagen..Linguagen..
Linguagen..essa
 
Padrões Web & Code Standard
Padrões Web & Code StandardPadrões Web & Code Standard
Padrões Web & Code StandardToni Albuquerque
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoFlávio Lisboa
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 

Similar to Interface Fluente (20)

O que é ser um bom programador?
O que é ser um bom programador?O que é ser um bom programador?
O que é ser um bom programador?
 
Linguagem de java
Linguagem de javaLinguagem de java
Linguagem de java
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para Linux
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programação
 
Qualidade de Código
Qualidade de CódigoQualidade de Código
Qualidade de Código
 
Slide 4 - PROGRAMAÇÃO.pptx
Slide 4 - PROGRAMAÇÃO.pptxSlide 4 - PROGRAMAÇÃO.pptx
Slide 4 - PROGRAMAÇÃO.pptx
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
Profissoa programador-praticas-para-melhoria-continua-fatec-santos-outubro-2013
 
Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
PDF.pdf
PDF.pdfPDF.pdf
PDF.pdf
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem java
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
Padrões Web & Code Standard
Padrões Web & Code StandardPadrões Web & Code Standard
Padrões Web & Code Standard
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 

Interface Fluente

  • 1. INTERFACE FLUENTE BRUNO BARRETO FREITAS FRANÇOES DA SILVA PEREIRA
  • 2. Í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.
  • 3. ÍNDICE OExemplos de Código. OCarro. OConsulta SQL. OOutros. OReferencias.
  • 4. 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.
  • 5. 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”.
  • 6. 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.
  • 7. 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.
  • 8. 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.
  • 9. 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.
  • 10. INTERFACE FLUENTE OComo eu uso isso? OPra isso eu crio uma interface onde nessa interface todos os métodos retornam seu próprio tipo.
  • 11. 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.
  • 12. 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;
  • 13. PROGRAMAR PARA UM SER HUMANO ENTENDER OSem Interface Fluente.
  • 14. PROGRAMAR PARA UM SER HUMANO ENTENDER OCom Interface Fluente.
  • 15. 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.
  • 16. 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.
  • 17. 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.
  • 18. 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.
  • 19. 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.
  • 24. EXEMPLOS DE CÓDIGOS OConsulta SQL.
  • 25. EXEMPLOS DE CÓDIGOS OConsulta SQL.
  • 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