Documente Academic
Documente Profesional
Documente Cultură
Nosso Demo
Jogo: Quiz Language
Perguntas e Respostas
Permitir que um desenvolvedor use a DSL criada para construir jogos de perguntas e respostas
Papis
Projetista
Define conceitos e representao grfica da DSL
Desenvolvedor
Utiliza a DSL para criar aplicaes
Usurio
Utiliza as aplicaes
Importante
As regras que compem o domnio precisam ser claramente descritas. Regras para o nosso DEMO:
Um jogo (quiz game) composto por uma sequncia de quizzes Uma quiz contm uma pergunta e um conjunto de respostas (choices) Cada quiz vale uma quantidade de pontos (score)
Se tiver mais de uma alternativa correta, o ponto s ser considerado se todas as respostas corretas forem assinaladas
Placar final equivale a soma dos pontos das quizzes acertadas possvel associar dicas (hints) s quizzes
Nosso alvo
Toolbox com conceitos do domnio Propriedades especficas ao elemento do domnio Conceitos com representao visual distinta selecionado Error List (Validao em alto nvel) Elementos visualizados de maneira hierrquica
Minimal Language - contm os elementos bsicos de uma DSL, que voc pode estender para criar a sua prpria
Abra este
Utilizado para registrar a DSL no VS.NET. A princpio, voc no deve se preocupar com este ltimo.
A idia do DSL Tools prover, aos usurios mais experientes, elementos bsicos prontos para uso e modificao, permitindo que uma DSL possa ser minimamente construda (isso justifica o nome Minimal Language do template)
Instncias podero ter nome. Ex: Conceito Cidade Instncias como: Recife, Olinda, etc
Criando tipos
Adicionando uma enumerao
Definindo Relacionamentos
Relacionamento Forte Ex: Quiz e Choice S existe Choice se existir Quiz
Papis
Quiz tem papel Quiz em Choice Choice tem papel Choices em Quiz
Nem todo papel recebe o nome do conceito. EX: Professor e Universidade. Um professor pode ser Reitor, Vice-Reitor, Coordenador, Professor, etc.
No nosso Demo
Adicionando Diagrama
Antes de adicionar formas, criar um diagrama (um conjunto de mapeamentos entre conceitos/relacionamentos e formas grficas.)
QuizLanguageDiagram
Uma vez definido um Diagram para a DSL e o conceito da linguagem por ele representado, hora de modelar as formas grficas (shapes).
Informaes sobre o conceito associado forma: Obs. preciso habilitar a associao (Diagram Element Map da Toolbox)
Associar Hint a HintShape
Exibir/Ocultar linhas de mapeamento
Quiz
Forma grfica pr-definida Compartment Shape Name: QuizShape Geometry: RoundedRectangle Fill Color: Qualquer uma, ex: Sky Blue Associar Quiz QuizShape Adicionar um Compartment chamado Choices
Title Fill: Lime Fill Color: Yellow Title: Choices Associar o conceito Choice a Choices (DSL Details)
Papel choice do relacionamento QuizHasChoices
Mapeamento Quiz-QuizShape
Mapear este conector ao relacionamento HintReferencesQuizzes Fazer a mesma coisa para o connector NextQuizConnector
Customizar Toolbox
Quiz
Toolbox Icon: QuizIcon Class: Quiz
Relacionamento entre duas quizzes: idem (name QuizLink) SALVAR o DslDefinition.dsl sem erros
Testando a DSL
Validadores Semnticos
A definio de uma DSL
Conceitos Relacionamentos Especificao de seu comportamento grfico Regras de negcio, dependendo do domnio modelado. EX:
qualquer texto da pergunta de uma quiz precisa terminar ou com o caractere de interrogao (?) ou com o caractere de dois pontos (:).
Adicionando Validadores
Adicionar ao projeto Dsl, uma classe parcial
Lgica da Validao
Mtodo que contm a lgica de validao. 3 Restries:
Retornar void; Possuir como parmetro um objeto do tipo ValidationContext; Possuir um atributo de mtodo do tipo ValidationMethod.
parmetro do tipo ValidationCategories (Custom, Load, Menu, Open e Save)
Habilitar Validaes
Testando Tudo