UML: Diagrama de Clases -...

36
UML: Diagrama de Clases JUAN CARLOS CONDE RAMÍREZ INTRODUCTION TO PROGRAMMING

Transcript of UML: Diagrama de Clases -...

UML: Diagrama de ClasesJUAN CARLOS CONDE RAMÍREZ

INTRODUCTION TO PROGRAMMING

Objetivos

◦ Entender el propósito de los diagramas de clases UML.

◦ Comprender la importancia de este tipo de diagramas para la especificación de una aplicación.

◦ Saber por qué UML es un lenguaje y no sólo una capa gráfica.

◦ Identificar los conceptos elementales de POO y su representación con UML.

◦ Aprender a utilizar las asociaciones entre clases que permite especificar UML.

◦ Conocer algunos conceptos avanzados que facilitan la generación de código, entre otras cosas.

FCC-BUAP 2

Propósito de los Diagramas de Clases

•Presentar los conceptos UML relativos a la vista estructural (diagramas de clases).

•Presentar la notación gráfica del diagrama de clases UML.

•Explicar la semántica de las clases UML (compatible con la semántica de los lenguajes deprogramación orientados a objetos, en nuestro caso C++).

FCC-BUAP 3

Diagrama de Clases

FCC-BUAP 4

Vista Estructural, I

•La vista estructural del modelo UML es la vista más utilizada para especificar una aplicación.

•El objetivo de esta vista es modelar la estructura de diferentes clases de una aplicaciónorientada a objetos, así como de sus relaciones.

•El paradigma orientado a objetos se concibió alrededor de los años 90’s, para facilitar laconstrucción de aplicaciones orientadas a objetos, el lenguaje UML ha evolucionadofuertemente hasta su versión 2.5.

FCC-BUAP 5

Vista Estructural, II

•Los conceptos que este paradigma propone para modelar la vista estructural son los conceptosde clase y de objeto.

•UML define su propia semántica OO, la cual se asemeja a la semántica de los lenguajes deprogramación orientados a objetos Java o C++.

•Por lo tanto, UML es un lenguaje y no una capa gráfica que permite diseñar aplicaciones Java oC++.

FCC-BUAP 6

Conceptos elementales OO, I

•Para cubrir el objetivo del curso, se supone que los asistentes poseen un mínimo deconocimientos del paradigma orientado a objetos.

•Los siguientes conceptos elementales son ampliamente conocidos:

◦ Objeto: entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento ofuncionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se correspondencon los objetos reales del mundo que nos rodea.

◦ Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. Lainstanciación es la lectura de estas definiciones y la creación de un objeto a partir de ella.

FCC-BUAP 7

Conceptos elementales OO, II

◦ Instancia: un objeto es el resultado de la instanciación de una clase.

◦ Encapsulación: significa reunir a todos los elementos que pueden considerarse pertenecientes a unamisma entidad, al mismo nivel de abstracción. Esto permite la cohesión de los componentes delsistema.

◦ Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismonombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que seeste usando.

◦ Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía declasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las quepertenecen. La herencia organiza y facilita el polimorfismo.

FCC-BUAP 8

Conceptos elementales OO, III

Clase

•Semántica: en UML, una clase define la estructura común de un conjunto de objetos y permite laconstrucción de objetos instancias de estas clases. Una clase se identifica por su nombre.

•Grafica: una clase se representa, con la ayuda de un rectángulo, que contiene el nombre de la clase.

FCC-BUAP 9

Conceptos elementales OO, IV

Interfaz

•Semántica: en UML, una interfaz define un contrato que deben respetar las clases que realizan la interfaz.Una interfaz se identifica por su nombre. Los objetos instancias de las clases que realicen las interfaces sontambién instancias de las interfaces. Una clase puede realizar varias interfaces, y una interfaz puede serrealizada por varias clases.

•Grafica: un interfaz se representa de dos maneras: ya sea con la ayuda de un rectángulo que contiene elnombre dela interfaz (se usa el estereotipo <<interfaz>> arriba del nombre) o con la ayuda de un círculo (seindica abajo del mismo el nombre de la interfaz).

