Ingeniería del Software II - Modelado de clases con UML - Fernando Pereñiguez

UCAM Universidad Católica de Murcia
25 Nov 201310:22

Summary

TLDREn este vídeo se explica cómo modelar la estructura de un sistema a través de un diagrama de clases, utilizando como ejemplo un sistema de gestión de pedidos. Se detalla cómo identificar clases como Pedido, Línea de Pedido, Producto, Cliente (personal y corporativo) y Vendedor. Se establecen relaciones entre estas clases, como generalización, asociación y dependencia, para reflejar adecuadamente la realidad del negocio. Además, se mencionan atributos y métodos de algunas clases para un modelado más preciso.

Takeaways

  • 📝 Se aborda el modelado de la estructura del sistema a través de la elaboración de un diagrama de clases para un sistema de gestión de pedidos.
  • 🛒 El sistema permite a los clientes realizar pedidos compuestos por varias líneas de pedido, cada una relacionada con un producto específico.
  • 👥 Se diferencian dos tipos de clientes: personal y corporativo, con diferencias en los métodos de pago y en la relación con los vendedores.
  • 💳 Los clientes personales pueden pagar con tarjetas de crédito, mientras que los corporativos tienen un contrato con un límite de crédito.
  • 🏢 Los clientes corporativos están atendidos por vendedores asignados, que forman parte de la empresa y gestionan una cartera de clientes.
  • 🔵 Se deben identificar las clases que modelan los conceptos del dominio del sistema, como Pedido, Línea de Pedido, Producto, Cliente, etc.
  • 🔗 Se establecen relaciones entre las clases que reflejen la realidad del sistema, como generalización, asociación, composición y dependencia.
  • 👨‍👧‍👦 Los clientes (generalización) se dividen en clientes personal y corporativo (especialización).
  • 🔗 Se asocia el cliente con los pedidos que realiza, y se establece una relación de composición entre Pedido y Línea de Pedido.
  • 🔗 Se establece una relación de agregación entre Línea de Pedido y Producto, y de asociación entre Cliente y su método de pago específico.
  • 👔 La relación entre Cliente Corporativo y Vendedor es de tipo asociación, con un vendedor asignado por cliente.
  • 💼 Se puede modelar la dependencia entre un Vendedor y el Sistema de Pago utilizado para procesar las ventas.

Q & A

  • ¿Qué es el modelado de la estructura del sistema y cómo se relaciona con el diagrama de clases?

    -El modelado de la estructura del sistema es el proceso de diseñar un diagrama de clases que representa los diferentes componentes y sus relaciones en un sistema. Este diagrama de clases es una herramienta de modelado utilizado en la ingeniería del software para visualizar la estructura de los objetos, sus atributos y las relaciones entre ellos.

  • ¿Cuál es el caso práctico que se aborda en el vídeo?

    -El caso práctico trata sobre un sistema de gestión de pedidos que permite a los clientes realizar pedidos a una empresa. Este sistema distingue entre clientes personales y clientes corporativos, y tiene un conjunto de vendedores que atienden únicamente a clientes corporativos.

  • ¿Qué diferencia hay entre un cliente personal y un cliente corporativo en el sistema?

    -Un cliente personal es una persona que realiza pagos mediante tarjetas de crédito, mientras que un cliente corporativo es una empresa que tiene un contrato con un límite de crédito para realizar compras.

  • ¿Cuál es la relación entre los vendedores y los clientes corporativos?

    -Cada vendedor se encarga de una cartera de clientes corporativos, pero un cliente corporativo solo es atendido por un único vendedor.

  • ¿Qué tipo de relaciones se pueden establecer en un diagrama de clases?

    -En un diagrama de clases se pueden establecer relaciones de dependencia, asociación, generalización y realización.

  • ¿Cómo se establece una relación de generalización en el diagrama de clases?

    -Una relación de generalización se establece cuando una clase es más general y se puede particularizar en dos o más tipos específicos, como se ve entre 'Cliente', 'Cliente Personal' y 'Cliente Corporativo'.

  • ¿Qué es una relación de asociación y cómo se representa en el diagrama de clases?

    -Una relación de asociación se establece cuando dos clases están relacionadas pero no una depende de la otra. Se representa con una línea que une las clases y a veces se indica la multiplicidad de la relación.

  • ¿Cuál es la diferencia entre una relación de composición y una de agregación?

    -La relación de composición indica que los objetos de una clase forman parte de los objetos de otra clase de tal manera que no pueden existir sin ellos, como las 'Líneas de Pedido' dentro de un 'Pedido'. La relación de agregación es menos fuerte y permite que los objetos de ambas clases existan independientemente, como una 'Línea de Pedido' que consta de varios 'Productos'.

  • ¿Cómo se representa una relación de dependencia en el diagrama de clases?

    -Una relación de dependencia se representa con una flecha que apunta desde la clase dependiente hacia la clase de la que depende, generalmente cuando una clase utiliza a otra en sus métodos.

  • ¿Qué detalles se pueden incluir en una clase en el diagrama de clases?

    -En una clase se pueden incluir atributos, como la 'Línea de Crédito' en la clase 'Contrato', y operaciones o métodos, como 'Consultar Saldo' en la clase 'Sistema de Pago'.

  • ¿Cómo se determina la multiplicidad en una relación de asociación?

    -La multiplicidad se determina por la cantidad de objetos de una clase que pueden estar asociados con los objetos de otra clase. Por ejemplo, un cliente puede tener uno o más pedidos, mientras que un pedido pertenece a un solo cliente.

