Question

Je suis un peu confus, donc la question est un peu déroutante. TL; DR: Comment mélanger STL et OOP?

Du commentaire à Meilleur aperçu des paradigmes C ++ modernes? et http://www.boost.org/community/generic_programming.html Il n'y a pas grand-chose à propos de la programmation axée sur les objets. (Boost Les directives mentionnent les générateurs d'objets).

Lors de la planification d'un programme, il semble que STL et les objets devraient bien s'adapter. Vous pensez à un algorithme et comment faire les choses, alors vous pensez à ce que vous voulez travailler et à quelles propriétés / caractéristiques ils ont. Vous exprimez ces choses en termes de tuples et de conteneurs et vous y appliquez des algorithmes. De ma compréhension, c'est un style de pensée STL.

Maintenant, c'est là que les objets entrent en jeu. Ce sont des choses que vous faites avec qui contiennent des données, des algorithmes qui modifient ces données et ces interfaces. Mais cela chevauche l'idée de STL où vous séparez les données et les algorithmes.

Dans OO, vous combinez des données et des algorithmes et dans STL vous les séparez.

Bien que les STL mathématiquement et génériquement aient plus de sens (lorsque vous pouvez appliquer l'algorithme à n'importe quoi), il est plus facile de penser conceptuellement dans le style OO lorsque vous avez beaucoup d'objets et d'algorithmes différents - vous obtenez une meilleure organisation. Par exemple, de style QT Défenseurs utilisant des interfaces minimales et orthogonales spécifiques à une classe par opposition aux algorithmes généraux. J'ai dit spécifique car leurs objets sont différents et ils demandent des interfaces minimales, ce qui signifie que les objets ne partageront pas les mêmes interfaces.

La question est donc: "Pouvez-vous vous en sortir avec STL en C ++ moderne ou devriez-vous utiliser des objets? Et si vous devez utiliser des objets, comment?"

Autres questions pertinentes à Stack Overflow:

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top