FCC-BUAP 10

Conceptos elementales OO, V

•La relación de realización entre una clase y una interfaz se representa por una flecha punteadacon un triángulo blanco en la cabeza.

FCC-BUAP 11

Conceptos elementales OO, VI

Propiedad (atributo) de una clase o de una interfaz

•Semántica: las clases y las interfaces pueden poseer varias propiedades. Una propiedad tiene un nombre yun tipo. El tipo puede ser ya sea una clase UML, o ya sea un tipo de base (integer, string, boolean, char,real). Un objeto instancia de la clase o de la interfaz debe llevar los valores de las propiedades de su clase.

•Grafica: las propiedades de una clase o de una interfaz se representan en el rectángulo que representa unaclase o la interfaz. Cada propiedad se representa por su nombre y su tipo.

FCC-BUAP 12

Conceptos elementales OO, VII

Operación de una clase o de una interfaz

•Semántica: las clases y las interfaces pueden poseer varias operaciones. Una operación tiene un nombre,parámetros y puede incluir excepciones. Un objeto instancia de una clase o interfaz es responsable de larealización de las operaciones definidas.

◦ Los parámetros tienen tipos y tienen un sentido (in, out, inout, return).

◦ Si el sentido de la operación es in, out, inout; el objeto que invoca la operación debe proporcionar el valor delparámetro, y éste puede ser modificado por el objeto responsable de la operación.

◦ Para el sentido return, el objeto responsable de la operación devuelve un valor como resultado de la operación.

◦ Las excepciones de una operación están tipeadas.

◦ Las operaciones UML no definen el comportamiento que será realizado en la invocación de la operación.

FCC-BUAP 13

Conceptos elementales OO, VIII

•Gráfica: las operaciones de una clase o de una interfaz se representan en el rectángulo que representa laclase o la interfaz. Cada operación se representa por su nombre y sus parámetros. Es igualmente posibleocultar los parámetros de la operación.

FCC-BUAP 14

Persona

nombre : string

getNombre(void) : string

Conceptos elementales OO, IX

Herencia entre clases

•Semántica: en UML, una clase puede heredar de otras clases. La herencia entre clases UML debe serconsiderada como una inclusión entre los conjuntos de objetos instanciados de las clases.

• Los objetos instancias de las sub-clases son objetos instancias de las superclases. Es decir, si una clase A hereda de una clase B, elconjunto de los objetos instancias de A está incluido en el conjunto de los objetos instancias de B.

•Así, todo objeto instancia de A debe poseer los valores de las propiedades definidas en A y en B y debe ser responsable de lasoperaciones definidas en A y en B.

•Después, veremos que la relación de herencia entre dos clases que pertenecen a paquetes diferentes dependen de algunas reglas.

FCC-BUAP 15

Conceptos elementales OO, X

•Grafica: la relación de herencia entre dos clases se representa por una flecha con un triangulo blanco en lacabeza.

FCC-BUAP 16

La clase Persona hereda dela clase SerViviente.

ó

La clase Persona extiende ala clase SerViviente.

Conceptos elementales OO, XIPaquete

•Semántica: un paquete permite reagrupar clases, interfaces y paquetes. Las clases, interfaces y paquetesno pueden tener más que un solo paquete en el cual se han reagrupado. La posibilidad de establecer unvínculo entre las clases y las interfaces depende del vínculo que existe entre el paquete que las contiene.

•Grafica: el paquete se representa con la ayuda de un rectángulo que posee un bisel en el cual se escribe elnombre del paquete. Los elementos contenidos se representan en el rectángulo. El tamaño del rectángulose adapta al tamaño de su contenido.

FCC-BUAP 17

Conceptos elementales OO, XIIImportaciones de paquetes

•Semántica: para que las clases de un paquete puedan heredar de las clases de otro paquete o asociarse, esnecesario precisar una relación de importación entre estos dos paquetes. La relación de importación esunidireccional, es decir, implica un paquete fuente y un paquete destino.