Outlines

00:00

📊 Modelado de la estructura del sistema

El vídeo comienza explicando cómo modelar la estructura de un sistema, específicamente creando un diagrama de clases para un sistema de gestión de pedidos. Se describe el caso práctico de un cliente que realiza pedidos a una empresa, donde cada pedido está compuesto por varias líneas de pedido que a su vez se refieren a productos específicos. Se diferencian dos tipos de clientes: personal y corporativo, con métodos de pago distintos, y se menciona la existencia de vendedores que atienden solo a clientes corporativos. Se enfatiza la importancia de identificar clases y establecer relaciones entre ellas para reflejar adecuadamente el dominio del problema.

05:01

🔗 Relaciones entre clases en el diagrama

Este párrafo profundiza en las relaciones entre las clases identificadas en el diagrama de clases. Se explican los cuatro tipos de relaciones: dependencia, asociación, generalización y realización. Se establecen relaciones de generalización entre 'Cliente' y sus subtipos 'Cliente personal' y 'Cliente corporativo', y entre 'Sistema de pago' y sus formas específicas de pago. Se definen relaciones de asociación entre 'Cliente' y 'Pedido', y entre 'Pedido' y 'Línea de pedido', y se diferencian las relaciones de composición de las de agregación. También se menciona la relación de asociación entre 'Cliente corporativo' y 'Vendedor', y la dependencia entre 'Vendedor' y 'Sistema de pago'. Se proporcionan ejemplos de atributos y métodos para algunas clases, como 'Línea de crédito' en la clase 'Contrato' y el método 'consultar saldo' en la clase 'Sistema de pago'.

10:03

🎥 Conclusión del vídeo

El vídeo concluye agradeciendo la atención del público y anuncia la continuación de la serie en futuras entregas. El objetivo principal del vídeo es resaltar la importancia de identificar correctamente los conceptos del dominio y modelarlos a través de clases, estableciendo relaciones adecuadas para reflejar fielmente la información del mundo real del caso práctico que se busca resolver.

Mindmap

Keywords

💡Modelado de la estructura del sistema

Es el proceso de diseñar el esqueleto de un sistema informático, identificando sus componentes principales y cómo se relacionan entre sí. En el vídeo, este concepto es central ya que se trata de crear un diagrama de clases para un sistema de gestión de pedidos, lo que implica entender y representar la estructura y las relaciones entre los diferentes elementos del sistema, como clientes, pedidos y productos.

💡Diagrama de clases

Un diagrama de clases es una herramienta utilizada en la ingeniería del software para describir los elementos de un sistema, como objetos, sus atributos y las relaciones entre ellos. En el vídeo, se menciona que se debe elaborar un diagrama de clases para el caso práctico del sistema de gestión de pedidos, lo cual es fundamental para modelar adecuadamente la estructura del sistema.

