Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Una biblioteca tiene varias copias de diversos libros. Estos últimos se caracterizan por su título,
tipo (novela, teatro, poesía o ensayo), editorial, año y autor.
Los autores de dichos libros se caracterizan por su nombre, nacionalidad y fecha de
nacimiento.
Cada copia tiene un identificador, y puede estar en la biblioteca, prestada, con retraso o en
reparación.
Los lectores para asociarse a la biblioteca, deben inscribirse entregando su nombre, dirección
y teléfono.
Una vez inscritos, se les asigna una credencial con su número de socio, y pueden comenzar a
sacar libros prestados. Solo pueden tener un máximo de 3 libros en préstamo
simultáneamente.
Cada libro se presta un máximo de 30 días, por cada día de retraso, se impone una “multa” de
dos días sin posibilidad de solicitar un nuevo libro.
Copia Libro
+ id: int ejemplar + titulo: string
+ estado: estadoCopia libro + tipo: tipoLibro
1..*
1 + editorial: string
+ año: int
prestamo
estadoCopia 0..3
-biblioteca
Prestamo
obra
-prestada 1..*
+ init: date
-retraso
+ fin: date
-reparacion
+ setTotPrest(): int tipoLibro
-novela
-teatro
lector
-poesia
0..1 -ensayo
LectorSocio autor
+ numSocio: int
- nombre: string 1
- direccion: string Autor
1 multa
- telefono: int + nombre: string
- multa: int 0..* + nacionalidad: string
- totalPrestamos: int Multa + fechaNacimiento: date
+ prestar(id: int; fAct: date): boolean + mInit: date
+ devolver(id: int; fechaActual: date): void + mfin: date
+ setMulta(): int
Ejercicio # 2
redLAN
1 1
1..*
Switch
Equipo 1 flujo
1
n
Cable Puerto
Mensaje - utp: string - portEff: int
- long: int
1..* 1
1 Eq. Mensajero Impresora cableEquipo cableSwitch puertoSwitch puertoEquipo
flujo
Servidor PC
flujo
Ejercicio # 3
Persona
+ nombre
+ rut
1
0..1 0..1 1..*
PAS PDI 1..* Departamento 1..* estGrado estDoctorado
+ puesto + categoria + nombre + carrera + programa
+ administrar() + investigar() 1 1 + colaborar() + hacerTesis()
+ enseñar()
1
0..1
Doctor
Ejercicio # 4
La aplicación necesita registrar información sobre el banco, sus empleados y sus clientes. Tanto de
los empleados como de los clientes se requiere registrar su RUT, nombre y fecha de nacimiento.
De los clientes se requiere registrar además un teléfono y un correo electrónico de contacto. De los
empleados, cuya función dentro de la organización es colaborar, se requiere registrar el sueldo
líquido y su cargo. Los empleados no pueden ser clientes del banco.
Respecto del banco, cuya función principal es realizar inversiones, se requiere registrar el RUT y
su representante legal. Se requiere además registrar los contratos de trabajo entre los empleados y
el banco, caracterizándolos con la fecha de contrato y el plazo del contrato. El banco segmenta a
sus clientes en tres categorías: la banca Joven, para estudiantes universitarios que están a punto
de egresar, de quienes se debe registrar la carrera que estudian y la universidad a la que asisten;
la banca Premium, especializada en microempresarios, de quienes se desea registrar el RUT de la
empresa de la cual son dueños, y que debe poseer una operación específica de obtención de
saldo de la respectiva cuenta; y la banca Normal, para el resto de los clientes, de quienes se deben
registrar sus ingresos mensuales, y que debe poseer una operación específica de obtención de
deuda de la respectiva cuenta.
Los empleados que se encuentran sindicalizados tienen beneficios específicos que se obtienen en
cada evento de negociación colectiva, los cuales deben registrarse. Sin embargo, existen
empleados no sindicalizados, quienes negocian directa y personalmente con el banco, y que por
ello poseen bonos de productividad mensual, los cuales se requiere queden registrados. El banco
posee diversas áreas de gestión, caracterizadas por un nombre y un tipo de área específica
(gerencia, subgerencia, departamento o unidad), las cuales son dirigidas por directivos que poseen
un nivel jerárquico específico (gerente, subgerente, jefe de departamento, o jefe de unidad), que no
pueden ser empleados sindicalizados dado que son cargos de confianza, y que tienen la función
específica de gestionar. Todos los empleados trabajan en un área del banco.
Persona
+ rut: string
+ nombre: string
+ fNac: date
Contrato
+ fContrato: date
+ plazo: int
+ colaborar() + inversiones()
tipoArea:
-Gerencia
-SubGerencia
-Departamento
-Unidad
+ gestionar()
Ejercicio # 5
La aplicación necesita registrar información sobre el club, sus empleados y sus hinchas. Tanto de
los empleados como de los hinchas se requiere registrar su RUT, nombre y fecha de nacimiento.
De los hinchas se requiere registrar además un teléfono y un correo electrónico de contacto. De los
empleados, cuya función dentro de la organización es colaborar, se requiere registrar el sueldo
líquido y su cargo.
Respecto del club, cuya función principal es competir en los diversos campeonatos organizados
por la ANFP, se requiere registrar el RUT y nombre del representante legal. Se requiere además
registrar los contratos de trabajo entre los empleados y el club, caracterizándolos con la fecha de
contrato y el plazo en meses del contrato. El club segmenta a sus hinchas en tres categorías:
socios Galería, para hinchas que asisten a cualquiera de las dos galerías que tiene el estadio
Sausalito, de quienes se debe registrar a cual galería asisten (Cerro o Laguna) y si son barristas
activos (necesario por el empadronamiento de las barras bravas); socios Andes, que asisten a la
tribuna Andes del estadio, de quienes se desea registrar la última fecha que fueron al estadio
Sausalito, y que deben poseer una operación específica de obtención del saldo de la respectiva
membrecía al club (saldo del pago de cuotas); y socios Butaca, que asisten al sector de Butacas o
Marquesina del estadio, de quienes se debe registrar su profesión y la empresa para la cual
trabajan.
Los empleados pertenecen a dos grupos: administrativos y jugadores. Los administrativos tienen
un cargo en el club, y los jugadores se caracterizan por una posición de juego, que puede ser:
arquero, defensa, volante de quite, volante de creación, o delantero. El club posee diversas
divisiones de jugadores, caracterizadas por tipo de división (profesional, sub – 20, sub -18, sub –
16 y sub – 14), así como por sexo (fútbol masculino o femenino), cada una de las cuales tienen un
director técnico, que pertenece al grupo de administrativos, y que tienen la función específica de
dirigir a la división que corresponde. Todos los jugadores deben pertenecer a una división del
equipo.
Persona
+ rut: string
+ nombre: string
+ fNac: date
Contrato
+ fContrato: date
+ plazo: int
1..* 1..* 1
tipoDiv:
categoría categoría -Profesional
-sub20
-sub18
tiene
-sub16
-sub14
1 1. 1..*
pertenece
Administrativo Jugadores Division
1..* 1
+ cargo:
beneficios:
stringstring + posicion: tipoPos + tipo: tipoDiv
+ sexo: tipoSex
tipoPos:
1 -Arquero
-Defensa 1
-volanteQuite
-volanteCreacion socioGaleria socioAndes socioButaca
-Delantero tipoSex:
-Masculino + galeria: string + ultAsist: date + profesion: string
-Femenino
+ barrista: boolean + empresa: string
categoría
+ getSaldo(): int
directorTecnico
1..* dirige
1
+ dirigir()
Ejercicio # 6
Cada automotora tiene su propio nombre y RUT. De los autos nuevos que vende, mantiene un
registro de su marca, modelo, precio de venta, porcentaje de descuento, y accesorios que el cliente
desea añadir al vehículo (llantas, aire acondicionado, radio MP3 y airbag). De los autos usados,
mantiene registro de marca, modelo, precio de venta, año de fabricación, color y kilometraje. De los
autos de lujo, registra marca, modelo, precio de venta, porcentaje de descuento, y el plazo de
importación, en donde además gestiona todas las actividades de importación del vehículo en
cuestión, incluyendo los temas de aduana y otros, siendo relevante para la automotora cuando
dura todo el proceso.
La empresa tiene un registro de todos sus empleados que tienen sus contratos registrados, y son
de dos tipos: vendedores y mecánicos. De todos ellos mantiene su RUT, nombre, fecha de
nacimiento, sueldo base y fecha de contrato. Los primeros tienen la función de vender los autos
que oferta la automotora, pero solo llevan comisión con una fórmula de cálculo especial en el caso
de los autos nuevos, no existiendo registro de quién vendió los autos usados. Los mecánicos
tienen la misión de reparar y dejar en el mejor estado posible los autos usados que están a la
venta, en donde deben registrar para cada auto reparado el costo de la mantención y debe además
gestionar la compra de repuestos de ser requerido.
La empresa tiene dos tipos de clientes, de quienes mantiene el RUT, nombre, fecha de nacimiento
y teléfono de contacto: los potenciales compradores, de quienes además busca datos en Google
para conocer sus preferencias; y quienes dejan autos usados a la venta, de quienes registra la
necesidad que tienen de vender el bien (urgidos por plata, apurados en tiempo, quienes prefieren
maximizar el plazo de venta, y quienes prefieren maximizar el precio de venta). Con éstos últimos
establece un acuerdo de venta en concesión del auto usado, en donde se registra el acuerdo y que
además se legaliza ante notario.
El dueño de la franquicia pidió especial cuidado con aquellos datos sensibles, tanto de clientes,
empleados o productos, que puedan transgredir alguna ley o que no sea prudente hacerlos
públicos en función de mejorar las ventas.
Persona
- rut: string
- nombre: string
- fechaNacimiento: date
Empleado Automotora
Cliente
- sueldoBase: int + rut: string
- telefonoContacto: int
- fechaContrato: date + nombre: string
Contrato
Auto
+ marca: string potencialComprador consecionaAuto
+ modelo: string - necVenta: tipoNec
Mecanico Vendedor + precio: int - datosGoogle(): text
Nuevo Usado
- descuento: int + año: int
+ color: string
- kilometraje: int
tipoAcc
-llanta Acuerdo
-aire + doc: text
-radio + legalizar(): void
-airbag
Normal Lujo
+ accesorios: tipoAcc - plazoImportación: date
+ importación(): date
Mantencion
+ costo: int
- getRepuestos(): void
Ejercicio # 7
Carabineros de Chile, en acuerdo con la Asociación de Supermercados, quiere crear una base de
datos sobre la seguridad en supermercados para controlar el creciente robo hormiga. Para ello
tiene en cuenta que cada supermercado se caracteriza por un nombre, un teléfono de
emergencias, y el RUT de su Representante legal; que cada supermercado tiene varias sucursales;
que cada sucursal se caracteriza por un código, por una dirección, así como por el número de
empleados de dicha sucursal, y que posee una función que informa periódicamente sobre las
pérdidas por robo hormiga; que cada sucursal contrata, según el día, uno o más guardias
profesionales, que se caracterizan por un código y su edad (la que se calcula en base a su fecha
de nacimiento). Un guardia puede ser contratado por diferentes sucursales, en distintas fechas y es
un dato de interés dicha fecha, así como si se ha contratado con arma o no.
Por otra parte, se requiere controlar a los delincuentes que han sido detenidos por asaltar dichas
sucursales. Cada vez que se realiza una detención, se abre una causa, en la cual se registran la
fecha, el relato de los hechos, y una lista de testigos. Los delincuentes se definen por un código, un
alias, por el número de condenas previas, y su edad (la que se calcula en base a su fecha de
nacimiento). Algunos delincuentes integran bandas organizadas y, por ello, se desea saber a qué
banda pertenecen, sin ser de interés si la banda ha participado en los delitos o no. Dichas bandas
se definen por un nombre de banda, por el número de miembros y por su peligrosidad, siendo
calificadas como: principiantes; experimentados; violentos; o traficantes.
Evidentemente, un delincuente puede asaltar varias sucursales en diferentes fechas, así como una
sucursal puede ser asaltada por varios delincuentes. Igualmente, se requiere registrar los datos de
los juicios en donde se han juzgado dichas causas, importando la fecha de inicio del juicio, su
duración en días, y la sentencia final de éste. Un juicio tiene una o muchas causas (si son varios
los imputados), y una causa se ve en un solo juicio. Como resultado, se requiere calcular la nueva
condena del delincuente en función de sus condenas anteriores. En los juicios también intervienen
abogados, que alegan los hechos para defender o acusar a los imputados, habiendo al menos 2
abogados por juicio (uno para la defensa y uno querellante). De ellos es relevante registrar su
número de ROL de abogado, y a que parte representa (fiscal, defensa o querellante). Además de
los abogados, en los juicios se presentan los antecedentes de la causa (documentos, pruebas,
declaraciones, resoluciones, etc.), de los cuales se registra la fecha de cada antecedente, el
formato del documento (que puede ser audio, una foto, un video o un simple testimonio), y la
prueba digitalizada propiamente tal. Un juicio tiene muchos antecedentes, y un antecedente puede
ser presentado en varios juicios.
Interesa saber también qué Juez ha resuelto el juicio, sabiendo que un juicio es resuelto por un
juez, y un juez resuelve muchos juicios. Un Juez se caracteriza por la fecha de ingreso al sistema
judicial, un código de juez y un código del tribunal en donde se desempeña, siendo vital además
conocer cuántos años lleva en el servicio. Tanto del juez, de los abogados, de los guardias como
de los delincuentes, interesa saber al menos su nombre y RUN.
Ejercicio # 8
La Asociación de Isapres de Chile A.G. (AICh), ha decido montar un sistema de información que se
utilizará a través de todo el sistema de salud, público y privado, de manera de gestionar de mejor
forma la información de sus afiliados, trabajadores, activos, etc., de manera de mejorar la
rentabilidad de sus asociados. Para ello, han solicitado al mismo consultor de Sistemas de
Información que haga un levantamiento de requerimientos respecto del proceso general que
engloba el sistema de salud, para establecer la estructura estática del software que desean.
De partida, se requiere registrar la información relativa a cada una de las Isapre de la asociación,
las cuales tienen la función de generar utilidades, y de las cuales se requiere almacenar el
Nombre, RUT, y RUT del representante legal. Las Isapre tienen convenios con diferentes clínicas
privadas y hospitales públicos, de los cuales se desea registrar su nombre, RUT y dirección. A su
vez, mantienen convenios no exclusivos con diferentes profesionales de la salud, de quienes
registra su nombre, RUT, fecha de nacimiento, y nacionalidad, siendo requerido que la aplicación
muestre la edad de dicho profesional cuando es consultada. En los convenios se registran el costo
por atención que la Isapre pagará al profesional, el plazo de expiración del convenio, y se requiere
un cálculo de rentabilidad para la Isapre de dichos profesionales. Los profesionales de la salud
pueden ser médicos (doctores) u otro tipo de profesional, en donde en el primer caso se requiere
registrar el tipo de especialidad y número de registro en el Colegio Médico; y en el segundo que
tipo de atención prestan (enfermero, matrona, kinesiólogo o psicólogo).
Las Isapre tienen diversas sucursales a lo largo de todo el país, y en las ciudades más
importantes, de las cuales se registra un código de sucursal, una dirección, el número de
empleados por sucursal, y debe reportar el total de circulante (dinero) que mantienen. Cada
sucursal tiene diversos empleados, de los cuales se registra su sueldo bruto, un código de
empleado, nombre, RUT, y fecha de nacimiento, siendo requerido que la aplicación muestre la
edad de dicho empleado. Tiene además un Jefe de Sucursal, cuya labor es administrar, y que es
jefe de todos los empleados de la misma.
Las Isapre tienen afiliados (clientes) exclusivos, con quienes conviene un plan de salud a modo de
contrato de prestación de servicios. De ellos registra su nombre, RUT, profesión y fecha de
nacimiento, y del contrato registra el valor y el nombre del plan. Los afiliados deben asistir a las
sucursales de las Isapre para obtener las diferentes prestaciones que la Isapre le debe
proporcionar, y que se encuentran pactadas previamente en el plan de salud contratado por el
afiliado, la que pueden ser compra de bonos, reembolso de boletas, cambio del plan de salud, o
consultas generales, siendo importante para la Isapre que se registre que prestación se le dio al
afiliado cuando asistió a la sucursal.
Ejercicio # 9
Un usuario desea pagar su compra con su tarjeta de débito. Para ello, solicita al vendedor el
pago con dicho medio, éste le recibe la tarjeta, la desliza por la ranura magnética del POS,
ingresa el monto de la venta y le entrega el dispositivo al usuario.
El cliente debe confirmar el monto de la transacción e ingresar el PINPASS asociado a su
tarjeta.
Luego, el POS establece una comunicación con TRANSBANK para verificar los datos de la
tarjeta y su PINPASS.
Luego, TRANSBANK establece una conexión con el Banco asociado a la cuenta corriente de la
tarjeta de débito, para consultar si el cliente posee saldo suficiente para concretar la operación.
El banco responde que existe saldo en la cuenta corriente respectiva, cerrando TRANSBANK
la comunicación con éste al recibir la respuesta.
Este último responde al POS que la operación ha sido exitosa, en donde el POS contesta con
un mensaje de reconocimiento (conocido como ACK) de vuelta, y procede a la impresión del
comprobante respectivo.
TRANSBANK vuelve a establecer una comunicación con el Banco asociado a la cuenta
corriente de la tarjeta de débito, informando el monto del valor de la transacción, en cuyo acto
el Banco descuenta del saldo de la cuenta corriente del cliente el monto facturado.
Paralelamente, informa al POS que cierre el canal de comunicación.
Una vez impresos los comprobantes, el vendedor acepta presionando cualquier tecla en su
terminal y termina la operación.
DeslizarTarjeta()
EntregarTarjeta
Monto?
[valorMonto]
ConfirmarMonto
[OK]
IngresarPINPASS
CrearCom()
[#PINPASS] : canal1
Verificar()
CrearCom()
: canal2
Validar()
GetSaldo()
[OK] [saldo]
Aprobación() KillCom() X
Comprobante
de Pago
ImprimirComprobante()
[ACK]
CrearCom()
PresionarTecla
KillCom() : canal3
Cargar()
[OK] KillCom() Descontar()
[entregarComprobante]
X [OK] [OK]
KillCom() X
Nota: Luego de creado un canal, los mensajes desde un extremo a otro deben ser ‘gestionados’ (trasmitidos) desde el punto de vista de UML por el canal.8 Acá
se abrevió dicho paso considerando que la comunicación ‘real’ es directa entre ambos extremos a través del canal. Pero es solo una abreviación.
1: EntregarTarjeta
: Cliente : Vendedor
2: [entregarComprobante]
1.1: DeslizarTarjeta() ↓
1.2: Monto? ↑
1.3: [valorMonto]↓
1: ImprimirComprobante() 2.1: PresionarTecla ↑
Comprobante 2.2: [OK]↓
de Pago
: POS
1.1: ConfirmarMonto
1.2: [OK]
1: CrearCom() ↓
2.1: IngresarPINPASS
2: Verificar() ↓ : CtaCte
2.2: [#PINPASS]
3.1: Aprobación() ↑
3.2: [ACK] ↓
4.1: KillCom() ↑
1.1: GetSaldo() ↑
4.2: KillCom↓
1.2: [saldo] ↓
2.1: Descontar() ↑
: canal1 1.2: [OK] ↓
1: Verificar() ↓
2.1: Aprobación() ↑
2.2: [ACK] ↓
3: KillCom() ↑
1: CrearCom() 2.1: Validar()
2.1: Validar() 2.2: [OK]
: TransBank : canal2 : Banco
2.2: [OK]
1: CrearCom() ↓ 3: KillCom
2.1: Cargar() ↓
2.2: [OK] ↑ 2.1: Cargar()
3: KillCom ↓ 2.2: [OK]
: canal3