Single Class Object Model: ceci est un exercice de style minimaliste
et constructiviste consistant à concevoir un Modèle Objet autour d'une
seule et unique classe. Le but est qu'elle soit le plus agnostique
possible (le moins d'hypoythèses possible sur la façon dont elle sera
utilisée), tout en restant utilisable et apte à implémenter des
applications de complexité arbitraire (c'est l'intention tout du
moins...).
Le principe de base consiste:
- D'une part à reproduire un réseau sémantique sous forme de triplets,
comme dans le langage RDF ("The underlying structure of any expression
in RDF is a collection of triples, each consisting of a subject, a
predicate and an object")
- D'autre part à s'inspirer de la programmation fonctionnelle, le
langage LISP en particulier, dans lequel toute entité peux être
évaluée et retourner un résultat (du simple entier à l'algorithme).
Dans l'API (!!) il suffit donc d'une seule méthode: 'evaluate', qui
devra bien sûr être redéfinie dans des classes dérivées pour en
implémenter une application (Attention !! les classes dérivées ne
doivent ajouter pas de méthodes à l'API constituée par la classe
unique du modèle objet, sinon le paradigme de 'Single Class Object
Model' est détruit)
NB: J'ai commencé l'implémentation d'un prototype d'interpréteur Lisp
comme 'Proof Of Concept"
Sur GitHub:
https://github.com/terimakasi/scom