3.- Diseño estructural: Diagrama de clases. Mª Antonia Zapata Máster Bases de Datos e Internet



Documentos relacionados
M III ABSTRACCIÓN Y CLASIFICACIÓN

Diagrama de Clases. Diagrama de Clases

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

3. DIAGRAMAS DE CLASES INTRODUCCIÓN DIAGRAMAS DE CLASES Perspectivas Clases

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

Curso de Java POO: Programación orientada a objetos

TEMA 8: DIAGRAMA DE CLASE EN UML

Ingeniería del Software. Modelo de Dominio

2.4 Modelado conceptual

DIAGRAMA DE CLASES EN UML

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

ISO Lenguaje de Esquema Conceptual

Manual de Usuario Proveedor Módulo Cotizaciones

Programación Orientada a Objetos con Java

Introducción al UML. Domingo Hernández H. Escuela de Ingeniería de Sistemas Departamento de computación

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

EL MODELO ENTIDAD-RELACIÓN:

Ingeniería del Software I

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS

2.2.- Paradigmas de la POO

Relaciones entre clases: Diagramas de clases UML

3. Modelo relacional: Estructura e integridad.

Arturo Cepeda Pérez. Software Engineering Tutor

Capítulo VI. Diagramas de Entidad Relación

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Introducción a la plataforma Moodle Aníbal de la Torre Plataforma Moodle. Accediendo a los contenidos

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado

Tema 2: Modelo Entidad-Asociación (E-A)

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Patrones para persistencia (I) Ingeniería del Software II

Diagramas de Clase en UML 1.1

Diagramas de clases de UML

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 8. Elementos Básicos

Carrito de Compras. Esta opción dentro de Jazz la podremos utilizar como cualquier otro carrito de compras de una página de Internet.

GENERACIÓN DE TRANSFERENCIAS

II. Relación con Terceros

Introducción a Protégé

Seven ERP Guía De Referencia - Imágenes

TEMA 7: DIAGRAMAS EN UML

Módulo de farmacia, stock y compras

Modelado Estático Avanzado (Generalizaciones) Diseño de Software Avanzado Departamento de Informática

Introducción a la Programación Orientada a Objetos (POO) Introducción a la Programación Orientada a Objetos (POO)

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

MANUAL DE AYUDA MODULO TALLAS Y COLORES

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Modelo Entidad-Relación

Introducción a la programación orientada a objetos

UNIVERSIDAD NACIONAL DE TRUJILLO ESCUELA DE INFORMATICA BASE DE DATOS

Programación páginas web. Servidor (PHP)

Principios Básicos de Orientación a Objetos. Orientación a Objetos

Entidad Formadora: Plan Local De Formación Convocatoria 2010

Intermediación ORDENES ENLAZADAS. Características y Propiedades

Base de datos relacional

INGENIERÍA DEL SOFTWARE I. Univ. Cantabria Fac. de Ciencias. Especificación de Requisitos. Práctica 2

Sistema de Facturación de Ventas WhitePaper Enero de 2007

SCT Software para la calibración de transductores de fuerza. Versión 3.5. Microtest S.A.

Manual de Usuario: Administrar Listas de Distribución

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

UML. Lenguaje de Modelado Unificado

Operación Microsoft Access 97

ALGUNAS AYUDAS PARA EL ACCESO AL AULA DIGITAL Contenido

Capitulo III. Diseño del Sistema.

! "#"$ %& '$()*&+,"-.& / ),& &$#&"$! "#0 12$3(! %).& -)#&"$ &$#&"$! 4

Módulo 9 Sistema matemático y operaciones binarias

Registro (record): es la unidad básica de acceso y manipulación de la base de datos.

Mesa de Ayuda Interna

CONSTRUCCIÓN DEL PROCESO MESA DE AYUDA INTERNA. BizAgi Process Modeler

Adelacu Ltda. Fono Graballo+ Agosto de Graballo+ - Descripción funcional - 1 -

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

Proyecto Help Desk en plataforma SOA Modelo de Dominio Versión 1.3. Historia de revisiones

Manual para la utilización de PrestaShop

