La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 3: Modelos estructurales

Presentaciones similares


Presentación del tema: "Tema 3: Modelos estructurales"— Transcripción de la presentación:

1 Tema 3: Modelos estructurales
Ingeniería de la Programación 4º Facultad de Informática

2 Contenidos 4.1 Introducción 4.10 Paquetes 4.2 Clases 4.11 Interfaces
4.2.1 Atributos 4.2.2 Operaciones 4.3 Asociaciones y enlaces 4.3.1 Multiplicidad 4.3.2 Roles 4.3.3 Asociaciones como clases 4.3.4 Asociaciones cualificadas 4.4 Agregación 4.5 Generalización / Especialización 4.6 Clases abstractas 4.7 Herencia múltiple 4.8 Restricciones 4.9 Asociaciones exclusivas 4.10 Paquetes 4.11 Interfaces 4.12 Diagramas de Componentes 4.13 Diagramas de Despliegue

3 4.1 Introducción El modelo de objetos o los diagramas de clases reflejan la estructura estática del sistema. Es la herramienta principal de la mayor parte de los métodos OO. Un modelo de objetos contiene clases relacionadas con otras clases, mediante asociaciones, ordenadas en jerarquías de agregación y de generalización / especialización. Cuando sea conveniente se pueden utilizar también diagramas que contengan objetos, llamados diagramas de instancias.

4 Un objeto es un concepto, abstracción, o cosa que tiene sentido dentro del contexto de una aplicación. En definitiva, una encapsulación de datos y operaciones. Los objetos aparecen como nombres propios o como referencias específicas dentro de la descripción del problema o en las discusiones con el usuario.

5

6 El identificador de objetos (oid) es una característica que permite diferenciar dos ocurrencias de un objeto que estén en el mismo estado (i.e: que el valor de sus atributos sea igual). Durante la fase de análisis se asume que los objetos poseen identidad, en la fase de implementación se puede elegir una aproximación para realizarla: Direcciones de memoria: en lenguajes de programación. Combinación de valores de atributos: en bases de datos Nombres únicos (“surrogates”): en algunos sistemas orientados a objetos.

7

8 4.2 Clases Una clase es la descripción de un grupo de objetos con estructura, comportamiento y relaciones similares. Se puede añadir un 4 compartimiento para definir responsabilidades, descripción de la clases, etc.

9 Una clase es una abstracción; un objeto es una manifestación concreta de esa abstracción.

10 4.2.1 Atributos Un atributo es una propiedad de una clase identificada con un nombre, que describe un rango de valores que pueden tomar las instancias de la propiedad. Los atributos se pueden representar mostrando sólo los nombres.

11 La forma de definición general es la siguiente:
[visibilidad] Nombre [: Tipo] [= valor_inicial] donde visibilidad puede ser: + = Pública # = Protegida - = Privada (por defecto) = implementación o paquete  Los tipos permitidos para los atributos son tipos básicos (integer, real, char, string, etc.), no objetos.

12 Los atributos no incluyen referencia a otros objetos, estas referencias se representan mediante enlaces. En el modelo de objetos no pueden aparecer atributos que actúen como identificadores de objetos. Coche Matrícula color Aeropuerto IDAeropuerto CódigoAeropuerto Nombre ZonaHoraria Bueno para análisis y diseño Mal modelo para análisis, bueno para diseño

13 4.2.2 Operaciones Una operación se corresponde con un servicio que puede ser requerido a cualquier objeto de la clase. Una operación es una función o transformación que puede ser aplicada a los objetos. Un método es la implementación de una operación.

14 Las operaciones se definen de la siguiente forma:
[visibilidad] Nombre( [comalista_parámetros] ) [: Tipo_Resultado] donde visibilidad puede ser: + = Pública (opción por defecto) #= Protegida - = Privada = Paquete

15 Las operaciones que cambian el estado de un objeto se dice que tienen efectos laterales.
Las operaciones que no tienen efectos laterales y que únicamente calculan un valor funcional se llaman consultas. Las consultas devuelven el valor de los atributos de los objetos.

16 La notación para la información derivada es la siguiente:
Un atributo se dice que es derivado si puede calcularse en cualquier momento a partir del valor de otros atributos. La notación para la información derivada es la siguiente: /Nombre_Atributo: Tipo

