Dans la plupart des langages POO, les objets sont généralement modifiables avec un nombre limité d'exceptions (comme par exemple les n-uplets et les chaînes en python). Dans la plupart des langages fonctionnels, les données sont immuables.
Les objets mutables et immuables apportent toute une liste d'avantages et d'inconvénients.
Il y a des langues qui essayent de marier les deux concepts, par exemple scala où vous avez (explicitement déclaré) des données mutables et immuables (corrigez-moi si je me trompe, ma connaissance de scala est plus que limitée).
Ma question est: Est -ce que complet immuabilité (de sic!) -Ie aucun objet ne peut muter une fois qu'il a été créé- aucun sens dans un contexte de POO?
Existe-t-il des conceptions ou des implémentations d'un tel modèle?
Fondamentalement, l'immuabilité (complète) et la POO sont-elles opposées ou orthogonales?
Motivation: En POO vous fonctionner normalement sur les données, le changement (muter) les informations sous - jacentes, en gardant les références entre ces objets. Par exemple, un objet de classe Person
avec un membre father
référençant un autre Person
objet. Si vous modifiez le nom du père, cela est immédiatement visible pour l'objet enfant sans besoin de mise à jour. Étant immuable, vous auriez besoin de construire de nouveaux objets pour le père et l'enfant. Mais vous auriez beaucoup moins de problèmes avec les objets partagés, le multi-threading, GIL, etc.