SlideShare una empresa de Scribd logo
1 de 21
¿CÓMO CREAR UN
DIAGRAMA DE CLASES?
Paso x paso
¡LOS SISTEMAS SON
OMNIPRESENTES EN
NUESTRA VIDA DIARIA!
Plataformas online, sistemas de control de tráfico ferroviario
o aéreo, el conjunto de leyes que rige el funcionamiento de
una democracia, son sistemas. Por lo tanto, los sistemas
suelen tener tanto una parte social como una parte técnica.
Parece extraño que estas cosas puedan ser entendidas de la
misma manera. Pero con el pensamiento sistémico, podemos
analizar estos problemas, descomponerlo en problemas mas
pequeños, y, poco a poco, ir creando un conjunto de
elementos y relaciones que puedan ser descritos y
expresados en un lenguaje común (tal como UML.)
Los sistemas son difíciles de construir, y muchas veces, sólo
detectamos sus carencias cuando dejan de funcionar bien,
por ejemplo, cuando nuestro tren llega tarde o cuando
notamos incoherencias en la política de un país. Éstos son
signos de un sistema mal diseñado.
Un sistema se puede definir simplemente como un conjunto
de elementos separados pero interdependientes. Diseñando
un sistema significa definir cuales son estos elementos, qué
hacen, y cómo se relacionan entre si.
Veámoslo a través de un ejemplo de un sistema de control
ferroviario, que contiene:
 Trenes
 Conductores
 Estaciones
 Pasajeros
 Vías
 Viajes
 Asientos
Podemos definir relaciones entre estos elementos. Las
relaciones se suelen describir con verbos, y los elementos
de nuestro sistema con nombres.
Los trenes tienen asientos. Los pasajeros reservan viajes.
Los viajes involucran estaciones. A los pasajeros se les
asignan asientos. Las estaciones tienen vías. A cada viaje
le corresponde un conductor.
También nos puede interesar definir cuántas unidades hay
de cada uno de estos elementos. Por ejemplo cada tren
tendrá al menos un conductor. Cada tren tiene un número
limitados de asientos, y por lo tanto de pasajeros. Un
pasajero no puede estar viajando en más de un tren a la
vez.
Es necesario, por tanto, definir cuántos de cada elemento
corresponde a cada uno de los otros.
También podemos definir reglas dentro de este sistema. Un
viajero no se puede subir a un tren si no ha reservado un
asiento. Ciertos conductores no serán disponibles para
cualquier viaje. Un tren no puede llegar a una vía si esta ya
está ocupada.
Creando estas reglas, basándonos en situaciones reales, se
consigue evitar problemas que conllevarían el mal diseño
del sistema.
¡Y ENTONCES!
¿Cómo hacer diagramas de clases?
El diagramas de clase es un diagrama estructural, y es sin
duda el más común de ellos. Permite describir la
arquitectura de un sistema con bastante detalle. Es muy
recomendable tener un diagrama de clase antes de empezar
a escribir código para una base de datos o una aplicación.
Un diagrama de clase, describe cómo se relacionan los
elementos de un sistema, qué atributos les caracterizan.
Después tendremos las cosas lo suficientemente despejadas
como para poder ir diseñando la arquitectura del sistema.
Se trata de
entender el
sistema
como una
historia. Una
historia tiene
personajes,
unas
acciones, y
un contexto.
Este diagrama es fundamental para el modelado orientado a
objetos. Describe los distintos componentes de un sistema,
sus atributos, y las relaciones entre ellos.
Veamos el caso:
 Un vendedor de libros se conecta a la web para subir el
articulo que tiene a la venta.
 Un cliente se conecta a la página web de una tienda online
