SlideShare uma empresa Scribd logo
1 de 24
Linguagens Específicas de Domínio Alexandre Nunes Fabio Felgueiras Saldanha Hallison Marques Luiz Eduardo Araujo Marcelo Lecar Vinicius Gonçalves
Introdução ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Domínio ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
O que é?  ,[object Object],[object Object]
O que é? ,[object Object],[object Object]
Aplicação de um padrão de DSL ,[object Object],[object Object],[object Object]
Aplicação de um padrão de DSL
Meios de Integração ,[object Object],[object Object],[object Object]
Tipos de DSL ,[object Object],[object Object],[object Object],[object Object]
DSL Externa ,[object Object],[object Object],[object Object],[object Object],[object Object]
DSL Interna ,[object Object],[object Object],[object Object],[object Object],[object Object]
Exemplos – DSL Externa ,[object Object],[object Object],[object Object]
Exemplos – DSL Interna
Exemplo – Operação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemplo - Video ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemplo - Locação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemplo - DataUtil ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Vantagens ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Vantagens ,[object Object],[object Object],[object Object],[object Object]
Vantagens ,[object Object],[object Object],[object Object],[object Object]
Vantagens ,[object Object],[object Object],[object Object]
Desvantagens ,[object Object],[object Object],[object Object],[object Object],[object Object]
Conclusão ,[object Object],[object Object],[object Object],[object Object],[object Object]
Referências ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Mais conteúdo relacionado

Semelhante a Linguagens Especificas de Dominio

Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
ejdn1
 
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
essa
 
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
essa
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
André Borgonovo
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
essa
 

Semelhante a Linguagens Especificas de Dominio (20)

DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012
 
Php Conf08 Refactoring
Php Conf08 RefactoringPhp Conf08 Refactoring
Php Conf08 Refactoring
 
Bdd&tdd
Bdd&tddBdd&tdd
Bdd&tdd
 
Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...
 
PHP para iniciantes - Boas Práticas
PHP para iniciantes - Boas PráticasPHP para iniciantes - Boas Práticas
PHP para iniciantes - Boas Práticas
 
Cucumber: um breve review
Cucumber: um breve reviewCucumber: um breve review
Cucumber: um breve review
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Enterprise Architect - Sparx Systems
Enterprise Architect - Sparx Systems Enterprise Architect - Sparx Systems
Enterprise Architect - Sparx Systems
 
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...
 
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
 
Entendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é RubyEntendendo um pouco melhor o que é Ruby
Entendendo um pouco melhor o que é Ruby
 
DDD
DDDDDD
DDD
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Word camp sp 2017 willian marques
Word camp sp 2017   willian marquesWord camp sp 2017   willian marques
Word camp sp 2017 willian marques
 
Algoritomos aula 3 rafael
Algoritomos aula 3 rafaelAlgoritomos aula 3 rafael
Algoritomos aula 3 rafael
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
#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
 

Linguagens Especificas de Dominio

Notas do Editor

  1. É uma maneira particular de escrever sobre uma linguagem. São chamadas de DSL embutidas ou interfaces fluentes.
  2. AQUI temos toda a magia da DSL. Inicialmente criamos um cliente com sua matricula e seu nome definidos; Logo em seguida definimos uma locação e definimos “para” quem é a locação; Logo após, definimos qual vídeo será locado. Para efeito ilustrativo, adicionamos a definição dos atributos neste slide. Atentem para o nome das operações que definem os atributos. E por fim, implementamos a locação. Adicionando o título (nome do objeto), quando será devolvido e se já foi pago ou não. Chamo a atenção mais uma vez para o nome das operações. Elas são claras e qualquer pessoa com o conhecimento do domínio conseguiria identificar o que este trecho de código está fazendo.
  3. Aqui vemos a implementação da classe Video. Não temos nenhum mistério, apenas a definição de alguns atributos a partir de algumas operações.
  4. Aqui vemos a implementação da classe Locação. Não temos nenhum mistério, apenas a definição de alguns atributos a partir de algumas operações. No entanto, já temos algumas definições mais elaboradas, mas nada de diferente.
  5. Na classe DataUtil não temos nenhum mistério. Temos alguns atributos estáticos definidos, notem que o nome de cada atributo é bem claro quanto ao seu significado. Percebam também que temos implementado o operador daquiA que retorna a data atual acrescida de dataMs que é um valor inteiro (atentem ao fato dos atributos também serem inteiros, isso fará todo sentido mais a frente)