Professional Documents
Culture Documents
El modelo de objetos
La tecnología orientada a objetos se basa en en los sólidos fundamentos de ingeniería, cuyos elementos
reciben el nombre global modelo de objetos. El modelo de objetos abarca los principios de abstracción,
encapsulación, modularidad, jerarquía, mecanografía, concurrencia y persistencia. Por sí mismos,
ninguno de estos principios son nuevos. ¿Qué es importante sobre el modelo de objetos es que estos
elementos es presentada juntos de una manera sinérgica. Que no haya duda de que el diseño orientado a
objetos es fundamentalmente diferente a los enfoques tradicionales de diseño estructurado: Se requiere
una forma diferente de pensar acerca de la descomposición, y produce arquitecturas de software que
están alejadas de diseño estructurado.
#########################################################################
• Primera generación de lenguajes(1954-1958)
#########################################################################
Esta primera genera generación de lenguaje de alto nivel representó por lo tanto un paso de
acercamiento al espacio del problema, y un paso de alejamiento de la máquina que había debajo.
Nuestro gran interés es en los lenguajes basados en objetos y en los orientados a objetos, que desde
1990 pocos lenguajes han emergido en esta categoría, entre ellos están Java, C++
El análisis orientado a objetos es un método de análisis que examina los requisitos desde la perspectiva
de las clases y objetos que se encuentran en el vocabulario del dominio del problema
Objetos
Los objetos son cosas reales dentro de un sistema que ocupan un lugar y espacio determinado, son
entidades tangibles. Los objetos llegan a ser aquellas entidades que se mencionan al principio. Los
objetos “un papel bien definido en el dominio del problema.
Clases
Las clases son un conjunto de reglas bajos que hacen las veces de dominios (o campo de actividad)
para un objeto. En otras palabras las clases están compuestas por objetos de las mismas características.
Las clases como tales no existen, solo nos aportan los datos de cuáles son los métodos que pueden
implementar los objetos que se contienen en ella, cual es su comportamiento y cual relación poseen con
otros objetos.
Sin embargo el paradigma no se limita a identificarlos, hay otros elementos que intervienen en este
proceso entre ellos están la abstracción, encapsulación, modularidad, jerarquía, tipos, concurrencia y
persistencia.
Abstracción
El significado de la abstracción. La abstracción es una de las vías fundamentales por la que los
humanos combatimos la complejidad. Hoare sugiere que «la abstracción surge de un reconocimiento de
las similitudes entre ciertos objetos, situaciones o procesos del mundo real, y la decisión de
concentrarse en esas similitudes e ignorar por el momento las diferencias». Shaw define una
abstracción como «una descripción simplificada o especificación de un sistema que enfatiza algunos de
los detalles o propiedades del mismo mientras suprime otros. Una buena abstracción es aquella que
enfatiza detalles significativos al lector o usuario y suprime detalles que son, al menos por el momento,
irrelevantes o causa de distracción». Berzins, Gray y Naumann recomiendan que «un concepto merece
el calificativo de abstracción sólo si se puede describir, comprender y analizar independientemente del
mecanismo que vaya a utilizarse eventualmente para realizarlo». Combinando estos diferentes puntos
de vista. Se define una abstracción del modo siguiente: Una abstracción denota !as características
esenciales de un objeto que lo distinguen de todos los demás tipos de objeto y proporciona así fronteras
conceptúales nítidamente definidas respecto a la perspectiva del observador.
Encapsulamiento
El significado del encapsularniento. Aunque anteriormente se describió la abstracción de la clase
Plancultivo como un esquema tiempo/acción, su implantación no es necesariamente una tabla en
sentido literal o una estructura de datos con forma de esquema. En realidad, se elija la representación
que se elija, será indiferente al contrato del cliente con esa clase, siempre y cuando la representación
apoye el contrato. Dicho sencillamente, la abstracción de un objeto debería preceder a las decisiones
sobre su implementación. Una vez que se ha seleccionado una implantación, debe tratarse como un
secreto de la abstracción, oculto para la mayoría de los clientes. Como sugiere sabiamente Ingalls,
«ninguna parte de un sistema complejo debe depender de los detalles internos de otras partes».
Mientras la abstracción «ayuda a las personas a pensar sobre lo que están haciendo», el
encapsulamiento «permite que los cambios hechos en los programas sean fiables con el menor
esfuerzo».
El encapsulamiento proporciona barreras explicitas entre abstracciones diferentes y por tanto conduce a
una clara separación de intereses. Por ejemplo, considérese una vez más la estructura de una planta.
Para comprender cómo funciona la fotosíntesis a un nivel alto de abstracción, se pueden ignorar
detalles como los cometidos de las raíces de la planta o la química de las paredes de las células.
Análogamente. al diseñar una aplicación de bases de datos, es práctica común el escribir programas de
forma que no se preocupen de la representación física de los datos, sino que dependan solo de un
esquema que denota la vista lógica de los mismos. En ambos casos, los objetos a un nivel de
abstracción están protegidos de los detalles de implementación a niveles mas bajos de abstracción. Para
resumir, se define el encapsulamiento como sigue: El encapsulamiento es el proceso de almacenar en
un mismo compartimento los elementos de una abstracción que constituyen su estructura y su
comportamiento; sirve para separar el interfaz contractual de una abstracción y su implantación. Britton
y Parnas llaman a esos elementos encapsulados los «secretos» de una abstracción.
Modularidad
Liskov establece que «la modularización consiste en dividir un programa en módulos que pueden
compilarse separadamente, pero que tienen conexiones con otros módulos. Utilizaremos la definición
de Parnas: "Las conexiones entre módulos son las suposiciones que cada módulo hace acerca de todos
los demás"». . La mayoría de los lenguajes que soportan el módulo como un concepto adicional
distinguen también entre el interfaz de un modulo y su implementación Así, es correcto decir que la
modularidad el encapsulamiento van de la mano. Como en el encapsulamienio, los lenguajes concretos
soportan la modularidad de formas diversas Por ejemplo, los módulos en C++ no son más que ficheros
compilados separadamente. Resumiendo la moduluridad se define como: La modularidad es la
propiedad que tiene un sistema que ha sido descompuesto en un conjunto de módulos cohesivos y
débilmente acoplados.
Jerarquía
El significado de la jerarquía. La abstracción es algo bueno, pero excepto en las aplicaciones más
triviales, puede haber muchas más abstracciones diferentes de las que se pueden comprender
simultáneamente. El encapsulamiento ayuda a manejar esta complejidad ocultando la visión interna de
las abstracciones. La modularidad también ayuda, ofreciendo una vía para agrupar abstracciones
relacionadas lógicamente. Esto sigue sin ser suficiente. Frecuentemente un conjunto de abstracciones
forma una jerarquía, y la identificación de esas jerarquías en el diseño simplifica en gran medida la
comprensión del problema. Se define la jerarquía como sigue: La jerarquía es una clasificación u
ordenación de abstracciones. Las dos jerarquías más importantes en un sistema complejo son su
estructura de clases (la jerarquía «de clases») y su estructura de objetos (la jerarquía «de parte»).
Tipos (tipificación)
El significado de los tipos. El concepto de tipo se deriva en primer lugar de las teorías sobre los tipos
abstractos de datos. Como sugiere Deutsch, «un tipo es una caracterización precisa de propiedades
estructurales o de comportamiento que comparten una serie de entidades» Para nuestros propósitos, se
utilizarán los términos tipo y clase de manera intercambiable. Aunque los conceptos de clase y tipo son
similares, se incluyen los tipos como elemento separado del modelo de objetos porque el concepto de
tipo pone énfasis en el significado de la abstracción en un sentido muy distinto. En concreto, se
establece lo siguiente: Los tipos son la puesta en vigor de la clase de los objetos, de modo que los
objetos de tipos distintos no pueden intercambiarse solo de formas muy restringidas.
Concurrencia
El significado de la concurrencia. Para ciertos tipos de problema, un sistema autorizado puede tener
que manejar muchos eventos diferentes simultáneamente. Otros problemas pueden implicar tantos
cálculos que excedan la capacidad de cualquier procesador individual. En ambos casos, es natural
considerar el uso de Un conjunto distribuidos de computadores para la implantación que se Persigue o
utilizar procesadores capaces de realizar multitarea. Un solo proceso -denominado hilo de control- es la
raíz a partir de la cual se producen acciones dinámicas independientes dentro del sistema. Todo
programa tiene al menos un hilo de control, pero un sistema que implique concurrencia puede tener
muchos de tales hilos: algunos son transitorios, y otros permanecen durante todo e! ciclo de vida de la
ejecución del sistema. Los sistemas que se ejecutan en múltiples CPUs permiten hilos de control
verdaderamente concurrentes, mientras que los sistemas que se ejecutan en una sola CPU sólo pueden
conseguir la ilusión de hilos concurrentes de control, normalmente mediante algún algoritmo de tiempo
compartido. La concurrencia se define: La concurrencia es la propiedad que distingue un objeto activo
de uno que no esta activo.
Persistencia
Un objeto de software ocupa una cierta cantidad de espacio, y existe durante una cierta cantidad de
tiempo. Atkiston et al. Sugieren que hay un espacio continuo de existencia del objeto, que va desde los
objetos transitorios que surgen en la evaluación de una expresión hasta los objetos de una base de datos
que sobreviven a la ejecución de un único programa. Este espectro de persistencia de objetos abarca lo
siguiente:
• «Resultados transitorios en la evaluación de expresiones.
• Variables locales en la activación de procedimientos.
• Variables propias [como en ALGOL 60], variables globales y elementos del montículo (heap)*
cuya duración difiere de
• Datos que existen entre ejecuciones de un programa. Datos que existen en varias versiones de
un programa.
• Datos que sobreviven al programa.
La persistencia se define como: La persistencia es la propiedad de un objeto por la que sus existencia
trasciende el tiempo (es decir, el objeto continúa existiendo después de que su creador deja de existir)
y/o el espacio (es decir la posición del objeto varía con respecto al espacio de direcciones en el que fue
creado)