Este viejo chiste ha estado circulando en Internet por algún tiempo, bajo el nombre de “La tostadora orientada a objetos” o “La tostadora del rey”
Érase una vez, en un reino no muy lejos de aquí, un rey convocó a dos de sus asesores para una prueba. Les mostró a ambos una caja de metal brillante con dos ranuras en la parte superior, una perilla de control y una palanca.
“¿Qué crees que es esto?”
Un asesor, un ingeniero, respondió primero. “Es una tostadora”, dijo.
- ¿Sonia Gandhi merece un Bharat Ratna?
- ¿Qué es lo más ridículo que le has dicho a un niño?
- ¿Qué es lo más rudo que has hecho?
- ¿Con qué tramas de Seinfeld te puedes identificar en la vida real?
- ¿Cuáles son algunos de los mejores chistes sobre los políticos indios?
El rey preguntó: “¿Cómo diseñarías una computadora integrada para él?”
El ingeniero respondió: “Usando un microcontrolador de cuatro bits, escribiría un programa simple que lea la perilla de oscuridad y cuantifique su posición a uno de los 16 tonos de oscuridad, desde blanco como la nieve hasta negro carbón. El programa usaría ese nivel de oscuridad como el índice de una tabla de valores de temporizador inicial de 16 elementos. Luego encendería los elementos calefactores y comenzaría el temporizador con el valor inicial seleccionado de la tabla. Al final del tiempo de retraso, apagaría el calor y estallaría el brindis. Vuelve la semana que viene y te mostraré un prototipo funcional “.
El segundo asesor, un informático, reconoció de inmediato el peligro de un pensamiento tan miope. Él dijo: “Las tostadoras no solo convierten el pan en tostadas, sino que también se usan para calentar gofres congelados. Lo que ves antes es realmente una cocina para el desayuno. A medida que los temas de tu reino se vuelvan más sofisticados, exigirán más capacidades Necesitarán una cocina para el desayuno que también pueda cocinar salchichas, freír tocino y hacer huevos revueltos. Una tostadora que solo hace tostadas pronto quedará obsoleta. Si no miramos hacia el futuro, tendremos que rediseñar completamente tostadora en solo unos años.
Con esto en mente, podemos formular una solución más inteligente al problema. Primero, cree una clase de alimentos para el desayuno. Especialice esta clase en subclases: granos, carne de cerdo y aves de corral. El proceso de especialización debe repetirse con granos divididos en tostadas, muffins, panqueques y waffles; carne de cerdo dividida en salchichas, enlaces y tocino; y aves de corral divididas en huevos revueltos, huevos duros, huevos escalfados, huevos fritos y varias clases de tortillas.“La clase de tortilla de jamón y queso merece especial atención porque debe heredar características de las clases de carne de cerdo, lácteos y aves de corral. Por lo tanto, vemos que el problema no puede resolverse adecuadamente sin herencia múltiple. En el tiempo de ejecución, el programa debe crear el objetar y enviar un mensaje al objeto que diga: “Cocina tú mismo”. La semántica de este mensaje depende, por supuesto, del tipo de objeto, por lo que tienen un significado diferente para una tostada que para los huevos revueltos.
“Al revisar el proceso hasta el momento, vemos que la fase de análisis ha revelado que el requisito principal es cocinar cualquier tipo de comida para el desayuno. En la fase de diseño, hemos descubierto algunos requisitos derivados. Específicamente, necesitamos un lenguaje orientado a objetos con herencia múltiple. Por supuesto, los usuarios no quieren que los huevos se enfríen mientras el tocino se fríe, por lo que también se requiere un procesamiento concurrente.
“No debemos olvidar la interfaz de usuario. La palanca que baja la comida carece de versatilidad y la perilla oscura es confusa. Los usuarios no comprarán el producto a menos que tenga una interfaz gráfica fácil de usar.
“Cuando la cocina de desayuno está enchufada, los usuarios deberían ver un arranque de vaquero en la pantalla. Los usuarios hacen clic en él y aparece el mensaje ‘Arrancando UNIX v. 8.3’ en la pantalla. (UNIX 8.3 debería estar apagado para cuando el producto salga) al mercado.) Los usuarios pueden desplegar un menú y hacer clic en los alimentos que desean cocinar.
“Habiendo tomado la sabia decisión de especificar el software primero en la fase de diseño, todo lo que queda es elegir una plataforma de hardware adecuada para la fase de implementación. Un Intel 80386 con 8 MB de memoria, un disco duro de 30 MB y un monitor VGA debería ser suficiente Si selecciona un lenguaje multitarea, orientado a objetos que admite herencia múltiple y tiene una GUI incorporada, escribir el programa será muy fácil. (Imagine la dificultad que habríamos tenido si hubiéramos permitido tontamente una estrategia de diseño de primer hardware para encerrarnos en un microcontrolador de cuatro bits!) “.
El rey hizo que el informático fuera arrojado al foso, y todos vivieron felices para siempre.