Escolar Documentos
Profissional Documentos
Cultura Documentos
orientados a
objetos
Análisis de
Sistemas
1
Características de los Modelos
Orientados a Objetos
El Paradigma Orientado a Objetos
En los Modelos Orientados a Objetos, el sistema se puede ver (en términos
de percepción) como una colección de objetos que colaboran entre sí para
obtener un objetivo común. Las operaciones que modifican el estado de los
objetos son sencillas; los objetos se construyen a partir de otros objetos lo
que lleva a que los sistemas se puedan construir a partir de componentes
probados.
2
Ayuda a explotar la potencia expresiva de los lenguajes de
programación basados en objetos y orientados a objetos.
Abstracción
Encapsulamiento
Modularidad
Jerarquía
Abstracción
3
Este contrato abarca las responsabilidades de un objeto, es decir el
comportamiento del que se le considera responsable.
Encapsulamiento
Importe entero: campo entero que almacena la cantidad entera del saldo
Importe decimal: campo entero que almacena la cantidad decimal del saldo
4
Cualquier objeto “titular” que solicite a “caja de ahorro” que muestre su
saldo recibirá como respuesta, por ejemplo, $ 100,50 y nunca se enterará
de qué manera está internamente guardado este dato, así como tampoco
sabrá cómo operan los métodos de caja de ahorro para mostrar este saldo.
Un atributo “apellidoYNombre”
Dos atributos: apellido
Nombre
Tres atributos: Apellido
Primer Nombre
Segundo Nombre
Modularidad
Los módulos sirven como contenedores físicos en los que se declaran las
clases y objetos del diseño lógico realizado. Especialmente para
aplicaciones grandes en las que puede haber varios cientos de clases el uso
de módulos es esencial para ayudar a manejar la complejidad. Para
problemas muy pequeños el desarrollador podría decidir declarar todas las
clases en el mismo paquete. Para cualquier situación que se salga de lo
trivial, es mejor solución agrupar las clases que se relacionan lógicamente
en el mismo módulo.
5
Desde nuestra perspectiva, concluye Booch, “la modularidad es la
propiedad que tiene un sistema que ha sido descompuesto en un conjunto
de módulos cohesivos y débilmente acoplados”. (Booch Grady, 1996, pág.
61).
Jerarquía
Objetos y Clases
OBJETO
Concepto
Ahora bien, los objetos del mundo real no son el único tipo de objeto de
interés en el desarrollo de software. Existen otros tipos importantes de
objetos que son invenciones del proceso de diseño cuyas colaboraciones
con objetos semejantes sirven como mecanismos para desempeñar algún
6
comportamiento de nivel superior. Esto nos lleva a una definición
mejorada según la cual “un objeto representa un elemento, unidad o
entidad individual e identificable, ya sea real o abstracta, con un papel bien
definido en el dominio del problema”.
Estado:
Todas las propiedades tienen algún valor. Este valor puede ser una mera
cantidad o puede denotar otro objeto. Se dice que los valores son
“normalmente” dinámicos porque en algunos casos los valores son
estáticos, como en nuestro ejemplo de “Caja de Ahorro” la propiedad (o
atributo) número no cambia, va a cambiar seguramente el valor del
atributo saldo y probablemente el del atributo fechaDeCierre...
Comportamiento:
Ningún objeto existe de forma aislada. Los objetos reciben acciones y ellos
mismos actúan sobre otros objetos.
7
tipos de operaciones sobre un objeto. Los tres tipos más comunes de
operaciones son los siguientes:
Identidad:
8
En el mundo de los objetos podemos tener dos de ellos con valores iguales
en todas sus propiedades y seguir siendo dos objetos distintos cada uno
con su propia identidad. Por ejemplo, puede haber dos objetos Persona
que tengan exactamente el mismo nombre, apellido, dirección y teléfono,
pero eso no significa que sean la misma persona (tenemos muchos casos
conocidos de padres e hijos con los mismos nombres y mientras vivan en la
misma casa también la misma dirección); en el paradigma orientado a
objetos cada uno de esos objetos tiene su propia “identidad” y son
perfectamente identificables.
CLASE
Concepto:
9
Responsabilidades de una clase:
10
A lo que nos indica la bibliografía clásica podemos agregar un tipo más de
visibilidad generalmente soportado por los lenguajes orientados a objetos
y las herramientas automatizadas de modelado que es la “visibilidad de
paquete”, esto significa que el elemento el público dentro del paquete o
subsistema en el que se encuentre alojado.
Figura 1
Figura 2
11
Operaciones: Una operación es la implementación de un servicio que
puede ser requerido a cualquier objeto de la clase para que muestre su
comportamiento, es decir, una operación es una abstracción de algo que se
puede hacer a un objeto y que es compartido por todos los objetos de la
clase. Una clase puede tener cualquier número de operaciones y por lo
menos una operación. A menudo, pero no necesariamente, la invocación
de una operación sobre un objeto cambia los datos o el estado del objeto.
En nuestro ejemplo sería el caso de las operaciones “depositar ()” y
“extraer()”. Dependiendo del nivel de abstracción en que se esté
modelando nos referiremos a responsabilidades (a nivel modelado de
requisitos y análisis), operaciones (en general a nivel diseño) y métodos
(normalmente durante la etapa de implementación/codificación), para
referirnos a los servicios que prestan los objetos de una clase.
Enlaces:
Como nos cita Booch “… el término enlace es definido por Rumbaugh como
una conexión física o conceptual entre objetos”. (Booch Grady, 1996).
Un objeto colabora con otros a través de sus enlaces con éstos. Esto quiere
decir que un enlace denota la asociación específica por la cual un
objeto (el cliente) utiliza los servicios de otro objeto (el servidor) o a través
de la cual un objeto puede comunicarse con otro.
12
de sus colaboraciones están asociadas con una responsabilidad particular
implementada por el servidor, “S”.
Figura 3
Agregación:
13
Se desarrolla este tema con más detalle en el punto siguiente, “Relaciones
entre Clases”.
Las clases, al igual que los objetos, no existen aisladamente. Antes bien,
para un dominio de problema específico las abstracciones clave suelen
estar relacionadas por vías muy diversas e interesantes, formando la
estructura de clases.
Herencia:
14
A menudo, una subclase añade atributos y operaciones a los que hereda de
sus padres, pero también puede redefinir el comportamiento heredado.
Una operación de un hijo con la misma signatura (nombre, parámetros y
valor de retorno) que una operación del padre, redefine la operación
heredada del padre; esto se conoce como polimorfismo, haciendo alusión a
una operación que adopta varias formas de implementación según haya
sido redefinida en las clases hijas.
Una clase puede tener uno o más padres o bien no tener ninguno. Una
clase sin padres y uno o más hijos se denomina raíz o clase base. Una clase
sin hijos se denomina clase hoja. Una clase con un único padre se dice que
utiliza herencia simple; una clase con más de un padre se dice que utiliza
herencia múltiple.
Las clases hojas son de las que se espera que existan instancias, es decir
objetos, por ello se las denomina también clases concretas. Las clases sin
instancias se llaman clases abstractas. Una clase abstracta se redacta con la
idea de que las subclases añadan elementos a su estructura y
comportamiento, usualmente completando la implementación de sus
métodos. De modo que nunca existirán objetos de una clase abstracta.
Figura 4
15
Observación: La simbología que se está utilizando para graficar las
relaciones entre clases es la establecida por UML.º
Asociación:
Una asociación es una relación estructural que especifica que los objetos
de una clase están conectados con los objetos de otra. Una asociación sólo
denota una dependencia semántica entre dos clases pero no establece la
forma exacta en que una clase se relaciona con la otra; sólo puede
denotarse esa semántica nombrando el papel que desempeña cada clase
en relación con la otra.
Dada una asociación entre dos clases se puede navegar desde un objeto de
una clase hasta un objeto de la otra.
Figura 5
Figura 6
16
Para mostrar los datos completos de una factura es necesario que
factura conozca al cliente al que corresponde.
Para mostrar un resumen de cuenta de un cliente es necesario que
cliente conozca las facturas que le corresponden.
Figura 7
Figura 8
17
Figura 9
18
Figura 10
Agregación:
Figura 11
19
incluye. Este tipo de relación es también llamada Composición (el Objeto
base se construye a partir del objeto incluido, es decir, es "parte/todo").
Figura 12
Dependencia:
20
afectar a otro elemento que la utiliza”, esto representa la dependencia que
tiene una clase de otra. (Booch, Rumbaugh y Jacobson, 1999)
Figura 13
DIAGRAMA DE CLASES
diagrama de clases se puede utilizar para modelar las clases lógicas, que
son típicamente la clase de cosas de las que habla la gente de negocios de
una organización (los usuarios). En este caso se usa el diagrama de clases
21
para modelar el “dominio del problema” pero también se utiliza el
diagrama de clases para mostrar las clases de implementación, que son las
“cosas” con las que trabajan los programadores. Este enfoque se aplica a
partir de la actividad de Diseño de un sistema.
Clases
Relaciones: herencia, asociación (su variante: agregación), dependencia.
Indicadores de multiplicidad y navegabilidad
Nombre de Rol
Figura 14
22
Metodologías estructuradas vs.
Metodologías Orientadas a
Objetos
El tema del carácter del software es tratado por Grady Booch entre otros
autores, al explicar que la “complejidad innata” del software se deriva de:
23
transcurre el tiempo. En los sistemas orientados a objetos, es posible
conectar todas las vistas casi independientes de un sistema en un todo
semántico.
24
Referencias
Bell Donald, “UML BasicsPart III: TheClassDiagram”, artículo publicado en el sitio
IBM Rational en Noviembre/2003.
Evans Gary, “Getting from Use. Case to code Part 1: Use Case Analysis”,
artículo publicado en el sitio IBM Rational en Julio/2004.
25