•Grafica: esta relación se expresa con la ayuda de un flecha punteada. La cadena de caracteres accesselement escrita sobre la flecha puede ser opcional. La figura muestra la relación de importación de dospaquetes P1 y P2, la clase A desea acceder a la clase B.

FCC-BUAP 18

Conceptos elementales OO, XIIINota

•Semántica: una nota UML es un párrafo de texto que puede ligarse a cualquier elemento del modelo UML(paquete, clase, propiedad, operación, asociación). El texto que contiene la nota permite comentar elelemento objetivo destacado por la nota.

•Grafica: las notas se representan con la ayuda de un rectángulo que contiene el texto y una de sus esquinasestá doblada. Una línea discontinua permite unir la nota con el elemento del modelo que se destaca.

FCC-BUAP 19

Asociaciones entre Clases, I

•El lenguaje UML define el concepto de asociación entre dos clases. Este concepto no formaparte del paradigma OO, pero permite precisar las relaciones que pueden existir entre variosobjetos.

•En UML, una asociación se da entre dos clases. Tiene un nombre y dos extremidades, quepermiten conectarla a cada una de las clases asociadas.

•Cuando se define una asociación entre dos clases, esto significa que los objetos instancias deestas dos clases pueden estar relacionados entre ellos.

FCC-BUAP 20

Asociaciones entre Clases, II

•La figura representa la asociación denominada habita, que asocia las clases Persona y Dirección.

•Esta asociación significa que los objetos instancias de la clase Persona y los objetos instancias dela clase Dirección pueden estar unidos. Es decir, las personas habitan en una dirección.

FCC-BUAP 21

Asociaciones entre Clases, III

•Cada extremidad de la asociación tiene un nombre de rol, que permite identificar cada una delas clases vinculadas en el contexto de la asociación.

•La figura representa la misma asociación precisando el nombre de los roles de cada clasevinculada.

•En el contexto de esta asociación, la clase Persona representa al habitante mientras que la claseDirección representa la residencia.

FCC-BUAP 22

Asociaciones entre Clases, IV

•Es decir, esta asociación significa que las personas viven en direcciones y que son los habitantesde estas residencias:

•En UML, es posible especificar en cada extremo los números máximo y mínimo de objetos quedeben estar vinculados.

FCC-BUAP 23

Asociaciones entre Clases, V

•La siguiente figura representa la misma asociación, pero precisando los números máximo ymínimo de objetos que deben vincularse. Es decir:

◦ residencia 1: para 1 habitante, hay al menos 1 residencia y como máximo 1 residencia.

◦ habitante *: para 1 residencia, hay al menos 0 habitantes y como máximo un número infinito de habitantes.

FCC-BUAP 24

Asociaciones entre Clases, VI

•En UML, es posible indicar en cada una de las extremidades si es navegable o no.

•Si una extremidad es navegable, esto significa que el objeto puede navegar hacia el otro objetoal cual se conecta y así obtiene los valores de sus propiedades o invocar las operaciones de lascuales es el responsable.

•Los habitantes pueden navegar hacia sus residencias (y no al inverso), esto permite obtener porejemplo el número de la calle.

FCC-BUAP 25

Asociaciones entre Clases, VII

•Es posible en UML precisar las semánticas de capacidad sobre las asociaciones.

◦ Por ejemplo, es posible precisar sobre una extremidad que una clase asociada juega un rol de contenedor, y la otraclase juega el rol de contenido.

•UML propone dos semánticas de capacidad:

1. una semántica de contenido débil, llamada de agregación que permite precisar que los elementos contenidospueden ser compartidos entre varios contenedores;

2. una semántica de contenido fuerte, llamada de composición que permite precisar que los elementos contenidosno pueden ser compartidos entre varios contenedores.

FCC-BUAP 26

Asociaciones entre Clases, VIII

•Desde el punto de vista grafico, la relación de contenido se representa con la ayuda de un rombosobre la extremidad.

◦ El rombo blanco para la agregación

◦ El rombo negro para la composición.

