La modelización es una parte integral del diseño y desarrollo de software, y el Lenguaje de modelado unificado (UML) ha surgido como el estándar de facto para esta actividad. En particular, los diagramas de clases UML se utilizan extensamente en la programación orientada a objetos (POO) para visualizar la estructura de un sistema mediante la representación de sus clases, atributos, operaciones (o métodos), y las relaciones entre ellas.
En este artículo, ofreceremos una comprensión completa y detallada sobre el uso y la creación de diagramas de clases UML mediante ejemplos prácticos.
¿Qué es un diagrama de clases UML?
Un diagrama de clases UML es un tipo de diagrama estático que describe la estructura de un sistema mostrando las clases del sistema, sus atributos, operaciones (o métodos), y las relaciones entre los objetos. Sirve como un esquema para el sistema que se está desarrollando, donde cada clase representa un objeto con ciertos atributos y métodos.
Un diagrama de clases UML es una herramienta esencial en el desarrollo de software orientado a objetos ya que proporciona una visión clara y concisa del diseño del sistema. Esto facilita a los desarrolladores entender mejor el sistema y trabajar más eficientemente.
Componentes fundamentales de un diagrama de clases UML
Un diagrama de clases UML tiene varios componentes clave, entre ellos:
Clases: son las representaciones abstractas de los objetos en un sistema. Cada clase contiene atributos (datos) y métodos (funciones).
Relaciones: estas representan cómo interactúan las diferentes clases entre sí. Existen varios tipos de relaciones, incluyendo asociación, agregación, composición y herencia.
Visibilidad: este término se refiere a la accesibilidad de los atributos y métodos de una clase. Los niveles comunes de visibilidad incluyen público (+), privado (-) y protegido (#).
Profundizando en las clases
Como mencionamos anteriormente, las clases son el corazón de cualquier diagrama de clases UML. En su nivel más básico, una clase consiste en un nombre, atributos y métodos. Los nombres suelen estar en la parte superior del recuadro que representa la clase, seguidos por los atributos y luego por los métodos.
Atributos
Los atributos representan las características o propiedades de una clase. Por ejemplo, si tenemos una clase "Coche", sus atributos podrían ser "color", "marca" y "modelo". Estos atributos se representan con un signo menos (-) para indicar que son privados.
Métodos
Los métodos, por otro lado, son funciones que describen lo que puede hacer la clase. Siguiendo con nuestro ejemplo del "Coche", algunos métodos podrían ser "arrancar()", "frenar()" o "cambiarMarcha()". Al igual que los atributos, los métodos también tienen un nivel de visibilidad.
Entendiendo las relaciones entre clases
Las relaciones entre las clases juegan un papel crucial en la forma en que funciona el sistema. Algunas de las relaciones más comunes en los diagramas de clases UML son:
Asociación
Es probablemente la relación más básica. Se utiliza para mostrar que dos clases están conectadas de alguna manera, generalmente mediante una línea sólida.
Agregación
Es un tipo de asociación que representa una relación de "tiene-un" o "forma-parte-de". Se muestra con una línea con un diamante vacío en un extremo.
Composición
Es similar a la agregación, pero en este caso, la relación es más fuerte. En otras palabras, si se destruye la clase principal, también se destruirá la clase secundaria. Se representa con un diamante lleno.
Herencia
La herencia es cuando una clase deriva de otra clase. Se representa con una flecha que apunta a la clase base.
10 ejemplos de diagramas de clases UML
Para ayudarle a comprender mejor los diagramas de clases UML, aquí hay 10 ejemplos prácticos.
Sistema de alquiler de coches online
En un diagrama de clases de un sistema online de alquiler de coches, podríamos tener algunas de las siguientes clases:
Usuario: Los atributos pueden incluir id_usuario, nombre de usuario, contraseña y contacto. Además, las operaciones pueden incluir inicio_sesión(), cierre_sesión(), solicitud_salida().
Conductor: Esta clase puede tener atributos como conductor_id, nombre, contacto y estado (disponible o no disponible). También tendrá una operación que puede incluir aceptar_viaje().
Viaje: Los atributos pueden incluir id_viaje, ubicación_recogida, ubicación_entrega y tarifa. Puede tener operaciones como calcular_tarifa().
Vehículo: Los atributos pueden ser vehículo_id, conductor_id, modelo y estado (si está disponible o reservado).
Sistema bancario
Aquí se podrían utilizar algunas de las siguientes clases:
Cliente: Esta clase podría tener atributos como id_cliente, nombre, dirección y número_contacto. Los métodos podrían incluir crear_cuenta(), solicitar_préstamo().
Cuenta: Los atributos podrían incluir número_cuenta, id_cliente, saldo, tipo_cuenta. Podría tener operaciones como débito(), crédito(), comprobar_saldo().
Préstamo: La clase préstamo podría tener como atributos id_préstamo, id_cliente, importe, tipo_interés, y como métodos aprobar_préstamo(), calcular_interés().
Transacción: Sus atributos podrían ser id_transacción, número_cuenta, tipo_transacción, importe, fecha.
Gestión de hospital
Para un sistema de este tipo, podríamos utilizar algunas de las siguientes clases:
Paciente: Esta clase podría tener atributos como id_paciente, nombre, fecha de nacimiento, dirección e historial médico. Podría tener operaciones como admisión(), y alta().
Médico: Esta clase podría tener atributos como médico_id, nombre, especialización y disponibilidad. Puede tener operaciones como asignar_a_paciente(), realizar_cirugía().
Enfermera: La clase enfermera puede tener atributos como id_enfermera, nombre, turno y sala_asignada. Podría tener métodos como dar_medicina(), comprobar_vitales().
Cita: Sus atributos pueden ser id_cita, id_paciente, id_médico, fecha, hora. Puede tener operaciones como programar_cita(), cancelar_cita().
Sistema de biblioteca
Esto podría incluir algunas de las siguientes clases:
Bibliotecario: Los atributos podrían incluir id_bibliotecario, nombre, número_contacto. Podría tener métodos como emitir_libro(), devolver_libro().
Miembro: Esta clase podría tener id_miembro, nombre, fecha_miembro, vencimiento_final como atributos y prestar_libro(), devolver_libro() como operaciones.
Libro: Sus atributos podrían ser id_libro, título, autor y estado (disponible o prestado). Podría tener operaciones como obtener_detalles(), y comprobar_disponibilidad().
Sistema de compras online
Aquí, algunas de las siguientes clases podrían ser utilizadas:
Cliente: Esta clase podría tener atributos como id_cliente, nombre, dirección y número_contacto. Podría tener operaciones como realizar_pedido(), realizar_pago().
Producto: Sus atributos podrían ser id_producto, nombre, categoría, precio. Puede tener operaciones como añadir_al_carrito(), y comprar().
Pedido: Puede tener como atributos id_pedido, id_cliente, id_producto, precio_total y como métodos proces_pedido(), entregar_pedido().
Pago: Sus atributos podrían ser id_pago, id_pedido, importe, método_pago. Podría tener operaciones como efectuar_pago(), y reembolso().
Sistema de cajero automático ATM
Para este sistema, podríamos utilizar algunas de las siguientes clases:
Cliente: Esta clase podría tener atributos como id_cliente, nombre, número_cuenta. Podría tener operaciones como insertar_tarjeta(), introducir_pin().
Cuenta: Sus atributos podrían ser número_cuenta, saldo, tipo_cuenta. Puede tener operaciones como retirar_efectivo(), comprobar_saldo().
Cajero automático ATM: Esta clase podría tener id_cajero, ubicación, efectivo_disponible. Puede tener métodos como dispensar_efectivo(), aceptar_depósito().
Gestión hotelera
Esto podría incluir algunas de las siguientes clases:
Huésped: Esta clase podría tener atributos como id_huésped, nombre, número_contacto. Podría tener operaciones como registro_de_entrada(), registro_de_salida().
Habitación: Sus atributos podrían ser número_habitación, tipo (individual, doble, suite), estado (disponible, ocupada), precio_por_noche.
Recepcionista: Esta clase podría tener id_recepcionista, nombre_recepcionista, recepcionista.
Sistema de registro
Para el sistema de registro, podríamos utilizar algunas de las siguientes clases:
Usuario: Esta clase podría tener atributos como id_usuario, nombre_usuario, contraseña. Podría tener operaciones como registrarse(), iniciar sesión(), cerrar sesión().
Administrador: Sus atributos podrían ser id_administrador, id_inicio_sesión y nombre_administrador.
Información de registro: Esta clase podría tener atributos como id_registro, nombre_registro, edad_registro y sexo_registro.
Sistema de reservas aéreas
Aquí se podrían utilizar algunas de las siguientes clases:
Pasajero: Esta clase puede tener atributos como id_pasajero, nombre, número_contacto. Podría tener operaciones como reservar_billete(), cancelar_billete().
Aerolínea: Sus atributos podrían ser id_línea_aérea, descripción, tipo, fecha_horario.
Empleado: Esta clase podría tener id_empleado, nombre, correo electrónico, móvil, contraseña y dirección.
Modelado de coches
Para ello, podríamos utilizar algunas de las siguientes clases:
Coche: Esta clase podría tener atributos como id_registro, año, número_licencia. Podría tener operaciones como mover_adelante(), mover_atrás().
Motor: Sus atributos podrían ser capacidad_motor, número de cilindros.
Caja de cambios: Esta clase podría tener ratio_marcha, marcha actual.
¿Cómo crear un diagrama de clases UML?
Crear un diagrama de clases con Boardmix es un proceso intuitivo y fácil de usar. Siga estos pasos:
Iniciar sesión en Boardmix: Para comenzar, debe iniciar sesión en su cuenta de Boardmix. Si aún no tiene una, puede crear una de forma gratuita.
Crear un nuevo proyecto: Una vez que haya iniciado sesión, debe crear un nuevo proyecto. Puede hacerlo seleccionando la opción "Nuevo tablero" en el menú principal.
Seleccionar la plantilla de diagrama de clases UML: Dentro de su nuevo tablero, debe seleccionar la opción "Plantillas" de la barra de herramienta izquierda y busque "Diagrama de clases UML". Haga clic en "Utilizar" para pegar la plantilla en su lienzo.
Agregar clases y relaciones: A continuación, puede comenzar a agregar sus clases y las relaciones entre ellas. Para ello, simplemente seleccione la opción de agregar una nueva clase o relación en el menú de opciones y luego complete los detalles correspondientes.
Personalizar su diagrama: Con sus clases y relaciones en su lugar, ahora puede comenzar a personalizar su diagrama. Puede cambiar los colores, las fuentes, los tamaños y mucho más para adaptarlo a sus necesidades específicas.
Guardar y compartir su diagrama: Finalmente, una vez que esté satisfecho con su diagrama de clases UML, puede guardarlo y compartirlo con su equipo.
Conclusión
En cuanto a los ingenieros de software y arquitectos de sistemas, dominar la aplicación y comprensión de los diagramas de clases UML es esencial. Estos diagramas proporcionan una visualización sistemática de los componentes del sistema y sus interrelaciones. Además, ayudan en el proceso de diseño y mejoran la comunicación entre las partes interesadas.
Ahora hacer diagramas de clase UML se ha convertido en una tarea más accesible utilizando la plataforma intuitiva y las plantillas ya preparadas de Boardmix. Tanto si se trata de un sencillo sistema de cajeros automáticos como de un complejo sistema de gestión hospitalaria, los diagramas de clases sirven como plano fundamental, ofreciendo una visión clara de la arquitectura de su sistema. Aprovechar este tipo de herramientas puede hacer que el diseño de sistemas sea más cómodo y eficiente.