FR2824160A1 - Conteneur generique configurable de facon dynamique - Google Patents
Conteneur generique configurable de facon dynamique Download PDFInfo
- Publication number
- FR2824160A1 FR2824160A1 FR0201480A FR0201480A FR2824160A1 FR 2824160 A1 FR2824160 A1 FR 2824160A1 FR 0201480 A FR0201480 A FR 0201480A FR 0201480 A FR0201480 A FR 0201480A FR 2824160 A1 FR2824160 A1 FR 2824160A1
- Authority
- FR
- France
- Prior art keywords
- container
- data
- data structure
- subsystem
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B15/00—Systems controlled by a computer
- G05B15/02—Systems controlled by a computer electric
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/953—Organization of data
- Y10S707/955—Object-oriented
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Stored Programmes (AREA)
Abstract
L'invention concerne un conteneur générique configurable de façon dynamique.Un procédé pour traiter des données en utilisant des structures de données d'un conteneur générique (40) consiste à demander un conteneur générique (40) pour mémoriser les données d'un sous-système (22) d'un programme (20), créer une association entre une structure spécifique de données (42) et le sous-système (22), créer une interface entre la structure de données spécifique (42) et le conteneur (40) et créer la structure spécifique de données (42) en utilisant l'association.Application notamment aux logiciels d'ordinateurs.
Description
<Desc/Clms Page number 1>
La présente invention concerne d'une manière générale un logiciel d'ordinateur. Plus particulièrement elle concerne des structures de mémorisation de données.
Dans le domaine de la programmation logicielle, différents types de structures de données peuvent être utilisés par des applications logicielles en fonction des besoins de l'application. Des exemples de structures de données utilisées habituellement incluent des tables de contrôle, des listes, des ensembles, des files d'attente, des réseaux, des arbres et des structures de données plus exotiques comme par exemple noir, rouge, etc. Chaque structure de données possède des avantages et des inconvénients.
Certaines structures de données sont bonnes pour la mémorisation de données, mais pas pour la récupération de données. Par exemple une structure de données, qui mémorise des données d'une manière plus efficace que d'autres types peut nécessiter un temps moyen plus grand de récupération des données. L'inverse de la relation espace en fonction du temps peut être vrai pour d'autres structures de données.
Par exemple une structure de données qui fournit un accès de récupération rapide peut nécessiter un espace de mémorisation en mémoire supérieur à un espace de mémorisation moyen.
Dans des procédés et systèmes existants, un programmeur utilisant des structures de données doit sélectionner un type particulier de structure de données pendant la programmation. Par exemple, dans le langage C++, une structure de données de réseau peut être sélectionnée par la commande "Array myarray= newArray(...);". Un inconvénient de procédés existants est que la structure de données doit être choisie au niveau de "l'extrémité frontale" de l'agencement, pendant la programmation. S'il est déterminé ultérieurement que la structure de données n'est pas optimale pour les données utilisées pendant la durée
<Desc/Clms Page number 2>
d'exécution, il est nécessaire de réécrire et de compiler à nouveau le logiciel en utilisant une structure de données différente.
Un procédé plus souple de sélection d'une structure de données consiste à utiliser une usine de production d'objets pour retarder le choix d'une structure de données et rendre un peu plus facile le changement de la structure de données à un instant ultérieur. Par exemple, des structures de données du conteneur sont communes dans la bibliothèque de gabarit du C++ standard. Le programmeur demande à l'usine de production d'objets une structure de données particulière. L'exemple de sélection de réseau dans le langage C peut impliquer les commandes "ObjectFactory *ofp= ...; Array myArray = ofp-> createArray (...);". Par exemple au lieu de créer un réseau directement, un programmeur peut, au lieu de cela, appeler un procédé createArray de l'usine de production d'objets. De cette manière, si le programmeur décide ultérieurement de modifier la mise en oeuvre du réseau, le seul emplacement, où le code doit être modifié est le procédé createArray dans l'usine de production d'objets et la réalisation même du réseau. Le programmeur n'a pas à revenir et modifier chaque cellule individuelle qui crée un nouveau réseau. Cette solution est encore limitée étant donné que le programme doit être recompilé pour tirer parti du nouvel agencement du réseau.
Cette solution est limitée étant donné que le programmeur s' attend encore à traiter un réseau et est ainsi limité à l'interface qu'un réseau fournit. Ce qui est nécessaire c'est un procédé et un système pour modifier d'une manière plus efficace le type de structure de données afin d'optimiser la structure sur l'application.
On décrit un procédé et un système pour créer et utiliser un conteneur générique en tant que structure de données utilisée dans un programme logiciel. La structure
<Desc/Clms Page number 3>
de données peut être spécifiée à l'instant de démarrage ou pendant une durée d'exécution. Si la nature des données change d'une exécution à l'autre, la structure de données peut être adaptée à un ensemble spécifique de données. Les structures existantes de données sont résumées à une interface générique destinée à être utilisée dans le conteneur. Le programme coopère avec le conteneur générique en utilisant l'interface générique, ce qui permet au conteneur d'ajouter, de supprimer et de verrouiller les données mémorisées dans le conteneur et de récupérer un code utilisé par le conteneur. Un programme utilise une usine de production d'objets pour créer une instance d'un conteneur générique possédant l'interface générique. Une table de mappage ou une autre structure de données est conservée pour mapper un appel de création de conteneur pour le conteneur approprié. Au moment de l'exécution, l'usine de production d'objets se réfère à la table de mappage pour déterminer quel type de structure de données il faut créer.
Pour un programme très simple qui n'utilise qu'une seule structure de données, la table de mappage ne contient qu'une seule entrée. Pour un programme plus complexe, qui possède plusieurs sous-ensembles, dont chacun possède ses propres exigences spécifiques du point de vue mémoire, la table de mappage peut posséder une entrée différente pour chaque système. Les structures de données spécifiées peuvent être modifiées moyennant une modification des entrées dans la table de mappage.
De façon plus précise l'invention concerne un procédé pour traiter des données en utilisant des structures de données de conteneur générique, caractérisé en ce qu'il consiste à : demander un conteneur générique pour mémoriser des données pour un sous-système d'un programme; créer une association entre une structure de base
<Desc/Clms Page number 4>
spécifique et le sous-système; créer une interface entre la structure spécifique de données et le conteneur générique ; créer la structure spécifique de données en uti- lisant l'association.
Selon une autre caractéristique de l'invention, l'étape de demande comprend l'envoi d'une demande à une usine de production d'objets pour créer le conteneur, et que l'étape de création de la structure spécifique de données comprend la création du conteneur en un emplacement dans une mémoire et l'envoi du programme à un pointeur d'adresse de l'emplacement.
Selon une autre caractéristique de l'invention, le programme comprend de multiples sous-systèmes.
Selon une autre caractéristique de l'invention, l'étape de création d'une association comprend la création d'une entrée dans une table de mappage qui est corrélée à la structure spécifique de données du sous-système.
Selon une autre caractéristique de l'invention, l'étape de création de la structure spécifique de données comprend en outre l'envoi, depuis le sous-système à une usine de production d'objets, d'un pointeur de fonction de comparaison pour comparer des entrées de données et un pointeur de fonction d'extraction de code pour extraire une valeur de code à partir du conteneur.
Selon une autre caractéristique de l'invention, l'étape de création d'une interface comprend la création de commandes pour ajouter des entrées de données au conteneur, identifier des entrées de données dans le conteneur, retirer des entrées de données à partir du conteneur et extraire un code du conteneur.
L'invention concerne également un support lisible par ordinateur, dans lequel est mémorisée une structure de données, caractérisé en ce qu'il comporte :
<Desc/Clms Page number 5>
un conteneur générique pour mémoriser des données; et une interface pour traiter les données conformément à des spécifications d'une structure de données sélectionnée, l'interface comprenant : une première interface qui ajoute des entrées de données au conteneur, une seconde interface, qui identifie des entrées de données dans le conteneur, et une troisième interface, qui retire des entrées de données à partir du conteneur.
Selon une autre caractéristique de l'invention, la structure sélectionnée de données est spécifiée par une entrée dans une table de mappage, laquelle entrée est lue par une usine de production d'objets avant qu'un programme soit exécuté.
Selon une autre caractéristique de l'invention, la structure sélectionnée de données est spécifiée au moment de l'exécution.
Selon une autre caractéristique de l'invention, le conteneur comporte en outre un pointeur de comparaison servant à comparer des entrées de données et un pointeur d'extraction de code pour extraire une valeur de code à partir du conteneur.
La figure 1 représente un schéma-bloc du système.
La figure 2 représente un schéma-bloc d'un système informatique qui peut utiliser le conteneur générique.
La figure 3 représente un organigramme du procédé utilisé dans un programme pour créer un conteneur.
La figure 4 représente un organigramme du procédé utilisé pour créer un conteneur.
La figure 5 représente un organigramme de l'utilisation de pointeurs de fonctions d'extraction de code et de comparaison.
<Desc/Clms Page number 6>
La figure 6 représente le schéma-bloc du système utilisant les pointeurs de fonctions d'extraction de code et de comparaison.
La figure 1 représente un schéma-bloc du système 10. Le système 10 décrit un procédé de programmation utilisant un conteneur générique 40 en tant que structure de données. Après la programmation, différentes structures de données de mémoire peuvent être reconfigurées avant l'exécution du programme sans modification du code de programme. Le programme demande une structure de données de mémoire dynamique 40 à partir de l'usine 30 de production d'objets. Une table de mappage 50 ou une autre structure est utilisée par l'usine 30 de production d'objets pour décider quel type de conteneur particulier doit être envoyé au programme 20.
Un programme logiciel 20 peut comporter une pluralité de sous-systèmes 22,24, 26, qui utilisent les structures de données pour traiter des données. Un programme simple 20 pourrait n'utiliser aucun sous-système, par exemple s'il utilise uniquement une structure de données ou si toutes les structures de données sont du même type. Dans l'exemple représenté sur la figure 1, le premier sous-système 22 peut représenter des "enregistrements de vendeurs", le second sous-système 24 peut représenter des "enregistrements d'employés" et le troisième sous-système 26 peut représenter le "traitement graphique". Le programme 20 comportant de multiples sous-systèmes 22,24, 26 peut utiliser différents types de structures de données pour chaque sous-système. Dans le système 10 de l'exemple représenté sur la figure 1, le sous-système 22 d'enregistrements secondaires utilise une structure de données de liste 44, le sous-système 24 d'enregistrements d'employés utilise une structure de données 42 du type en forme d'arbre, tandis qu'un sous-système 26 de "traitement graphique" utilise une
<Desc/Clms Page number 7>
structure de données 46 à table de contrôle.
Le système 10 commande des conteneurs génériques 40 devant être utilisés pour mémoriser des données. Pendant le fonctionnement, des conteneurs spécifiques 42,44, 46 sont créés dans une mémoire 340 en fonction de la configuration de la table de mappage 50. Le sous-système de programme 22,24, 26 demande un conteneur générique 40 à partir de l'usine 30 de création d'objets. L'usine 30 de création d'objets crée le conteneur 42,44, 46 dans la mémoire 340 et transmet un pointeur d'adresse 62 du conteneur au sous-système 22,24, 26. Le pointeur 62 désigne dans la mémoire 340 l'emplacement ou la structure de données 42, 44,46 est mémorisée. Le code du sous-système 22,24, 26 interagit avec le pointeur 62. Les conteneurs spécifiques utilisent en commun la même interface de sorte que le programme n'a pas à être modifié pour être utilisé sur l'un ou l'autre des conteneurs spécifiques 42,44, 46. Chaque conteneur spécifique 42,44, 46 possède des propriétés de mémorisation distinctes, qui le rendent plus ou moins intéressant pour des applications particulières. Pour créer une interface de conteneur générique, on supprime des interfaces de différentes structures de données existantes pour créer une interface commune devant être utilisée par le système. Dans une forme de réalisation, chaque structure de données existante 42,44, 46, fournit l'interface suivante :
Add (ContainerData, ContainerKey)
Get(ContainerKeyData)
Remove(ContainerKeyData)
GetKey(ContainerKeyData).
Add (ContainerData, ContainerKey)
Get(ContainerKeyData)
Remove(ContainerKeyData)
GetKey(ContainerKeyData).
La commande Add ajoute une entrée au conteneur 40. La commande Get réalise la consultation d'une entrée dans le conteneur 40. La commande Remove retient une entrée du conteneur 40. La commande GetKey extrait ou calcule un code
<Desc/Clms Page number 8>
pour une donnée fournie.
Les structures de données du type conteneurs peuvent être définies pour dériver d'une classe de base commune, désignée sous l'expression "conteneur" qui possède l'interface commune. Des sous-classes redéfinissent la réalisation d'interfaces pour convenir au type spécifique de mémorisation de données mis en oeuvre. Par exemple, une liste 44 pourrait annexer un nouvel élément de données à la fin de ces éléments existants. Une table de contrôle 46 pourrait, au lieu de cela, extraire le code de l'objet devant être mémorisé et positionner l'objet en fonction de la touche. Le système de programmation d'ensemble est neutre par rapport à un niveau de classe spécifique de la structure de données mise en oeuvre. L'application 20 recherche un conteneur générique de données 30 possédant l'interface correcte. Tant qu'une structure de données particulière ou une mise en oeuvre de classe est interfacée, elle peut être intégrée dans le système de conteneur générique 10.
Un fichier de démarrage, par exemple une table de mappage 50, est conservé pour stocker des propriétés de classes de mémorisation de données, et les sous-systèmes correspondant du programme, qui utilisent ce type de mémorisation de données. Lorsque l'usine 30 de production d'objets est créée, il lit le fichier de démarrage 50 pour initialiser le mappage entre des sous-systèmes 22,24, 26 et des structures de données correspondantes 42,44, 46 devant être utilisées. La figure 1 représente une table de mappage de structure de données 50 comportant des entrées pour différents sous-systèmes 22,24, 26. Lorsqu'elle reçoit une demande pour un nouveau conteneur 40, l'usine 30 de production d'objets accède à la table de mappage 50 pour déterminer quel type de structure spécifique de données 42, 44,46 il faut créer et revenir au sous-système demandeur
<Desc/Clms Page number 9>
22,24, 26. Dans l'exemple de la figure 1, la table de mappage 50 montre que le sous-système de traitement graphique 26 utilise une structure arborescente comme cela est représenté par l'entrée "GRAPH1 -> tree". Le soussystème 24 d'enregistrements d'employés utilise des données mémorisées dans une table de contrôle comme représenté par "EMP~DATA -> hash". Le sous-système 22 d'enregistrements de vendeurs utilise une structure de données en forme de liste comme cela est représenté par l'entrée "VEND~DATA -> list".
Dans un programme compliqué 20 comportant de multiples sous-systèmes 22,24, 26, la table de mappage 50 possède de multiples entrées. Au démarrage, une structure de données du sous-système peut être modifiée par modification de l'entrée dans la table 50 de mappage de la mémoire de données.
Dans une forme de réalisation, le système 10 à conteneur générique peut être utilisé pour tester la performance de programme de manière à déterminer la structure optimale de données pour un programme 20. Le conteneur générique 40 permet un test efficace de sous-classes de conteneurs 42,44, 46 au moyen d'entrées interchangeables dans la table de mappage 50. Un programme en boucle peut être utilisé pour tester différentes structures de données 42,44, 46 par insertion de ces structures de données 42, 44, 46 dans la table de mappage 50, puis en exécutant par exemple des fonctions d'addition, de suppression et de consultation. Le cadencement des boucles fournit une information indiquant si une structure de données 42,44, 46 fonctionne de façon appropriée.
Dans une autre forme de réalisation, le système 10 à conteneur générique peut être utilisé pour reconfigurer un programme 20 pour un traitement plus efficace des données. Quelquefois un système 10 fonctionne en général bien, mais rencontre un ensemble particulier de données qui
<Desc/Clms Page number 10>
entraînent une dégradation de la performance. Si l'ensemble de données posant un problème est identifié, des structures différentes de données peuvent être testées à la place de la structure existante pour identifier une structure appropriée.
Dans une forme de réalisation, le sous-système 22,24, 26 utilise également des fonctions pour extraire un code à partir d'une structure de données 42,44, 46 et pour comparer des entrées dans une structure de données 42,44, 46. Le sous-système 22,24, 26 transmet à l'usine 30 de production d'objets un pointeur 64 désignant la fonction d'extraction de code et un pointeur 66 désignant la fonction de comparaison. L'usine 30 de production d'objets transmet à son tour ces pointeurs 64,66 à la structure spécifique de données 42,44, 46, mémorisée dans la mémoire 340.
La figure 2 représente un système informatique 300 comportant un processeur 310 connecté à un dispositif d'entrée 320 et à un dispositif d'affichage 330. Le processeur 310 accède à la mémoire 340 dans le système informatique 300, qui mémorise les données 350. Le logiciel 360 du programme est également mémorisé dans la mémoire 340. La mémoire 340 peut inclure la mémoire d'accès aléatoire (RAM) ou des types similaires de mémoires et peut mémoriser une ou plusieurs applications pour leur exécution par le processeur 310. La mémoire 340 peut également inclure une unité de disque dur, une unité de disquette, une unité de mémoire CD-ROM ou d'autres types de mémoire de données non volatile. Le dispositif d'entrée 320 peut comporter n'importe quel type de dispositif pour introduire une information dans le système informatique 300, comme par exemple un clavier, un bloc de touches, un dispositif de commande à curseur, un dispositif tactile ou un microphone.
Le dispositif d'affichage 330 peut inclure n'importe quel
<Desc/Clms Page number 11>
autre type de dispositif destiné à présenter une information visuelle comme par exemple un moniteur d'ordinateur, un dispositif d'affichage à écran plat ou un panneau d'affichage.
En fonctionnement, le dispositif d'entrée 320 reçoit des commandes qui incitent le processeur 310 à appeler le logiciel 360 pour récupérer ou traiter des données 350. Les résultats du traitement de données peuvent être affichés dans le dispositif d'affichage 330. L'utilisateur peut modifier la spécification du type de conteneur en introduisant des commandes dans le dispositif d'entrée 320, puis en amenant le processeur 310 à exécuter les instructions de programme 360 sur les données 350 pour évaluer la performance de différents types de structures de données.
La figure 3 représente un organigramme du procédé de programmation pour créer une structure de données à conteneur générique 40. Le procédé peut être mis en oeuvre par exemple dans des modules logiciels dans des instructions de programme 360 pour leur exécution par le processeur 310. Un sous-système 22,24, 26 du programme 20 demande en 110 à un nouveau conteneur à partir d'une usine 30 de production d'objets ou d'un autre dispositif de création de conteneur. Le sous-système 22,24, 26 reçoit, en 120, de la part de l'usine 30 de production d'objets, un pointeur désignant un emplacement d'un conteneur 40 dans la mémoire 340. Le sous-système 22,24, 26 interagit alors, en 130, avec le conteneur 40 pour manipuler des données au moyen de l'envoi de commandes dans les interfaces désignant le pointeur.
La figure 4 représente un organigramme du procédé pour créer un conteneur générique 40 en utilisant par exemple une usine 30 de production d'objets. Le procédé peut être mis en oeuvre par exemple dans des modules logiciels dans des instructions de programme 360 pour leur exé-
<Desc/Clms Page number 12>
cution par le processeur 310. Un créateur de conteneurs, tel qu'une usine 30 de production d'objets, reçoit en 210 une demande d'un conteneur 40 à partir du programme 20.
L'usine 30 de production d'objets détermine en 220 quel sous-système 22,24, 26 du programme 20 demande le conteneur 40. L'usine 30 de production d'objets accède alors à la table de mappage 50 pour identifier le type de conteneur 40 spécifié pour le sous-système 22,24, 26. L'usine 30 de production d'objets détermine en 240 si le sous-système 22, 24,26 situé dans la table de mappage est assisté - c'est- à-dire s'il existe une préférence de conteneur 42,44, 46 spécifiée. S'il n'est pas assisté, alors dans une forme de réalisation l'usine 30 de production d'objets crée en 280 un type implicite de conteneur 40. Dans une autre forme de réalisation, l'usine 30 de production d'objets peut simplement envoyer une erreur ou une incitation à un utilisateur pour l'exécution d'une entrée. Si le sous-système est assisté, alors l'usine 30 de production d'objets détermine alors en 250 si le type de conteneur spécifié dans la table de mappage 50 est assisté - c'est-à-dire s'il est connu par l'usine 30 de production d'objets. Si le type de conteneur n'est pas assisté, l'erreur est délivrée en 270. Sinon un nouveau conteneur spécifique 42,44, 46 est créé en 260 dans une mémoire 340. L'usine 30 de production d'objets renvoie alors en 290 au sous-système 22,24, 26 du programme 20 un pointeur d'adresse de mémoire 62 désignant dans la mémoire 340 la position, dans laquelle le conteneur 40 a été créé. Puis le programme 20 interagit avec le récipient 40 au moyen de l'envoi de commandes interfacées au pointeur.
Dans une forme de réalisation, l'usine 30 de production d'objets met en oeuvre également deux arguments facultatifs pour une fonction de comparaison et une fonction d'extraction de code utilisées par le sous-système 22,
<Desc/Clms Page number 13>
24, 26. Les pointeurs 64,66 désignant ces fonctions sont transmis du sous-système 22,24, 26 à l'usine 30 de production d'objets. L'usine 30 de production d'objets à son tour transmet les pointeurs 64,66 à la structure de données spécifiques 42,44, 46 créée dans la mémoire 340.
Le conteneur 40 mémorise les données sans tenir compte du type de données mémorisées. Les pointeurs sont utilisés pour traiter les données. Comme indiqué, différentes structures de données 42,44, 46 utilisent des moyens différents pour exécuter des fonctions de base : insertion, suppression et consultation. Certaines structures de données utilisent un "code" pour identifier l'emplacement de données. Par exemple un réseau utilise un code en tant qu'indice pour le réseau, de sorte que des données insérées ou récupérées à partir d'un code, n, désignent des données mémorisées dans la n-ème position du réseau. Une liste chaînée 44 peut simplement insérer ou supprimer des éléments à partir de l'avant ou de l'arrière de la liste 44, auquel cas aucune valeur de code n'est nécessaire. Une table de contrôle 46 peut permettre la mémorisation de données en n'importe quel emplacement, moyennant l'utilisation des valeurs de codes pour positionner et récupérer les données. De même avec une table de contrôle 46, le code dépend du type de données mémorisées. Pour un enregistrement d'employé, le code pourrait être le nom de l'employé ou le numéro de sécurité sociale. Pour un agencement de circuits intégrés (IC), tel qu'un type à très haute densité d'intégration (VLSI), la valeur de code pourrait être un nom de bloc de circuit.
Pour créer une interface commune pour différents types de conteneurs 42,44, 46, on peut utiliser un pointeur d'extraction de code 64 et un pointeur de fonction de comparaison 66. Le pointeur de comparaison 66 permet au système 10 de rechercher des données, par l'intermédiaire
<Desc/Clms Page number 14>
d'un dispositif d'entrée 320 et d'un dispositif d'affichage 330, pour déterminer si une entrée particulière de données existe déjà. Par exemple, le pointeur 66 de la fonction de comparaison considère deux éléments de données et détermine s'ils sont égaux et, s'ils ne sont pas égaux, lequel est le plus grand. Cette fonction peut être utilisée pour tester la présence d'une donnée particulière dans un conteneur 40, ou bien peut être utilisée pour trier des données.
Le pointeur d'extraction de code 64 permet au système d'identifier une entrée particulière au moyen d'une recherche dans la structure de données, sur la base du code. Par exemple, pour un élément de données, la fonction d' extraction de code extrait le code pour cette donnée. Le conteneur 40 peut alors utiliser le code pour mémoriser des données dans le conteneur 40 ou bien peut tester si les données contenues dans le même code ont déjà été mémorisées.
La figure 5 représente un organigramme de l'utilisation des pointeurs 64,66 des fonctions d'extraction de code et de comparaison. Lors de l'exécution du programme 20, le sous-système 22,24, 26 appelle l'usine 30 de production d'objets et demande en 110 un conteneur 40. A cet instant, le sous-système 22,24, 26 sait quelle structure particulière de données 42,44, 46 lui est affectée et sait en général quelles sont les données. L'usine 30 de production d'objets et le conteneur 40 ne connaissent pas nécessairement le type de données qui sont traitées. En tant que partie de sa demande du conteneur 40 en 110, le sous-système 22,24, 26 envoie également, en 112, à l'autre usine 30 de production d'objets, des pointeurs 64,66 pour les fonctions d'extraction de code et de comparaison. La demande faite en 110 peut être séparée de l'émission, en 112, des pointeurs 64,66, ou bien des pointeurs 64,66 peuvent faire partie de l'argument demandant, en 110, le
<Desc/Clms Page number 15>
conteneur 40. L'usine 30 de production d'objets crée en 260 un conteneur spécifique 42,44, 46 dans la mémoire 340.
L'objet en usine 30 mémorise également en 262 les pointeurs 64,66 des fonctions d'extraction de code et de comparaison dans la mémoire 340 dans le conteneur 42,44, 46. Dans une forme de réalisation, la création 260 du conteneur 44,42, 46 peut être une étape séparée de la mémorisation, en 262, des pointeurs 64,66. Dans une autre forme de réalisation, ces pointeurs peuvent être combinés en une étape 260, 262.
L'usine 30 de production d'objets renvoie en 290 au soussystème 22,24, 26 un pointeur d'adresse 62 désignant l'emplacement de mémoire du conteneur 42,44, 46.
La figure 6 représente un schéma-bloc d'une partie du système 10 représenté sur la figure 1. Dans la forme de réalisation de la figure 6, le premier sous-système 22 du programme 20 est représenté comme comportant une fonction d'extraction de code 63 et une fonction de comparaison 65. Dans une autre forme de réalisation, les fonctions 63, 65 peuvent être séparées du programme 20 et mémorisées par exemple dans une bibliothèque (non représentée). Le soussystème 22 demande en 110 un conteneur 40 à partir de l'usine 30 de production d'objets. Le sous-système 22 envoie également à l'usine 30 de production d'objets, des références telles que des pointeurs d'adresses en mémoire 64,66 à la fonction d'extraction de code 63 et à la fonction de comparaison 65. L'usine 30 de production d'objets crée en 260 un conteneur spécifique 44 dans la mémoire 340.
Dans ce cas, une liste 44 est créée en 260 étant donné que c'est la structure spécifiée pour un sous-système 1 dans la table de mappage 50, ou une autre structure de données de référence. L'usine 30 de production d'objets transmet également les pointeurs 64,66 de fonctions d'extraction de code et de comparaison à la liste 44 créée dans la mémoire 340 de sorte que la liste 44 a accès à ces fonctions pen-
<Desc/Clms Page number 16>
dant le traitement. Lors de la création de la liste 44, l'usine 30 de production d'objets envoie au sous-système 22 une référence, comme par exemple un pointeur d'adresse 62, à un emplacement de la mémoire de la liste 44.
En fonctionnement, différents conteneurs 42, 44, 46 peuvent utiliser différemment les pointeurs 64, 66 des fonctions d'extraction de code et de comparaison. Par exemple, si un conteneur 40 est une table de contrôle 46 et reçoit une demande de mémorisation de données, il appelle la fonction "extraction de code" 63 pour les données devant être mémorisées, puis mémorise les données devant être corrigées à l'emplacement correct en utilisant le code. Si le conteneur 40 est une liste triée 44, il compare la fonction de comparaison 65 pour comparer les nouvelles données à des données déjà mémorisées, jusqu'à ce qu'il ait identifié l'emplacement correct de la liste 44 pour mémoriser les données. Le programme 20 ne requiert aucun codage différent pour différentes structures de données 42,44, 46. Au lieu de cela, il utilise l'interface générique pour traiter les données, par exemple pour mémoriser de nouvelles données.
Le conteneur respectif 42,44, 46 utilise alors un pointeur 64,66 des fonctions de comparaison d'extraction pour traiter la demande.
Un pointeur est mémorisé dans un élément de données et, pendant le traitement, le système 10 peut avoir à déterminer si un élément particulier est déjà mémorisé. La fonction de comparaison 65 dirige le pointeur dans les données pour déterminer si un élément de données est déjà mémorisé. Par exemple, si les données sont mémorisées dans le sous-système d'enregistrements d'employés 24, les données devant être mémorisées peuvent être un nom et un numéro de sécurité sociale en une seule structure. L'usine 30 de production d'objets peut envoyer un appel en 110 pour créer un nouveau conteneur 40 pour réaliser le suivi de
<Desc/Clms Page number 17>
tous les employés . En tant que partie de l' appel de création 110, l'usine 30 de production d'objets peut également recevoir des pointeurs 64,66 désignant deux fonctions pour le traitement de la structure des employés. Pour un pointeur donné désignant une structure d'employés, la fonction "extraction de code" 63 sait comment récupérer le numéro de sécurité sociale. Lorsque des pointeurs sont donnés pour deux enregistrements d'employés, la fonction "comparaison" 65 sait comment extraire les noms de chaque enregistrement et comment comparer ces deux noms.
En tant que partie du processus de création, l'usine 40 de production d'objets transfère les pointeurs de fonctions 64,66 aux moyens de création d'objets tels qu'une usine 30 de production d'objets. Ces moyens de création 30 mémorisent ces deux pointeurs dans l'instance nouvellement créée du conteneur 44. Ce conteneur 44 a alors accès à ces deux fonctions, lorsque cela est nécessaire.
Bien que la présente invention ait été décrite en référence à des formes de réalisation particulières, des variantes sont possibles. La présente invention peut être mise en oeuvre selon des formes spécifiques sans sortir du cadre essentiel ou des attributs de ces formes. Par exemple dans certaines formes de réalisation représentées ici une information est mémorisée dans une table de mappage 50. Un spécialiste de la technique constatera que les différentes structures de données peuvent être utilisées à cet effet.
De même dans certaines formes de réalisation on décrit le conteneur comme étant créé en utilisant une usine 30 de production d'objets et on se réfère à des techniques de programmation orientées objet. Un spécialiste de la technique constatera que différents procédés peuvent être utilisés pour créer un conteneur générique 40 et que le procédé n'est pas confiné à une programmation orientée objet.
En outre, bien que des aspects de mise en oeuvre
<Desc/Clms Page number 18>
compatibles avec la présente invention sont décrits comme étant mémorisés en mémoire, le spécialiste de cette tech- nique notera que ces aspects peuvent être également mémori- sés sur ou lus à partir d'autres types de produits de pro- grammes d'ordinateurs ou d'autres supports lisibles en ordinateurs tels que des dispositifs de mémoire secon- daires, incluant des disques durs, des disquettes ou une mémoire CD-ROM ; onde porteuse provenant du réseau Internet ou d'un autre réseau ; d'autres formes de mémoires RAM ou de mémoire à lecture seule (ROM).
Il est souhaitable que les formes de réalisation décrites ici soient considérées à tous égards comme illus- trative et non limitative et qu'on puisse se référer aux revendications annexées et à leurs équivalents pour déter- miner la portée de l'invention.
Claims (10)
1. Procédé pour traiter des données en utilisant des structures de données (40) de conteneur générique, caractérisé en ce qu'il consiste à : demander (110) un conteneur générique (40) pour mémoriser des données pour un sous-système (22) d'un programme (20); créer une association entre une structure de base spécifique (42) et le sous-système (22); créer une interface entre la structure spécifique de données (42) et le conteneur générique (40); et créer (260) la structure spécifique de données en utilisant l'association.
2. Procédé selon la revendication 1, caractérisé en ce que l'étape de demande (110) comprend l'envoi (110) d'une demande à une usine (30) de production d'objets pour créer le conteneur (40), et que l'étape de création (260) de la structure spécifique de données (42) comprend la création (260) du conteneur en un emplacement dans une mémoire (340) et l'envoi (290) du programme (20) à un pointeur d'adresse (62) de l'emplacement.
3. Procédé selon l' une ou l' autre des revendications 1 et 2, caractérisé en ce que le programme (20) comprend de multiples sous-systèmes (22).
4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce que l'étape de création d'une association comprend la création d'une entrée dans une table de mappage (50) qui est corrélée à la structure spécifique de données (42) du sous-système (22).
5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que l'étape (260) de création de la structure spécifique de données (42) comprend en outre l'envoi, depuis le sous-système (22) à une usine (30) de production d'objets, d'un pointeur de fonction de com-
<Desc/Clms Page number 20>
paraison (66) pour comparer des entrées de données et un pointeur de fonction d'extraction de code (64) pour extraire une valeur de code à partir du conteneur (40).
6. Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce que l'étape de création d'une interface comprend la création de commandes pour ajouter des entrées de données au conteneur (40), identifier des entrées de données dans le conteneur (40), retirer des entrées de données à partir du conteneur (40) et extraire un code du conteneur (40).
7. Support (340) lisible par ordinateur, dans lequel est mémorisée une structure de données, caractérisé en ce qu'il comporte : un conteneur générique (40) pour mémoriser des données ; et une interface pour traiter les données conformément à des spécifications d'une structure de données sélectionnée (42), l'interface comprenant : une première interface qui ajoute des entrées de données au conteneur (40), une seconde interface, qui identifie des entrées de données dans le conteneur (40), et une troisième interface, qui retire des entrées de données à partir du conteneur (40).
8. Support selon la revendication 7, caractérisé en ce que la structure sélectionnée de données (42) est spécifiée par une entrée dans une table de mappage (50), laquelle entrée est lue par une usine (30) de production d'objets avant qu'un programme (20) soit exécuté.
9. Support selon l' une ou l' autre des revendications 7 et 8, caractérisé en ce que la structure sélectionnée de données (42) est spécifiée au moment de l'exécution.
10. Support selon l'une quelconque des revendications 7 à 9, caractérisé en ce que le conteneur (40) com-
<Desc/Clms Page number 21>
porte en outre un pointeur de comparaison (66) servant à comparer des entrées de données et un pointeur d'extraction de code (64) pour extraire une valeur de code à partir du conteneur (40).
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/779,968 US6738783B2 (en) | 2001-02-09 | 2001-02-09 | Dynamically configurable generic container |
Publications (1)
Publication Number | Publication Date |
---|---|
FR2824160A1 true FR2824160A1 (fr) | 2002-10-31 |
Family
ID=25118149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0201480A Pending FR2824160A1 (fr) | 2001-02-09 | 2002-02-07 | Conteneur generique configurable de facon dynamique |
Country Status (2)
Country | Link |
---|---|
US (1) | US6738783B2 (fr) |
FR (1) | FR2824160A1 (fr) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7391865B2 (en) | 1999-09-20 | 2008-06-24 | Security First Corporation | Secure data parser method and system |
ATE270848T1 (de) * | 2000-02-22 | 2004-07-15 | Sdgi Holdings Inc | Besteck zur vorbereitung des zwischenwirbelraums |
US7000230B1 (en) | 2000-06-21 | 2006-02-14 | Microsoft Corporation | Network-based software extensions |
US6883168B1 (en) | 2000-06-21 | 2005-04-19 | Microsoft Corporation | Methods, systems, architectures and data structures for delivering software via a network |
US7155667B1 (en) | 2000-06-21 | 2006-12-26 | Microsoft Corporation | User interface for integrated spreadsheets and word processing tables |
US6948135B1 (en) | 2000-06-21 | 2005-09-20 | Microsoft Corporation | Method and systems of providing information to computer users |
US7191394B1 (en) | 2000-06-21 | 2007-03-13 | Microsoft Corporation | Authoring arbitrary XML documents using DHTML and XSLT |
US7346848B1 (en) | 2000-06-21 | 2008-03-18 | Microsoft Corporation | Single window navigation methods and systems |
US20030028530A1 (en) * | 2001-08-06 | 2003-02-06 | Srikanth Nagaraja | Method and apparatus for accelerating search functions |
US7370066B1 (en) | 2003-03-24 | 2008-05-06 | Microsoft Corporation | System and method for offline editing of data files |
US7275216B2 (en) | 2003-03-24 | 2007-09-25 | Microsoft Corporation | System and method for designing electronic forms and hierarchical schemas |
US7415672B1 (en) | 2003-03-24 | 2008-08-19 | Microsoft Corporation | System and method for designing electronic forms |
US7913159B2 (en) * | 2003-03-28 | 2011-03-22 | Microsoft Corporation | System and method for real-time validation of structured data files |
US7296017B2 (en) | 2003-03-28 | 2007-11-13 | Microsoft Corporation | Validation of XML data files |
US7406660B1 (en) | 2003-08-01 | 2008-07-29 | Microsoft Corporation | Mapping between structured data and a visual surface |
US7334187B1 (en) | 2003-08-06 | 2008-02-19 | Microsoft Corporation | Electronic form aggregation |
US8819072B1 (en) | 2004-02-02 | 2014-08-26 | Microsoft Corporation | Promoting data from structured data files |
US7774620B1 (en) | 2004-05-27 | 2010-08-10 | Microsoft Corporation | Executing applications at appropriate trust levels |
US7692636B2 (en) | 2004-09-30 | 2010-04-06 | Microsoft Corporation | Systems and methods for handwriting to a screen |
US8487879B2 (en) | 2004-10-29 | 2013-07-16 | Microsoft Corporation | Systems and methods for interacting with a computer through handwriting to a screen |
US7721190B2 (en) | 2004-11-16 | 2010-05-18 | Microsoft Corporation | Methods and systems for server side form processing |
US7937651B2 (en) * | 2005-01-14 | 2011-05-03 | Microsoft Corporation | Structural editing operations for network forms |
US7725834B2 (en) | 2005-03-04 | 2010-05-25 | Microsoft Corporation | Designer-created aspect for an electronic form template |
US7673228B2 (en) | 2005-03-30 | 2010-03-02 | Microsoft Corporation | Data-driven actions for network forms |
US8010515B2 (en) * | 2005-04-15 | 2011-08-30 | Microsoft Corporation | Query to an electronic form |
US8200975B2 (en) | 2005-06-29 | 2012-06-12 | Microsoft Corporation | Digital signatures for network forms |
US8001459B2 (en) | 2005-12-05 | 2011-08-16 | Microsoft Corporation | Enabling electronic documents for limited-capability computing devices |
CN102932136B (zh) * | 2007-09-14 | 2017-05-17 | 安全第一公司 | 用于管理加密密钥的系统和方法 |
US8170968B2 (en) * | 2008-08-15 | 2012-05-01 | Honeywell International Inc. | Recursive structure for diagnostic model |
US8214831B2 (en) | 2009-05-05 | 2012-07-03 | International Business Machines Corporation | Runtime dependence-aware scheduling using assist thread |
US8667260B2 (en) * | 2010-03-05 | 2014-03-04 | International Business Machines Corporation | Building approximate data dependences with a moving window |
WO2016200403A1 (fr) * | 2015-06-12 | 2016-12-15 | Hewlett Packard Enterprise Development Lp | Allocation de mémoire de disque |
US10262124B2 (en) | 2017-01-18 | 2019-04-16 | Bank Of America Corporation | Autonomous software containers |
US10467842B2 (en) | 2017-03-17 | 2019-11-05 | Bank Of America Corporation | Portable item transfer container |
AU2019271421A1 (en) * | 2018-05-18 | 2021-01-07 | Mirage 3.4D Pty Ltd | A method and system for executing multi-dimensional data queries |
CN110795207B (zh) * | 2019-09-27 | 2022-08-12 | 广东浪潮大数据研究有限公司 | 一种虚拟容器最小资源单位互信配置方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805796A (en) * | 1996-03-27 | 1998-09-08 | Dell Usa, Lp | System architecture for implementing modular diagnostics |
US6272537B1 (en) * | 1997-11-17 | 2001-08-07 | Fujitsu Limited | Method for building element manager for a computer network element using a visual element manager builder process |
US6370508B2 (en) * | 1998-09-11 | 2002-04-09 | Genesys Telecommunications Laboratories, Inc. | Interface engine for managing business processes within a multimedia communication-center |
US6301582B1 (en) * | 1998-03-30 | 2001-10-09 | International Business Machines Corporation | System and method for storage of shared persistent objects |
US6208994B1 (en) * | 1998-06-11 | 2001-03-27 | Sun Microsystems, Inc. | Supporters providing extensible classes without recoding for object-oriented applications |
US6356913B1 (en) * | 1999-06-09 | 2002-03-12 | Avaya Technology Corp. | Generic (database-independent) and dynamically-modifiable schema |
US6567818B1 (en) * | 1999-06-14 | 2003-05-20 | International Business Machines Corporation | Employing management policies to manage instances of objects |
US6560609B1 (en) * | 1999-06-14 | 2003-05-06 | International Business Machines Corporation | Delegating instance management functions to underlying resource managers |
US20020129345A1 (en) * | 2000-09-27 | 2002-09-12 | Tilden Mark D. | Scripting business logic in a distributed object oriented environment |
-
2001
- 2001-02-09 US US09/779,968 patent/US6738783B2/en not_active Expired - Lifetime
-
2002
- 2002-02-07 FR FR0201480A patent/FR2824160A1/fr active Pending
Non-Patent Citations (6)
Title |
---|
"Java Platform Performance and Tactics", 31 May 2000, PRENTICE HALL, ISBN: 978-0-201-70969-8, XP002449530 * |
DIRK BÄUMER, DIRK RIEHLE: "Pattern languages of program design 3", 1997, ADDISON-WESLEY LONGMAN PUBLISHING CO., INC., ISBN: 0-201-31011-2, XP002449529 * |
GAMMA E ET AL: "Design Patterns: Elements of Reusable Object-Oriented Software", DESIGN PATTERNS. ELEMENTS OF REUSABLE OBJECT-ORIENTED SOFTWARE, September 1999 (1999-09-01), pages 81 - 136, XP002207989 * |
KENNETH LITWAK: "PURE Java? 2", 22 December 1999, SAMS, ISBN: 978-0-672-31654-8, XP002449528 * |
VLISSIDES J: "Pluggable factory. I", C++ REPORT SIGS PUBLICATIONS USA, vol. 10, no. 10, November 1998 (1998-11-01), XP002449524, ISSN: 1040-6042 * |
VLISSIDES J: "Pluggable Factory.2", C++ REPORT SIGS PUBLICATIONS USA, vol. 11, no. 2, February 1999 (1999-02-01), XP002449523, ISSN: 1040-6042 * |
Also Published As
Publication number | Publication date |
---|---|
US6738783B2 (en) | 2004-05-18 |
US20020111699A1 (en) | 2002-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR2824160A1 (fr) | Conteneur generique configurable de facon dynamique | |
US7490167B2 (en) | System and method for platform and language-independent development and delivery of page-based content | |
EP1193625B1 (fr) | Moteur de recherche collaboratif | |
CA2110538A1 (fr) | Systeme d'information multimedia | |
FR2768826A1 (fr) | Controle d'interface utilisateur standard pour un fournisseur de donnees | |
FR2767210A1 (fr) | Procede et architecture pour simplifier les communications avec les dispositifs d'interface-utilisateur | |
EP3586221B1 (fr) | Procédé, équipement et système de gestion du système de fichiers | |
WO2003057648A2 (fr) | Procedes et systemes de recherche et d'association de ressources d'information telles que des pages web | |
FR2668271A1 (fr) | Interface de modelisation dynamique des performances des systemes informatiques. | |
FR2909198A1 (fr) | Procede et disositif de filtrage d'elements d'un document structure a partir d'une expression. | |
EP1195699A1 (fr) | Procédé d'optimisation, par un terminal, de la consultation de données | |
EP1238323A2 (fr) | Procede de commercialisation de biens ou de services par des moyens electroniques sur des reseaux du type internet | |
EP1585037A1 (fr) | Procédé de reconnaissance et de référencement pour accès aux objets dynamiques dans les pages de navigation internet | |
EP1828941B1 (fr) | Dispositif de traitement de données à définition formelle | |
FR2772491A1 (fr) | Systeme et procede pour simuler un dispositif de memorisation d'ordinateur | |
EP1977365B1 (fr) | Procede de gestion de documents electroniques | |
WO1994012942A1 (fr) | Methode d'extraction de profils de statistiques, utilisation des statistiques creees par la methode | |
EP2245555A1 (fr) | Procede d'identification d'un document multimedia dans une base de reference, programme d'ordinateur, et dispositif d'identification correspondants | |
FR2925721A1 (fr) | Procede et dispositif de compilation et d'evaluation d'une pluralite d'expressions a evaluer sur un document structure | |
BE1005836A6 (fr) | Ameliorations apportees a l'efficacite du traitement de donnees et s'y rapportant. | |
EP3411821B1 (fr) | Procédé de stockage de contenus, procédé de consultation de contenus, procédé de gestion de contenus et lecteurs de contenus | |
FR2917518A1 (fr) | Procede de tri d'informations | |
WO2013153331A1 (fr) | Fichier de donnees de documentation avec niveaux de detail | |
FR3083891A1 (fr) | Procede d’echanges de donnees en un serveur et une pluralite de terminaux connectes clients | |
WO2005013145A2 (fr) | Procede permettant a un utilisateur de developper des applications informatiques appliquees a des donnees qualifiees dans un systeme de gestion de donnees (sgd) |