•La siguiente figura precisa que la clase Persona juega un rol de contenedor para la claseCuentaBancaria en el marco de la asociación formas de pago.

FCC-BUAP 27

Asociaciones entre Clases, IX

•Es decir, una cuenta bancaria no puede ser la “forma de pago” más que de una sola persona.

•Representación grafica de una asociación de composición.

FCC-BUAP 28

Conceptos Avanzados, I

•Los conceptos elementales que hemos discutido se utilizan ampliamente para modelar la vistacomportamental de una aplicación.

•Los conceptos avanzados que presentaremos se utilizan menos frecuentemente, pero facilitan larealización de las operaciones de ingeniería inversa y de generación de código.

FCC-BUAP 29

Conceptos Avanzados, II

Clase abstracta

•Semántica: una clase UML puede ser abstracta. En este caso, no puede instanciar directamente un objeto.

• Permite precisar que ciertas propiedades o ciertas operaciones son abstractas. Son precisamente los valores de estas propiedades y lasresponsabilidades de estas operaciones que los objetos no pueden soportar directamente.

• Es la razón por la cual ningún objeto no puede ser directamente instancia de una clase abstracta.

FCC-BUAP 30

Conceptos Avanzados, III

◦ Para que los objetos sean instancias de una clase abstracta, es necesario que sean instancias de una clase no abstracta, la cualhereda de la clase abstracta y hace no abstractas las propiedades y las operaciones abstractas.

•Grafica: en UML 2.0 no existe representación grafica particular para las clases abstractas.

◦ En UML 1.4, se escribía en itálica el nombre de la clase.

FCC-BUAP 31

Conceptos Avanzados, IVMultiplicidad de las propiedades y de los parámetros

•Semántica: es posible precisar que una propiedad o un parámetro pueda contener varios valores. UMLpermite precisar los números máximo y mínimo de estos valores. Precisar que una propiedad puede teneral menos un valor mínimo y como máximo una infinidad de valores nos da la idea que la propiedad es unatabla infinita.

•Grafica: para las propiedades y los parámetros, los números máximo y mínimo de los valores aparecenentre corchetes. El carácter * se utiliza para precisar que el número máximo de valores es infinito.

FCC-BUAP 32

Conceptos Avanzados, V

Visibilidad de las clases, de las propiedades y de sus operaciones

•Semántica: es posible precisar la visibilidad de las propiedades y de las operaciones de las clases. Lasvisibilidades se refieren a los accesos a las propiedades y a las operaciones.

• Se dice que una clase A accede a la propiedad de una clase B si el tratamiento asociado a un operación de A utiliza la propiedad de B.

• Se dice que una clase A accede a la operación de una clase B si el tratamiento asociado a una operación de A efectúa una llamada a laoperación de B.

FCC-BUAP 33

Conceptos Avanzados, VI

•Las visibilidades propuestas por UML 2.0 son las siguientes:

• public: la propiedad o la operación pueden accederse por cualquier otra clase.

• private: la propiedad o la operación no pueden accederse más que por la clase misma.

• protected: la propiedad o la operación no pueden accederse que por las clases que heredan directa o indirectamente de la clase quedefine la propiedad o la operación.

FCC-BUAP 34

Conceptos Avanzados, VII

•Grafica: en la representación grafica del elemento, las visibilidades se representan de la manera siguiente:

• El carácter + se utiliza para precisar la visibilidad public.

• El carácter – se utiliza para precisar la visibilidad private.

• El carácter # se utiliza para precisar la visibilidad protected.

FCC-BUAP 35

Conceptos Avanzados, VIIIPropiedades y operaciones de clase

•Semántica: es posible precisar que el valor de una propiedad definida por una clase se lleva directamentepor la clase misma (y no por cada uno de los objetos).

◦ Del mismo modo, es posible precisar que una clase es directamente responsable de una operación que ella define.

◦ Se llaman estas propiedades y estas operaciones de los elementos de nivel “clase”.

•Grafica: En la representación gráfica de la clase, se subrayan las propiedades y las operaciones de nivelclase.

FCC-BUAP 36