SlideShare uma empresa Scribd logo
1 de 41
DIAGRAMA DE CLASES
Un ejemplo.
Diseñe un diagrama de clases que modele la estructura
necesaria para manejar los datos de los encuentros de un
torneo de tenis de mesa en la modalidad de sorteo y
eliminatoria.
Del torneo interesa conocer la fecha del torneo, los
encuentros celebrados y el ganador. De cada jugador, que
debe de conocer perfectamente las reglas, interesa saber el
número de federado de la federación de la que es
Diseñe un diagrama de clases que modele la estructura
necesaria para manejar los datos de los encuentros de un
torneo de tenis de mesa en la modalidad de sorteo y
eliminatoria.
Del torneo interesa conocer la fecha del torneo, los
encuentros celebrados y el ganador. De cada jugador, que
debe de conocer perfectamente las reglas, interesa saber
el número de federado de la federación de la que es
miembro.
De cada persona interesa saber sus datos básicos: NIF,
nombre completo y fecha de nacimiento. La clase Fecha se
modela con tres campos (día, mes y año) de tipo entero. La
clase Nif se modela con un campo de tipo entero llamado
dni y un campo de tipo carácter llamado letra. De cada
encuentro interesa conocer los oponentes, el ganador y el
resultado final del marcador de cada una de las tres
que se juegan a 21 puntos.
Análisis del enunciado
Lea detenidamente el enunciado y de él extraiga la
información posible. Es cuestión de aplicar el sentido común,
a veces es cuestión de unir cabos sueltos, a veces es cuestión
de simple lógica y a veces es cuestión de pura deducción,
pero siempre siempre es cuestión de razonar por
aproximaciones sucesivas y de experiencia.
Bien, parece que el enunciado refiere únicamente un
modelado de datos, no de comportamiento, por lo que se
procederá a realizar una lista de los elementos más
significativos para el proyecto que se puedan extraer del
enunciado.
Nombre del proyecto – Torneo
Nombre del diagrama –
EncuentrosTorneo
Ítems – Elementos
significativos del enunciado:
 Encuentro
 Fecha del torneo
 Jugador
 Número de federado
 Persona
 Nif
 Nombre completo
 Fecha de nacimiento
 Dia
 Mes
 Año
 Dni
 Letra
 Oponente
 Resultado final
 Partida
Diseño de clases
Las clases son entidades que encapsulan información, se
trata por tanto de ver qué información de la lista anterior
está relacionada entre sí y ver la forma de encapsularla en
sus respectivas clases.
Identifique las clases a partir del enunciado y encapsule en
ellas la información relacionada. Este paso se realizará
considerando de forma aislada unas clases de otras.
Posteriormente, cuando se vean las relaciones, se depurará
composición.
En esta fase del modelado se procede siempre desde las
clases más triviales a las más complejas.
Diseño de clases
Diseño de clases
Relaciones
En esta fase se va a evaluar qué clases tienen que ver con qué
otras, es decir sus relaciones. Para que el procedimiento
resulte lo más sencillo posible se estudiarán las relaciones dos
a dos.
Herencia
Abordar las relaciones de herencia iniciando por aquellas
triviales o más evidentes.
“La regla” para detectar una relación de herencia es fijarse en
en el catálogo de clases diseñadas en la fase anterior, y ver si
existe alguna clase cuyos atributos sean un subconjunto de
alguna otra.
Persona – Jugador
En este caso resulta que los atributos de la clase Persona son
un subconjunto de los de la clase Jugador y semánticamente
Persona – Jugador
Los atributos que hereda la clase Jugador, que es la clase
especializada, no se representan. Obsérvese también que la
flecha que representa esta relación va desde la clase hija a la
clase madre, tiene línea continua, punta de flecha cerrada, no
tiene cardinalidad y no está etiquetada por ningún rol.
Asociación
Una vez resuelta las relaciones de herencia toca el turno a las
relaciones de asociación. Procedda siempre abordando
primero las triviales o más simples y continuando por las
demás. El análisis se realizará considerando las clases de dos
en dos.
Persona – Fecha
Esta asociación es trivial. La clase Persona tiene un atributo
de tipo Fecha. La clase Persona tiene una referencia a un
objeto de la clase Fecha. Las asociaciones se representan con
una línea de trazo continuo que une las clases vinculadas.
Roles
Considerado fechaNac de Persona, pasa a ser el rol de la
relación que vincula ambas clases. Por tanto, desaparece de la
clase Persona y aparece en la línea de vinculación junto a la
clase de su tipo.
Navegabilidad
Ahora hay que abordar la navegabilidad tratando de ver si
desde una clase se puede ir a la otra. Es evidente que la clase
Fecha no tiene información de la clase Persona por lo que la
navegabilidad desde la clase Fecha no es posible.
Sin embargo, la clase Persona tiene una referencia a la clase
Fecha por lo que sí es viable la navegabilidad desde la clase
Persona hacia la clase Fecha. La navegabilidad se expresa
con una punta de flecha abierta puesta en el lado de la clase
clase a la que se llega.
Cardinalidades
El siguiente paso es abordar las cardinalidades o
multiplicidades, es decir el número de instancias de cada
clase que intervienen en la relación. Para resolver este
paso hay que preguntar:
“¿Por cada instancia de una de las dos clases cuántas
instancias de la otra clase pueden en extremo intervenir como
mínimo (Cardinalidad mínima) y como máximo
(Cardinalidad máxima)?”
Y luego hacer las preguntas al revés.
 Cuántas fechas de nacimiento como mínimo tiene cada
