Brevet FR2827406A1 — publié le 20030117

PHFRO 10097 1 2827406 DESCRIPTION Domaine de l1nvention L'invention concerne un procédé pour parcourir un arbre qui contient des objets instances d'une ou plusieurs classes spécifiques en vue dinvoquer une méthode spécifique d'une desdites classes spécifiques sur les objets dudit arbre qui sont des instances de ladite classe spécifique. L'invention concerne aussi une structure de données écrite dans un langage de programmation objet qui comporte une ou plusieurs classes spécifiques destinées à être instanciées pour générer un arbre d'objets, au moins une desdites classes spécifiques comportant au moins une méthode spécifique. L'invention concerne aussi un document écrit dans un langage de programmation objet; qui comporte des objets instances de classes spécifiques définies dans une telle structure de données. L'invention concerne aussi un programme écrit dans un langage de programmation objet, comportant des instructions pour la manipulation d'un tel document lorsqu'il est exécuté IS par un processeur. L'invention concerne aussi un équipement éle*ronique comportant une mémoire qui contient un tel programme, un tel document ou une telle structure de données. Elle concerne aussi un signal qui transporte un tel programme, un tel document ou une telle structure de données. L'invention a de nombreuses applications en particulier pour le traitement de modèles de documents. Arrière plan techroloaique de l'invention Un tel arbre d'objets est par exemple décrite dans la spécification " Document Object Model (DOM), level 1 specification, version 1.0, October 1 1998 " définie par le consortium W3C pour modéliser des documents du genre HTML ou XML. Lorsqu'on manipule un tel arbre d'objets, il est souvent nécessaire de parcourir l'arbre pour exécuter une méthode spécifique sur certains objets. Un but de l'invention est de proposer une solution particulièrement efficace pour parcourir un arDre d'objets instances d'une ou plusieurs classes spécifiques en vue d'invoquer une méthode spécifique d'une desdites classes spécifiques sur les objets dudit arbre qui sont des instances de cette classe spécifique. Résumé de l'invention Ce but est atteint avec un procédé pour parcourir un arbre d'objets, une structure de 3s données, un document et un programme selon la présente invention. Llnvention consiste notamment à dissocier le parcours de l'arbre de l'exécution des méthodes spécifiques. En effet, conformément à l'invention, la méthode générique d'invocation d'une méthode spécifique a pour fonction de parcourir l'arbre et dinvoquer ladite méthode spécifique lorsqu'elle rencontre un objet sur lequel cette méthode doit être invoquée. Les méthodes spécifiques effectuent un traitement spécifique sur un objet courant. Elles ne gèrent pas la navipation dans l'arbre d'objets. L'invention permet ainsi de simplifier l'écriture des structures de données dans lesquelles il faut gérer le parcours d'un arbre d'objets pour l'exécution de _rtaines méthodes sur certains objets de l'arbre. Brève description des figures D'autres détails et avantages de l'invention appara'^tront dans la description qui va suivre en regard des dessins annexés donnés à titre d'exemples non limitatifs et dans lesquels: - la figure 1 est une représentation schématique d'une structure de données selon l'invention, - la figure 2 donne un exemple d'un arbre qui est généré par instanciation de la structure de données représentée à la figure 1, - la figure 3 est un diagramme en blocs d'un exemple de procédé selon 1'invention, -la figure 4 est un exemple d'équipement selon l'invention susceptible de recevoir des signaux, notamment des signaux de transport d'un programme ou d'un document selon l'invention, et doté d'une mémoire de stockage d'un tel programme, d'un tel document et d'une telle structure de données. Description d'un mode de réalisation préférentiel de 11nvention D'une fason générale, une structure de données selon 1'invention comporte une classe générique GC et une pluralité de classes spécifiques SCj i=i,, N>. Chaque classe est susceptible de comporter une ou plusieurs variables d'instance notamment des variables d'instance de type objet. Une variable d'instance de type objet est constituée par un objet ou un tableau d'objets instance(s) d'une classe spécifique. Une structure de données selon l'invention est définie de telle sorte que son instanciation génère un arUre TR d'objets obj. Conformément à l'invention, une ou plusieurs classes spécifiques SC' comportent une méthode spécifique sMj. Les méthodes spécifiques sM' sont dotées d'un nombre quelconque d'arguments P'j (o j est un entier naturel quelconque). La classe générique GC comporte une méthode générique gM d'invocation d'une méthode spécifique sM'd'une classe spécifique SCj sur les objets ob'de l'arbre TR qui sont des instances de ladite classe spécifique SCj. Les classes spécifiques SCj héritent de cette classe générique GC de telle sorte qu'elles contiennent implicitement la méthode générique gM. Pour exécuter la méthode générique gM les arguments suivants doivent être spécifiés: - la méthode spécifique sMj à invoquer, - la classe spécifique SCj dont les objets ob'sur lesquels la méthode spécifique sMj doit être invoquée sont des instances, - les arguments P',j de la méthodes sMi, lorsqu elle en a. Sur la fig ure 1 on a représenté de façon schématique un exem ple d'u ne tel le structure de données. D'après la figure 1, la structure de données DS comporte une classe générique GC s et cinq classes spécifiques référencées SC, SC2, SC3, SC4 et SC5 respectivement. La classe spécifique SC comporte deux variables dinstance qui sont des objets instances des classes spécifiques SC2 et SC4 respectivement. Ces objets sont nommés ob2 et ob4 respectivement. La classe spécifique SC2 comporte une variable dinstance qui est un objet instance de la classe spécifique SC3 et qui est nommé ob3. La classe spécifique SC4 enfin comporte deux variables d'instances qui sont des objets instances des classes spécifiques SC2 et SCs respectivement et qui sont nommés ob2 et ob5 respectivement. Sur la figure 2 on a représenté un exemple d'arbre TR qui constitue une instance de la structure de données DS définie en regard de la figure 1. Cet arbre TR comporte un objet ob qui pointe vers une premier objet ob2 et vers un objet ob4. Le premier objet ob2 est une première instance de la classe SC2. L'objet ob4 est une instance de la classe SC4. Le premier objet ob2 pointe vers un premier objet ob3 qui est une première instance de la classe SC3. L'objet ob4 pointe vers un second objet ob2 qui est une seconde instance de la classe SC2, et vers un objet ob5 qui est une instance de la classe SC5. Le second objet ob2 pointe vers un second objet ob3 qui est une seconde instance de la classe SC3. D'après la figure 1, la classe générique GC comporte une méthode générique appelée gM(SCj, sMj, P',j) qui est une méthode générique dinvocation d'une méthode spécifique sM'sur les objets de l'arbre TR qui sont des instances d'une classe spécifique SCj. Lorsque la méthode générique gM est exécutée pour invoquer une méthode spécifique sM' qui a un ou plusieurs arguments Pj,j, ce ou ces arguments P',j sont spécifiés comme arguments de la méthode générique gM. Les classes spécifiques SM' j=t,,5' héritent de la classe générique GC: sur la figure 1, cette relation d'héritage est symbolisée par les flèches Hj j=i,,53. Les classes spécifiques SC, SC2 et SC3 comportent chacune une méthode spécifique notée sM, sM2 et sM3 respectivement. La méthode spécifique sM2 a deux arguments notés P2, et P2,2 respectivement. Les autres méthodes spécifiques sM et sM3 n'ont pas d'arguments. Sur la figure 3 on a représenté un organigramme d'une méthode générique gM(SC', sMj, P',j) de parcours d'un arbre pour invoquer la méthode spécifique sMj sur les objets dudit arbre qui sont des instances de la classe spécifique SCj. Cette méthode générique consiste à parcourir l'arbre à partir de sa racine, et à effectuer les étapes suivantes pour un objet courant de l'arUre noté obj: - étape 51: test pour déterminer si l'objet courant obj est une instance de la classe spécifique SC' (a Class(obj)=SCj ? ") - étape S2: si l'objet courant est une instance de la classe SCj (flèche Y), invocation de la méthode spécifique sMj(Pj,j) étape 53: parcours des variables d'instance (field) de l'objet courant obj. et pour chaque variable d'instance: - si la variable dinstance est un objet instance d'une classe qui hérite de la classe générique GC (" Class(field)extends from GC "), exécution récursive de la méthode générique gM(SCj, sM', P'j) pour cet objet (étape S3-1) - si la variable dinstance est un tableau d'objets instances d'une classe qui hérite de la classe générique GC (" Class(field[k]) extends from GC "), exécution récursive de la méthode générique gM(SCj, sM', Pj j) pour chaque objet (étape 53-2). L'invention s'applique notamment pour le traitement de modèles de documents, par exemple pour le traitement d'un modèle XML-schema qui décrit le format d'un document XML (XML-schema et XML sont respectivement un projet de recommandation et une recommandation du consortium W3C, disponibles par exemple sur le site Internet http://ww.w3.org). Un tel schéma constitue un arbre d'objets appelés éléments qui sont des instances d'une classe " Element ". Un élément peut comporter un ou plusieurs autres éléments. Pour chaque élément, le schéma définit notamment un nom et un type. En général pour simplifier l'écriture du schéma, on utilise des types nommés. Un type nommé est défini une fois pour toute dans le schéma, et il est ensuite appelé par son nom. Lorsqu'on veut utiliser un tel schéma, il est alors nécessaire de résoudre les types des éléments qu'il contient, c'est-à-dire de rechercher la définition du type nommé de chaque élément rencontré. Pour cela, la classe Element comporte une méthode de résolution de type " resolveElementType ". De fason avantageuse cette méthode est une méthode spécifique au sens de la présente invention. La classe Element est alors une classe spécifique au sens de linvention, qui hérite d'une classe générique. Cette classe générique comporte une méthode générique d'invocation d'une méthode spécifique. Cette méthode générique est exécutée sur chaque élément du schéma pour invoquer la méthode de résolution de type " resolveElementType ". La structure de données dans laquelle sont définies la classe spécifique "Element " et la classe générique dont elle hérite est donc une structure de données selon linvention. De même, le schéma est un document selon l 'invention, et tout progra m me qui manipule ce schéma est u n programme selon linvention. En appliquant l'invention, on évite d'avoir à gérer le parcours de l'arUre dans le corps de la méthode de résolution de type. La méthode générique ainsi définie est avantageusement utilisée pour invoquer d'autres méthodes spécifiques qui seraient définies dans la classe Element, par exemple une méthode spécifique ledit schéma. Sur la figure 4, on a représenté un schéma d'un équipement électronique EQU doté: - d'un ensemble à microprocesseur MP qui comporte notamment une mémoire de données DM, une mémoire de programme PM et un processeur PC permettant d'exécuter les programmes stockés dans la mémoire de programmes PM s - un dispositif de transmission T)(/RX permettant de recevoir des signaux, notamment des signaux qui transportent des programmes. Lorsque l'équipement EQU resoit un signal SGL qui transporte un programme SOFT selon l'invention, ce programme SOFT est stocké dans la mémoire de programme PM. Lorsque s l'équipement EQU resoit un signal SGL qui transporte une structure de donnée DS selon 11nvention eVou un document DOC selon l'invention, cette structure de données DS eVou ce document DOC sont stockés dans la mémoire de données DM. REVENDICATIONS 1. Procédé pour parcourir un arbre (TR) qui contient des objets (ob) instances d'une ou plusieurs classes spécifiques (SC') en vue d'invoquer une méthode spécifique (sM') d'une desdites classes spécifiques sur les objets dudit arUre qui sont des instances de ladite classe s spécifique, caractérisé en ce qu'il consiste à définir une classe générique (GC) dont héritent lesdites classes spécifiques, qui comporte une méthode générique (gM(SCj, sMj, Pj j))) d'invocation d'une méthode spécifique (sM') sur un objet instance d'une classe spécifique (SC'), et qui consiste, lorsq u'el le est exécutée su r u n objet courant, à invoquer lad ite méthode spécifique si l'objet courant est une instance de ladite classe spécifique, et à s'exécuter récursivement pour les variables de 1'objet courant qui sont des instances de 1'une desdites classes spécifiques. 2. Procédé selon la revendication 1, caractérisé en ce que lorsque ladite méthode générique est exécutée pour invoquer une méthode spécifique dotée d'un ou de plusieurs arguments (Pj j), le ou les arguments de ladite méthode spécifique sont spécifiés comme arguments de ladite méthode générique. 3. Structure de don nées (DS) écrite dans un la ngage de programmation objet, com porta nt une ou plusieurs classes spécifiques (SC) destinées à étre instanciées pour générer un arbre (TR) d'objets (ob), au moins une desdites classes spécifiques comportant au moins une méthode spécifique (sMj), caractérisée en ce qu'elle comporte une classe générique (GC) dont héritent lesdites classes spécifiques, qui comporte une méthode générique (gM(SCj, sMj, Pj j)) dinvocation d'une méthode spécifique sur un objet instance d'une classe spécifique, et qui consiste, lorsqu'elle est exécutée sur un objet courant, à invoquer ladite méthode spécifique si 1'objet courant est une instance de ladite classe spécifique, et à s'exécuter récursivement pour les variables de l'objet courant qui sont des instances de l'une desdites classes spécifiques. 4. Document (DOC) écrit da ns u n langage de prog ram mation objet qui comporte des objets instances de classes spécifiques définies dans une structure de données selon la revendication 3. 5. Programme (SOFT) écrit dans un langage de programmation objet, comportant des instructions pour la manipulation d'un document selon la revendication 4 lorsqu'il est exécuté par un processeur. 3s 6. Equipement électronique (EQU) comportant une mémoire (PM) qui contient un programme (SOFT) selon la revendication 5. PHFRO 10097 7 2827406 7. Equipement électronique (EQU) comportant une mémoire (DM) qui contient une structure de données selon la revendication 3. 8. Equipement électronique (EQU) comportant une mémoire (DM) qui contient un document