Conjuntos entidad. prestamo. Conjuntos entidad cliente y prestamo. Atributos. Atributos. Conjuntos asociación. Tema 2: Modelo Entidad-Asociación (E-A)

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

Unidad II: Diseño de Bases de Datos y el modelo E-R. 2.1 El Proceso de Diseño

DCU Diagramas de casos de uso

2.- Diseño del comportamiento: Diagrama de actividades. Mª Antonia Zapata

PROYECTOS, FORMULACIÓN Y CRITERIOS DE EVALUACIÓN

Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado

O C T U B R E SOPORTE CLIENTE. Manual de Usuario Versión 1. VERSIÓN 1 P á g i n a 1

Kaldeera Advanced Forms 2009 Guía del usuario

LA INTRANET -Manual general-

SERVICIO NACIONAL DE APRENDIZAJE- SENA PROCESO RELACIONAMIENTO EMPRESARIAL Y GESTION DEL CLIENTE

Gestión de la Información

UNIVERSIDAD ESTATAL PENÍNSULA DE SANTA ELENA UNIDAD DE PRODUCCIÓN DE LA ESCUELA DE INFORMÁTICA SISTEMA WEB DE SYLLABUS Y CONTROL DE PLANES DE CLASE

Notación UML para modelado Orientado a Objetos

GESTIÓN DE REDES PARTE III

Java Inicial (20 horas)

Google Groups. Administración de Grupos de Google Apps

Redes de área local: Aplicaciones y servicios WINDOWS

CAPITULO V. HERRAMIENTA CASE (Rational Rose, C++)

Manual de instalación Actualizador masivo de Stocks y Precios

(Soluciones ADSL e-comercio) GUIA DE USUARIO Versión 2.0

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

GVisualPDA Módulo de Almacén

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

CONECTANDO EL SOFTWARE EN REDES

(decimal) (hexadecimal) 80.0A.02.1E (binario)

rg.o cm a Diseñ e o o c o c n o ce c p e tual l@ rza e b Di D s i e s ño d e b as a e s s s d e d at a o t s

Transcripción:

3.- Diseño estructural: Diagrama de clases Mª Antonia Zapata Máster Bases de Datos e Internet

Introducción Los diagramas de clases sirven para representar la estructura estática de un sistema incluyendo una colección de elementos de modelización estáticos, tales como clases y relaciones 2006 2

Conceptos básicos Un objeto es algo distinguible que percibimos como que tiene existencia, sea física o conceptual Ejemplos: Pedro González, el libro Cien años de soledad, la luna, la asignatura de Acceso a bases de datos Una clase refiere genéricamente a los objetos de una familia que se perciben con propiedades y comportamiento comunes Ejemplos: persona, libro, satélite, asignatura Una instancia de una clase (objeto) refiere a la representación de un objeto de una clase. 2006 3

Conceptos básicos Los objetos generalmente los percibimos relacionados entre sí Ejemplos: Cien años de soledad lo escribió Gabriel García Márquez, la luna es un satélite de la tierra Una asociación refiere genéricamente a las relaciones que existen entre objetos de clases Ejemplos: libro escrito por autor satélite de un planeta Un enlace refiere a la representación de una relación entre instancias de clases 2006 4

Elementos básicos Clase: describe genéricamente a una familia de objetos que tienen en común una serie de atributos y operaciones Atributo: describe genéricamente una propiedad de los objetos de una clase (generalmente, describe hechos estáticos o estructurales) Operación: describe genéricamente un servicio que puede ser requerido a cualquier objeto de una clase para que muestre un comportamiento 2006 5

Elementos básicos Asociación: describe una relación genérica entre objetos de clases Multiplicidad: describe el número mínimo y máximo de enlaces posibles <min..max> 0..* * 1..* 1..1 1 n..m 2006 6

Representación gráfica clase <NombrClase1> asociación <min..max> nombre de la <Nombre> asociación <min..max> <NombrClase2> por cada objeto de Clase2 hay como mínimo min y como máximo max objetos de Clase1 relacionados con él por cada objeto de Clase1 hay como mínimo min y como máximo max objetos de Clase2 relacionados con él 2006 7

