Modèle des Icobjs

Modèle des Icobjs

Le modèle des Icobjs est le résultat de l’application du modèle réactif au monde graphique. Icobj signifie Iconic Objects. Un icobj est un objet graphique dont le comportement est défini par l’intermédiaire d’un langage réactif. Le modèle des Icobjs possède un mécanisme puissant de construction de comportements réactifs de fa¸con simple et intuitive. Ce mécanisme est basé sur l’utilisation des comportements des icobjs existants pour les combiner graphiquement. Le résultat de la construction est l’ajout d’un nouvel icobj dont le comportement est le résultat de la combinaison. L’objectif principal de ce modèle est de permettre `a des non-spécialistes d’écrire des programmes de fa¸con graphique, sans connaˆıtre une syntaxe particulière et en masquant au maximum la notion d’instant. Cette construction permet également de disposer de toute la puissance des langages réactifs, c’est-`a-dire du parallélisme et de la communication par diffusion d’événements, tout en masquant la complexité de leur syntaxe. Un des principaux problèmes des premières implémentations d’Icobjs est qu’il n’y a aucun moyen de visualiser le comportement de chacun des icobjs. Nous proposons dans notre modèle un moyen de visualiser et de modifier ce comportement par l’intermédiaire d’une interface : l’inspecteur des Icobjs. Dans ce chapitre, nous commencerons par présenter, dans la section 5.1, le modèle d’objet réactif avant de donner une définition de ce qu’est un icobj. Dans la section 5.2, nous décrirons le système de construction graphique des Icobjs et les modifications que nous y avons apportées. Enfin, dans la section 5.3 nous illustrerons par l’intermédiaire de l’application Framework, les fonctionnalités ajoutées au modèle pour visualiser et modifier le comportement des icobjs, et pour intervenir directement sur les paramètres d’exécution. 

Modèle d’objets réactifs