💡Clientes

En el vídeo, los clientes son uno de los actores principales del sistema de gestión de pedidos. Se diferencian en dos tipos: personal y corporativo. Los clientes son cruciales para el modelado ya que definen las interacciones y las relaciones con otros componentes del sistema, como los pedidos y los métodos de pago.

💡Pedidos

Los pedidos son transacciones que los clientes realizan en el sistema. Cada pedido está formado por varias líneas de pedido, y cada línea de pedido se refiere a un producto. En el vídeo, los pedidos son un concepto clave para entender la dinámica de compra y venta dentro del sistema.

💡Líneas de pedido

Las líneas de pedido son parte integral de un pedido, cada una representando un producto específico que se está solicitando. En el vídeo, se menciona que cada pedido está compuesto por varias líneas de pedido, lo que indica una relación de composición entre los pedidos y las líneas de pedido.

💡Productos

Los productos son los artículos que los clientes pueden pedir en el sistema. En el vídeo, se establece una relación de agregación entre las líneas de pedido y los productos, lo que significa que una línea de pedido puede incluir uno o más productos.

💡Clientes personal y corporativo

Se mencionan dos tipos de clientes en el vídeo: personal y corporativo. Los clientes personales pueden realizar pagos con tarjetas de crédito, mientras que los corporativos tienen un contrato de crédito con la empresa. Esta distinción es importante para modelar las relaciones y los métodos de pago dentro del sistema.

💡Métodos de pago

Los métodos de pago son las formas en que los clientes pueden realizar sus transacciones. En el vídeo, se describen dos tipos de métodos de pago: tarjeta de crédito y contrato de crédito. Estos métodos de pago son esenciales para entender cómo se gestionan las transacciones financieras en el sistema.

💡Relaciones de clases

Las relaciones de clases son conexiones entre diferentes elementos del sistema que se representan en un diagrama de clases. En el vídeo, se discuten varios tipos de relaciones, como generalización, asociación y dependencia, y se aplican a los conceptos del sistema de pedidos para modelar adecuadamente sus componentes y su interacción.

💡Vendedores

Los vendedores son parte del personal de la empresa que atienden a los clientes corporativos. Cada vendedor se encarga de una cartera de clientes corporativos, y un cliente corporativo solo tiene un vendedor asignado. En el vídeo, la relación entre vendedores y clientes corporativos es un ejemplo de relación de asociación con una multiplicidad específica.

💡Contrato de crédito

Un contrato de crédito es un acuerdo entre la empresa y un cliente corporativo que establece un límite de crédito para realizar compras. En el vídeo, el contrato de crédito es un concepto clave para entender cómo se gestiona el crédito en el sistema de gestión de pedidos.

Highlights

Introducción al modelado de la estructura del sistema y elaboración del diagrama de clases para un caso práctico.

Explicación del caso práctico de un sistema de gestión de pedidos.

Descripción de los componentes del sistema: clientes, pedidos, líneas de pedido y productos.

Diferenciación entre clientes personales y corporativos y sus métodos de pago.

Importancia de los vendedores en la relación con los clientes corporativos.

Identificación de las clases en el diagrama de clases del sistema.

Uso de anotaciones para representar las clases en el diagrama.

Inclusión de atributos y operaciones en las clases.

Establecimiento de relaciones entre las clases para reflejar la realidad del sistema.

Tipos de relaciones entre clases: dependencia, asociación, generalización y realización.

Relación de generalización entre clientes y sus subtipos personal y corporativo.

Relación de asociación entre cliente y pedido con multiplicidad.

Relación de composición entre pedido y línea de pedido.

Relación de agregación entre línea de pedido y producto.

Relación de asociación entre cliente personal y tarjeta de crédito y cliente corporativo y contrato.

Relación de asociación entre cliente corporativo y vendedor con multiplicidad específica.

Uso de la relación de dependencia entre vendedor y sistema de pago.

Detalles sobre la representación de atributos como la línea de crédito en el contrato.

Inclusión de métodos en las clases, como consultar saldo en el sistema de pago.

Objetivo del modelado basado en diagramas de clases para reflejar la realidad del caso práctico.

