Intentaré ser general. Por ejemplo, tenemos la clase medioambiente, la cual tiene un conjunto (un array para que pueda ser indexeable) de plantas, en este caso pinos, palmeras etc. Suponiendo que un objeto planta llama a la clase medioambiente para que plante una, en este caso el identificador de planta sería pino. Hay alguna manera de saber desde Medioambiente qué planta (en este caso pino) le está diciendo que plante? Sin usar parámetros
Hola, no sé si estoy entendiendo bien.
En primer lugar, por qué necesitás saber que tipo de planta es? No es algo común que se pregunte por el tipo de un objeto, en todo caso deberías usarlo, dado un contexto, de la forma en la que esperas y el objeto en teoría debería saber responder ese mensaje, si no hay algo mal. Igual recuerda que en SmallTalk no hay tipos, si bien se puede preguntar por el "kind" de un objeto me parece que Pharo te marca como "algo raro".
En este caso entiendo que planta es una clase madre y los tipos de plantas son especializaciones, relación de herencia (es un). Si pensás aplicar herencia para el tp0, te digo que no es necesario, tranquilamente se puede resolver sin herencia además creo que no se vio ese tema todavía en la teórica.
Sobre saber que el mensaje de MedioAmbiente ("medioAmbiente plantar") fue llamado desde alguna clase en particular, creo que no es posible saberlo ya que es información que no controla la clase, nunca hice algo parecido. Por ahí está en la forma en como lo usas lo que yo haría es pasarle una Planta a Medio Ambiente para que lo plante.
Quedaría algo asi:
medioAmbiente := MedioAmbiente new.
unaPlanta := Planta new.
medioAmbiente plantar: unaPlanta.
Saludos.
PD: No sé si llegué a responder tu duda.