Le modèle des Icobjs est une extension du modèle classique d’objet réactif représenté sur la figure 5.1. Ce modèle est composé d’une part de la structure de l’objet contenant toutes les informations relatives `a celui-ci et d’autre part d’un programme réactif décrivant le comportement de l’objet. Les actions atomiques constituant le programme manipulent (accèdent et/ou modifient) la structure de données. Pour implémenter cette approche, Junior dispose de l’instruction Link qui permet d’associer l’exécution d’un programme `a un objet accessible par les actions atomiques `a travers l’environnement. Un icobj dispose `a la fois d’un aspect graphique et d’un comportement réactif. Le résultat  Atome 1 … … Structure de données Comportement Manipulateur Atome p Atome n Fig. 5.1 – Objet réactif classique de la composition de ces deux aspects est la possibilité de créer facilement des animations. Dans le modèle des Icobjs, les entités du système sont construites sur le mˆeme principe que les objets du modèle représenté sur la figure 5.1. Chaque icobj dispose d’un comportement réactif et d’une structure de données. Les Icobjs étendent le modèle d’objet réactif au niveau graphique, c’est-`a-dire que le comportement des icobjs doit réagir aux événements graphiques et produire des modifications graphiques et que la structure de données contient des données liées `a l’environnement graphique. L’apparence des icobjs est une composante de leur structure de données. Cette apparence est rendue entre deux exécutions de leur comportement réactif. Par exemple, Squeak [42] se base également sur un modèle d’objet graphique. Les objets graphiques appelés morphs dispose initialement d’une structure de données de grande taille. Au contraire, nous souhaitons définir, pour le modèle des Icobjs [22], une structure minimale aisément extensible. Un icobj devra dans son comportement introduire explicitement des actions atomiques permettant l’ajout de nouvelles données pour étendre sa structure de données. La structure minimale doit contenir les informations suivantes : • des identifiants. Un icobj doit pouvoir ˆetre identifié de fa¸con unique dans l’environnement dans lequel il est exécuté. Réciproquement, il doit aussi pouvoir accéder `a l’environnement d’exécution. • des informations graphiques. Les informations minimales nécessaires `a l’utilisation d’entités graphiques sont l’apparence, la position et les dimensions. Dans la suite du document, nous parlerons de zone d’influence lorsque nous ferons référence `a l’encombrement positionné de l’icobj, c’est-`a-dire `a l’espace (aire ou volume) occupé par l’icobj situé `a une position particulière de son environnement graphique. • d’un comportement réactif. Le modèle des Icobjs possède son propre système de construction graphique qui est basé sur la réutilisation du comportement des icobjs déj`a existants. C’est pourquoi nous allons différencier deux parties dans le comportement d’un icobj : le comportement clonable qui est utilisé dans le cadre du système de construction et le comportement non-clonable qui décrit les comportements spécifiques de l’icobj. 

 Construction par Icobjs

Le mécanisme de construction des Icobjs permet de combiner graphiquement des comportements élémentaires en leur ajoutant une structure de contrôle. Pour réaliser ces constructions, nous disposons de plusieurs icobjs particuliers appelés constructeurs graphiques qui permettent de réaliser certaines constructions du langage réactif. Nous allons détailler dans cette partie la manière d’utiliser chacun des ces constructeurs. Tout d’abord, nous allons faire une distinction dans le mécanisme de construction graphique. En plus des constructeurs graphiques que nous décrirons par la suite, le mécanisme de construction graphique utilise également d’autres icobjs qui sont décrits comme des briques élémentaires. Ces icobjs ont la particularité de n’exécuter que la partie non-clonable de leur comportement, alors que tous les autres icobjs vont exécuter la composition parallèle des comportements clonable et non-clonable. Chaque icobj doit aussi exécuter, en plus des comportements clonable et non-clonable, un comportement de contrôle. Ce comportement de contrôle ajouté par le workspace `a chaque icobj réagit aux événements souris et clavier transmis par le workspace. Il consiste `a : • sélectionner un icobj en cliquant avec le bouton gauche de la souris dans la zone d’influence de l’icobj, • déplacer l’icobj sélectionné en maintenant le bouton gauche de la souris enfoncé et en la dépla¸cant, • changer la taille de l’icobj sélectionné en maintenant le bouton droit de la souris enfoncé et en la dépla¸cant, • activer un icobj en double-cliquant sur l’icobj. 

Comportements élémentaires

Les comportements élémentaires constituent les briques de base pour construire des comportements plus complexes. Les constructeurs présentés par la suite permettent de combiner ces comportements en les ordonnant et en leur ajoutant des instructions de contrôle du langage réactif. Les comportements élémentaires contiennent l’ensemble des manipulations `a apporter `a l’icobj construit par l’intermédiaire d’actions atomiques. La création de ces comportements élémentaires ne peut se faire qu’en Java en créant ses propres actions atomiques. La structure de données de l’icobj et de son comportement, c’est-`a-dire les actions atomiques, les wrap-pers, les diverses classes d’objet nécessaires et l’apparence sont construits `a l’aide de l’API des Icobjs. Les principales classes de cette API seront détaillées en 6.1. Sur la figure 5.3, les icobjs représentés par des apparences de triangles orientés vers la droite ou vers le bas sont des exemples d’icobjs disposant de comportements élémentaires. Ils sont identifiés comme étant des constructeurs, c’est-`a-dire que leur comportement nonclonable est exécuté, alors que leur comportement clonable sert uniquement de comportement élémentaire dans les constructions. Pour ces constructeurs, il est important que l’apparence reflète au mieux le comportement. Par exemple, l’icobj dont l’apparence est un triangle qui pointe vers le bas dispose : • du comportement clonable suivant : Ic.Repeat(20, Ic.Seq(Ic.Atom(♥❡✇ Move(0, 5)), Ic.Stop())) • ainsi que du comportement non-clonable suivant : Ic.Seq(Ic.Atom(♥❡✇ NeedAWTImage(« images/down.gif »)), Ic.Seq(Ic.Await(♥❡✇ IcobjIdentifier()), Ic.Repeat(20, Ic.Seq(Ic.Atom(♥❡✇ Move(0, 5)), Ic.Stop())))) Nous pouvons constater qu’`a l’inverse de son comportement clonable, son comportement non-clonable spécifie son apparence et attend une activation représentée par l’attente d’un événement composé de son identifiant. Ces comportements supplémentaires sont spécifiques `a l’icobj et ne seront pas réutilisés dans une construction. 5.2.2 Séquence et composition parallèle Le constructeur ”de base”, représenté sur la figure 5.2, permet de construire des séquences ou des compositions parallèles de comportements. Ce constructeur a trois apparences possibles qui traduisent l’état dans lequel il se trouve : soit il est dans son état initial 5.2(a), c’est- `a-dire qu’aucune construction n’est en cours ; soit il est chargé 5.2(b), c’est-`a-dire qu’une construction a commencé. La troisième apparence sera détaillée dans la partie 5.2.7 décrivant la construction de comportements cycliques. (a) Initial (b) Chargé Fig. 5.2 – Icobj de construction basique La sémantique de ce constructeur est la suivante : • si des icobjs partagent la zone d’influence du constructeur lors de son activation, alors il copie les comportements de chacun des icobjs dont il partage la zone, les met tous en parallèle et stocke cette composition parallèle en séquence avec les constructions précédemment effectuées (s’il n’y a qu’un seul icobj, la composition parallèle est inutile)

CONSTRUCTION PAR ICOBJS

• si aucun icobj ne partage la zone d’influence du constructeur lors de son activation, alors la construction est terminée et le constructeur ajoute un nouvel icobj dans le workspace. Le comportement de ce nouvel icobj est le comportement construit et stocké par le constructeur. Ce dernier se réinitialise en mettant Nothing comme étant le comportement stocké. Le constructeur est alors prˆet pour démarrer une nouvelle construction. Fig. 5.3 – Construction d’une séquence La figure 5.3 présente la construction d’un icobj dont le comportement est d’effectuer d’abord un déplacement vers la droite, puis vers le bas. La création de ce comportement consiste `a activer d’abord le constructeur sur l’icobj dont le comportement est d’aller vers la droite, puis sur l’icobj dont le comportement est d’aller vers le bas, et enfin dans une zone sans icobj. Cette suite d’activation ajoute un nouvel icobj dans le workspace. L’icobj dont l’apparence est un carré exécute alors immédiatement son comportement.

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *