02-08-2013, 02:44 PM
Citation :tu peux quand même récupérer le livre a posteriori (sinon la bibliothèque ne sert à rien).Justement, je pense que non (dans le cas d'un objet, pas d'une collection, sachant que je distingue les deux comme je distinguerait un atome d'une molécule).
Si tu prends du sel, et que tu le dissous dans l'eau, tu en perds la trace. Ensuite, tu fais évaporer l'eau (aka, la bibliothèque fait son petit bazar), et tu récupère à nouveau du sel.
Ok, tu auras la même masse (ou quantité) de sel (en supposant que seule l'eau s'est évaporée), mais rien ne te garantis que le sel récupéré est composé des mêmes atomes (pire, des mêmes électrons) que le sel initial.
Mon principe se situe à ce niveau là, en permettant de distinguer un objet "véritable" (ou "pur") comme l'eau saline, d'une simple collection (un sac avec une bouteille d'eau et une salière).
Donc, on ne "récupère pas le livre", mais on récupère un livre.
Peut-être que, oui, c'est "mal codé", au sens où ce n'est pas les conventions usuelles, mais cela devient très agréable à utiliser quand on est en présence de miriades d'objets. Si, par exemple, j'ai une carte de jeu qui, de base, est composée de cases, alors avec un modèle classique, je pourrait ajouter une case, puis la récupérer ensuite. Avec un modèle "atomique", j'ajoute une case, et je récupère une case, mais aucune garantie d'avoir les mêmes. Je peux alors changer, dans le contenu de ma carte, les cases par une fonction continue (heightmap) par exemple. En effet, à ce moment là, la case peut toujours être envoyée à la carte (la fonction continue sera modulée) et elle peut toujours être récupérée (calcul de la hauteur de la heightmap en un point). Mais je n'ai pas la garantie que ce sera la même case.
Quand tu dis "un objet gère une seule chose", il faudrait préciser ce que tu entends par "chose", car si une fonction ne doit faire qu'une seule chose, et qu'un objet ne doit faire qu'une seule chose, je ne vois pas comment un objet pourrait avoir la possibilité de définir plusieurs fonctions (ou méthodes)... Il ferait alors plusieurs "choses" O.o