Tema 3: Modelos estructurales

Slides:



Advertisements
Presentaciones similares
IBD Plan 90 y 2003 Clase 11.
Advertisements

IBD Plan 90 y 2003 Clase 10.
Conocimiento, Uso y Evaluación de Medicamentos Genéricos
Los números del 0 al cero uno dos tres cuatro cinco 6 7 8
Noviembre 2007Estudio Rostros de Noticias 2007Collect-GfKWikén Estudio Rostros de Noticias de la TV Chilena Desarrollados para Revista Wikén El Mercurio.
1 LA UTILIZACION DE LAS TIC EN LAS MICROEMPRESAS GALLEGAS. AÑO mayo 2005.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO de Junio de 2005.
TEMA 2 MÚLTIPLOS Y DIVISORES
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Aladdín-respuestas 1.Vivía 2.Era 3.Amaba 4.Quería 5.Gustaban 6.Se sentía 7.Salía 8.Tenía 9.Decidió 10.escapó 11. Se vistió 12. Conoció 13. Vio 14. Pensó
Respuestas Buscando a Nemo.
Fundamentos de Diseño de Software INFT.1
Lenguaje Unificado de Modelado
TECNICATURA UNIVERSITARIA EN INFORMATICA
William Shakespeare ( greg.), fue un dramaturgo, poeta y actor inglés. Conocido en ocasiones como el Bardo de Avon (o.
1 Reporte Componente Impacto Por Orden Territorial Por Departamento No Disponible ND *Los indicadores para el año 2008 no fueron calculados.
DEPARTAMENTO ADMINISTRATIVO NACIONAL DE ESTADISTICA5 Libertad y Orden DEPARTAMENTO ADMINISTRATIVO NACIONAL DE ESTADISTICA CENSO GENERAL 2005 REPÚBLICA.
Tomado de:
UML 1.4 Peter Emerson Pinchao Solis.
TELEFONÍA IP.
Parte 3. Descripción del código de una función 1.
Vocabulario querer comerlo -paja por supuesto - madera
Arquitectura de software dirigida por modelos (Model-Driven Architecture) Liliana Favre UNCPBA 2006.
FUNCIONES DE UNA VARIABLE REAL
Introducción a la Orientación a Objetos
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
50 principios 1. Los clientes asumen el mando.
Indicadores CNEP Escuela
Ecuaciones Cuadráticas
Estadística Computacional I
¡Primero mira fijo a la bruja!
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno.
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
Ingeniería del Software
DIAGRAMA DE COMPONENTES INTEGRANTES Córdova Vásquez Giovanny Escobar Alvares Calixto Gomez Quinteros Adelaida Pinto Flores Yarmila.
REGLAS DE LOS SIGNOS.
By: Nicholas, Rayna, Nathaniel, Calvin
Los números. Del 0 al 100.
Diagramas de clases Modelan la vista estática del sistema
DIAGRAMA DE CLASE.
Medio de tele-comunicación
Análisis y Diseño orientado a objetos con UML.
Vocabulario: (Los números)
Los Numeros.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 10: Interfaces Antonio J. Sierra.
Diagrama CAUSA_EFECTO ó ISHIKAWA ó ESPINA DE PESCADO
Estructuras de control
Herramienta FRAX Expositor: Boris Inturias.
Modelado Arquitectónico
Diagramas de Clase Angela Carrillo R..
UML.
Diagrama de Clases ACI 570.
Introducción a UML DIAGRAMA DE CLASES Departamento de Informática
Facultad de Ingeniería
Análisis y diseño de sistemas Diagrama de componentes
TEMA 9: DIAGRAMA DE CLASE EN UML
Clasificación de Diagramas
Introducción a la Programación Orientada a Objetos (POO)
Ingeniería de Requisitos
UML Casos de Uso (repaso) y Diagramas de Clase
Modelan la vista estática del sistema Elementos básicos: Clases Relaciones Objeto: Representación de una entidad discreta (real o abstracta) - Estado:
Análisis y Diseño de Aplicaciones 3º Educación Media Tecnológica
La Programación Orientado a Objetos
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Modelado UML Diagrama de Clases
Estructura de Datos Departamento de Programación Universidad Metropolitana Contenido: UML. Envío de mensajes. Relaciones. Asociación. Agregación o composición.
Transcripción de la presentación:

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

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

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.

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.

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.

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.

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

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.

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.

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

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.

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

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.

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

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.

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.

Diagrama de instancias Madrid: Ciudad Nombre Ciudad: Madrid población: 3.000.000 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

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

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

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

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

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

1 Uno y sólo uno 5 Necesariamente cinco 0..1 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

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

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.

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

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.

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.

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

“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

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).

La agregación puede tener distintos niveles de anidamiento.

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.

1..* 1+ 1..*

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

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.

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.

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.

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

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

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

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

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. 

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

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. 

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.

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

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

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

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

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.

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

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.

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:

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

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

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

Ejemplo de paquetes

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

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.

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.

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

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, …

Notación gráfica

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).

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

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.

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.

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

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

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

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