Transcripts

play00:01

Hola bienvenidos

play00:02

en este vídeo vamos a tratar el modelado de la estructura del sistema

play00:06

concretamente lo que vamos a hacer es elaborar el diagrama de clases de un caso

play00:11

práctico

play00:12

que tenéis para trabajar en el boletín de ejercicios asociado a este tema

play00:17

bien en este vídeo vamos trabajar el caso práctico que trata acerca de un

play00:21

sistema de gestión de pedidos

play00:23

este sistema tata de un cliente que pueda realizar pedidos

play00:27

a una empresa

play00:28

cada pedido

play00:29

nos dice que está formado por varias líneas de pedido

play00:32

a su vez cada línea pedido se refiere lógicamente

play00:35

a un producto que se está realizando

play00:38

el pedido

play00:39

se diferencian dos tipos de cliente un cliente personal sería una persona particular

play00:44

y un cliente corporativo una empresa

play00:47

la diferencia entre otro tipo de clientes es que

play00:50

el cliente personal va a poder realizar pagos mediante tarjetas de crédito

play00:54

y el cliente corporativo tiene un contrato con la empresa

play00:57

y este contrato tiene asociado un límite de crédito el cual le permite realizar

play01:01

compras a nuestra empresa

play01:04

además se da la circunstancia de que la empresa tiene un conjunto de

play01:07

vendedores

play01:08

que se encargarán de atender peticiones de los clientes corporativos

play01:12

solamente de los corporativos no de particulares

play01:15

y será la relación de que cada vendedor

play01:17

se hace cargo de una cartera de clientes corporativos

play01:20

pero a un cliente cooperativo

play01:21

solamente le atiende un único vendedor

play01:26

dada

play01:27

este enunciado de un caso práctico

play01:29

deberemos de realizar

play01:31

un modelado de estructura del sistema

play01:32

básicamente

play01:34

tenemos que hacer un diagrama de clases donde en primer lugar identifiquemos las clases

play01:37

play01:38

que pueden modelar bien los conceptos de este dominio

play01:41

y a continuación deberemos de establecer relaciones entre esas clases

play01:46

reflejen fielmente lo que

play01:48

sucede realmente en el mundo real de la aplicación

play01:53

aunque si analizamos detenidamente el enunciado

play01:55

veremos que aquellos conceptos que se refieren a cosas de

play02:00

el dominio aplicación

play02:02

podrían tratarse a priori como clases de nuestro sistema

play02:05

así por ejemplo como podéis observar en la trasparencia

play02:08

podemos identificar

play02:09

como tipo de clases un pedido

play02:12

líneas de pedido un producto

play02:14

clientes y a su vez otro tipo de cliente que existen personal y corporativo

play02:19

también los métodos de pago como son la tarjeta de crédito o el contrato que se

play02:23

establece con la empresa

play02:25

o también una clase de sistema podría ser

play02:27

los vendedores

play02:28

que forman parte de esta empresa

play02:31

una vez que hemos identificado aquellos conceptos y cosas de nuestro dominio

play02:36

que creemos que pueden valernos para establecer como clases

play02:40

en nuestor diagrama

play02:41

iniciaríamos

play02:43

el dibujo de nuestro diagrama estableciendo las clases

play02:46

como podéis ver los utilizamos la anotación que ya hemos estudiado a lo

play02:50

largo de este tema

play02:52

dónde cada clase pues básicamente es un rectángulo

play02:56

donde ahora mismo únicamente tenemos un nombre

play02:59

pero conforme avancemos en el diseño

play03:01

de la aplicación ampliaremos la información que aquí

play03:05

insertamos a cada clase

play03:07

básicamente lo que me estoy refiriendo es a incluir atributos

play03:10

y operaciones a cada clase

play03:14

ahora mismo ya hemos identificado a las clases

play03:17

y el siguiente paso para completar los telegramas de clases

play03:20

sería estudiar que relacionase se pueden establecerr en estas clases

play03:24

porque para que un diagrama de clases sea consistente este bien formado

play03:28

las clases no deberían de quedar aisladas

play03:30

siempre debe asistir relaciones entre ellas

play03:33

