Wikipédia abstraite/Prérequis pour la création d’objets
Cette page est actuellement une ébauche. Plus d’informations à ce sujet sont peut-être disponibles sur la page de discussion. Admins de traduction : en principe, les brouillons ne doivent pas être marqués pour traduction. |
- Wikifunctions conservera un nombre divers d’objets dans son principal espace de noms.
Chaque objet doit avoir exactement un type et habituellement le type ne changera pas.
- Selon son type, l’objet peut avoir des clés qui peuvent avoir des valeurs.
- Chaque valeur est à son tour un autre objet (mais le type de cet objet peut être contraint par la définition du type de l’objet encapsulant la clé donnée).
- Les types peuvent être créés et maintenus (et changés) par la communauté.
Par exemple : supposons que nous voulons créer un objet de type « Date dans le calendrier grégorien » pour représenter une date telle que le 7 mai 1945.
- Le type Date peut déclarer qu’il a une clé pour le mois (une autre pour l’année, une autre pour le jour) et la valeur de la clé «mois » serait du type « Mois dans le calendrier grégorien ».
- Ce type serait à son tour une énumération avec douze valeurs possibles, de janvier à décembre.
Les valeurs elles-mêmes peuvent être assez complexes et parfois récursives, aussi la structure entière peut devenir assez grande et lourde.
La question de conception est :
- Comment permettre de créer (et visualiser ou modifier) facilement les objets ?
Voici les étapes :
- Le contributeur souhaite créer un objet.
- Il lui faut d’abord sélectionner le type de l’objet à créer. La liste des types possibles peut être assez longue et les contributeurs peuvent créer de nouveaux types.
- Selon le type sélectionné, le contributeur doit fournir des valeurs pour toutes les clés de propriété auxquelles il souhaite ou doit fournir des valeurs.
- Certaines clés peuvent être facultatives ou avoir des valeurs par défaut.
- Certaines clés peuvent prendre des listes d’objets, d’un type spécifique ou pas.
- Chaque clé prend un autre objet. Souvent le type de l’objet que prend chaque clé est déterminé par les types qui définissent la clé, aussi nous savons déjà que cette valeur doit être d’un type spécifique.
- Certains types peuvent avoir nombre très réduit de valeurs possibles (par ex., un Booléen doit être vrai ou faux, un mois du calendrier grégorien doit être de janvier à décembre).
- Certains types prennent un nombre bien plus élevé de valeurs possibles (par ex. selon la langue prise en charge par MediaWiki).
- Certains types peuvent avoir un nombre non limité de valeurs possibles (par ex., une chaîne peut prendre toute valeur données par l’utilisateur, un nombre peut être tout valeur numérique donnée par l’utilisateur).
- Presque partout où nous pouvons entrer une valeur nous pouvons également entrer un appel de fonction.
- Un appel de fonction fait référence à une fonction qui retourne une valeur du type nécessaire et qui peut prendre ou pas un certain nombre d’arguments avec des types spécifiques.
- Chaque argument a un nom (en fait, les appels de fonction avec arguments ressemblent beaucoup a des types avec clés et peuvent utiliser la même conception.)
- Les valeurs d’argument peuvent à leur tour être des appels de fonction.
Pour donner un exemple : supposons que nous entrons une date, comme établi précédemment.
- Lorsque nous arrivons à la sélection de la valeur pour la clé « mois », au lieu de sélectionner un des douze objets de type « mois du calendrier grégorien », nous pourrions également entrer un appel de fonction, par ex. pour « obtenir le mois d’une date » avec un unique argument prenant une date grégorienne.
- Cet argument serait à son tour un appel de fonction, par ex. pour « convertir une date du calendrier islamique en calendrier grégorien », qui à son tour prend un argument qui est une « date du calendrier islamique » et qui aurait ses propres clés qui doivent alors être complétées.
- Ceci serait stocké dans la structure complète et non pas changé automatiquement en juste « mai », aussi il nous faut afficher la structure et la rendre modifiable à nouveau.
Parfois, un argument ou une clé peut prendre une valeur d’un type quelconque. Dans ce cas, il nous faut permettre au contributeur de d’abord sélectionner le type avant d’entrer la valeur.
Idéalement, l’interface devrait fonctionner réellement bien sur mobile :
- Les objets forment toujours des arbres.
- Idéalement nous pouvons réduire les branches de l’arbre, afin de se concentrer à certaines parties de l’objet à visualiser et le modifier.