para comprar un libro. Escribe el título del libro en la barra
de búsqueda y busca el mejor precio entre los resultados.
Cuando encuentra una oferta que le interesa, la añade al
carrito de la compra. Tiene que haber iniciado una sesión
para poder hacerlo.
Identificamos los elementos principales del sistema:
compradores, vendedores, y artículos.
Veamos el caso:
Añadiremos los artículos como el primer elemento en
diagrama de clase.
Debajo del titulo, colocamos los atributos de un articulo.
¿Qué tiene un articulo? ¿Qué características tiene que
permite diferenciarlo de otros artículos? Lo importante es
nos quedemos con lo relevante para nuestra aplicación.
Trata de imaginarlo en una página web. ¿Qué información
esperarías que ponga?
Veamos el caso:
A continuación detallamos las otras clases de nuestro
Hemos añadido el comprador, el vendedor, el envío y el
de un articulo.
Establezca la cardinalidad de las relaciones.
Ahora toca averiguar cómo se relacionan los elementos
entre ellos. Una pregunta que tenemos que hacer cada vez
que estudiamos la relación entre dos elementos es:
elementos A por cada elemento B? ¿Y Cuántos B por cada
A?
Este proceso lo llamamos establecer la cardinalidad de las
relaciones. Además es recomendado añadir verbos a las
relaciones para ayudar a cubrir mejor la semántica de las
relaciones.
Establezca la cardinalidad de las relaciones:
Relaciones de uno a varios.
Por ejemplo, ¿Cuántos artículos por cada envío? La
respuesta es bastante intuitiva: un envío solo puede existir si
contiene como mínimo un articulo. Además, no se puede
definir un número máximo de artículos en un envío. Esto lo
representamos escribiendo 1..* en la línea entre artículos y
envíos, al lado de la caja de artículos. Significa que
entre 1 y un número indeterminado de articulo por envío.
Relaciones de varios a varios
¿Cuántos artículos puede vender un vendedor? Puede ser
que se quede sin artículos para vender, por lo tanto el
mínimo sería 0. No impondremos máximo de artículos que
pueda vender alguien. Entonces pondremos 0..* del lado del
articulo.
¿Cuántos vendedores venden un mismo articulo? Depende
considera que los artículos son únicos o si varios pueden
vender el mismo tipo de artículo. Puede ser que en algún
momento no haya más vendedores vendiéndolo o que lo
venden un número indeterminado de personas. Pondremos
0..* del lado de los vendedores.
Relaciones de uno a uno
Observemos la relación entre Envíos y Pagos. En este caso,
consideramos que a cada envío le corresponde un solo
y viceversa. Un envío se creará en cuánto se realice el pago
del articulo. Es casi cómo si fuesen la misma entidad. Los
separamos para mantener la semántica de lo que
representan. Así podemos diferenciar mas fácilmente la
fecha de envío de la fecha de pago, y la dirección de envío
de la dirección de pago.
Entonces, lo que aquí acabamos de definir es una relación
uno a uno.
Diagrama completo del sistema.
Hemos añadido las relaciones comprador-envío (uno a
y vendedor-envío (uno a varios). Añadimos unos verbos en
líneas entre entidades.
No todas las entidades tienen relaciones directas con otras.
Por ejemplo, no hay relaciones directas entre un artículo y
comprador. Sería redundante, porque ya hay una definida
entre el comprador y el vendedor a través de un envío. Por
el mismo motivo, no hay una directa entre comprador y
vendedor ya que se contempla a través de un envío.
https://openclassrooms.com/en/courses/4990961-planea-
tu-proyecto-con-uml/4996676-diagrama-de-clase

Más contenido relacionado

La actualidad más candente

Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++
Alincita Simon
 
Tabla comparativa de programacion orientada , objetos y estructurada.
Tabla comparativa de programacion orientada , objetos y estructurada.Tabla comparativa de programacion orientada , objetos y estructurada.
Tabla comparativa de programacion orientada , objetos y estructurada.
Sandy Montoya Reyes
 
Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)
William Lozano
 
Diccionario de datos Unefa
Diccionario de datos UnefaDiccionario de datos Unefa
Diccionario de datos Unefa
ginotamborero
 
Programacion estructurada vs. programación a objetos
Programacion estructurada vs. programación a objetosProgramacion estructurada vs. programación a objetos
Programacion estructurada vs. programación a objetos
lidia gonzalez
 

La actualidad más candente (20)

Estructuras de control en Visual Basic
Estructuras de control en Visual BasicEstructuras de control en Visual Basic
Estructuras de control en Visual Basic
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Redondear un número entero ingresado a la decena y centena más cercana.
Redondear un número entero ingresado a la decena y centena más cercana. Redondear un número entero ingresado a la decena y centena más cercana.
Redondear un número entero ingresado a la decena y centena más cercana.
 