de forma que se pueda navegar

play03:35

entre ellas y

play03:36

manejar y manipular la información de nuestro sistema

play03:39

pues bien si analizamos nuevamente

play03:42

el enunciado de este ejercicio ya analizamos el supuesto práctico

play03:47

podríamos

play03:48

definir distintos tipos de relaciones

play03:50

recordad que las relaciones que se establecen entre clases son de cuatro

play03:54

tipos

play03:54

tenemos por un lado la relación de dependencia

play03:57

que se dan cuando una clase depende de otra

play03:59

por ejemplo una clase en un método recibe un parámetro que es un objeto

play04:03

de un determinado tipo de clase

play04:05

la que esta clase

play04:07

tendría una dependencia sobre otra

play04:09

una dependencia sería más fuerte y se domina asociación

play04:13

cuando entre dos clases realmente se establece un vínculo

play04:16

que las vincula

play04:17

una clase a y una clase b podemos establecer una asociación

play04:20

de forma que los objetos instancias de una clase estarían relacionados

play04:24

con ciertos objetos de otra

play04:25

en base a criterios que nosotros impongamos

play04:28

recordad también que existe la generalización entre clases

play04:31

qué básicamente esto viene a ser la herencia bien conocida la programación

play04:35

orientada a objetos

play04:37

y finalmente también la realización entre clases

play04:39

donde una clase implementa una interfaz o un contrato que se define

play04:44

si analizamos el enunciado podemos establecer por ejemplo

play04:48

el siguiente conjunto de relaciones

play04:51

por ejemplo

play04:52

algo que es muy claro vemos que

play04:54

entre las clases cliente cliente personal y clientes corporativos

play04:58

se puede establecer una relación de generalización

play05:01

vemos claramente que clientes es una clase más general y que se puede

play05:04

particularizar en dos tipos personal y corporativo

play05:07

algo similar sucede con los sistemas de pago

play05:09

puesto que podemos tener un sistema de pago que es un concepto general

play05:13

y éste se particularizan dos tipos

play05:15

cuando se realiza por tarjeta de crédito

play05:17

o mediante un contrato

play05:18

que se establece entre el cliente corporativo

play05:20

y en esta empresa

play05:23

además de estas relaciones de generalización

play05:27

podemos científicar otro tipo de relaciones de asociación

play05:30

por ejemplo vemos que entre cliente en la clase pedido podemos establecer una

play05:34

relación de asociación

play05:35

de forma que a cada cliente se le pueda asociar los pedidos que está realizando

play05:41

notar que también a esta relación le estamos asignando una multiplicidad

play05:45

de modo que indicamos que un cliente puede tener asociados uno o más pedidos

play05:49

y que un pedido sólo

play05:51

pertenece a un único cliente

play05:53

lo tratamos con el valor 1 en el otro extremo de la asociación

play05:57

fijaros que entre las relaciones pedido

play06:01

y línea de pedido y producto también existen dos tipos de la asociación de

play06:04

relación

play06:06

dos casos bien distintos por un lado entre pedido y línea de pedido es una

play06:11

asociación

play06:12

de tipo composición

play06:14

porque se da la circunstancia de que un pedido

play06:16

está formado por un conjunto de líneas de pedido

play06:21

y recordar que esto se denota mediante un rumbo dónde se rellena

play06:26

de color negro el contenido este rumbo en el estremo

play06:31

del mismo modo entre la clase línea de pedido y producto podemos establecer

play06:34

una relación de asociación

play06:36

pero en este caso fijaros que

play06:38

una línea de pedido consta de un conjunto de productos

play06:41

aquí lo que estamos denotando es una agregación

play06:44

de forma que una línea de pedido

play06:45

puede referirse a uno o más productos que se estén solicitando su

play06:50

pedido

play06:51

pero aquí no hay una dependencia producto y línea de pedido

play06:54

es decir si esta asociación se rompe

play06:56

tiene sentido que sigan existiendo los productos en nuestro sistema

play06:59

entonces

play07:00

al no existir esta dependencia en tiempo de vida

play07:03

la relación no sería de composición

play07:05

sino que sería de agregación

play07:08

también podemos establecer más relaciones de asociación

