Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parCôme Busson Modifié depuis plus de 11 années
2
Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder
3
Sintaks : guide de mise en œuvre / 294 3 Plan Introduction Beaucoup de façon de faire Standard Facultative Motifs Contraintes de séquencement Conclusion
4
Sintaks : guide de mise en œuvre / 294 4 Introduction - Problèmes de base Beaucoup de concept Certains sont uniques Beaucoup se chevauchent Certains sont simples D'autres complexes Comment les choisir Comment procéder pour construire un fichier STS Organisation du fichier STS qui marche en écriture STS qui marche en lecture
5
Sintaks : guide de mise en œuvre / 294 5 Introduction - Métamodèle de sintaks
6
Sintaks : guide de mise en œuvre / 294 6 Beaucoup de façon de faire : standard Une classe Un Template pour identifier la classe à manipuler
7
Sintaks : guide de mise en œuvre / 294 7 Beaucoup de façon de faire : standard Une famille de classes Un Template par classe fille, si X est abstraite pas de template X Et une Alternative et une polymorphicCond pour chaque template
8
Sintaks : guide de mise en œuvre / 294 8 Beaucoup de façon de faire : standard Un attribut unique Une PrimitiveValue pour extraire/affecter la valeur Ou une ConstantValue pour fixer/affecter la valeur
9
Sintaks : guide de mise en œuvre / 294 9 Beaucoup de façon de faire : standard Un attribut multiple Une Iteration pour le container Et une PrimitiveValue (extraire) ou une ConstantValue (fixer)
10
Sintaks : guide de mise en œuvre / 294 10 Beaucoup de façon de faire : standard Une agrégation unique Un template pour manipuler la classe cible Et un RuleRef pour affecter la relation
11
Sintaks : guide de mise en œuvre / 294 11 Beaucoup de façon de faire : standard Un agrégation multiple Une Iteration pour le container Et un template pour la classe cible ou un RuleRef vers le template
12
Sintaks : guide de mise en œuvre / 294 12 Beaucoup de façon de faire : standard Une référence unique Un ObjectReference pour cibler la référence et faire laffectation
13
Sintaks : guide de mise en œuvre / 294 13 Beaucoup de façon de faire : standard Une référence multiple Une Iteration pour le container Et un ObjectReference pour cibler la référence
14
Sintaks : guide de mise en œuvre / 294 14 Beaucoup de façon de faire : facultatif Les concepts Alternative + CustomCondition Permettent de modéliser des variations dans la syntaxe textuelle Selon la valeur dun attribut Selon la valeur de plusieurs attributs (si on introduit des attributs dérivés…) Dans lexemple TinyJava la manipulation de 'static' était basée sur ce principe
15
Sintaks : guide de mise en œuvre / 294 15 Beaucoup de façon de faire : facultatif Le concept Once (ou tout autre nom à lissue de cette journée) Permet la modélisation dun texte composé dun grand nombre de propriétés qui ne sont pas dans un container qui peuvent apparaître dans un ordre quelconque Dans lexemple TinyJava la manipulation de abstract/final était basée sur ce principe
16
Sintaks : guide de mise en œuvre / 294 16 Beaucoup de façon de faire : facultatif Le concept RuleRef Permet dinvoquer une règle Permet de manipuler une propriété Combiner un RuleRef avec dautres concepts RuleRef (RR) possède une propriété à manipuler Lautre concept (C) possède aussi une propriété à manipuler Deux formes de combinaisons possibles RR(p) x C() RR() x C(p)
17
Sintaks : guide de mise en œuvre / 294 17 Beaucoup de façon de faire : facultatif Pour un attribut Pour un texte : package hassen ; Il y trois façons différentes de le manipuler PV(p)RR() -> PV(p)RR(p) -> PV()
18
Sintaks : guide de mise en œuvre / 294 18 Beaucoup de façon de faire : motifs Selon le voisinage de la propriété avec sa classe et les propriétés des autres classes 1.Une propriété totalement indépendante 2.Une propriété dans une classe mère 3.Des propriétés dans une fratrie 4.Des propriétés distribuées dans des classes Selon le degré de partage la syntaxe textuelle 1.Syntaxe textuelle partagée 2.Syntaxe textuelle non partagée
19
Sintaks : guide de mise en œuvre / 294 19 Beaucoup de façon de faire : motifs Trois cas "génériques" clairement identifiés : X : propriété indépendante Y : propriété dans la classe mère, syntaxe textuelle partagée Z* : propriété dans une classe, syntaxe textuelle partagée différentes variantes
20
Sintaks : guide de mise en œuvre / 294 20 Beaucoup de façon de faire : motifs
21
Sintaks : guide de mise en œuvre / 294 21 Beaucoup de façon de faire : motifs
22
Sintaks : guide de mise en œuvre / 294 22 Beaucoup de façon de faire : motifs
23
Sintaks : guide de mise en œuvre / 294 23 Beaucoup de façon de faire : motifs
24
Sintaks : guide de mise en œuvre / 294 24 Beaucoup de façon de faire : motifs Les motifs illustrés pour Attribut unique Sont extensibles pour Attribut multiple Agrégation unique Agrégation multiple Référence unique Référence multiple
25
Sintaks : guide de mise en œuvre / 294 25 Contraintes de séquencement Le concept primordial est le template. Tout est construit autour de lui. C'est lors du traitement du template que l'on profite de ses liens d'agrégation pour visiter l'ensemble des propriétés qu'il possède. Un attribut ou une agrégation (unique ou multiple) ne peuvent être traités qu'après loccurrence du template définissant la classe les possédants. Lorsquune classe doit sérialiser plusieurs propriétés, il ny a pas dordre imposé par sintaks entre les différentes propriétés. Un container est toujours complètement sérialisé lors d'une opération, il nest pas possible de sérialiser indépendamment des fractions de container. Une référence ne peut pas servir à manipuler un objet. En principe c'est le possesseur de l'objet référencé qui s'occupe de lui
26
Sintaks : guide de mise en œuvre / 294 26 Effet de ces contraintes Très facile de manipuler un texte sous une forme préfixée : class abstract final private AbstractValue { } class -> Template puis utilise les propriétés de la classe Plus difficile de manipuler un texte sous une forme infixée voire postfixée abstract final private class AbstractValue { } class arrive trop tard car il faut déjà remplir les propriétés de la classe… Solution : faire commencer le template class plus tôt dès la définition de la première propriété la concernant : abstract Problème induit abstract final private class AbstractValue { } abstract final private interface IValue { } Les deux templates class et interface sont en concurrence et cest le KW qui va les départager… au prix dune lecture longue puis dun backtracking.
27
Sintaks : guide de mise en œuvre / 294 27 Effets de ces contraintes Exemple dans TinyJava private String val; public String getValue(); TJData et TJMethod ont la même description début générique pour TJMethod les () avec les paramètres fin générique Alternative "data or method" les met en concurrence Factorisation les séquences de début et de fin Remarque 4 propriétés ont été factorisées dans …begin
28
Sintaks : guide de mise en œuvre / 294 28 Effet de ces contraintes Une référence ne peut pas servir à manipuler l'objet Dommage car si l'objet est très synthétique (que la clé) On aurait pu imaginer un langage plus simple
29
Sintaks : guide de mise en œuvre / 294 29 Conclusion Sintaks est très riche Sintaks peut être très déroutant Sintaks peut servir à une étude de GL Les règles Sintaks peuvent faire lobjet dun refactoring … Il doit y avoir bien dautres motifs PS : le Once nest pas traité dans toutes les propositions car il est trop récent
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.