Modelos de estimacion de software
Modelos de estimacion de softwareModelos de estimacion de software
Modelos de estimacion de software
 
Modelo evolutivo
Modelo evolutivoModelo evolutivo
Modelo evolutivo
 
Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++Manual de Practicas de Open GL con Dev C++
Manual de Practicas de Open GL con Dev C++
 
Tópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUITópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUI
 
Estándares para el diseño de interfaz
Estándares para el diseño de interfazEstándares para el diseño de interfaz
Estándares para el diseño de interfaz
 
Tabla comparativa de programacion orientada , objetos y estructurada.
Tabla comparativa de programacion orientada , objetos y estructurada.Tabla comparativa de programacion orientada , objetos y estructurada.
Tabla comparativa de programacion orientada , objetos y estructurada.
 
Ejercicios uml
Ejercicios umlEjercicios uml
Ejercicios uml
 
Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)Ejercicios resueltos diagramas de claseaula (1)
Ejercicios resueltos diagramas de claseaula (1)
 
Estándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de NegociosEstándares para el Modelado de Procesos de Negocios
Estándares para el Modelado de Procesos de Negocios
 
ESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADASESTRUCTURAS ANIDADAS
ESTRUCTURAS ANIDADAS
 
Diccionario de datos Unefa
Diccionario de datos UnefaDiccionario de datos Unefa
Diccionario de datos Unefa
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)MODELO COCOMO (INGENIERA DE SOFTWARE)
MODELO COCOMO (INGENIERA DE SOFTWARE)
 
Programacion estructurada vs. programación a objetos
Programacion estructurada vs. programación a objetosProgramacion estructurada vs. programación a objetos
Programacion estructurada vs. programación a objetos
 
Diagrama de secuencia UML
Diagrama de secuencia UMLDiagrama de secuencia UML
Diagrama de secuencia UML
 
Transacciones
TransaccionesTransacciones
Transacciones
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
 

Similar a Como crear un diagrama de clases

Programación en base de datos
Programación en base de datosProgramación en base de datos
Programación en base de datos
Fred M. Jr.
 
El modelo de datos entidad relación
El modelo de datos entidad relaciónEl modelo de datos entidad relación
El modelo de datos entidad relación
macarmen91
 
Analisis y diseño
Analisis y diseñoAnalisis y diseño
Analisis y diseño
Jorge Garcia
 
Modelo de datos entidad relación
Modelo de datos entidad relaciónModelo de datos entidad relación
Modelo de datos entidad relación
alvarezkvn
 

Similar a Como crear un diagrama de clases (20)

Dinamica 2
Dinamica 2Dinamica 2
Dinamica 2
 
Dinamica
DinamicaDinamica
Dinamica
 
ejemplo-de-casos-de-uso.pdf
ejemplo-de-casos-de-uso.pdfejemplo-de-casos-de-uso.pdf
ejemplo-de-casos-de-uso.pdf
 
Programación en base de datos
Programación en base de datosProgramación en base de datos
Programación en base de datos
 
Modelo entidad-relación
Modelo entidad-relaciónModelo entidad-relación
Modelo entidad-relación
 
Diseño Orientado a Objetos - Composición - Agregación
Diseño Orientado a Objetos - Composición - AgregaciónDiseño Orientado a Objetos - Composición - Agregación
Diseño Orientado a Objetos - Composición - Agregación
 
SISTEMA ORIENTADO A OBJETOS
SISTEMA ORIENTADO A OBJETOSSISTEMA ORIENTADO A OBJETOS
SISTEMA ORIENTADO A OBJETOS
 
Modelamiento de-entidad relacion
Modelamiento de-entidad relacionModelamiento de-entidad relacion
Modelamiento de-entidad relacion
 
El modelo de datos entidad
El modelo de datos entidadEl modelo de datos entidad
El modelo de datos entidad
 
ingeniería de sistemas base de datos.pdf
ingeniería de sistemas base de datos.pdfingeniería de sistemas base de datos.pdf
ingeniería de sistemas base de datos.pdf
 