persona : 1
 Cuántas fechas de nacimiento como máximo tiene cada
persona: 1
 Cuántas personas pueden nacer como mínimo en una
determinada fecha: 0
 Cuántas personas pueden nacer como máximo en una
determinada fecha: Varias
Obsérvese que cuando la cardinalidad mínima y máxima
coinciden sólo se representa una de ellas. Obsérvese
que cuando la cardinalidad máxima es múltiple y la
cardinalidad mínima es cero refiere una cardinalidad
opcional y se representa con un asterisco.
Todo – Parte
Considere qué clase es la parte [PARTE] y qué clase es la
[TODO]. O sea quién contiene a quién. En este caso la
discriminación es trivial: la clase Persona es la parte [TODO]
porque tiene una referencia a la clase Fecha que es la parte
[PARTE].
Agregación – Composición
Determine si la relación de asociación entre las clases es de
agregación o de composición. Para que la relación sea de
composición es condición necesaria que la cardinalidad de la
parte [TODO] sea 1. Como este no es el caso la relación es de
agregación.
Obsérvese que la parte [TODO] se identifica dibujando un
rombo acostado en la línea de la relación. Obsérvese también
que el se ha representado el rombo en blanco para identificar
una relación de agregación.
Y este es básicamente el proceso a seguir para analizar las
relaciones de asociación entre las clases de un diagrama de
clases UML. En situaciones más complejas habrá que
reconsiderar este método para introducir los nuevos elementos
involucrados.
Persona – Nif
El análisis de la relación entre estas dos clases determina que
cada objeto de la clase Nif está unívocamente unido a un
solo objeto de la clase Persona, y viceversa, por lo que la
cardinalidad en ambos lados es la unidad. tanto mínima
como máxima.
Además semánticamente si desaparece la parte [TODO], el
objeto de la clase Persona, la existencia de la parte [PARTE], el
objeto de la clase Nif, ya no puede ser utilizado y debería
desaparecer también. Esta dependencia existencial apunta a
una relación de tipo Composición.
Obsérvese que la parte [TODO] se identifica dibujando un
rombo acostado en la línea de la relación. Obsérvese también
también que el se ha representado el rombo en negro para
identificar una relación de composición.
Persona – Nombre
La relación entre la clase Persona y la clase Nombre es muy
parecida a la relación existente entre la clase Persona y la
Fecha.
Obsérvese que al ir expresando los atributos de la clase
Persona como roles de sus respectivas relaciones, en el
contexto de este supuesto, el diagrama que representa la
clase Persona ya no contiene ningún atributo.
Encuentro – Jugador
La relación entre la clase Encuentro y la clase Jugador es muy
interesante. Como se puede apreciar hay tres relaciones
diferentes con sus respectivos roles.
Obsérvese que si se decidiera no discriminar los roles
jugador1 y jugador2, sus respectivas relaciones se podrían
fusionar en una sola que se podría codificar utilizando alguna
colección de dos elementos.
Respecto a las cardinalidades, obsérvese que todos los
jugadores que participen en un encuentro tienen que hacerlo
en alguno de dos roles: jugador1 o jugador2 pero no en los
dos al mismo tiempo. Asimismo, aquellos jugadores que
participen en varios encuentros pueden ostentar diferentes
roles en cada uno de ellos, o no.
Finalmente, el ganador de un encuentro debe ser uno de los
dos participantes del mismo. Estas restricciones se podrían
expresar en los correspondientes diagramas de
comportamiento.
Encuentro – Marcador
En el contexto, en un encuentro se celebran tres partidas, el
primer jugador que llegue a 21 puntos gana la partida. El
jugador que gane más partidas de un encuentro gana el
encuentro. Obsérvese que no puede haber empate ni en las
partidas ni en el encuentro.
Marcador encapsula el resultado de una partida mediante dos
números de tipo entero, el primer número corresponde a los
puntos de primer jugador y el segundo número a los puntos
segundo jugador. Uno de ellos debe contener el número 21 y
corresponderá al ganador de la partida y el otro valor debe
situado entre 0 y 20.
Obsérvese que se ha modelado una relación de Composición
porque, a pesar de que en partidas diferentes puedan darse
resultados iguales, los objetos instanciados de la clase
Marcador que encapsulan estos resultados no se comparten,
pues si desaparece el encuentro desaparecen sus resultados.
Torneo – Fecha
La relación entre la clase Torneo y la clase Fecha es muy
parecida a la relación existente entre la clase Persona y la
clase Fecha.
Torneo – Encuentro
Para que haya un torneo es necesario que haya al menos
un encuentro.
Se ha establecido una relación de composición debido a que
los encuentros celebrados en un sorteo no son válidos para
otro.
Torneo – Jugador
El objetivo de un torneo es tener siempre un ganador. Esa
figura la tiene que ostentar alguno de los jugadores que han
participado en él.
Clase Partida
En este punto, todas las relaciones entre clases están
establecidas. A pesar que inicialmente se modeló la clase
Partida para recoger los datos de los participantes de cada
partida y de su resultado, siguiendo el razonamiento
argumentado hasta ahora resulta que esta clase no es
necesaria ni conveniente, por lo que se prescindirá de ella.
En el diseño de diagramas de clases es normal y conveniente
realizar continuos replanteos según el avance en el
razonamiento de la situación.
Interfaces
Terminado el diseño de los datos encapsulados en las
relaciones entre las diferentes clases el siguiente paso es
detectar las posibles capacidades funcionales que deben
reunir dichas clases expresadas en forma de realización de
interfaces.
Interfaz IJugador
Si se conviene en que la capacidad de jugar al tenis de
mesa viene proporcionada por el contenido de un
determinado método, toda clase que represente una persona
que sabe jugar este deporte incorporará este método en su
código. Sin embargo, ¿Cómo reconocer a un jugador de tenis
de mesa sin verlo jugar? La respuesta viene a través de los
interfaces. Una interfaz es como un título que faculta a su
poseedor en una determinada habilidad. Así se reconoce a un
jugador por su título, como se conoce a un médico por su
universitario, etc.
En este caso se convendrá en que la interfaz que reviste a una
persona como un jugador de tenis de mesa se llama IJugador y
que el método que corresponde a esa capacidad se
llama jugarTenisMesa.
Realizaciones
En esta fase se va a señalar qué clases deben implementar
las capacidades funcionales definidas a través de los
interfaces, es decir sus realizaciones.
Basado en:
joanpaon.wordpress.com/tag/diagrama-de-clases/
Jugador – IJugador
Para expresar que la clase Jugador realiza el interfaz
IJugador se utiliza la siguiente representación.
Adviértase que la clase y el interfaz están vinculados por una
línea de trazo discontinuo, con una punta de flecha
cerrada en el lado del interfaz y que en ningún lado se
expresa el contenido del método impuesto por el interfaz.
Un ejemplo de diagrama de clases

