Objetos

  Ah, objetos... sí, claro, objetos... ¿qué prefiere Vd. el pqeiidjañdf de la izquierda o el pqeiidjañdf de la derecha que está orientado a objetos? Cualquier informático que se tenga a sí mismo por "moderno" elige el OO. Yo lo tengo claro si tengo que mandar el Curriculum a una empresa de informática lo titularé Curriculum Vitae Orientado a Objetos de Javi Tobal.

En serio, en esta página puede encontrar gratis las referencias necesarias para adentrarse en un mundo repleto de objetos. Porque, a pesar de todo y de todos, los objetos ayudan a hacer sistemas software de mayor calidad en menos tiempo y más baratos.

Por cierto, en Internet hay una revista mensual dedicada exclusivamente a los objetos que es realmente interesante: Object Currents.

Todos los libros sobre objetos de mi bibliografia

Contenido:

  • Métodos de análisis y diseño OO
  • Lenguajes de programación OO
  • Bases de datos OO
  • Patrones
  • Nota: como siempre las opiniones expresadas a continuación son mías y de nadie más. Mi propia experiencia es la que me anima a alabar algunos productos/conceptos/ideas y a repudiar otros.



    Métodos de análisis y diseño orientados a objetos

    No salga de casa sin un método. Aquí están los más famosos métodos de desarrollo orientados a objetos.

    OORAM

    Desde mi punto de vista cualquiera que esté buscando un buen método orientado a objetos para el diseño de software debería buscar en éste la solución a sus problemas. No es tan famoso como los demás, no verá sus iconos gráficos proliferar por revistas de programación y, seguramente, no podrá convencer a nadie que ser conocedor y practicante del OORAM sea algo útil a la hora de cambiar de trabajo. A pesar de todo ello, creo que éste es el único método de conozco que se puede trasladar a la práctica y obtener benficios con ello. La referencia obligada: el libro de Reenskaug.

    Método de Booch

    Booch es la estrella en esto de los objetos. No es el mejor, ni el que tiene más prestigio, ni el .... pero, como otros famosos en esto de la informática se ha hecho un hueco, ha consiguido fama y lo ha transformado en ... ¿un negocio? él sabrá. El método de Booch contiene una notación gráfica características (las famosas "nubecitas" que representan la frontera de una abstracción, un concepto que no tiene necesariamente bordes sencillos o simples.), un modelo estático, uno dinámico, diagramas de estados, etc.
    Desde mi punto de vista es "algo que hay que conocer" si se está en esto de los objetos, pero no es el mejor método. En su misma línea se encuentra OMT (aunque OMT, o la exposición que Rumbaugh hace del mismo, resulta más estructurado). En la segunda edición del libro de Booch el método se aproxima más al de Rumbaugh (el OMT) anunciando lo que se conoce como el método unificado. Yo, personalmente, sigo prefiriendo por encima de todos ellos el OORAM de Reenskaug.

    OMT

    Debido a Rumbaugh, este método sigue (o, mejor, coincide) en la línea del método de Booch. Resulta ser un método más coherente aunque, ultimamente, creo que esta apreciación se debe a que el libro de Rumbaugh es más fácil de leer que el de Booch.
    Desde mi punto de vista, éste es un buen método para empezar y abordar desde su visión el método unificado.

    Método unificado

    Este método es una evolución/unificación de los métodos de Booch y Rumbaugh. Tiene su origen al fichar Rational (la empresa de Grady Booch) a James Rumbaugh (creador del OMT). Como consecuencia de ello los señores Booch y Rumbaugh (y el no menos famoso Ivar Jacobson) se reunen en la misma empresa y amenazan con dinamitar el mundo de los objetos.
    Se prevé que en unos años todas las herramientas CASE soportarán el método unificado, todos los cursos sobre programación orientada a objetos versarán sobre el método unificado, en todas las universidades se enseñará el método unificado, etc. etc. : La historia de MS-DOS y WINDOWS llevada al mundo de los objetos.
    El método unificado aporta nuevos diagramas y la evolución lógica que el paso del tiempo aporta a todo en esta vida. En Rational se puede conseguir una versión previa (la última es la 0.8) de la documentación correspondiente a este método: ¡ojo! hay que conocer OMT y Booch antes de meterse con él. La referencia es: http://www.rational.com




    Lenguajes de programación orientados a objetos

    El último paso de todo proyecto suele ser (si no el primero) la programación de uno o varios programas que lleven a la práctica el universo de objetos creado, plasmado o lo que sea, durante el diseño. Los lenguajes que mejor se prestan a ello son los siguientes:

    C++

    El lenguaje más extendido en proyectos orientados a objetos (así como en proyectos no orientados a objetos en absoluto).
    Pulsa aquí para una discusión completa del C++
     
     

    Smalltalk

    Este lenguaje es uno de los más apreciados por los "integristas de los objetos". Es un lenguaje orientado a objetos que no admite otro tipo de estructura que no sean objetos y mensajes entre ellos. El conocimiento de Samalltalk resulta, desde mi punto de vista, un ejercicio imprescindible para aplicar la programación orientada a objetos a otros lenguajes.
    Existen entornos de Smalltak para todos los sistemas operativos (OS/2, Microsoft Windows, UNIX, MS-DOS, LINUX, etc.). Se trata de un lenguaje interpretado. La herramienta más destacable es VisualAge/Smalltalk de IBM, empresa que está apostando bastante fuerte por este lenguaje. La mejor manera de aprender Smalltalk: el libro Smalltalk-80: the language.
     

    Java

    Este lenguaje está despertando un interés increible. Se trata de un lenguaje de propósito general orientado a objetos basado en C++. Además es un lenguaje multiplataforma, interpretado, que puede ejecutar partes de un programa "bajo demanda", que puede integrarse en un navegador de Internet para añadir capacidades a éste, etc.
    Pulsa aquí para ir a mi página personal sobre Java
     

    Bases de datos orientados a objetos

    ¿por qué existen bases de datos orientadas a objetos?. El simil gráfico, por repetido, no deja de ser la mejor aproximación al problema:
    Imáginese que su garaje se compusiese de estanterias muy bien ordenadas en cada una de las cuales hay una caja de cartón cúbica con un cartel: "tornillo", "manilla puerta", "rueda", "bujía", "palanca de cambios", etc. El garaje es lo último en tecnología, es capaz de localizar una caja en... 12 milicentones. Es capaz de asociar todos los tornillos de una caja con las arandelas de otra con las tuercas correspondientes de una tercera caja en... 54 milicentones más. De manera que el vendedor del garaje le recomienda que realice el software correspondiente para desarmar el coche y guardarlo en el garaje por las noches y volver a armarlo a la mañana siguiente. Vd. piensa que es más fácil guardar el coche entero pero el vendedor le dice que lo importante es el tiempo de búsqueda de una pieza, el número de tuercas iguales que puede guardar en una caja, que empiece a aprender a "Normalizar ", el vendedor.... es un vendedor de bases de datos relacionales !!!.
    Si el ejemplo le ha parecido absurdo ya es hora de que se olvide de las formas normales y abra los ojos a una nueva era en el almacenamiento de información ... ¡NO! mejor piense en el almacenamiento de modelos de objetos.

    Un par de referencias útiles:

    Object Databases: the essentials.
    El libro más ameno que puede encontrar para introducirse en el tema. No avance hasta que se lo haya leído.
    Object data management: object-oriented and extended relational database systems.
    Otra buena introducción al tema.
    Object-oriented databases and their applications to software engineering.
    Un libro fácil de leer con una buena bibliografía de "época".
    http://www.omg.org
    El OMG (Object Manager Group) define alguno de los estándares más importantes en cuanto a gestión y manejo de objetos. El estándar CORBA, cuya lectura recomiendo, especifica los interfaces necesarios para el manejo y compartición de objetos comunes desde entorno, arquitecturas y lenguajes diferentes.
    comp.databases.object
    Este grupo de discusión es muy ameno y permite ponerse rápidamente al día respecto del estado de la tecnología actual.


    Fabricantes de bases de objetos

    Sin embargo, las mejores referencias son las aportadas por los propios fabricantes de sistemas de bases de datos orientadas a objetos. A continuación destaco los productos más interantes desde mi punto de vista.

    ObjectStore

    ODI es la empresa que más factura (sin ser la que más licencias ha vendido) en el campo de las bases de objetos. ObjectStore es la base de objetos de mayores prestaciones (y la más cara). Estructura cliente/servidor. Librerías para C++. Múltiples plataformas. En definitiva el líder de este mercado que "le puede venir grande" a la mayoría de los proyectos.

    Objectivity

    Base de datos orientada a objetos PURA. Muy potente: tolerancia a fallos, altas prestaciones, cientos de GigaBytes de datos, etc. Multiplataforma (Windows NT, UNIX, VMS, Mac, etc.). Interfaz para C++ y otros lenguajes. Realmente uno de los productos más potentes. Especialmente indicado para desarrollar grandes sistemas. Destaca por su naturaleza distribuída. Uno de mis productos de ensueño.

    Gemstone

    Estructura cliente/servidor. Es uno de los productos más populares entre los desarrolladores. El lenguaje de manipulación y definición de datos es Smalltalk.

    Versant

    Sistema muy resistente. Toma las declaraciones de los objetos directamente de los ficheros .H. Tiene capacidad Multithread. Estructura cliente/servidor.

    POET

    Esta base de datos utiliza un enfoque peculiar: el programador añade a las declaraciones de clases en C++ algunas palabras clave nuevas: persistent, ondemand, transient, etc. Estas declaraciones de clase se pasan por un precompilador que genera funciones de lectura/escritura de los objetos en la base de datos. No es un enfoque muy atractivo.

    Omniscience

    La más básica (y barata) base de datos orientada a objetos. Tiene un kernel muy compacto que permite ejecutar la parte cliente y la parte servidora en un mismo equipo. Un producto interesante (y recomendable).

    Subtleware

    Interface que ofrece persistencia de objetos basada en bases de datos relacionales. Básicamente permite almacenar objetos en cualquier base de datos "mapeando" los objetos de la aplicación en un esquema relacional generado automáticamente.

    Persistence

    Herramienta para "mapear" objetos de un esquema orientado a objetos a un esquema relacional típico. Soporta Oracle, Informix, Sybase, Ingers y ODBC.
     

    Patrones de diseño

    Lo último en diseño orientado a objetos: los patrones. A parte de un montón de libros sobre el tema, hay un site en Internet que no debe dejar de visitar si está interesado en el tema de los patrones (recuerde que no puede dejar de estar interesado en los patrones si le interesa la programación orientada a objetos):




    Autor: Javi Tobal
    Página personal: http://www.arrakis.es/~tobal/
    Última actualización: lunes, 30 agosto 1999
    (Los comentarios son bien recibidos)