[Programación] RV: [Fwd: Tostadora orientada a objetos]

programacion@lugro.org.ar programacion@lugro.org.ar
Thu, 16 Oct 2003 09:20:12 -0300


-----Mensaje original-----
De: mariano [mailto:montever@netcoop.com.ar] 
Enviado el: jueves 16 de octubre de 2003 2:55
Asunto: [Fwd: Tostadora orientada a objetos]


-----Mensaje reenviado-----


> 
> La Tostadora Orientada al Objeto
> Érase una vez, en un reino no muy lejano, un rey convocó a dos de sus
> consejeros para una prueba. Les mostró un brillante rectángulo de metal
con
> dos ranuras en la tapa, una ruleta de control, y una palanca.
> -¿Qué creen ustedes que es esto?
> Uno de los consejeros, un ingeniero eléctrico, contestó primero:
> - Es una tostadora - dijo.
> - ¿Cómo diseñarías un ordenador empotrado para ella? - preguntó el
> rey.
> - Usando un microcontrolador de cuatro bits - respondió el consejero
> escribiría un sencillo programa que tomara los datos de la ruleta de
> tueste, y cuantificara su posición en uno de 16 posibles grados de
> oscuridad, del blanco como la nieve al negro como el carbón. El programa
> utilizaría ese nivel de oscuridad como índice de un vector de 16 elementos
> que contendría los valores iniciales del temporizador. Entonces activaría
> los elementos calefactores e inicializaría la cuenta del temporizador con
> el
> valor seleccionado en el vector. Una vez hubiera transcurrido el intervalo
> de tiempo asociado, apagaría las resistencias y expulsaría la tostada por
> arriba. Vuelva la semana próxima, y le mostraré un prototipo completamente
> funcional.
> El segundo consejero, un desarrollador de software, inmediatamente
advirtió
> el peligro que suponía pensar de un modo tan miope. Entonces dijo:
> - Las tostadoras no sólo convierten el pan en tostada; también se
> utilizan para calentar galletas congeladas... Lo que Vuestra Majestad ve
> ante sí es realmente un Calentador de Desayunos. A medida que los súbditos
> de su reino vayan siendo más sofisticados, exigirán mayores capacidades.
> Necesitarán un Calentador de Desayunos que pueda también cocinar
> salchichas,
> freír tocino, y hacer huevos revueltos. Una tostadora que solamente haga
> tostadas quedará pronto obsoleta. Si no pensamos en el futuro, tendremos
> que
> rediseñar completamente la tostadora en apenas unos pocos años.
> Teniendo esto en cuenta, podemos formular una solución más
> inteligente al problema. Primero, creemos una clase de Alimentos para
> Desayuno. Especialicemos esta clase en subclases: Cereal, Cerdo, y Aves de
> Corral. El proceso de especialización debe repetirse con Cereal, que
> quedará
> dividido en Tostadas, Bollos, Crepes y Galletas; Cerdo, que se divide en
> Salchichas, Torrezno y Tocino; y Aves, que se divide en Huevos Revueltos,
> Huevos Duros, Huevos Escalfados, Huevos Fritos, y varias clases de
> Tortilla.
> La clase de Tortilla de Jamón y Queso requiere una atención
> especial, pues debe heredar características de las clases Cerdo, Lácteos y
> Aves de Corral. Así pues, podemos ver que el problema no puede resolverse
> correctamente sin Herencia múltiple. En tiempo de ejecución, el programa
ha
> de crear el objeto apropiado y enviar un mensaje a dicho objeto que diga:
> Cocínate a ti mismo".
> La semántica de este mensaje depende, por supuesto, de la clase de
> objeto, de modo que tenga un significado diferente para un pedazo de
> o para unos huevos revueltos.
> Repasando el proceso hasta ahora, vemos que la fase de Análisis ha
> revelado que el requisito fundamental es cocinar cualquier clase de
> Alimento
> para el Desayuno. En la fase de Diseño, hemos descubierto algunos
requisitos
> Herencia múltiple. Por supuesto, los usuarios no querrían que los huevos
se
> quedasen fríos mientras tocino se está friendo, así que se requiere
> capacidad de procesamiento simultáneo, también.
> No debemos olvidar el Interfaz de Usuario. Usar una palanca para
> bajar el alimento carece de flexibilidad, y la ruleta de control es
confusa.
> Los usuarios no comprarán el producto a menos que tenga un interfaz
> amigable, gráfico. Cuando se enchufe la Cocina para Desayunos, los
usuarios
> deben ver una bota de vaquero en la pantalla. El usuario hará clic sobre
> ella, y el mensaje "Botando UNIX v.8.3 " aparecerá en la pantalla. (UNIX
> 8..3
> debería haber salido para cuando el producto llegue al mercado). El
usuario
> podrá desplegar un menú y hacer clic sobre los alimentos que desee
cocinar.
> Al haber tomado la sabia decisión de especificar primero el software
> en la fase de Diseño, lo único que queda es escoger una plataforma
hardware
> adecuada para la fase de Implementación. Un Pentium de Intel con 48MB de
> memoria, un disco duro de 1.2GB, y un monitor SVGA debería ser suficiente.
> Si se elige un lenguaje orientado al objeto, con capacidad de multitarea,
> que soporte Herencia múltiple y tenga un Interfaz Gráfico incorporado,
> escribir el programa será cosa de coser y cantar.
> Sabiamente, el rey hizo decapitar al desarrollador de software, y todos
> vivieron felices para siempre.
>