17 4.3 Asociaciones y enlaces
Un enlace es una conexión física o conceptual entre objetos. Una asociación es una relación estructural que especifica que los objetos de un elemento están conectados con los objetos de otro. Las asociaciones aparecen en el diagrama de clases, mientras que los enlaces aparecen en el diagrama de instancias.

18 Cada asociación en el diagrama de clases se corresponde con un conjunto de enlaces en el diagrama de instancias. Dada una asociación entre dos clases, se puede navegar en los dos sentidos, desde objetos de una clase a objetos de la otra. Asociaciones binarias son aquellas que conectan dos clases.

19 Diagrama de instancias
Madrid: Ciudad Nombre Ciudad: Madrid población: Ciudad Nombre Ciudad población Ba: Aeropuerto Nombre Aeropuerto : Barajas Ge: Aeropuerto Nombre Aeropuerto: Getafe Da servicio Aeropuerto CodigoAeropuerto: BA CodigoAeropuerto: Ge CodigoAeropuerto Nombre Asociación multiplicidad Diagrama de instancias Modelo de objetos

20 Durante el análisis las referencias a objetos se representan mediante enlaces, los enlaces similares se representan mediante asociaciones.

21 En el ámbito de la implementación la semántica es distinta:
Durante el diseño las asociaciones se pueden representar con punteros, claves ajenas, etc. En el ámbito conceptual no existe ninguna diferencia entre un atributo y una asociación. En el ámbito de la implementación la semántica es distinta: Atributos: Semántica de valor Tipo: Fecha, Dirección, Integer, Real, String,.. Asociaciones: Semántica referencia

22 Da servicio Modelo de análisis Modelos de diseño Aeropuerto Ciudad
Nombre Ciudad Población Aeropuerto Nombre Aeropuerto CódigoAeropuerto Da servicio Modelo de análisis Aeropuertos Ciudades Modelos de diseño

23 Las asociaciones pueden ser binarias, ternarias o de orden mayor.
enlaces

24 4.3.1 Multiplicidad La multiplicidad expresa cuantas instancias de una clase determinada se pueden relacionar con una instancia de una clase asociada. Multiplicidad en OMT

25 1 Uno y sólo uno 5 Necesariamente cinco Cero o uno M..N De M a N * De 0 a muchos n De 0 a muchos 0..* De 0 a muchos 1..* De 1 a muchos Multiplicidad en UML

26

27 4.3.2 Roles Los roles son nombres que identifican el papel que juega una clase asociada a otra dada.

28 Son obligatorios para distinguir asociaciones reflexivas.
Los roles se utilizan para recorrer las asociaciones. Se tratan como pseudoatributos. UnaCompañia.empleado UnaPersona.empresa Son obligatorios para distinguir asociaciones reflexivas.

29 Son obligatorios para distinguir asociaciones distintas entre un mismo par de clases.

30 4.3.3 Asociaciones como clases
En una asociación entre dos clases, la propia relación puede poseer propiedades. Estas se modelan mediante una clase asociación. Estas propiedades no pueden situarse en ninguna de las clases sin perdida de información, sobre todo en el caso de relaciones muchos a muchos. Las clases asociación se tratan como cualquier otra clase del modelo.

31 4.3.4 Asociaciones cualificadas
Los cualificadores o calificadores dentro de una relación de asociación se utilizan para resolver búsquedas: dado un objeto en un extremo de la relación, ¿cómo identificar un objeto o conjunto de objetos en el otro extremo? Actúan como índices para recorrer la relación. Banco + Nº de Cuenta  da una Cuenta Siempre que se pueda pensar en una estructura de datos para efectuar una búsqueda en un extremo de una asociación (una tabla hash, un árbol binario), se puede utilizar un cualificador.

32

33 La cualificación aumenta la precisión del modelo.

34 “Una empresa está formada por departamentos”
4.4 Agregación La agregación es un tipo de relación con unas propiedades semánticas adicionales. La relación de agregación se emplea cuando se desea modelar una relación “ Parte de ”. “Una empresa está formada por departamentos” todo parte Empresa Departamentos N IF Nombre Nombre NumEmpleados simbolo agregación

35 Las propiedades más significativas de la agregación son:
transitiva (Si A es parte de B y B de C entonces A es parte de C) antisimétrica (si A es parte de B entonces B no puede ser parte de A).

36 La agregación puede tener distintos niveles de anidamiento.

