viernes, 13 de julio de 2007

¿Conoce usted qué significa desarrollar con Objetos?

Me dí cuenta que escribir en un blog, y además escribir algo serio no es "moco de pavo", hay que tener tiempo. Por eso decidí tomar una artículo que escribí como hace un año y que nunca publiqué, e ir posteandolo de a poco para ver como resulta.
El artículo es sobre un ejercicio que tomamos en Mercap para determinar el nivel técnico de las personas que se presentan para trabajar con nosotros. Espero lo disfruten.
--------

¿Conoce usted realmente qué significa desarrollar con objetos? Esta es una pregunta que he realizado durante mucho tiempo como gerente de desarrollo, a las personas que he entrevistado para trabajar conmigo y también a los alumnos que he tenido/tengo en la facultad. ¿Por qué realizo una pregunta tan básica? La realizo porque luego de tantos años de vida del paradigma de objetos (recuerden que el primer lenguaje de objetos fue Simula ’67, el 67 se debe a que fue releaseado en 1967!), luego de tantos años donde no se pone más en duda si el paradigma objetos es mejor que el estructurado (quizá no tantos porque esta dicotomía se empieza a dilucidar con el advenimiento de Java), aún se ven ejemplos de diseño y código que presentan revistas, libros, etc., donde la respuesta es claramente no, aún se ven lugares donde se “confunde” a la gente sobre el significado de los objetos, aún me sigo desilusionando con los candidatos de mis entrevistas.

Explicar QUE es el paradigma de objetos es una solución para este problema. Sin embargo ya se hizo tantas veces, ya se escribió tanto al respecto (aunque hay mucha basura dando vuelta) que no es mi intención repetirlo en un artículo (además de ser imposible por cuestiones de espacio). Cansado de dar explicaciones teóricas, voy a concentrarme esta vez en un ejercicio práctico, que le permitirá a usted contestar la pregunta presentada como título de este artículo; usted podrá decir “SI, se desarrollar con objetos”, o “NO, aún debo aprender más”.

Vamos por lo tanto a realizar un ejercicio sencillo, que lo utilizo en mis entrevistas y que rápidamente, una vez resuelto por el entrevistado, permite determinar si la persona en cuestión entiende o no de objetos. Este ejercicio es una simplificación de un parcial que varias veces hemos tomado en la materia de “Programación Orientada a Objetos” de la Facultad de Ciencias Exactas de la UBA. Su enunciado es el siguiente:

Realizar un sistema de facturación de llamadas telefónicas teniendo en cuenta los siguientes requerimientos:
1)
La facturación se realiza de manera mensual
2)
La facturación está compuesta por:
a.
Un abono mensual básico
b.
Consumo por llamadas Locales
c.
Consumo por llamadas Nacionales e Internacionales
3)
Las llamadas locales tienen distintos valores según la franja horaria en la que se realizan y el día. Para los días hábiles, de 8 a 20 hrs. el costo es de 0,20 centavos el minuto, mientras en el resto de las horas es de 0,10 centavos el minuto. Los sábados y domingos cuesta 0,10 centavos el minuto
4)
Las llamadas Internacionales tienen un costo distinto según el país al que se llame
5)
Las llamadas Nacionales tienen un costo distinto según la localidad a la que se llame

Consideraciones adicionales:

1)
No es necesario realizar una interfaz de usuario visual.
2)
No es necesario realizar persistencia de los datos (o sea, conexión a base de datos, archivos, etc.). Alcanza con simular los datos creándolos en memoria
3)
Como salida alcanza ver por pantalla como sería una factura (sin preocuparse por darle un formato especial)

De más está decir que este problema es una muy grande simplificación del problema de facturación que tienen las telefónicas, pero alcanza para hacer de este problema uno resoluble en un tiempo considerablemente corto (un par de horas).

Por favor, tómese por lo menos un par de minutos para pensar una solución. Piense qué objetos y clases tendría, cuál sería la responsabilidad de dichos objetos, etc. Nada complicado, solo un par de minutos.

-----------

La semana que viene empiezo a postear la solución! Tiene el fin de semana para pensarlo!! jaja.

No hay comentarios.: