O documento discute linguagens específicas de domínio (DSL), definindo-as como linguagens criadas para resolver problemas específicos focados em um domínio particular. Explica os tipos de DSL (interna e externa), apresenta exemplos de cada uma e discute vantagens e desvantagens de seu uso.
É uma maneira particular de escrever sobre uma linguagem. São chamadas de DSL embutidas ou interfaces fluentes.
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.
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.
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.
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)