Este capítulo trata sobre el diseño de relaciones entre clases en el análisis y diseño de sistemas. Se describen conceptos como la navegación de relaciones, asociaciones y agregaciones. También se explican opciones para el diseño de la visibilidad, direccionalidad y multiplicidad de las relaciones. El objetivo es diseñar relaciones que modelen adecuadamente las interacciones entre objetos del mundo real.
Este documento presenta una introducción a los patrones de diseño de software conocidos como patrones GOF. Explica brevemente qué es un patrón de diseño y clasifica los patrones GOF en tres categorías: patrones de creación, estructura y comportamiento. Luego describe algunos patrones específicos como Factory Method, Observer y Strategy. Finalmente incluye una bibliografía sobre el libro original de los patrones GOF.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones. Muestra ejemplos de cómo representar clases, atributos, operaciones, herencia y asociaciones entre clases. También cubre conceptos como interfaces, modelado de relaciones y responsabilidades de las clases.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
Este documento describe diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas con compartimentos. También describe elementos básicos de diagramas de clases como atributos, operaciones, relaciones y notación.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
Este documento presenta una introducción a los patrones de diseño de software conocidos como patrones GOF. Explica brevemente qué es un patrón de diseño y clasifica los patrones GOF en tres categorías: patrones de creación, estructura y comportamiento. Luego describe algunos patrones específicos como Factory Method, Observer y Strategy. Finalmente incluye una bibliografía sobre el libro original de los patrones GOF.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones. Muestra ejemplos de cómo representar clases, atributos, operaciones, herencia y asociaciones entre clases. También cubre conceptos como interfaces, modelado de relaciones y responsabilidades de las clases.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
Este documento describe diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas con compartimentos. También describe elementos básicos de diagramas de clases como atributos, operaciones, relaciones y notación.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
El documento presenta una introducción al diseño de objetos realizado por un grupo de estudiantes. Explica la diferencia entre objetos de aplicación y objetos de solución, y las actividades clave del diseño de objetos como la identificación de atributos, operaciones, tipos, visibilidad, restricciones y excepciones. También menciona temas como bibliotecas de clases, marcos de aplicación, asociaciones, reutilización, administración del diseño y asignación de responsabilidades.
programacion orientada a objetos en visual basic netpp mm
Este documento presenta conceptos clave de programación orientada a objetos en Visual Basic .NET, incluyendo: (1) Las clases son estructuras que definen objetos mediante abstracción y encapsulamiento; (2) Los objetos son instancias de clases que tienen identidad, comportamiento y estado; (3) Las clases pueden contener miembros de datos, métodos, propiedades, constructores y destructores. También cubre herencia, polimorfismo y el uso de espacios de nombres.
Este documento proporciona una introducción a la programación orientada a objetos en Visual Basic .NET. Explica conceptos clave como clases, objetos, herencia, polimorfismo y espacios de nombres. Detalla cómo crear clases, agregar miembros de datos e instanciar objetos. También cubre el uso de miembros compartidos, constructores, destructores y la organización de clases en espacios de nombres.
Este documento describe tres patrones de diseño: Decorator, FlyWeight y Template Method. Decorator permite agregar dinámicamente funcionalidades a objetos sin herencia. FlyWeight reduce redundancia al compartir información común entre objetos. Template Method define la estructura de un algoritmo en una superclase para que las subclases redefinan ciertos pasos.
Este documento describe diferentes conceptos relacionados con la programación orientada a objetos, incluyendo sobrecarga de operadores, operadores lógicos, polimorfismo, funciones virtuales y patrones de diseño como Singleton, Factory Method y Abstract Factory. Explica cómo estas características permiten extender clases, reutilizar código y crear familias de objetos relacionados de manera flexible.
Este documento presenta una introducción a los patrones de diseño de software. Explica que un patrón describe un problema común de diseño y una solución probada a ese problema en un contexto particular. Luego, describe algunos patrones comunes como el patrón MVC y cómo separa la lógica de la interfaz de usuario del modelo de datos subyacente. Finalmente, discute el patrón de fábrica y cómo permite crear objetos de manera flexible sin acoplar las clases concretas.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones. Incluye ejemplos de cómo representar clases, atributos, operaciones, herencia, asociaciones y otros elementos en un diagrama de clases.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones. Muestra ejemplos de cómo representar clases, atributos, operaciones, herencia, asociaciones y otras relaciones. También cubre conceptos como interfaces, clases abstractas, notas y paquetes.
El documento describe el análisis arquitectónico de un sistema de facturación y pagos. Incluye la identificación de paquetes de análisis, clases de análisis, y requisitos especiales. También describe los casos de uso de Enviar Factura al Comprador y Pagar Factura, incluyendo los objetos y responsabilidades involucrados.
El documento describe conceptos básicos de programación orientada a objetos en Java como constructores, creación de objetos, alcance, método main, normas de estilo, paquetes y control de acceso. Explica que los constructores inicializan los objetos, el alcance determina la visibilidad de variables y métodos, y los paquetes agrupan clases relacionadas controlando su accesibilidad.
1) El documento presenta un resumen breve de OOSE (Object-oriented Software Engineering) y describe sus cinco etapas principales: modelo de requerimientos, análisis, diseño, implementación y pruebas. 2) Se incluye un ejemplo de la aplicación del método OOSE a un caso de estudio de una biblioteca universitaria. 3) Finalmente, se realiza una comparativa entre OOSE y otras metodologías de desarrollo de software orientado a objetos contemporáneas como OMT y el método de Booch.
Este documento presenta conceptos clave de programación orientada a objetos en Visual Basic .NET, incluyendo: 1) La definición de clases y objetos, 2) Cómo crear clases y trabajar con ellas mediante miembros, métodos y propiedades, y 3) Temas avanzados como herencia, polimorfismo y espacios de nombres.
Este documento describe varios patrones de diseño J2EE organizados en capas y tipos. Explica patrones como Front Controller y Business Delegate en la capa de presentación, Transfer Object y Session Facade en la capa de negocio, y Data Access Object en la capa de integración. El documento también discute los beneficios y desafíos del uso de patrones de diseño.
Este documento resume varios patrones de diseño, incluyendo Abstract Factory, Bridge, Composite, Decorator, Command, e Iterator. Describe cada patrón, sus participantes, estructura, colaboraciones y consecuencias. El documento también incluye una introducción a los patrones de diseño y una notación para representarlos gráficamente.
Este documento describe las principales características de Enterprise JavaBeans (EJB) 3.0. EJB 3.0 simplifica el desarrollo de aplicaciones Java eliminando la necesidad de interfaces home y de componente, permitiendo que los EJBs sean POJOs y utilizando anotaciones en lugar de descriptores XML. También introduce mejoras en el API de persistencia como el uso de EntityManager y mapeo objeto-relacional mediante anotaciones.
El Business Delegate se utiliza para reducir el acoplamiento entre las capas de presentación y negocio. Oculta detalles de implementación del servicio de negocio como detalles de búsqueda y acceso EJB. Actúa como una abstracción del cliente de negocio y oculta la implementación de los servicios de negocio.
Este documento describe los patrones de diseño orientados a objetos, definidos como soluciones probadas a problemas comunes de diseño. Explica varios patrones fundamentales como el encapsulamiento, herencia, abstract factory, builder, factory method y otros. También clasifica los patrones en creacionales, estructurales y de comportamiento, e ilustra cada categoría con ejemplos de patrones como observer, state y strategy.
Bienvenido al mundo real de la teoría organizacional. La suerte cambiante de Xerox
muestra la teoría organizacional en acción. Los directivos de Xerox estaban muy involucrados en la teoría organizacional cada día de su vida laboral; pero muchos nunca se
dieron cuenta de ello. Los gerentes de la empresa no entendían muy bien la manera en que
la organización se relacionaba con el entorno o cómo debía funcionar internamente. Los
conceptos de la teoría organizacional han ayudado a que Anne Mulcahy y Úrsula analicen
y diagnostiquen lo que sucede, así como los cambios necesarios para que la empresa siga
siendo competitiva. La teoría organizacional proporciona las herramientas para explicar
el declive de Xerox, entender la transformación realizada por Mulcahy y reconocer algunos pasos que Burns pudo tomar para mantener a Xerox competitiva.
Numerosas organizaciones han enfrentado problemas similares. Los directivos de
American Airlines, por ejemplo, que una vez fue la aerolínea más grande de Estados
Unidos, han estado luchando durante los últimos diez años para encontrar la fórmula
adecuada para mantener a la empresa una vez más orgullosa y competitiva. La compañía
matriz de American, AMR Corporation, acumuló $11.6 mil millones en pérdidas de 2001
a 2011 y no ha tenido un año rentable desde 2007.2
O considere los errores organizacionales dramáticos ilustrados por la crisis de 2008 en el sector de la industria hipotecaria
y de las finanzas en los Estados Unidos. Bear Stearns desapareció y Lehman Brothers se
declaró en quiebra. American International Group (AIG) buscó un rescate del gobierno
estadounidense. Otro icono, Merrill Lynch, fue salvado por formar parte de Bank of
America, que ya le había arrebatado al prestamista hipotecario Countrywide Financial
Corporation.3
La crisis de 2008 en el sector financiero de Estados Unidos representó un
cambio y una incertidumbre en una escala sin precedentes, y hasta cierto grado, afectó a
los gerentes en todo tipo de organizaciones e industrias del mundo en los años venideros.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones, y que se representan gráficamente mediante cajas. También describe elementos clave de los diagramas de clases como atributos, operaciones, relaciones como generalización y asociación.
El documento presenta una introducción al diseño de objetos realizado por un grupo de estudiantes. Explica la diferencia entre objetos de aplicación y objetos de solución, y las actividades clave del diseño de objetos como la identificación de atributos, operaciones, tipos, visibilidad, restricciones y excepciones. También menciona temas como bibliotecas de clases, marcos de aplicación, asociaciones, reutilización, administración del diseño y asignación de responsabilidades.
programacion orientada a objetos en visual basic netpp mm
Este documento presenta conceptos clave de programación orientada a objetos en Visual Basic .NET, incluyendo: (1) Las clases son estructuras que definen objetos mediante abstracción y encapsulamiento; (2) Los objetos son instancias de clases que tienen identidad, comportamiento y estado; (3) Las clases pueden contener miembros de datos, métodos, propiedades, constructores y destructores. También cubre herencia, polimorfismo y el uso de espacios de nombres.
Este documento proporciona una introducción a la programación orientada a objetos en Visual Basic .NET. Explica conceptos clave como clases, objetos, herencia, polimorfismo y espacios de nombres. Detalla cómo crear clases, agregar miembros de datos e instanciar objetos. También cubre el uso de miembros compartidos, constructores, destructores y la organización de clases en espacios de nombres.
Este documento describe tres patrones de diseño: Decorator, FlyWeight y Template Method. Decorator permite agregar dinámicamente funcionalidades a objetos sin herencia. FlyWeight reduce redundancia al compartir información común entre objetos. Template Method define la estructura de un algoritmo en una superclase para que las subclases redefinan ciertos pasos.
Este documento describe diferentes conceptos relacionados con la programación orientada a objetos, incluyendo sobrecarga de operadores, operadores lógicos, polimorfismo, funciones virtuales y patrones de diseño como Singleton, Factory Method y Abstract Factory. Explica cómo estas características permiten extender clases, reutilizar código y crear familias de objetos relacionados de manera flexible.
Este documento presenta una introducción a los patrones de diseño de software. Explica que un patrón describe un problema común de diseño y una solución probada a ese problema en un contexto particular. Luego, describe algunos patrones comunes como el patrón MVC y cómo separa la lógica de la interfaz de usuario del modelo de datos subyacente. Finalmente, discute el patrón de fábrica y cómo permite crear objetos de manera flexible sin acoplar las clases concretas.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones. Incluye ejemplos de cómo representar clases, atributos, operaciones, herencia, asociaciones y otros elementos en un diagrama de clases.
Este documento describe los diagramas de clases y objetos en UML. Explica que una clase representa un conjunto de objetos que comparten atributos, operaciones y relaciones. Muestra ejemplos de cómo representar clases, atributos, operaciones, herencia, asociaciones y otras relaciones. También cubre conceptos como interfaces, clases abstractas, notas y paquetes.
El documento describe el análisis arquitectónico de un sistema de facturación y pagos. Incluye la identificación de paquetes de análisis, clases de análisis, y requisitos especiales. También describe los casos de uso de Enviar Factura al Comprador y Pagar Factura, incluyendo los objetos y responsabilidades involucrados.
El documento describe conceptos básicos de programación orientada a objetos en Java como constructores, creación de objetos, alcance, método main, normas de estilo, paquetes y control de acceso. Explica que los constructores inicializan los objetos, el alcance determina la visibilidad de variables y métodos, y los paquetes agrupan clases relacionadas controlando su accesibilidad.
1) El documento presenta un resumen breve de OOSE (Object-oriented Software Engineering) y describe sus cinco etapas principales: modelo de requerimientos, análisis, diseño, implementación y pruebas. 2) Se incluye un ejemplo de la aplicación del método OOSE a un caso de estudio de una biblioteca universitaria. 3) Finalmente, se realiza una comparativa entre OOSE y otras metodologías de desarrollo de software orientado a objetos contemporáneas como OMT y el método de Booch.
Este documento presenta conceptos clave de programación orientada a objetos en Visual Basic .NET, incluyendo: 1) La definición de clases y objetos, 2) Cómo crear clases y trabajar con ellas mediante miembros, métodos y propiedades, y 3) Temas avanzados como herencia, polimorfismo y espacios de nombres.
Este documento describe varios patrones de diseño J2EE organizados en capas y tipos. Explica patrones como Front Controller y Business Delegate en la capa de presentación, Transfer Object y Session Facade en la capa de negocio, y Data Access Object en la capa de integración. El documento también discute los beneficios y desafíos del uso de patrones de diseño.
Este documento resume varios patrones de diseño, incluyendo Abstract Factory, Bridge, Composite, Decorator, Command, e Iterator. Describe cada patrón, sus participantes, estructura, colaboraciones y consecuencias. El documento también incluye una introducción a los patrones de diseño y una notación para representarlos gráficamente.
Este documento describe las principales características de Enterprise JavaBeans (EJB) 3.0. EJB 3.0 simplifica el desarrollo de aplicaciones Java eliminando la necesidad de interfaces home y de componente, permitiendo que los EJBs sean POJOs y utilizando anotaciones en lugar de descriptores XML. También introduce mejoras en el API de persistencia como el uso de EntityManager y mapeo objeto-relacional mediante anotaciones.
El Business Delegate se utiliza para reducir el acoplamiento entre las capas de presentación y negocio. Oculta detalles de implementación del servicio de negocio como detalles de búsqueda y acceso EJB. Actúa como una abstracción del cliente de negocio y oculta la implementación de los servicios de negocio.
Este documento describe los patrones de diseño orientados a objetos, definidos como soluciones probadas a problemas comunes de diseño. Explica varios patrones fundamentales como el encapsulamiento, herencia, abstract factory, builder, factory method y otros. También clasifica los patrones en creacionales, estructurales y de comportamiento, e ilustra cada categoría con ejemplos de patrones como observer, state y strategy.
Bienvenido al mundo real de la teoría organizacional. La suerte cambiante de Xerox
muestra la teoría organizacional en acción. Los directivos de Xerox estaban muy involucrados en la teoría organizacional cada día de su vida laboral; pero muchos nunca se
dieron cuenta de ello. Los gerentes de la empresa no entendían muy bien la manera en que
la organización se relacionaba con el entorno o cómo debía funcionar internamente. Los
conceptos de la teoría organizacional han ayudado a que Anne Mulcahy y Úrsula analicen
y diagnostiquen lo que sucede, así como los cambios necesarios para que la empresa siga
siendo competitiva. La teoría organizacional proporciona las herramientas para explicar
el declive de Xerox, entender la transformación realizada por Mulcahy y reconocer algunos pasos que Burns pudo tomar para mantener a Xerox competitiva.
Numerosas organizaciones han enfrentado problemas similares. Los directivos de
American Airlines, por ejemplo, que una vez fue la aerolínea más grande de Estados
Unidos, han estado luchando durante los últimos diez años para encontrar la fórmula
adecuada para mantener a la empresa una vez más orgullosa y competitiva. La compañía
matriz de American, AMR Corporation, acumuló $11.6 mil millones en pérdidas de 2001
a 2011 y no ha tenido un año rentable desde 2007.2
O considere los errores organizacionales dramáticos ilustrados por la crisis de 2008 en el sector de la industria hipotecaria
y de las finanzas en los Estados Unidos. Bear Stearns desapareció y Lehman Brothers se
declaró en quiebra. American International Group (AIG) buscó un rescate del gobierno
estadounidense. Otro icono, Merrill Lynch, fue salvado por formar parte de Bank of
America, que ya le había arrebatado al prestamista hipotecario Countrywide Financial
Corporation.3
La crisis de 2008 en el sector financiero de Estados Unidos representó un
cambio y una incertidumbre en una escala sin precedentes, y hasta cierto grado, afectó a
los gerentes en todo tipo de organizaciones e industrias del mundo en los años venideros.
Mario Mendoza Marichal — Un Líder con Maestría en Políticas Públicas por ...Mario Mendoza Marichal
Mario Mendoza Marichal: Un Líder con Maestría en Políticas Públicas por la Universidad de Chicago
Mario Mendoza Marichal es un profesional destacado en el ámbito de las políticas públicas, con una sólida formación académica y una amplia trayectoria en los sectores público y privado.
2. Objetivos: Diseño de Relaciones
Al final de este capítulo, usted podrá:
• Describir el concepto de navegación de relaciones
• Definir asociaciones y relaciones agregadas
• Describir opciones de visibilidad de objetos
• Describir las decisiones relacionadas al diseño de multiplicidad en
relaciones
• Diseñar clases de asociación.
3. Navegación
• Durante el Análisis la mayoría de las asociaciones son bi-direcionales
• Durante el diseño la mayoría de las asociaciones se vuelven uni-
direccionales, debido a que las asociaciones de dos vías son más
difíciles y costosas de implementar que una asociación de una vía.
• Se agrega una flecha a la asociación para mostrar que la navegación
va en una sola dirección.
Cliente Orden
Un cliente le puede “hablar” a
una orden.
La orden no le puede “hablar” al
cliente
0 *
4. Decisiones de Navegación
Durante el diseño determinamos si es realmente necesario
navegar en ambas direcciones.
La necesidad de navegación se revela por los casos de uso y
escenarios.
Dada la instancia de la clase A, ¿tenemos que acceder a
todas sus instancias en la clase B?
Dada la instancia de la clase B, ¿tenemos que encontrar todas
las instancias asociadas a la clase A?
5. Navegación (2-vías) vs Navegación (1-vía)
• Las asociaciones de dos vías son más difíciles y costosas
de implementar que una asociación de una vía.
• Inclusive si para una asociación, la navegación de dos vías
pareciera ser requerida, la navegación de una vía puede ser
suficiente en muchas circunstancias. Este es el caso si por
ejemplo:
• La navegación en una de las direcciones no es muy
frecuente y no tiene requerimientos críticos de rendimiento
• El número de instancias de una de las clases es muy
bajo.
6. Preguntas de Navegación
• Para determinar que tipo de navegación se requiere
en el sistema, debo contestar preguntas tales como:
•¿De qué proveedor puedo comprar este producto?
(producto a proveedor).
•¿Qué productos han sido ordenados de este proveedor
en particular? (proveedor a producto).
Proveedor Producto
? ?
0..* 0..*
7. Ejemplo: Simplificando una Asociación
• Situación 1: Se necesita saber con mucha frecuencia que
proveedores ofrecen cierto producto, pero para efectos de control de
facturas, sólo se necesita generar una lista de todos los productos
que ha vendido un proveedor cada cuatro meses.
• Implementar la dirección de producto a proveedor y buscar
todas las instancias de producto cuando se produce la lista de
productos vendidos por parte de cada proveedor.
• Situación 2: Sólo existen dos proveedores
• Implementar solamente la dirección de producto a proveedor y
buscar todas las instancias de productos cuando se necesita
reservar la dirección del proveedor.
8. Navegabilidad de asociaciones en Java
Horario
Estudiante
// no necesita importar si están en el
mismo paquete
Class Horario
{
public Horario () {}
private Estudiante : theEstudiante;
}
Class Estudiante
{
public Estudiante () {}
private Horario: theHorario;
}
• Bi-direccionales
9. Navegabilidad de Asociaciones en Java
Horario
Estudiante
Class Horario
{
public Horario () {}
}
Class Estudiante
{
public Estudiante () {}
private Horario : theHorario;
}
• Uni-direccionales
10. Asociaciones en Java: Roles
Profesor
Sección
Class Profesor
{
public Profesor () {}
private Sección : theSección;
}
Class Sección
{
public Sección () {}
private Profesor : instructor;
}
instructor
11. Asociaciones en Java: Multiplicidad
Sección
Horario
Class Sección
{
public Sección () {}
}
Class Horario
{
public Horario () {}
private Sección[ ] : cursosPrimarios = new Sección[4];
}
cursosPrimarios
0..4
12. Curso
Import java.util.vector;
Class Curso
{
public Curso () {}
// La asociación múltiple
// es almacenada en un vector
private Curso[ ]:prerrequisitos;
// private Vector:prerrequisitos;
}
prerrequisitos
0 *
13. Navegación para Agregaciones
• Una agregación puede también ser uni-direccional.
• Para representar esto, la relación de agregación debe
incluir una flecha (normalmente del lado de la parte).
Cliente
Orden
0..*
14. Agregación en Java
Horario
Estudiante
Class Horario
{
public Horario () {}
private Estudiante : theEstudiante
}
Import java.util.Vector;
Class Estudiante
{
public Estudiante () {}
private Vector : theHorario;
}
0..*
1
15. Horario
Estudiante
Class Horario
{
public Horario () {}
private Estudiante : theEstudiante
}
Import java.util.Vector;
Class Estudiante
{
public Estudiante () {}
private Vector : theHorario = new Vector()
}
0..*
1
16. Visibilidad entre Objetos y Dependencias
• Las asociaciones establecen una vía de comunicación entre
objetos, pero no todas las comunicaciones requieren que la
estructura de un objeto dependa de la estructura de (los) objeto (s)
con que este se quiera comunicar.
• Para que dos objetos puedan “conversar” entre ellos deben poder
“verse”.
• Las dependencias permiten la visibilidad entre objetos.
17. Relación de Dependencia
• Una relación de dependencia significa que una clase es
dependiente de otra clase para algunos servicios, pero que no
necesita tener una relación estructural con la otra clase.
• Una relación de dependencia se ilustra con una línea
intermitente.
Cliente
Servidor
El objeto cliente depende del objeto proveedor
18. Una relación de la clase cliente que crean objetos de la clase
proveedor.
Hay operaciones de la clase cliente cuyas características retornan
clases o argumentos que referencian la clase proveedor.
Relación de Dependencia (cont.)
import class2;
public class class1()
class1
class2
19. Las asociaciones son relaciones estructurales.
Las dependencias son relaciones no estructurales.
El tipo de relación determina el tipo de visibilidad que debe haber
entre los objetos.
Dependencias vs. Asociaciones
Servidor2
Cliente
Servidor1
Asociación
Dependencia
20. Existen cuatro opciones de visibilidad
1. Referencia Global DEPENDENCIA
El objeto servidor es un objeto global
2. Referencia de Parámetro DEPENDENCIA
El objeto servidor es un parámetro para una operación en el
objeto cliente.
3. Referencia de Variable Local DEPENDENCIA
El objeto servidor es declarado localmente como una variable
en una operación.
4. Referencia de Campo ASOCIACIÓN
El objeto servidor define la estructura del objeto cliente.
Opciones de Visibilidad de Objetos
21. La instancia de ClaseUtileria es visible para las instancias de
ClaseA porque ClaseUtilería es global.
Visibilidad Global
ClaseA
op1()
ClaseUtileria
opUtil ()
22. Hay visibilidad de parámetro cuando una instancia de
ClaseB se envía como parámetro en una operación de una
instancia de ClaseA.
Visibilidad de Parámetro
ClaseA
op1 (param 1: ClaseB)
ClaseB
23. La operación op1() contiene una variable local de tipo ClaseB
Visibilidad de Variable Local
ClaseA
op1 ()
ClaseB
24. Buscar relaciones que reflejen el mundo real.
Buscar siempre la relación más ligera posible (dependencia).
Es la relación “permanente”? Use asociación (Visibilidad de Campo).
Es la relación “temporal”? Use dependencia.
Varios objetos comparten la misma instancia
• Pasar la instancia como un parámetro (visibilidad de parámetro).
• Hacer que la instancia sea administrada globalmente (visibilidad
global).
Varios objetos NO comparten la misma instancia (visibilidad de variable
local).
Cuanto tiempo toma crear y destruir las instancias de los objetos
relacionados?
Mucho tiempo? Es muy caro, use visibilidad global, de parámetro o de
campo.
Identificación de Dependencias: Consideraciones
Que opción es la correcta? DEPENDE DEL ESCENARIO
28. El manejador Transacción es responsable de administrar toda la
información de cursos.
El curso se crea y salva en la base de datos Plan Estudio. Un
Manejador Transacción es responsable de las interfases con
base de datos.
Existe una clase DBCurso que sabe como salvar la información
pertinente del curso.
Cada curso puede tener entre 3 y 10 estudiantes inscritos y
tiene solo un profesor. Un estudiante se puede inscribir en un
máximo de 4 cursos.
Cada profesor imparte 3 cursos.
Se ejecuta un reporte de la lista de cursos, de profesores y
estudiantes inscritos para las primeras 3 semanas del semestre.
Ejemplo: Diseño de Relación
29. El Modelo antes de Diseño de Relaciones
ControladorPlanEstudio
crearCurso()
ManejadorTransaccion
salvarCurso(Curso)
Sección
Estudiante
DBCurso
salvarCurso(Curso)
Curso
Profesor
1
1 3
3..10
1
0..4
0..*
1 1
1
1..*
1 1
1
30. El ControladorPlanEstudio usa al ManejadorTransacción para
cada Curso que maneja.
La operación crearCurso() no es la única que usa al
ManejadorTransacción.
Se escoge visibilidad de campo.
El ControladorPlanEstudio envía mensajes al
ManejadorTransacción pero el ManejadorTransacción no
envía ningún mensaje al ControladorPlanEstudio.
La relación es uni-direccional ControladorPlanEstudio a
ManejadorTransacción.
Decisiones de Diseño
31. El controladorPlanEstudio crea un curso nuevo dentro de la
operación crearCurso()
Se escoge visibilidad local
A la operación salvarCurso() del ManejadorTransacción se le
pasa un objeto Curso
Se escoge visibilidad de parámetro
El ManejadorTransacción usa un objeto DBCurso para salvar
un objeto Curso
Esta es la única operación que necesita el objeto Curso
Se escoge visibilidad local.
Decisiones de Diseño (cont.)
32. A la operación DBCurso se le pasa un objeto Curso
Se escoge visibilidad de parámetro
Un Curso debe conocer sus estudiantes para generar el reporte
Estos requerimientos no especifican que un Estudiante debe
conocer sus cursos
La relación se hace uni-direccional
Un curso debe conocer su Profesor para generar el reporte
Estos requerimientos no especifican que un Profesor debe
conocer sus cursos
La relación se hace uni-direccional
Decisiones de Diseño (cont.)
33. El Modelo después de Diseño de Relaciones
ControladorPlanEstudio
crearCurso()
ManejadorTransaccion
salvarCurso(Curso)
Estudiante
DBCurso
salvarCurso(Curso)
Curso
Profesor
1
3..10
1
34. La multiplicidad es el número de relaciones entre instancias de
objetos que participan en una asociación de dos clases
Los estimados iniciales de multiplicidad hechos durante el
análisis deben actualizarse y refinarse durante el diseño
A toda relación de asociación y agregación se le debe
especificar la multplicidad.
Diseño de Multiplicidad para Relaciones
35. De la multiplicidad, lo primero que se determina es la opcionalidad de
la relación entre dos clases.
Una relación es opcional cuando la multiplicidad incluye 0
Solo es obligatoria cuando la multiplicidad en ambos extremos es
mayor que 0.
Si una relación es opcional, se debe incluir una operación para probar
la existencia de la relación.
Por ejemplo: si un Profesor puede estar de vacaciones, una operación
acorde debe incluirse en la clase Profesor para probar la relación.
Opcionalidad
Profesor
Impartiendo()
Curso
1 0..*
36. Si hay multiplicidad = 1 o multiplicidad = 0..1
Esta se puede implementar como un valor simple, o un puntero
No se requiere diseño adicional.
Diseño de Multiplicidad
Profesor Curso
0..1 0..*
instructor
• Si hay multiplicidad = 0..* o multiplicidad >1
• No se puede usar un valor simple, o un puntero
• Se necesita diseño adicional
Profesor Sección
0..1 0..*
instructor
Se necesita una
clase contenedora
37. La multiplicidad de más de uno usualmente es diseñada usando
clases “contenedor”.
Una clase contenedor es una clase cuyas instancias son
colecciones de otros objetos.
Los tipos de mecanismos para clases contenedor comunes
incluyen:
• Conjuntos, listas, diccionarios, pilas, colas,....
Las clases contenedor se pueden expresar opcionalmente
como clases parametrizadas, pero no todos los lenguajes las
soportan.
Diseñando Opciones para Multiplicidad de más de Uno
38. Las clases contenedor se pueden modelar explícitamente como
clases de apoyo dependientes del tipo de mecanismo que se use.
Para reducir al aglomeramiento en modelos grandes, las clases
contenedor típicamente no se muestran en los diagramas de clase.
Si el tipo de contenedor se debe especificar (normalmente para
mantener un buen nivel de comunicación), se puede usar una nota
en UML.
Notación para Clases Contenedor
Lista
Seccion Estudiante
3.10
39. Modelación explícita de una clase contenedora
Opciones para Modelar Multiplicidad
Profesor Sección
Lista
instructor
0..1 0..*
• Nota
Profesor Sección
instructor
0..1 0..*
<<entity>>
Profesor
ListaSecciones
0..1
0..1
+ instructor
+ new ()
+ add ()
<<entity>>
Sección
1
0..*
40. Una clase de asociación contiene información que pertenece a
un enlace entre objetos, y no de ninguno de los objetos
involucrados en la relación.
Clases de Asociación
Curso Estudiante
calificación
4 3..10
41. Durante el diseño las clases de asociación evolucionan así:
Transformando la clase de asociación en una clase interpuesta
entre otras dos clases.
Estableciendo asociaciones con la multiplicidad apropiada entre
las clases de asociación y las otras dos clases
La multiplicidad es siempre UNA desde la clase que enlaza a la
clase enlazada
Diseñe las nuevas asociaciones
La navegación puede ser bi-direccional o uni-direccional.
Diseñando Clases de Asociación
43. Clases de Asociación en Java : Deben Resolverse
class InfoSeccionHorarioPrimarios
{
public InfoSeccionHorarioPrimarios() {}
public SecciongetSeccion() {
return the Seccion;
}
public void setSeccion(Seccion nuevaSeccion){
theSeccion = nuevaSeccion;
}
private char getNota() {return nota;}
private void setNota(char nuevaNota) {nota = nueva nota;}
private char npta = ‘ I ‘ ;
private Seccion theSeccion;
}
Horario
InfoSeccionHorarioPrimarios
- nota : char = I
Seccion
0..* 0..4
0..2
0..*
Cursos Alternos
Horario
Seccion
InfoSeccionHorarioPrimarios
- nota: char = I
1 0..4
InfoSeccionHorariosPrimarios
0..* 1
0..*
0..2
Decisiones de Diseño
cursosAlternos
Cursos Primarios
44. Un calificador es un atributo o grupo de atributos cuyos valores
dividen un conjunto de objetos relacionado con un objeto a
través de una asociación.
Calificadores
Departamento
Profesor
Departamento
IdEmpleado
Título
Profesor
1 1
1 1..*
Dado un objeto Departamento y un
valor para la Id. De Empleado existe
exactamente un objeto Profesor.
Dado un objeto Departamento y un
valor para Título existe un conjunto de
objeto Profesor.
45. Una restricción es una expresión de una condición que debe
preservarse
Una restricción se muestra entre llaves {}
Restricciones
Profesor Departamento
1
1..* 1
1
{es director de}
Es miembro de
46. Durante el análisis, las asociaciones y agregaciones son
relaciones bi-direccionales.
Durante el diseño se pueden convertir en relaciones
unidireccionales.
Las agregaciones se diseñan de dos maneras.
Por valor- los objetos tienen tiempo de vida dependiente.
Por referencia – los objetos tienen tiempo de vida independiente.
Una relación de dependencia significa que una clase depende
de otra clase para un servicio particular.
Examinar la visibilidad de un objeto ayuda a determinar el
diseño de las relaciones.
Resumen: Diseño de Relaciones
47. Opciones de visibilidad incluyen:
Visibilidad global – el objeto está disponible globalmente
Visibilidad de parámetro – el objeto es un parámetro para un método
Visibilidad local – el objeto se declara localmente
Visibilidad de campo – el objeto es parte de la esctructura
Normalmente se usan punteros para implementar la multiplicidad de uno o 0..1
La multiplicidad de más de uno se designa usualmente usando clases
“contenedor”, tales como una Lista o una Fila
Una clase contenedor es una clase cuyas instancias son colecciones de otros
objetos.
Una clase de asociación contiene información que pertenece a un enlace entre
objetos, y no de ninguno de los objetos involucrados en la relación.
Resumen: Diseño de Relaciones