Mais conteúdo relacionado

Mais procurados

modelo relacional
modelo relacionalmodelo relacional
modelo relacional
ponxo90
 
Unidad 5 TransformacióN Er A Relacional NormalizacióN
Unidad 5 TransformacióN Er A Relacional   NormalizacióNUnidad 5 TransformacióN Er A Relacional   NormalizacióN
Unidad 5 TransformacióN Er A Relacional NormalizacióN
Sergio Sanchez
 
Funciones y procedimientos en SQL
Funciones y procedimientos en SQLFunciones y procedimientos en SQL
Funciones y procedimientos en SQL
Ronald Rivas
 
Unidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De ClasesUnidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De Clases
Sergio Sanchez
 

Mais procurados (20)

Modelo de datos facturacion
Modelo de datos facturacionModelo de datos facturacion
Modelo de datos facturacion
 
Formato ieee830
Formato ieee830Formato ieee830
Formato ieee830
 
modelo relacional
modelo relacionalmodelo relacional
modelo relacional
 
Unidad 5 TransformacióN Er A Relacional NormalizacióN
Unidad 5 TransformacióN Er A Relacional   NormalizacióNUnidad 5 TransformacióN Er A Relacional   NormalizacióN
Unidad 5 TransformacióN Er A Relacional NormalizacióN
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 
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
 
Desarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a ObjetosDesarrollo de Software Orienta a Objetos
Desarrollo de Software Orienta a Objetos
 
Funciones y procedimientos en SQL
Funciones y procedimientos en SQLFunciones y procedimientos en SQL
Funciones y procedimientos en SQL
 
modelo entidad-relacion
modelo entidad-relacionmodelo entidad-relacion
modelo entidad-relacion
 
DIAGRAMAS DE CLASE
DIAGRAMAS DE CLASEDIAGRAMAS DE CLASE
DIAGRAMAS DE CLASE
 
Ejercicios de normalizacion
Ejercicios de normalizacionEjercicios de normalizacion
Ejercicios de normalizacion
 
Supertipos Y Clasificacion
Supertipos Y ClasificacionSupertipos Y Clasificacion
Supertipos Y Clasificacion
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 
Ejemplos de entidad relacion
Ejemplos de entidad relacionEjemplos de entidad relacion
Ejemplos de entidad relacion
 
Unidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De ClasesUnidad 10 Mad Diagrama De Clases
Unidad 10 Mad Diagrama De Clases
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Unidad iii paradigmas de la ingeniería de software
Unidad iii  paradigmas de la ingeniería de softwareUnidad iii  paradigmas de la ingeniería de software
Unidad iii paradigmas de la ingeniería de software
 
Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Convertir Diagrama Entidad-Relacion a Modelo Relacional.Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Convertir Diagrama Entidad-Relacion a Modelo Relacional.
 
Diagrama uml ing software i promecys
Diagrama uml ing software i promecysDiagrama uml ing software i promecys
Diagrama uml ing software i promecys
 

Semelhante a Un ejemplo de diagrama de clases

Modelo Relacional Rozic
Modelo Relacional RozicModelo Relacional Rozic
Modelo Relacional Rozic
Carlos Arturo
 
Base de datos
Base de datosBase de datos
Base de datos
caoxman
 

Semelhante a Un ejemplo de diagrama de clases (20)

F.u. 2 5
F.u. 2 5F.u. 2 5
F.u. 2 5
 
F.u. 2 5
F.u. 2 5F.u. 2 5
F.u. 2 5
 
Diseño conceptual de bases de Batos
Diseño conceptual de bases de BatosDiseño conceptual de bases de Batos
Diseño conceptual de bases de Batos
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relacion
 
F.u. 2 3
F.u. 2 3F.u. 2 3
F.u. 2 3
 
Modelo entidad relación
Modelo entidad relaciónModelo entidad relación
Modelo entidad relación
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Proporcionalidad directa e inversa
Proporcionalidad directa e inversaProporcionalidad directa e inversa
Proporcionalidad directa e inversa
 
F.u. 2 3
F.u. 2 3F.u. 2 3
F.u. 2 3
 
Modelo Relacional Rozic
Modelo Relacional RozicModelo Relacional Rozic
Modelo Relacional Rozic
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo Relacional
 
Funciones de excel
Funciones de excelFunciones de excel
Funciones de excel
 
Modelo relacional2
Modelo relacional2Modelo relacional2
Modelo relacional2
 
10. fracciones
10.  fracciones10.  fracciones
10. fracciones
 
Manual-Aptitud-Abstracta.pdf
Manual-Aptitud-Abstracta.pdfManual-Aptitud-Abstracta.pdf
Manual-Aptitud-Abstracta.pdf
 
Uml clase 04_uml_clases
Uml clase 04_uml_clasesUml clase 04_uml_clases
Uml clase 04_uml_clases
 
Base de datos
Base de datosBase de datos
Base de datos
 
cc302modulo3
cc302modulo3cc302modulo3
cc302modulo3
 
Pensamiento fracciones
Pensamiento fraccionesPensamiento fracciones
Pensamiento fracciones
 

