Informalmente, la forma general de esta afirmación es:
Si el objeto candidato X “tiene” todas las características distintivas de la clase C, entonces X es una instancia de C.
En un lenguaje un poco más técnico, estamos hablando de un predicado (es decir, una función con valores booleanos): isA (C: clase, X: objeto) => booleano que prueba el cumplimiento de características de X con referencia a C.
Definamos una “característica” como una tupla (A, V) donde A es un identificador para un atributo, y V representa un valor para ese atributo.
Entonces, en el mundo (agradablemente simple) de su ejemplo, el conjunto de características definitorias de la clase Duck podría modelarse como: {(“walkingStyle”, “waddle”), (“vocalisationDescriptor”, “quack”)} .
Esto proporcionaría suficiente materia prima para nuestro predicado isA () para:
Convicción: ¿Hay alguna razón secular / no religiosa para ayunar?
¿Dónde compro una buena pizza en Nueva York?
¿Cuáles son los mejores restaurantes de Limerick?
- Devuelve verdadero para una X que es un objeto que tiene un conjunto de características que coincide o es un superconjunto de eso para Pato.
- Devuelve falso para una X que tenga un conjunto de características que especifique valores distintos a los especificados por Duck para los atributos “walkingStyle” y “vocalisationDescriptor”.
- Manejar información incompleta sobre el conjunto de características de X basando el valor de retorno en las respuestas a las preguntas (por ejemplo, “¿Grazna?” / “¿Vaciló?”) – aunque ya vemos que nuestro modelo necesita llevar más información sobre el tipo de cada atributo con el fin de formular preguntas que suenan sensatas (por ejemplo, “¿ Tiene plumas y un pico?”).
(Por supuesto, es un poco más complicado que esto. Por ejemplo, nuestro modelo negaría que un pato asado es un pato, sería incapaz de reconocer a un pato como un pato, sería propenso a confirmar que los niños pequeños son patos, etc. etcétera etcétera).