El modelo de datos entidad relación
El modelo de datos entidad relaciónEl modelo de datos entidad relación
El modelo de datos entidad relación
 
Analisis y diseño
Analisis y diseñoAnalisis y diseño
Analisis y diseño
 
tema-8-bd-entidad-relacion base de datos
tema-8-bd-entidad-relacion base de datostema-8-bd-entidad-relacion base de datos
tema-8-bd-entidad-relacion base de datos
 
Base datos presentacion 4
Base datos presentacion 4Base datos presentacion 4
Base datos presentacion 4
 
Base datos presentacion 4
Base datos presentacion 4Base datos presentacion 4
Base datos presentacion 4
 
Modelo de datos entidad relación
Modelo de datos entidad relaciónModelo de datos entidad relación
Modelo de datos entidad relación
 
Actividad base de datos 3
Actividad base de datos 3Actividad base de datos 3
Actividad base de datos 3
 
Comprendiendo UML para el área de desarrollo
Comprendiendo UML para el área de desarrollo Comprendiendo UML para el área de desarrollo
Comprendiendo UML para el área de desarrollo
 
Planificaciondesistemas er
Planificaciondesistemas erPlanificaciondesistemas er
Planificaciondesistemas er
 
Unidad 2 diseño de base de datos y e r
Unidad 2 diseño de base de datos y e rUnidad 2 diseño de base de datos y e r
Unidad 2 diseño de base de datos y e r
 

Más de Facultad de Ciencias y Sistemas

Más de Facultad de Ciencias y Sistemas (20)

Ejercicios HTML 5
Ejercicios HTML 5Ejercicios HTML 5
Ejercicios HTML 5
 
CSS3
CSS3CSS3
CSS3
 
09 ordenamiento-en-vectores-en-c
09 ordenamiento-en-vectores-en-c09 ordenamiento-en-vectores-en-c
09 ordenamiento-en-vectores-en-c
 
08 mas-de-vectores-en-c
08 mas-de-vectores-en-c08 mas-de-vectores-en-c
08 mas-de-vectores-en-c
 
07 vectores-en-c final
07 vectores-en-c final07 vectores-en-c final
07 vectores-en-c final
 
06 clases-en-c
06 clases-en-c06 clases-en-c
06 clases-en-c
 
05 cadenas-de-caracteres-en-c
05 cadenas-de-caracteres-en-c05 cadenas-de-caracteres-en-c
05 cadenas-de-caracteres-en-c
 
04 mas-estructuras-iterativas-en-c
04 mas-estructuras-iterativas-en-c04 mas-estructuras-iterativas-en-c
04 mas-estructuras-iterativas-en-c
 
03 estructuras-iterativas-en-c
03 estructuras-iterativas-en-c03 estructuras-iterativas-en-c
03 estructuras-iterativas-en-c
 
02 mas-de-las-estructuras-de-programacion-en-c
02 mas-de-las-estructuras-de-programacion-en-c02 mas-de-las-estructuras-de-programacion-en-c
02 mas-de-las-estructuras-de-programacion-en-c
 
01 estructuras-de-programacion-en-c
01 estructuras-de-programacion-en-c01 estructuras-de-programacion-en-c
01 estructuras-de-programacion-en-c
 
Procesamiento del lenguaje natural con python
Procesamiento del lenguaje natural con pythonProcesamiento del lenguaje natural con python
Procesamiento del lenguaje natural con python
 
Actividades de aprendizaje en Moodle
Actividades de aprendizaje en MoodleActividades de aprendizaje en Moodle
Actividades de aprendizaje en Moodle
 
Creación de grupos en Moodle
Creación de grupos en MoodleCreación de grupos en Moodle
Creación de grupos en Moodle
 
Introducción a la progrogramación orientada a objetos con Java
Introducción a la progrogramación orientada a objetos con JavaIntroducción a la progrogramación orientada a objetos con Java
Introducción a la progrogramación orientada a objetos con Java
 
Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 02Diagrama de clases - Ejemplo monográfico 02
Diagrama de clases - Ejemplo monográfico 02
 