Mais de Facultad de Ciencias y Sistemas

Mais 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
 
Como crear un diagrama de clases
Como crear un diagrama de clasesComo crear un diagrama de clases
Como crear un diagrama de clases
 
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
 
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
 
Introducción a la progrogramación orientada a objetos - UML
Introducción a la progrogramación orientada a objetos - UMLIntroducción a la progrogramación orientada a objetos - UML
Introducción a la progrogramación orientada a objetos - UML
 
Introducción a la progrogramación orientada a objetos - Java
Introducción a la progrogramación orientada a objetos - JavaIntroducción a la progrogramación orientada a objetos - Java
Introducción a la progrogramación orientada a objetos - Java
 

Último

PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
JonathanCovena1
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
MiNeyi1
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
El Fortí
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
JonathanCovena1
 

Último (20)

origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
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
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
6.-Como-Atraer-El-Amor-01-Lain-Garcia-Calvo.pdf
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 

Un ejemplo de diagrama de clases

  • 2. Diseñe un diagrama de clases que modele la estructura necesaria para manejar los datos de los encuentros de un torneo de tenis de mesa en la modalidad de sorteo y eliminatoria. Del torneo interesa conocer la fecha del torneo, los encuentros celebrados y el ganador. De cada jugador, que debe de conocer perfectamente las reglas, interesa saber el número de federado de la federación de la que es
  • 3. Diseñe un diagrama de clases que modele la estructura necesaria para manejar los datos de los encuentros de un torneo de tenis de mesa en la modalidad de sorteo y eliminatoria. Del torneo interesa conocer la fecha del torneo, los encuentros celebrados y el ganador. De cada jugador, que debe de conocer perfectamente las reglas, interesa saber el número de federado de la federación de la que es miembro.
  • 4. De cada persona interesa saber sus datos básicos: NIF, nombre completo y fecha de nacimiento. La clase Fecha se modela con tres campos (día, mes y año) de tipo entero. La clase Nif se modela con un campo de tipo entero llamado dni y un campo de tipo carácter llamado letra. De cada encuentro interesa conocer los oponentes, el ganador y el resultado final del marcador de cada una de las tres que se juegan a 21 puntos.
  • 5. Análisis del enunciado Lea detenidamente el enunciado y de él extraiga la información posible. Es cuestión de aplicar el sentido común, a veces es cuestión de unir cabos sueltos, a veces es cuestión de simple lógica y a veces es cuestión de pura deducción, pero siempre siempre es cuestión de razonar por aproximaciones sucesivas y de experiencia. Bien, parece que el enunciado refiere únicamente un modelado de datos, no de comportamiento, por lo que se procederá a realizar una lista de los elementos más significativos para el proyecto que se puedan extraer del enunciado.
  • 6. Nombre del proyecto – Torneo Nombre del diagrama – EncuentrosTorneo Ítems – Elementos significativos del enunciado:  Encuentro  Fecha del torneo  Jugador  Número de federado  Persona  Nif  Nombre completo  Fecha de nacimiento  Dia  Mes  Año  Dni  Letra  Oponente  Resultado final  Partida
  • 7. Diseño de clases Las clases son entidades que encapsulan información, se trata por tanto de ver qué información de la lista anterior está relacionada entre sí y ver la forma de encapsularla en sus respectivas clases. Identifique las clases a partir del enunciado y encapsule en ellas la información relacionada. Este paso se realizará considerando de forma aislada unas clases de otras. Posteriormente, cuando se vean las relaciones, se depurará composición. En esta fase del modelado se procede siempre desde las clases más triviales a las más complejas.
  • 9. Diseño de clases Relaciones En esta fase se va a evaluar qué clases tienen que ver con qué otras, es decir sus relaciones. Para que el procedimiento resulte lo más sencillo posible se estudiarán las relaciones dos a dos.
  • 10. Herencia Abordar las relaciones de herencia iniciando por aquellas triviales o más evidentes. “La regla” para detectar una relación de herencia es fijarse en en el catálogo de clases diseñadas en la fase anterior, y ver si existe alguna clase cuyos atributos sean un subconjunto de alguna otra. Persona – Jugador En este caso resulta que los atributos de la clase Persona son un subconjunto de los de la clase Jugador y semánticamente
  • 11. Persona – Jugador Los atributos que hereda la clase Jugador, que es la clase especializada, no se representan. Obsérvese también que la flecha que representa esta relación va desde la clase hija a la clase madre, tiene línea continua, punta de flecha cerrada, no tiene cardinalidad y no está etiquetada por ningún rol.
  • 12. Asociación Una vez resuelta las relaciones de herencia toca el turno a las relaciones de asociación. Procedda siempre abordando primero las triviales o más simples y continuando por las demás. El análisis se realizará considerando las clases de dos en dos. Persona – Fecha Esta asociación es trivial. La clase Persona tiene un atributo de tipo Fecha. La clase Persona tiene una referencia a un objeto de la clase Fecha. Las asociaciones se representan con una línea de trazo continuo que une las clases vinculadas.
  • 13. Roles Considerado fechaNac de Persona, pasa a ser el rol de la relación que vincula ambas clases. Por tanto, desaparece de la clase Persona y aparece en la línea de vinculación junto a la clase de su tipo.
  • 14.
  • 15. Navegabilidad Ahora hay que abordar la navegabilidad tratando de ver si desde una clase se puede ir a la otra. Es evidente que la clase Fecha no tiene información de la clase Persona por lo que la navegabilidad desde la clase Fecha no es posible. Sin embargo, la clase Persona tiene una referencia a la clase Fecha por lo que sí es viable la navegabilidad desde la clase Persona hacia la clase Fecha. La navegabilidad se expresa con una punta de flecha abierta puesta en el lado de la clase clase a la que se llega.
  • 16.
  • 17. Cardinalidades El siguiente paso es abordar las cardinalidades o multiplicidades, es decir el número de instancias de cada clase que intervienen en la relación. Para resolver este paso hay que preguntar: “¿Por cada instancia de una de las dos clases cuántas instancias de la otra clase pueden en extremo intervenir como mínimo (Cardinalidad mínima) y como máximo (Cardinalidad máxima)?” Y luego hacer las preguntas al revés.
  • 18.  Cuántas fechas de nacimiento como mínimo tiene cada persona : 1  Cuántas fechas de nacimiento como máximo tiene cada persona: 1  Cuántas personas pueden nacer como mínimo en una determinada fecha: 0  Cuántas personas pueden nacer como máximo en una determinada fecha: Varias
  • 19. Obsérvese que cuando la cardinalidad mínima y máxima coinciden sólo se representa una de ellas. Obsérvese que cuando la cardinalidad máxima es múltiple y la cardinalidad mínima es cero refiere una cardinalidad opcional y se representa con un asterisco.
  • 20. Todo – Parte Considere qué clase es la parte [PARTE] y qué clase es la [TODO]. O sea quién contiene a quién. En este caso la discriminación es trivial: la clase Persona es la parte [TODO] porque tiene una referencia a la clase Fecha que es la parte [PARTE]. Agregación – Composición Determine si la relación de asociación entre las clases es de agregación o de composición. Para que la relación sea de composición es condición necesaria que la cardinalidad de la parte [TODO] sea 1. Como este no es el caso la relación es de agregación.
  • 21.
  • 22. Obsérvese que la parte [TODO] se identifica dibujando un rombo acostado en la línea de la relación. Obsérvese también que el se ha representado el rombo en blanco para identificar una relación de agregación. Y este es básicamente el proceso a seguir para analizar las relaciones de asociación entre las clases de un diagrama de clases UML. En situaciones más complejas habrá que reconsiderar este método para introducir los nuevos elementos involucrados.
  • 23. Persona – Nif El análisis de la relación entre estas dos clases determina que cada objeto de la clase Nif está unívocamente unido a un solo objeto de la clase Persona, y viceversa, por lo que la cardinalidad en ambos lados es la unidad. tanto mínima como máxima. Además semánticamente si desaparece la parte [TODO], el objeto de la clase Persona, la existencia de la parte [PARTE], el objeto de la clase Nif, ya no puede ser utilizado y debería desaparecer también. Esta dependencia existencial apunta a una relación de tipo Composición.
  • 24. Obsérvese que la parte [TODO] se identifica dibujando un rombo acostado en la línea de la relación. Obsérvese también también que el se ha representado el rombo en negro para identificar una relación de composición.
  • 25. Persona – Nombre La relación entre la clase Persona y la clase Nombre es muy parecida a la relación existente entre la clase Persona y la Fecha.
  • 26. Obsérvese que al ir expresando los atributos de la clase Persona como roles de sus respectivas relaciones, en el contexto de este supuesto, el diagrama que representa la clase Persona ya no contiene ningún atributo.
  • 27. Encuentro – Jugador La relación entre la clase Encuentro y la clase Jugador es muy interesante. Como se puede apreciar hay tres relaciones diferentes con sus respectivos roles.
  • 28. Obsérvese que si se decidiera no discriminar los roles jugador1 y jugador2, sus respectivas relaciones se podrían fusionar en una sola que se podría codificar utilizando alguna colección de dos elementos.
  • 29. Respecto a las cardinalidades, obsérvese que todos los jugadores que participen en un encuentro tienen que hacerlo en alguno de dos roles: jugador1 o jugador2 pero no en los dos al mismo tiempo. Asimismo, aquellos jugadores que participen en varios encuentros pueden ostentar diferentes roles en cada uno de ellos, o no. Finalmente, el ganador de un encuentro debe ser uno de los dos participantes del mismo. Estas restricciones se podrían expresar en los correspondientes diagramas de comportamiento.
  • 30. Encuentro – Marcador En el contexto, en un encuentro se celebran tres partidas, el primer jugador que llegue a 21 puntos gana la partida. El jugador que gane más partidas de un encuentro gana el encuentro. Obsérvese que no puede haber empate ni en las partidas ni en el encuentro. Marcador encapsula el resultado de una partida mediante dos números de tipo entero, el primer número corresponde a los puntos de primer jugador y el segundo número a los puntos segundo jugador. Uno de ellos debe contener el número 21 y corresponderá al ganador de la partida y el otro valor debe situado entre 0 y 20.
  • 31. Obsérvese que se ha modelado una relación de Composición porque, a pesar de que en partidas diferentes puedan darse resultados iguales, los objetos instanciados de la clase Marcador que encapsulan estos resultados no se comparten, pues si desaparece el encuentro desaparecen sus resultados.
  • 32. Torneo – Fecha La relación entre la clase Torneo y la clase Fecha es muy parecida a la relación existente entre la clase Persona y la clase Fecha.
  • 33. Torneo – Encuentro Para que haya un torneo es necesario que haya al menos un encuentro. Se ha establecido una relación de composición debido a que los encuentros celebrados en un sorteo no son válidos para otro.
  • 34. Torneo – Jugador El objetivo de un torneo es tener siempre un ganador. Esa figura la tiene que ostentar alguno de los jugadores que han participado en él.
  • 35. Clase Partida En este punto, todas las relaciones entre clases están establecidas. A pesar que inicialmente se modeló la clase Partida para recoger los datos de los participantes de cada partida y de su resultado, siguiendo el razonamiento argumentado hasta ahora resulta que esta clase no es necesaria ni conveniente, por lo que se prescindirá de ella. En el diseño de diagramas de clases es normal y conveniente realizar continuos replanteos según el avance en el razonamiento de la situación.
  • 36. Interfaces Terminado el diseño de los datos encapsulados en las relaciones entre las diferentes clases el siguiente paso es detectar las posibles capacidades funcionales que deben reunir dichas clases expresadas en forma de realización de interfaces.
  • 37. Interfaz IJugador Si se conviene en que la capacidad de jugar al tenis de mesa viene proporcionada por el contenido de un determinado método, toda clase que represente una persona que sabe jugar este deporte incorporará este método en su código. Sin embargo, ¿Cómo reconocer a un jugador de tenis de mesa sin verlo jugar? La respuesta viene a través de los interfaces. Una interfaz es como un título que faculta a su poseedor en una determinada habilidad. Así se reconoce a un jugador por su título, como se conoce a un médico por su universitario, etc.
  • 38. En este caso se convendrá en que la interfaz que reviste a una persona como un jugador de tenis de mesa se llama IJugador y que el método que corresponde a esa capacidad se llama jugarTenisMesa.
  • 39. Realizaciones En esta fase se va a señalar qué clases deben implementar las capacidades funcionales definidas a través de los interfaces, es decir sus realizaciones. Basado en: joanpaon.wordpress.com/tag/diagrama-de-clases/
  • 40. Jugador – IJugador Para expresar que la clase Jugador realiza el interfaz IJugador se utiliza la siguiente representación. Adviértase que la clase y el interfaz están vinculados por una línea de trazo discontinuo, con una punta de flecha cerrada en el lado del interfaz y que en ningún lado se expresa el contenido del método impuesto por el interfaz.