play07:11

ente cliente personal y tarjeta de crédito o entre cliente corporativo

play07:15

y contrato

play07:16

para reflejar lo que nos indica el supuesto práctico

play07:19

y es que los clientes personales realizan pagos con tarjeta de crédito

play07:22

y que los clientes corporativos realizan pagos mediante contrato

play07:26

notar que esta relación

play07:28

refleja

play07:29

fielmente lo que nos dice el enunciado

play07:31

si estableciéramos una relación de asociación

play07:33

entre cliente

play07:35

y sistema de pago realmente no estaremos modelando

play07:38

correctamente sistema

play07:40

porque de hacerlo así lo que estaríamos diciendo es que cualquier tipo de cliente

play07:43

puede utilizar cualquier sistema de pago

play07:46

por ejemplo

play07:47

un cliente personal puede utilizar tarjeta de crédito o contrato

play07:50

y esto realmente no es lo que está sucediendo

play07:53

está restringido el método de pago que pueda realizar cada tipo de cliente

play07:57

por ello la relación de asociación

play07:59

debe establecerse entre cliente personal y tarjeta de crédito

play08:02

y por otro lado entre cliente corporativo

play08:04

y contrato

play08:06

finalmente vemos que tenemos también una relación de asociación

play08:10

entre cliente corporativo y vendedor

play08:11

que es lo que nos indicaba al final el supuesto práctico

play08:15

un vendedor tiene una cartera de clientes corporativos y fijaros que la

play08:18

multiplicidad que asignamos es muchos, un asterisco

play08:22

pero un cliente corporativo sólamente tiene un único vendedor por ello la

play08:25

multiplicidad sería 1

play08:27

y por último el tercer tipo de relación la que utilizamos en nuestro diagrama de clases

play08:31

play08:32

sería la de dependencia

play08:34

y por ejemplo

play08:36

la podemos utilizar entre un vendedor de un sistema de pago

play08:39

de forma que

play08:41

cuando se realiza una venta en este sistema

play08:43

ésta tiene asociado

play08:46

un sistema de pago en concreto con el que se analiza esa operación

play08:51

y finalmente a modo de ejemplo aunque este supuesto práctico no nos facilita

play08:55

mucha información de sistema

play08:56

si que os quería mostrar

play08:58

algunos detalles que podríamos dar a acerca de algunas clases

play09:01

por ejemplo

play09:02

en el ensayo práctico nos habla de una línea de crédito que tiene asociada un

play09:06

contrato que se establece entre nuestra empresa

play09:09

y los clientes corporativos

play09:11

esta línea de crédito podría moderarse como un atributo

play09:14

de la clase contrato

play09:16

y fijaros que este atributo decimos que es visible públicamente externo

play09:20

por ello le ponemos el símbolo más

play09:23

y decimos que este atributo seria de tipo y por internet admite tipo integerde tipo entero

play09:28

del mismo modo

play09:29

otro tipo de información que podríamos ver en nuestro modelado de clases

play09:33

play09:34

es que la clase y sistema de pago puede tener un método que sería consultar saldo

play09:39

que devolvería un valor entero que sería el saldo disponible

play09:43

en esta

play09:44

tarjeta de crédito o bien en este contrato

play09:47

para realizar compras

play09:48

en nuestro sistema

play09:50

como podéis ver

play09:51

el objetivo principal

play09:52

de un modelado basado en un diagrama de clases

play09:55

es que identifiquemos correctamente los conceptos de nuestros dominios

play09:59

y qué esos conceptos que los programamos mediante clases

play10:03

sepamos relacionarnos de forma adecuada

play10:05

para que se esté reflejando fielmente

play10:07

la información

play10:09

del mundo real del caso práctico

play10:11

que estamos intentando resolver

play10:15

muy bien gracias por vuestra atención y nos vemos en próximos vídeos

Rate This

5.0 / 5 (0 votes)

Related Tags
Modelado de SistemasDiagramas de ClasesGestión de PedidosClientes CorporativosClientes PersonalesSistemas de PagoTarjeta de CréditoContratos de CréditoVendedoresProgramación Orientada a Objetos
Do you need a summary in English?