Ejemplo: cajero automático (versión 1) 1..* Tarjeta 1..* 1 Cliente 1 Cuenta una tarjeta es de un cliente un cliente tiene una o varias tarjetas una cuenta tiene asociadas una o varias tarjetas una tarjeta es de una cuenta 2006 8

Restricciones Dentro de una misma clase, no se pueden repetir nombres de atributos La multiplicidad mínima no puede ser negativa La multiplicidad máxima tiene que ser mayor o igual que la mínima 2006 9

Recomendaciones El nombre de las clases se escribe en negrita Los nombres de las clases y las asociaciones empiezan por mayúscula Los nombres de los atributos y las operaciones empiezan por minúscula Cuando un nombre está formado por más de una palabra, entonces la segunda y siguientes palabras empiezan por mayúscula Ejemplos: Persona, Autor, EjemplarLibro, EscritoPor, edad, teléfonomóvil, expulsartarjeta, dibujar 2006 10

Ejercicios 1 1..* 1..* 1 Cliente Tarjeta Cuenta Persona ContratadaPor Empresa Cliente CuentaBancaria Sucursal MatriculadoEn Alumno Asignatura Departamento Autor Libro EjemplarLibro 2006 11

Jerarquía de clases Generalización: es una asociación entre una clase y otra más general de modo que la primera describe una subfamilia de objetos de esta última Se debe verificar la propiedad de sustituibilidad (substitutability), es decir, se puede usar una instancia de la especialización siempre que se espere una instancia de la generalización El elemento más específico hereda las características del elemento más general 2006 12

Representación gráfica <NombrClase1> <NombrClase2> <NombrClase3>... <NombrClaseN> <NombrClase1> <NombrClase2> <NombrClase3>... <NombrClaseN> 2006 13

Ejemplo personas Persona mujeres Mujer representa una relación de subconjunto 2006 14

Recomendaciones El nombre de una clase abstracta se escribe en itálica Persona Hombre Mujer 2006 15

Se pueden realizar distintas clasificaciones Seguro SeguroIndividual SeguroEmpresa SeguroDeVida SeguroDeCoche 2006 16

Tipos de clasificaciones <NombrClase1> {restricción} <NombrClase2> <NombrClase3>... <NombrClaseN> Las restricciones posibles son: complete o incomplete: si todas las instancias de la superclase están en una subclase o no. disjoint o overlapping: si cada instancia de la superclase está en como mucho una subclase o no 2006 17

Ejemplo Persona {complete, disjoint} Hombre Mujer 2006 18

