|
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.
-
- 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.
-
- 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.
-
- 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.
-
- Sistema muy resistente. Toma las declaraciones de
los objetos directamente de los ficheros .H.
Tiene capacidad Multithread. Estructura
cliente/servidor.
-
- 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.
-
- 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).
-
- 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.
-
- Herramienta para "mapear" objetos de un
esquema orientado a objetos a un esquema
relacional típico. Soporta Oracle, Informix,
Sybase, Ingers y ODBC.
|