Queria saber si enviar los mensajes y parametros del usuario como parametros de un mensaje a la clase que se ocupa de filtrar viola los principios de POO, o estaria bien?
Hola,
Habria que ver el caso particular, pero respondiendo mas en general aca abajo.
Resumen corto: como principio general, tratar de que cada clase "sepa" lo menos posible de como funciona el resto.
Respuesta mas larga, con un ejemplo:
Suponiendo que tenemos una lista "personas" que contiene objetos de tipo "Persona" y que querramos filtrar las personas que pueden votar, podriamos hacer esto:
personasQuePuedenVotar := personas select: [ :persona | (persona edad) >= 16 ].
Otra forma seria encapsular en la clase "Persona" la condicion en lugar de hacer que persona responda su edad, y filtrarlas asi:
personasQuePuedenVotar := personas select: [ :persona | persona puedeVotar ].
Lo bueno de la 2da opcion es que si mas adelante hay otros atributos de la persona a tener en cuenta ademas de la edad, pueden implementarse directamente en la clase Persona sin que el resto de las clases necesiten acceder a mas atributos de los objetos de tipo Persona.
Saludos
Eugenio
Claro, la idea seria encapsular también:
personas select: [ :persona | persona puedeVotar ].
Y mandarle un mensaje a la clase que filtra con: la colección personas y la firma del mensaje (puedeVotar)