Utilisation des techniques de programmation orientée objet

De Metabolisme territorial
Aller à : navigation, rechercher

Types d'utilisateurs

L'objectif du SINAMET est de faciliter le stockage et la manipulation des données à propos du métabolisme des territoires. L'outil doit donc pour cela proposer un paradigme dont peuvent se saisir d'autres utilisateurs. Selon les compétences de ces utilisateurs, le paradigme n'est pas le même.

Le paradigme consiste à définir comment doit fonctionner le SINAMET pour qu'il puisse être utilisés

  • Utilisateurs Novices :
    • Cycle de l'information : Importation / Exportation
  • Utilisateurs Avancées :
    • Conception des traitements de données

Stocker et manipuler les données : ORM & DBI

Des utilisateurs avancés doivent pouvoir facilement implémenter de nouveaux algorithmes pour le traitement des données. Le SINAMET vient ici en ressource à ces utilisateurs en offrant un cadre qui facilite cette implémentation. Notre énumération des structures de données (Chapitre 2) nous amène à privilégier une base de données relationnelle (BDDR) pour stocker et accéder efficacement à des données, et le paradigme de la programmation orientée objet (POO) pour rendre plus intuitif le développement d'algorithmes sur des données complexes. Pour faire le lien entre les deux, nous choisissons d'implémenter un mapping objet-relationnel (ORM). Bien que les système de gestion de base de données relationnel-objet (SGBDRO) pourrait également permettre de lier BDDR et POO, ces systèmes sont encore peu répandus. Nous préférons opter ainsi pour des techniques plus communes et familières.

Décider d'implémenter un ORM permet d'abstraire la question du stockage des données à travers des objets synchronisée avec une BDD. Toutefois, cette approche ne facilite pas la construction des requêtes qui permettent d'aller rechercher des données dans la BDD, ce serait même plutôt le contraire. La recherche de données est pourtant l'opération la plus courante sur les BDD, la modification ou la suppression de données intervenant moins fréquemment.

Pour éviter aux utilisateurs d'avoir à construire des requêtes complexes qui nécessitent parfois plusieurs jointures (sans toutefois les en empêcher s'ils veulent vraiment le faire), nous conceptualisons une interface avec la base de données (Database Interface - DBI). Cette interface implémente des fonctions qui permettent d'ajouter, sélectionner ou supprimer des données sans avoir à construire de requête. Si toutes les configurations logiques entre les données ne sont pas forcément exploitable à travers la DBI, un nombre finalement assez restreint de type de requêtes revient assez fréquemment : obtenir un territoire, un acteur ou un OMES avec son nom ou son code, obtenir les flux d'un territoire, obtenir les territoires en lien avec un autres (frontaliers, divisions administratives). Ces requêtes sont ainsi pré-écrites au sein du SINAMET et accessibles à travers différentes fonctions :

DBI.insert(mtobjecttype, mapper)
DBI.get_one(mtobjecttype, code = ..., name = ...)
DBI.get_some(mtobjecttype, attribute_name = ..., attribute_value = ...)
DBI.get_all(mtobjecttype)
DBI.get_for(who, what)