Il n'y a pas de règle absolue. Un problème est mieux résolu avec la POO lorsque vous êtes meilleur pour résoudre les problèmes et penser dans une mentalité OO. L'orientation objet n'est qu'un outil parmi d'autres qui est apparu en essayant de faire de l'informatique un meilleur outil pour résoudre des problèmes.
Cependant, cela peut permettre une meilleure réutilisation du code et peut également conduire à un code plus clair. Mais bien souvent ces qualités hautement louées sont, en réalité, de peu de valeur réelle. L'application de techniques OO à une application fonctionnelle existante peut vraiment causer beaucoup de problèmes. La compétence réside dans l'apprentissage de nombreuses techniques différentes et dans l'application de la plus appropriée au problème à résoudre.
OO est souvent cité comme une solution de type Nirvana pour le développement de logiciels, mais il arrive souvent qu'il ne soit pas approprié de l'appliquer au problème en question. Cela peut, assez souvent, conduire à une ingénierie excessive d'un problème pour atteindre la solution parfaite, alors que souvent ce n'est vraiment pas nécessaire.
Essentiellement, la POO n'est pas vraiment de la programmation orientée objet, mais mappe la pensée orientée objet vers un langage de programmation capable de prendre en charge les techniques OO. Les techniques OO peuvent être prises en charge par des langages qui ne sont pas intrinsèquement OO, et il existe des techniques que vous pouvez utiliser dans les langages fonctionnels pour tirer parti des avantages.
A titre d'exemple, je développe des logiciels OO depuis environ 20 ans maintenant, donc j'ai tendance à penser en termes OO lors de la résolution de problèmes, quel que soit le langage dans lequel j'écris. Actuellement, j'implémente le polymorphisme en utilisant Perl 5.6, qui ne le supporte pas nativement. J'ai choisi de le faire car cela fera de la maintenance et de l'extension du code une simple tâche de configuration, plutôt qu'un problème de développement.
Je ne sais pas si c'est clair. Il y a des gens qui sont durs au tribunal OO et il y a des gens qui sont durs au tribunal fonctionnel. Et puis il y a des gens qui ont essayé les deux et essaient de tirer le meilleur de chacun. Ni l'un ni l'autre n'est parfait, mais les deux ont de très bons traits que vous pouvez utiliser quelle que soit la langue.
Si vous essayez d'apprendre la POO, ne vous concentrez pas uniquement sur la POO, mais essayez d'utiliser l'analyse orientée objet et les principes généraux de l'OO pour tout le spectre de la solution au problème.