Clases: atributos Atributo: describe genéricamente una propiedad de los objetos de una clase (generalmente, describe hechos estáticos o estructurales) Visibilidad: ámbito en el que el atributo es visible (+: público, -: privado, #: protegido o ~: paquete) Nombre: identifica el atributo dentro de la clase (no se puede repetir) Tipo: describe el tipo del valor del atributo (entero, real,...) Multiplicidad: describe el número mínimo y máximo de valores posibles de un atributo Valor inicial: describe el valor que se asigna por defecto a un atributo cuando se instancia un objeto Alcance: describe si es un atributo de instancia o de clase 2006 19

Notación y ejemplos Notación: [ visibilidad ] nombreatributo [ : tipo ] [ [multiplicidad] ] [ = valorincicial ] Los atributos de clase se escriben subrayados Por defecto, la visibilidad es pública y la multiplicidad es [1..1] Ejemplos: nombrepersona +provincia: String = Zaragoza origen: Punto -segundoapellido: Integer [0..1] idunico: Long #prioridad: Entero =1 2006 20

Ejemplos Persona nombrepersona primerapellido segundoapellido fechanacimiento calle: String Dirección localidad: String [0..1] provincia: String [0..1] = Zaragoza CP: String Libro +título: String [0..1] +autor: String [0..*] +fechapublicación: date Producto #id: Float +nombre: String +precio: Float 2006 21

Clases: operaciones Operación: describe genéricamente un servicio que puede ser requerido a cualquier objeto de una clase para que muestre un comportamiento Visibilidad: ámbito en el que la operación es visible (+: público, -: privado, #: protegido o ~: paquete) Nombre: identifica la operación dentro de la clase (no se puede repetir) Parámetros: lista de parámetros de la operación Tipo del valor devuelto: tipo del resultado si es que tiene Alcance: describe si es una operación de instancia o de clase 2006 22

Notación y ejemplos Notación: [ visibilidad ] nombreoperación [ (listaparámetros) ] [ :tiporetorno ] Las operaciones de clase se escriben subrayadas Por defecto, la visibilidad es pública Ejemplos: mover( ) +añadircurso( c:curso):booleano poneralarma(t:temperatura) -compactar( ) copiasenestantería( ):Entero #comprobarerrores( ) 2006 23

Ejemplos Figura origen mover( ) redimensionar( ) visualizar( ) Ventana origen:punto tamaño:vector abrir( ) cerrar( ) mover( ) SensorTemperatura +reiniciar( ) +poneralarma(t:temperatura ) +valor( ): temperatura Transacción +ejecutar( ) +rollback( ) #prioridad( ) #marcadetiempo( ) 2006 24

Instancias Instancia de clase (objeto): describe un objeto de una clase mediante valores de los atributos de la clase. El objeto responde a las operaciones de la clase Instancia de asociación (enlace): describe una relación entre objetos Notación nombre:clasificador 2006 25

Ejemplos Juan objeto sin clase : Persona objeto anónimo Juan : Persona objeto no anónimo MPR01:Persona nombrepersona: "María" primerapellido: "Ortíz" segundoapellido: "García" fechanacimiento: 1/2/1980 :direccion tipocalle: "Plaza" calle: "San Francisco" casa: "3" escalera: piso: "3º" puerta: "A" localidad: "Zaragoza" CP: "50009" provincia: "Zaragoza" milibro: libro titulo[0...1]: string = "El Alba" autor[0...n]: string = null fechapublicacion: date[0...1] = null tipolibro: string = "ensayo" Valor nulo describe la ausencia de valor 2006 26

Propiedad de herencia Persona nombrepersona primerapellido segundoapellido fechanacimiento Los atributos y operaciones de la clase más general (superclase) son atributos de la clase especializada (subclase) Una subclase puede redefinir una operación heredada Hombre Mujer numembarazos 2006 27

Ejemplos MPR01:Mujer nombrepersona: "María" primerapellido: "Ortíz" segundoapellido: "García" fechanacimiento: 1/2/1980 numembarazos: 0 PPGO3:Hombre nombrepersona: "Pedro" primerapellido: "Pérez" segundoapellido: "García" fechanacimiento: 7/10/2005 2006 28

Tipos especiales de asociaciones Agregación: es una asociación que describe una relación entre un todo y sus partes de modo que las partes pueden existir por sí mismas Composición: es una asociación que describe una relación entre un todo y sus partes de modo que las existencias de las partes se perciben como totalmente dependientes del todo 2006 29

Ejemplos EquipoFutbol 0...1 0...* JugadorFutbol relación tipo tiene un En una agregación una parte puede pertenecer a varios todos Proyecto Actividad relación tipo contiene a En una composición una parte sólo puede pertenecer a un todo 2006 30

Clase asociativa Clase asociativa: describe una asociación que refiere a una familia de relaciones entre objetos sobre las que se perciben propiedades que son propias de las relaciones 2006 31

Ejemplo LibroFísico prestado 0...* 0...1 SocioBiblioteca Préstamo fechapréstamo fechadevolución [0...1] Un atributo debe situarse en el elemento al que directamente atribuye 2006 32

Multiplicidad de clase Las clases también pueden tener asociada una multiplicidad que limita el número mínimo y máximo de instancias. n..m <NombrClase> Por defecto se toma el valor *. 1 ControladorRed Una clase que tiene sólo una instancia se denomina clase unitaria o singleton 2006 33

Roles y navegación Persona empleado patrón 1..* 0..* X Empresa Un rol indica el papel que juega una clase en una asociación. La navegación define la posibilidad (o no) de acceder a los objetos de una clase desde otra. 2006 34

Asociaciones n-arias La multiplicidad de una clase en una asociación n-aria especifica el número de instancias que pueden relacionarse con una instancia de cada una de las otras clases Proveedor * * Producto * Tienda Dado un proveedor y una tienda pueden tener varios productos 2006 35

Notas Nota: es una observación, condición semántica o restricción <nota> LibroFísico prestado 0-* 0-1 SocioBiblioteca Préstamo fechapréstamo fechadevolución [0-1] RN fechaprestamo < fechadevolucion 2006 36

Ejemplo de préstamo con UML 2.0 SocioBiblioteca 0..* 0..* {bag} LibroFísico Préstamo fechapréstamo fechadevolución - un préstamo es la asociación entre un único socio y un único libro (por la propia definición de clase asociativa). - un socio puede haber cogido prestado varios libros. - un libro ha podido ser cogido prestado por socios varias veces. - un socio puede haber cogido prestado un mismo libro varias veces (correspondiendo a préstamos distintos). 2006 37

Ejemplo de préstamo con UML 1.5 SocioBiblioteca 1 Préstamo 0..* 0..* fechapréstamo 1 LibroFísico fechadevolución - un préstamo tiene asociado siempre un único libro y un único socio - un socio puede haber solicitado varios préstamos (de un libro cada vez) - un libro ha podido ser prestado varias veces (a un socio cada vez). - un socio puede haber cogido prestado un mismo libro varias veces. las restricciones son las mismas 2006 38

Ejemplo de préstamo con asociación ternaria SocioBiblioteca 0..1 0..1 LibroFísico dado un préstamo y un libro pueden ser de cero o un socio CUIDADO: el mismo préstamo, con otro libro, puede estar asociado con otro socio 0..* Préstamo dado un libro y un socio pueden tener cero o varios préstamos - un préstamo puede estar asociado varias veces con libros y socios - un socio puede haber solicitado varios préstamos (de un libro cada vez) - un libro ha podido ser prestado varias veces (a un socio cada vez). - un socio puede haber cogido prestado un mismo libro varias veces. las restricciones son distintas!!!! 2006 39

Asociaciones ternarias en UML En una asociación ternaria es conveniente poder dar dos tipos de información: - por cada pareja de instancias de dos clases, con cuántas instancias de la otra clase está relacionada. Por ejemplo, indicar que cada pareja (socio, libro) se relaciona con cero o varios préstamos esta información SÍ se indica en UML a través de la multiplicidad - en cuántas asociaciones participa una instancia de una clase. Por ejemplo, indicar que dado un préstamo siempre participa en una sola instancia de la asociación esta información NO se indica en UML a través de la multiplicidad!!!! es necesario imponer una restricción y especificarla usando OCL 2006 40

Navegación vs atributo A b:b[*] X B Un extremo de asociación navegable es también un atributo. Se puede utilizar un atributo para representar el extremo navegable de una asociación. Esta notación se puede usar en conjunción con la representación gráfica de la asociación con objeto de que quede claro que el atributo representa el extremo de una asociación 2006 41

Especialización dinámica (1/2) Empleado {incomplete, disjoint} Gerente Vendedor Administrador Un mismo empleado puede ir desempeñando distintos puestos en la empresa. Por lo tanto un mismo objeto puede ir cambiando de clase a lo largo del tiempo. El problema es que la mayoría de los lenguajes de programación no ofrecen la posibilidad de que un objeto cambie de clase. 2006 42

Especialización dinámica (1/2) Empleado 1 1 EstadoDeEmpleado {incomplete, disjoint} Gerente Vendedor Administrador El empleado es siempre el mismo y lo que cambia es el estado en el que se encuentra. Cuando un empleado cambia de estado se destruye el objeto que representa ese estado y se crea un nuevo objeto representando el nuevo estado. Con este diseño ya no se utiliza especialización dinámica. Se puede representar muy fácilmente la posibilidad de que un mismo empleado desempeñe varios papeles en la misma empresa o el hecho de guardar la historia de los puestos que ha ido ocupando un empleado. 2006 43

PowerType (supra tipo) Árbol * 1 TipoDeÁrbol {incomplete, disjoint} :TipoDeÁrbol Abedul Abeto Power type: clase cuyas instancias son subclases de otra clase. Por ejemplo, las instancias de la clase TipoDeÁrbol son abedul y abeto, que a su vez son subclases de Árbol. Aunque parece redundante porque se representa dos veces lo mismo, no es así puesto que las instancias del power type y las subclases son los mismos objetos. 2006 44