La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder.

Présentations similaires


Présentation au sujet: "Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder."— Transcription de la présentation:

1

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


Télécharger ppt "Sintaks : Tentative de guide de mise en œuvre Michel Hassenforder."

Présentations similaires


Annonces Google