Il existe une autre alternative, ce qui est l'approche utilisée par la STL du C++:
find(haystack.begin(), haystack.end(), needle)
Je pense que c'est un excellent exemple de C++ en criant "dans ta face!" à la POO. L'idée est que la POO n'est pas une balle en argent de toute nature; parfois, les choses sont mieux décrits en termes d'actions, parfois en termes d'objets, parfois ni et parfois les deux.
Bjarne Stroustrup a dit dans TC++PL que lors de la conception d'un système, vous devez vous efforcer de refléter la réalité sous la contrainte effective et efficace du code. Pour moi, cela signifie que vous ne devriez jamais vous suivez tout ce aveuglément. Réfléchir sur les choses à portée de main (la botte de foin, à l'aiguille) et le contexte, nous sommes dans (recherche, c'est ce que l'expression est d'environ).
Si l'accent est mis sur la recherche, puis à l'aide d'un algorithme (action) qui met l'accent sur la recherche (c'est à dire de manière flexible pour s'adapter à des meules de foin, des océans, des déserts, des listes chaînées). Si l'accent est mis sur la botte de foin, encapsuler la méthode de recherche à l'intérieur de la botte de foin de l'objet, et ainsi de suite.
Cela dit, parfois, vous êtes dans le doute et ont des périodes difficiles de faire un choix. Dans ce cas, être orientée objet. Si vous changez d'avis plus tard, je pense que c'est plus facile à extraire une action à partir d'un objet, puis de diviser une action pour les objets et les classes.
Suivez ces instructions et votre code sera plus clair et plus beau.