N13: diseño básico de estructuras de datos · PDF fileISIS1206...

19
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

Transcript of N13: diseño básico de estructuras de datos · PDF fileISIS1206...

Page 1: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS

Del Análisis al Diseño

Page 2: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Proceso de Construcción de Software

2

Page 3: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Proceso de Construcción de Software

3

Page 4: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Proceso de Construcción de Software

4

Page 5: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Proceso de Construcción de Software

5

Page 6: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Del Análisis al Diseño

6

Page 7: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Del Análisis al Diseño

7

Page 8: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Del Análisis al Diseño

8

Page 9: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Del Análisis al Diseño

9

Page 10: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Del Análisis al Diseño

10

Page 11: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Del Análisis al Diseño

11

Page 12: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Del Análisis al Diseño

12

Page 13: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Del

13

Page 14: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Ejemplo: El Hospital

En un hospital se debe permitir a un médico solicitar una enfermera para atender un paciente. Como no es muy usual esto, las enfermeras están organizadas de manera que solo haya una disponible en todo momento. Cada enfermera tiene un identificador y la duración de su turno (en minutos). La enfermera que está de turno, tiene además el tiempo que le falta para terminar su turno y si está ocupada con un médico. Los turnos de las enfermeras están organizados de manera circular. Las operaciones para manejar la estructura de enfermeras son:

• Avanzar un minuto (la enfermera que está de turno disminuye lo que le falta en 1. Si llega a 0, se inicia el turno de la segunda enfermera, pasando la anterior a ocupar la última posición)

• Dar enfermera (retorna la enfermera de turno si no está ocupada, o null en caso contrario)

• Calcular cuántas enfermeras hay en el hospital

• Calcular cuánto le falta a una enfermera (dado su id) para comenzar su turno.

14

Page 15: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Análisis

Restricciones:• Sólo existe una enfermera

disponible en todo momento(en turno).

• Los turnos se asignan deforma circular.

15

class modeloAnalisis

Hospital Enfermera

- estado: int

- id: String

- tiempoTurno: int

-enfermeras

*-enTurno

1

Page 16: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Análisis al Diseño

• Formalismo

• Invariante

16

Hospital = < E1, E2, …, Et, …, En > (Et está de turno) Ei = [ id, estado, tiempoTurno]

n > 0 // Hay por lo menos una enfermera en el hospital

Ei.tiempoTurno > 0 // Todas las enfermeras tienen un tiempo de turno

Ei.estado = FUERA_TURNO, si i ≠ t // Las enfermeras que NO están de turno se

// consideran fuera de turno

Ei.estado = LIBRE o Ei.estado = OCUPADA, // La enfermera que está de turno puede estar libre

si i = t // u ocupada

Page 17: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Análisis al Diseño

• Interfaces

17

¿Estamos declarando la interfaz del sistema o de la estructura de datos?

class Domain Model

«interface»

IHospital

+ avanzarMinuto() : void

+ darEnfermera() : IEnfermera

+ contarEnfermeras() : int

+ faltaParaTurno(String) : int

class Domain Model

«interface»

IListaCircularEnfermeras

+ darEnfermeraEnTurno() : IEnfermera

+ darTamanho() : int

+ faltaParaTurno(String) : int

+ avanzarMinuto() : void

Page 18: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Diseño

18

class Domain Model

«interface»

IEnfermera

+ darId() : String

+ darTiempoTurno() : int

+ darTiempoQueda() : int

+ estaOcupada() : boolean

+ iniciarTurno() : void

+ avanzarMinuto() : void

+ cambiarEstado(int) : void

+ darSiguienteEnfermera() : IEnfermera

+ darEstado() : int

«interface»

IHospital

+ avanzarMinuto() : void

+ darEnfermera() : IEnfermera

+ contarEnfermeras() : int

+ faltaParaTurno(String) : int

«interface»

IListaCircularEnfermeras

+ darEnfermeraEnTurno() : IEnfermera

+ darTamanho() : int

+ faltaParaTurno(String) : int

+ avanzarMinuto() : void

Hospital

ListaCircularEnfermeras

- tamanho: int

Enfermera

- estado: int

- id: String

- tiempoTurno: int

inv: Por lo menos hay

una enfermera en el

hospital.

inv: El estado de la enfermera puede ser

libre : 1, u ocupada:2.

La enfermera tiene un tiempo de

turno.

El tiempo que le queda de turno a

una enfermera que no está de turno es

de 0.

La enfermera siempre tiene una

siguiente enfermera.

-siguiente 1

-enfermeraActual 1

-enfermeras 1

Page 19: N13: diseño básico de estructuras de datos · PDF fileISIS1206 –Estructuras de Datos   N13: DISEÑO BÁSICO DE ESTRUCTURAS DE DATOS Del Análisis al Diseño

ISIS1206 – Estructuras de Datos

http://cupi2.uniandes.edu.co

Bibliografía

19