37 Se pueden dar dos tipos de relaciones de agregación.
Inclusiva o física: cada componente puede pertenecer a lo sumo a un compuesto. La destrucción del compuesto implica la destrucción de las partes. Referencial o de catálogo: los componentes son reutilizables a lo largo de distintos compuestos. No están relacionados los tiempos de vida.

38 1..* 1+ 1..*

39 ¿referencial o inclusiva?
Pieza de Catalogo Nº Modelo Cantidad Pieza Física Nº S erie Describe

40 4.5 Generalización / Especialización
Las jerarquías de clases permiten gestionar la complejidad mediante un ordenamiento taxonómico. A partir de un conjunto de clases, si estas tienen en común una serie de atributos y operaciones, por generalización se puede crear una versión más general (superclase) de las clases iniciales (subclases). Los atributos y operaciones comunes a estas se sitúan en la superclase y son compartidos por todas las subclases.

41 La especialización es la relación contraria, parte de una superclase y se dirige hacia un conjunto de subclases. Las subclases heredan los atributos y las operaciones definidas en la superclase, pudiendo añadir atributos y operaciones propios.

42 Cada instancia de una subclase se considera también una instancia de la superclase. (relación es_un). Discriminador: atributo de enumeración que indica qué propiedad de un objeto está siendo abstraída por una relación de generalización. No son obligatorios.

43 Cuando en una jerarquía de especialización se repite una característica de una clase (atributo u operación) estamos redefiniendo la característica heredada

44 Se reutilizan los atributos y operaciones de la clase Punto
La relación de especialización se emplea en la fase de modelado de un sistema, mientras que la relación de herencia se ve como un mecanismo de reutilización de código en la fase de implementación o diseño. Se reutilizan los atributos y operaciones de la clase Punto

45 Dos tipos de restricciones:
Completa: Todos los hijos de la generalización se han especificado en el modelo Incompleta: No se han especificado todos los hijos y se permiten hijos adicionales

46 Se habla de especialización dinámica cuando un objeto puede cambiar de clase dentro de una jerarquía de subclases.

47 4.6 Clases abstractas Una clase abstracta es una clase que no posee instancias, pero sus clases descendientes sí. Una clase abstracta es una clase que tiene al menos una operación sin código. Estas clases no pueden instanciarse ya que poseen operaciones sin definir. Las clases abstractas se utilizan para definir operaciones que serán heredadas por sus subclases. Proporcionan el protocolo de la operación (interface) sin proporcionar el método correspondiente. 

48 Todas sus subclases concretas deben suministrar la implementación de la misma.
Clase abstracta Clases concretas

49 4.7 Herencia múltiple Se tiene herencia múltiple cuando una clase tiene más de una clase antecesora directa. No se suele utilizar el término especialización o generalización múltiple. La nueva clase hereda la unión de los atributos y operaciones definidos en las clases antecesoras. Una característica de una clase que llegue por distintas vías sólo se heredará una vez. 

50 Los problemas de nombres que surgen en una clase provenientes de distintas clases no deben resolverse en la etapa de implementación aún en el caso de que el lenguaje posea un mecanismo de resolución.

51 Cuando el lenguaje de implementación no posee herencia múltiple se puede reestructurar el modelo de objetos para eliminarla.

52 Una superclase con generalizaciones independientes se refunde en forma de agregado, en el cual cada componente sustituye a una generalización.

53 Se puede heredar la clase más importante y delegar el resto.

54 Se puede emplear una jerarquía de especialización anidada, primero se factoriza por una generalización y después por otra.

55 4.8 Restricciones Las restricciones son relaciones funcionales entre entidades del modelo de objetos. Suelen expresarse de forma declarativa aunque también se admiten las restricciones en lenguaje natural. Estas restricciones pueden hacer referencia al valor de los atributos de un objeto.

56 También se utilizan entre relaciones de asociación.

57 4.9 Asociaciones exclusivas
Una asociación exclusiva (or-asociación) está formada por un conjunto de asociaciones que relacionan una clase inicial (fuente) con una serie de clases destino (objetivo). Tomado un objeto de la clase fuente éste está relacionado a lo sumo con un objeto de una clase objetivo.

58 4.10 Paquetes en UML Los paquetes ofrecen un mecanismo general para la organización de los modelos agrupando elementos de modelado Se representan gráficamente como:

59 Cada paquete corresponde a un subconjunto del modelo y contiene, según el modelo, clases, objetos, relaciones, componentes y diagramas asociados Un paquete puede contener otros paquetes, sin límite de anidamiento pero cada elemento pertenece a (está definido en) sólo un paquete