Diagrama de clases - Ejemplo monográfico 01
Diagrama de clases - Ejemplo monográfico 01Diagrama de clases - Ejemplo monográfico 01
Diagrama de clases - Ejemplo monográfico 01
 
Otro ejemplo de diagrama de clases UML
Otro ejemplo de diagrama de clases UMLOtro ejemplo de diagrama de clases UML
Otro ejemplo de diagrama de clases UML
 
Un ejemplo de diagrama de clases
Un ejemplo de diagrama de clasesUn ejemplo de diagrama de clases
Un ejemplo de diagrama de clases
 
Casos de estudio para diagramas de clases
Casos de estudio para diagramas de clasesCasos de estudio para diagramas de clases
Casos de estudio para diagramas de clases
 

Último

Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
EduardoJosVargasCama1
 

Último (20)

Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docx
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Factores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdfFactores que intervienen en la Administración por Valores.pdf
Factores que intervienen en la Administración por Valores.pdf
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdfPROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
PROPUESTA COMERCIAL SENA ETAPA 2 ACTIVIDAD 3.pdf
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
Código Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de VenezuelaCódigo Civil de la República Bolivariana de Venezuela
Código Civil de la República Bolivariana de Venezuela
 
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptxPLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
 
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdfFICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 

Como crear un diagrama de clases

  • 1. ¿CÓMO CREAR UN DIAGRAMA DE CLASES? Paso x paso
  • 2. ¡LOS SISTEMAS SON OMNIPRESENTES EN NUESTRA VIDA DIARIA!
  • 3. Plataformas online, sistemas de control de tráfico ferroviario o aéreo, el conjunto de leyes que rige el funcionamiento de una democracia, son sistemas. Por lo tanto, los sistemas suelen tener tanto una parte social como una parte técnica. Parece extraño que estas cosas puedan ser entendidas de la misma manera. Pero con el pensamiento sistémico, podemos analizar estos problemas, descomponerlo en problemas mas pequeños, y, poco a poco, ir creando un conjunto de elementos y relaciones que puedan ser descritos y expresados en un lenguaje común (tal como UML.)
  • 4. Los sistemas son difíciles de construir, y muchas veces, sólo detectamos sus carencias cuando dejan de funcionar bien, por ejemplo, cuando nuestro tren llega tarde o cuando notamos incoherencias en la política de un país. Éstos son signos de un sistema mal diseñado. Un sistema se puede definir simplemente como un conjunto de elementos separados pero interdependientes. Diseñando un sistema significa definir cuales son estos elementos, qué hacen, y cómo se relacionan entre si.
  • 5. Veámoslo a través de un ejemplo de un sistema de control ferroviario, que contiene:  Trenes  Conductores  Estaciones  Pasajeros  Vías  Viajes  Asientos Podemos definir relaciones entre estos elementos. Las relaciones se suelen describir con verbos, y los elementos de nuestro sistema con nombres.
  • 6. Los trenes tienen asientos. Los pasajeros reservan viajes. Los viajes involucran estaciones. A los pasajeros se les asignan asientos. Las estaciones tienen vías. A cada viaje le corresponde un conductor. También nos puede interesar definir cuántas unidades hay de cada uno de estos elementos. Por ejemplo cada tren tendrá al menos un conductor. Cada tren tiene un número limitados de asientos, y por lo tanto de pasajeros. Un pasajero no puede estar viajando en más de un tren a la vez.
  • 7. Es necesario, por tanto, definir cuántos de cada elemento corresponde a cada uno de los otros. También podemos definir reglas dentro de este sistema. Un viajero no se puede subir a un tren si no ha reservado un asiento. Ciertos conductores no serán disponibles para cualquier viaje. Un tren no puede llegar a una vía si esta ya está ocupada. Creando estas reglas, basándonos en situaciones reales, se consigue evitar problemas que conllevarían el mal diseño del sistema.
  • 8. ¡Y ENTONCES! ¿Cómo hacer diagramas de clases?
  • 9.
  • 10. El diagramas de clase es un diagrama estructural, y es sin duda el más común de ellos. Permite describir la arquitectura de un sistema con bastante detalle. Es muy recomendable tener un diagrama de clase antes de empezar a escribir código para una base de datos o una aplicación. Un diagrama de clase, describe cómo se relacionan los elementos de un sistema, qué atributos les caracterizan. Después tendremos las cosas lo suficientemente despejadas como para poder ir diseñando la arquitectura del sistema.
  • 11. Se trata de entender el sistema como una historia. Una historia tiene personajes, unas acciones, y un contexto.
  • 12. Este diagrama es fundamental para el modelado orientado a objetos. Describe los distintos componentes de un sistema, sus atributos, y las relaciones entre ellos.
  • 13. Veamos el caso:  Un vendedor de libros se conecta a la web para subir el articulo que tiene a la venta.  Un cliente se conecta a la página web de una tienda online para comprar un libro. Escribe el título del libro en la barra de búsqueda y busca el mejor precio entre los resultados. Cuando encuentra una oferta que le interesa, la añade al carrito de la compra. Tiene que haber iniciado una sesión para poder hacerlo. Identificamos los elementos principales del sistema: compradores, vendedores, y artículos.
  • 14. Veamos el caso: Añadiremos los artículos como el primer elemento en diagrama de clase. Debajo del titulo, colocamos los atributos de un articulo. ¿Qué tiene un articulo? ¿Qué características tiene que permite diferenciarlo de otros artículos? Lo importante es nos quedemos con lo relevante para nuestra aplicación. Trata de imaginarlo en una página web. ¿Qué información esperarías que ponga?
  • 15. Veamos el caso: A continuación detallamos las otras clases de nuestro Hemos añadido el comprador, el vendedor, el envío y el de un articulo.
  • 16. Establezca la cardinalidad de las relaciones. Ahora toca averiguar cómo se relacionan los elementos entre ellos. Una pregunta que tenemos que hacer cada vez que estudiamos la relación entre dos elementos es: elementos A por cada elemento B? ¿Y Cuántos B por cada A? Este proceso lo llamamos establecer la cardinalidad de las relaciones. Además es recomendado añadir verbos a las relaciones para ayudar a cubrir mejor la semántica de las relaciones.
  • 17. Establezca la cardinalidad de las relaciones: Relaciones de uno a varios. Por ejemplo, ¿Cuántos artículos por cada envío? La respuesta es bastante intuitiva: un envío solo puede existir si contiene como mínimo un articulo. Además, no se puede definir un número máximo de artículos en un envío. Esto lo representamos escribiendo 1..* en la línea entre artículos y envíos, al lado de la caja de artículos. Significa que entre 1 y un número indeterminado de articulo por envío.
  • 18. Relaciones de varios a varios ¿Cuántos artículos puede vender un vendedor? Puede ser que se quede sin artículos para vender, por lo tanto el mínimo sería 0. No impondremos máximo de artículos que pueda vender alguien. Entonces pondremos 0..* del lado del articulo. ¿Cuántos vendedores venden un mismo articulo? Depende considera que los artículos son únicos o si varios pueden vender el mismo tipo de artículo. Puede ser que en algún momento no haya más vendedores vendiéndolo o que lo venden un número indeterminado de personas. Pondremos 0..* del lado de los vendedores.
  • 19. Relaciones de uno a uno Observemos la relación entre Envíos y Pagos. En este caso, consideramos que a cada envío le corresponde un solo y viceversa. Un envío se creará en cuánto se realice el pago del articulo. Es casi cómo si fuesen la misma entidad. Los separamos para mantener la semántica de lo que representan. Así podemos diferenciar mas fácilmente la fecha de envío de la fecha de pago, y la dirección de envío de la dirección de pago. Entonces, lo que aquí acabamos de definir es una relación uno a uno.
  • 20. Diagrama completo del sistema. Hemos añadido las relaciones comprador-envío (uno a y vendedor-envío (uno a varios). Añadimos unos verbos en líneas entre entidades. No todas las entidades tienen relaciones directas con otras. Por ejemplo, no hay relaciones directas entre un artículo y comprador. Sería redundante, porque ya hay una definida entre el comprador y el vendedor a través de un envío. Por el mismo motivo, no hay una directa entre comprador y vendedor ya que se contempla a través de un envío.