Citation :Oui, parce que ta définition "Immutable + Egalité sur tout ou une partie des attributs" n'est pas cohérente, puisque de ce que tu dis, en ajoutant "trop" de comportements, ce n'est plus un VO. Mais s'il y a des comportements, ça peut quand même être un VO.Tu extrapoles beaucoup. Encore une fois, je n'ai jamais dit qu'il ne devait y avoir que quelques comportements ou qu'il ne devait pas en posséder 'de trop'. Les limites que je m'autorise sont celles de ne traiter QUE la valeur (attribut) qu'il contient, mais de pouvoir la retourner (sans la transformer) comme je le souhaite (int, string, devise, .........) et la comparer.
La définition n'est donc pas exacte. Si un objet qui a "trop" de comportements n'est plus un VO, mais qu'un VO peut avoir "quelques" comportements, alors ta définition doit être précisée (et je pense qu'elle sera alors très subjective, à cause du "trop").
Citation :De plus, si un VO = {Immutable + Egalité sur des attributs}, alors un DTO immutable={Immutable + Egalité sur les attributs + No Behavior} EST un VO particulier (mais tout VO n'est pas un DTO immutable, puisque le VO peut avoir des comportements, aka BIE est inclus dans IE).Si tu veux... J'ai déjà donné réponse plus haut à plusieurs reprises.
Oui, je stockerai ça en One to Many (je préfère, c'est plus clair ). Dans ton blog, tu as bien plusieurs articles dans la même catégorie non ? Est-ce si dur que cela à gérer ? Je ne comprends pas. Si je veux faire déménager toutes ces personnes, il suffit d'un UPDATE sur ma BDD..
Pour le dernier paragraphe, j'ai la sensation que tu oublies que nous parlons d'un langage dynamique. Pourquoi aurais-je besoin d'écrire plusieurs fois partout dans mon code le nom d'un pays ? A la limite, une fois dans une classe ou un référential, mais après ? Et si tu parles de la BDD, idem, un UPDATE et c'est fini..
Edit : Pour aller plus vite, tu peux clairement nous dire comment toi tu vois les choses et les solutions que tu mettrais en place, non ?