Está en la página 1de 13

Diseño de objetos

Universidad de Pamplona
Facultad de Ingenierías y Arquitectura
Programa Ingeniería de Sistemas
Asignatura tópicos Avanzados de Ingeniería del software
Agenda

• Fundamentación
• Actividades
• Especificación de servicios
• Selección de componentes
• Reestructuración del modelo de objetos
• Optimización del modelo de objetos
Fundamentación

Durante el diseño de objetos se refinan el modelo


de análisis y el modelo de diseño del sistema, se
identifican nuevos objetos. Adicionalmente, se
identifican objetos personalizados, el ajuste de los
componentes hechos y la especificación precisa de
cada interfaz de subsistema y clase.
Actividades del diseño de objetos

• Especificación de servicios
• Selección de componentes
• Reestructuración
• Optimización
Especificación de servicios

Durante el diseño de objetos especificamos los servicios de subsistemas


(identificados durante el diseño del sistema) desde el punto de vista de
interfaces de clase, incluyendo operaciones, argumentos, firmas de tipo
y excepciones. Durante esta actividad también se identifican operaciones
faltantes y objetos necesarios para transferir datos entre subsistemas. El
resultado de la especificación de servicios es una especificación de
interfaz completa para cada subsistema. A la especificación de servicios
de subsistema con frecuencia se le llama API (siglas en inglés de interfaz
de programación de aplicaciones) de subsistema.
Revisión de tipos, firmas y visibilidad

El tipo de un atributo especifica el rango de valores que puede tomar el


atributo y las operaciones que pueden aplicarse al atributo.
A los parámetros de operación y los valores de retomo se les asigna tipo
de la misma forma que a los atributos. El tipo restringe el rango de valores
que puede tomar el parámetro o el valor de retomo. Para toda operación,
al tupio compuesto por los tipos de sus parámetros y el tipo de valor de
retomo se le llama firma de la operación.
Ejemplo: La firma del método sumar_enteros será: (int,int):int, es decir,
este método recibe dos enteros y devuelve un entero.
La visibilidad de un atributo o una operación especifica si puede ser usada
por otras clases o no.
Niveles de visibilidad en UML

• Privado . Sólo puede tener acceso a un atributo privado la clase en la


que está definido. En forma similar, una operación privada sólo puede ser
llamada por la clase en la que está definida. Las subclases u otras clases
no pueden tener acceso a los atributos y operaciones privados.
• Protegido. La clase en la que están definidos y cualquier descendiente
de la clase pueden tener acceso a un atributo u operación protegidos.
• Público . Cualquier clase puede tener acceso a un atributo u operación
público.

Niveles de visibilidad en java. Cúantos hay?


Contratos
Los contratos son restricciones sobre una clase que permiten que el
llamador y el llamado compartan las mismas suposiciones acerca de la
clase. Un contrato especifica restricciones que debe satisfacer el llamador
antes de usar la clase, así como las restricciones que asegura cumplir el
llamado cuando se le usa.
• Un invariante es un predicado que siempre es cierto para todas las instancias de una clase. Los
invariantes son restricciones asociadas con clases o interfaces. Los invariantes se usan para especificar
restricciones de consistencia entre atributos de clase.
• Una precondición es un predicado que debe ser cierto antes de que se llame a una operación. Las
precondiciones están asociadas con una operación específica. Las precondiciones se usan para
especificar restricciones que debe satisfacer el llamador antes de llamar a una operación.
• Una poscondición es un predicado que debe ser cierto después de que se llama a una operación. Las
poscondiciones están asociadas con una operación específica. Las poscondiciones se usan para
especificar restricciones que el objeto debe asegurar después de la invocación de la operación.
Ejercicio contratos

Suponga que en una clase fifo existe un atributo que gestiona el número
de elementos de una estructura de tipo cola, el atributo se denomina
num_elementos.

La precondición para el método atender es num_elementos > 0.


La poscondición para el método atender es
num_elementos=num_elementos -1.

El invariante para la clase fifo es num_elementos >=0.


Selección de componentes

Durante el diseño de objetos se usan y adaptan los componentes hechos


identificados durante el diseño del sistema para realizar cada subsistema.
Se seleccionan bibliotecas de clase y componentes adicionales para las
estructuras de datos y servicios básicos. A menudo se necesita ajustar los
componentes que seleccionamos antes de poder usarlos envolviendo
objetos personalizados alrededor de ellos o refinándolos usando herencia.
Durante esas actividades se enfrenta el mismo compromiso de compra
frente a construcción que se utilizó durante el diseño del sistema.
Reestructuración

Las actividades de reestructuración manipulan el modelo del sistema para


incrementar la reutilización del código o satisfacer otros objetivos de
diseño. Cada actividad de reestructuración puede verse como una
transformación gráfica de subconjuntos de un modelo particular. Las
actividades típicas incluyen la transformación de asociaciones n-arias en
asociaciones binarias, la implementación de asociaciones binarias como
referencias, la combinación de dos clases similares de dos subsistemas
diferentes en una sola clase, la descomposición en atributos de clases que
no tienen comportamiento significativo, la división de clases complejas en
otras más simples, el reacomodo de clases y operaciones para
incrementar la herencia y el encapsulamiento.
Optimización

Las actividades de optimización tratan los requerimientos de desempeño


del modelo del sistema. Esto incluye el cambio de algoritmos para que
respondan a los requerimientos de velocidad o memoria, la reducción de
multiplicidades en asociaciones para agilizar las consultas, la adición de
asociaciones redundantes para eficiencia, el reacomodo del orden de
ejecución, la adición de atributos derivados para mejorar el tiempo de
acceso a objetos y la apertura de la arquitectura.
Formando líderes para la construcción
de un nuevo país en paz

También podría gustarte