60 Una clase de un paquete puede aparecer en otro paquete por la importación a través de una relación de dependencia entre paquetes Todas las clases no son necesariamente visibles desde el exterior del paquete, es decir, un paquete encapsula a la vez que agrupa

61 El operador “::” permite designar una clase definida en un contexto distinto del actual
Por ejemplo, la expresión Ventas::Producto designa la clase Producto definida en el paquete Ventas

62 Ejemplo de paquetes

63

64 4.11 Interfaces Colección de operaciones que se usa para especificar un servicio de una clase o una componente. Nombre: en la práctica sustantivos cortos prefijados por una I. Nombres Simples: Nombre de camino: prefijados por el paquete

65 Operaciones: métodos definidos en la interfaz.
Una interfaz no proporciona ni estructura ni implementación Vista como una clase esteriotipada: Cuando las operaciones y/o sus argumentos son importantes en el modelo.

66 Relaciones Generalización: herencia entre interfaces.
Dependencia: cuando una clase/componente necesita/hace uso de los servicios proporcionados por una interfaz. Realización: cuando una clase/componente implementa/realiza los servicios definidos en una interfaz.

67

68 4.12 Diagrama de Componentes
Los diagramas de componentes describen los elementos físicos del sistema y sus relaciones Muestran las opciones de realización incluyendo código fuente, binario y ejecutable

69 Tipos de componentes De Despliegue: Producto del trabajo:
Los necesarios y suficientes para formar un sistema ejecutable: Bibliotecas dinámicas (DLLs), ejecutables (EXEs), componentes COM+, CORBA, EJB, páginas web dinámicas, tablas de bd, archivos de inicialización, … Producto del trabajo: Productos que quedan fruto del proceso de desarrollo Código fuente, archivos de datos, test, documentos de análisis y diseño De ejecución: Se crean en ejecución. Un objeto COM+, un respuesta de una consulta a una bd, …

70 Notación gráfica

71 En C++ una especificación corresponde a un archivo con un sufijo
En C++ una especificación corresponde a un archivo con un sufijo .h y un cuerpo a un archivo con un sufijo .cpp En Ada la noción de módulo existe directamente en el lenguaje con el nombre del paquete. En Java una componente se implementa con una clase (o cjto de clases).

72 Dependencias entre Componentes
Las relaciones de dependencia se utilizan en los diagramas de componentes para indicar que un componente utiliza los servicios ofrecidos por otro componente

73 Componentes y clases Semejanzas: Diferencias: Tienen nombre
Pueden realizar un cjto de interfaces Pueden participar en relaciones de dependencia, generalización y asociación Pueden anidarse Pueden tener instancias Pueden participar en interacciones Diferencias: Clases abstracciones lógicas, componentes elementos físicos. Las componentes empaquetan clases que son lógicos. Diferente nivel de abstracción. Las clases pueden tener atributos y operaciones. En general las componentes sólo tienen operaciones alcanzables a través de sus interfaces.

74

75

76 Componentes e interfaces
Una interfaz define un cjto de operaciones Un componentes puede implementar/realizar un cjto de interfaces. Interfaz de exportación : interfaz implementada por un componente. Interfaz de importación : interfaz utilizada por un componente.

77

78 4.13 Diagramas de Distribución
Los Diagramas de Distribución muestran la disposición física de los distintos nodos que componen un sistema y el reparto de los componentes sobre dichos nodos

79 Los estereotipos permiten precisar la naturaleza del equipo:
Dispositivos Procesadores Memoria Los nodos se interconectan mediante soportes bidireccionales (en principio) que pueden a su vez estereotiparse

80 Ejemplo de conexión entre nodos
<<Procesador> <<dispositivo>> nodo <<TCP/IP>> nodo2 conexión1 conexión7 <<RDSI>> En Rational Rose podemos distinguir entre el dispositivo por estereotipado y el dispositivo con su propio símbolo dispositivo

81 El Diagrama de Distribución modela la distribución en tiempo de ejecución de los elementos de procesamiento y componentes de software, junto a los procesos y objetos asociados En el Diagrama de Distribución se modelan los nodos y la comunicación entre ellos Cada nodo puede contener instancias de componentes

82


Descargar ppt "Tema 3: Modelos estructurales"

Presentaciones similares


Anuncios Google