APO2 - Presentacion nivel 9
-
Upload
mario-jose-villamizar-cano -
Category
Education
-
view
2.803 -
download
0
Transcript of APO2 - Presentacion nivel 9
![Page 1: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/1.jpg)
ALGORÍTMICA Y PROGRAMACIÓN 2 (APO 2)
NIVEL 9
Mario José Villamizar Cano
Oficina ML-637
http://sistemas.uniandes.edu.co/~mj.villamizar24/dokuwiki/doku.php
Grupo de Tecnologías de Información y Comunicación (COMIT)
Departamento de Ingeniería de Sistemas y Computación
Universidad de los Andes, Bogotá D.C., Colombia
![Page 2: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/2.jpg)
http://twitter.com/mariocloud
http://linkedin.com/in/mariojosevillamizarcano
REDES SOCIALES
NIVEL 9
![Page 3: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/3.jpg)
Caso de estudio 1 – Una Central de Pacientes
Referencias y ciclos de vida de los objetos
Estructuras lineales enlazadas
Localización de elementos y recorridos
Supresión de elementos
Inserción de elementos
Patrones de algoritmo
Nuevos componentes gráficos (JRadioButton, ButtonGroup, JDialog)
NIVEL 9 – ESTRUCTURAS LINEALES ENLAZADAS
NIVEL 9
![Page 4: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/4.jpg)
CASOS DE ESTUDIO
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
![Page 5: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/5.jpg)
CASOS DE ESTUDIO
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
![Page 6: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/6.jpg)
CASOS DE ESTUDIO
Caso de estudio 2: Aerolínea
NIVEL 9
![Page 7: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/7.jpg)
CASOS DE ESTUDIO
Caso de estudio 2: Aerolínea
NIVEL 9
![Page 8: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/8.jpg)
HOJAS DE TRABAJO
Hoja de trabajo 1: Agenda
NIVEL 9
![Page 9: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/9.jpg)
HOJAS DE TRABAJO
Hoja de trabajo 2: Cadenas de ADN
NIVEL 9
![Page 10: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/10.jpg)
HOJAS DE TRABAJO
Hoja de trabajo 3: Cupi E-Mart
NIVEL 9
![Page 11: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/11.jpg)
HOJAS DE TRABAJO
Hoja de trabajo 3: Cupi E-Mart
NIVEL 9
![Page 12: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/12.jpg)
CASOS DE ESTUDIO
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
![Page 13: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/13.jpg)
CASOS DE ESTUDIO
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
![Page 14: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/14.jpg)
CASO DE ESTUDIO 1 – UNA CENTRAL DE PACIENTES
Requerimientos funcionales.
NIVEL 9
![Page 15: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/15.jpg)
CASO DE ESTUDIO 1 – UNA CENTRAL DE PACIENTES
Requerimientos funcionales.
NIVEL 9
![Page 16: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/16.jpg)
CASO DE ESTUDIO 1 – UNA CENTRAL DE PACIENTES
Requerimientos funcionales.
NIVEL 9
![Page 17: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/17.jpg)
CASO DE ESTUDIO 1 – UNA CENTRAL DE PACIENTES
Modelo del Mundo con un Vector o ArrayList
NIVEL 9
![Page 18: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/18.jpg)
CASO DE ESTUDIO 1 – UNA CENTRAL DE PACIENTES
Representación con un Vector o ArrayList
NIVEL 9
:CentralPacientes
:Paciente
codigo=12
nombre=“Maria”
0
pacientes =
:Paciente
codigo=22
nombre=“Juan”
1
:Paciente
codigo=50
nombre=“Mary”
2
:Paciente
codigo=100
nombre=“Lucas”
n
……
![Page 19: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/19.jpg)
CASO DE ESTUDIO 1 – UNA CENTRAL DE PACIENTES
Modelo del Mundo con un Vector o ArrayList
NIVEL 9
![Page 20: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/20.jpg)
CASO DE ESTUDIO 1 – UNA CENTRAL DE PACIENTES
Representación con una LISTA ENLAZADA SIMPLE
NIVEL 9
Solo se tiene una referencia al primer elemento de la lista.
Cada elemento de la lista tiene una referencia al siguiente-
El último elemento de la lista tiene como referencia null es su atributo siguiente.
El primer elemento de la lista generalmente se le denomina cabeza.
:CentralPacientes
:Paciente
codigo=12
nombre=“Maria”primero
:Paciente
codigo=22
nombre=“Juan”
:Paciente
codigo=50
nombre=“Mary”
:Paciente
codigo=100
nombre=“Lucas” nu
ll
![Page 21: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/21.jpg)
CASO DE ESTUDIO 1 – UNA CENTRAL DE PACIENTES
Modelo del Mundo con una LISTA ENLAZADA SIMPLE
NIVEL 9
![Page 22: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/22.jpg)
CASO DE ESTUDIO 1 – UNA CENTRAL DE PACIENTES
Modelo de la Interfaz
NIVEL 9
![Page 23: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/23.jpg)
CASO DE ESTUDIO 1 – UNA CENTRAL DE PACIENTES
Modelo de las Pruebas
NIVEL 9
![Page 24: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/24.jpg)
LISTAS ENLAZADAS SIMPLES
Es una estructura de datos utilizada en problemas en los cuales es
importante mantener ordenados un conjunto de valores y objetos.
Son muy eficientes para la inserción y eliminación de elementos.
Los desplazamientos en memoria para el caso de los arreglos es
necesario hacerlo a mano.
Los desplazamientos en memoria para el caso de los vectores o
ArrayList los hace automáticamente Java, sin embargo, no lo hace de
manera eficiente.
Utilizadas principalmente en programas en los que hay muchas
inserciones y eliminaciones de elementos, así como en programas en los
cuales dichos elementos deben mantener o cumplir con alguna regla de
ordenamiento.
NIVEL 9
![Page 25: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/25.jpg)
DECLARACIÓN DE UNA LISTA ENLAZADA SIMPLE
NIVEL 9
La definición de una lista enlazada simple
public class CentralPacientes
{
//----------------------------------------------------------------
// Atributos
//----------------------------------------------------------------
/**
* Primer paciente de la lista
*/
private Paciente primero;
}
![Page 26: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/26.jpg)
INICIALIZACIÓN DE UNA LISTA ENLAZADA SIMPLE
NIVEL 9
La inicialización de una lista enlazada simple
public class CentralPacientes
{
public CentralPacientes( )
{
primero = null;
numPacientes = 0;
}
}
Inicialmente la lista no
tiene ningún paciente,
por lo cual primero se
inicializa en null
![Page 27: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/27.jpg)
DECLARACIÓN DE LOS ELEMENTOS DE LISTA ENLAZADA SIMPLE
NIVEL 9
La inicialización de una lista enlazada simple
public class Paciente
{
//---------------------------------------------
// Atributos
//---------------------------------------------
private int codigo;
private String nombre;
private String clinica;
private String informacionMedica;
private int sexo;
/**
* Referencia al siguiente elemento
*/
private Paciente siguiente;
}
Cada elemento de la
lista puede tener una
referencia al siguiente.
![Page 28: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/28.jpg)
CREACIÓN DE UN NUEVO PACIENTE
NIVEL 9
La creación de un objeto de la clase Paciente
public class Paciente
{
//---------------------------------------------
// Métodos
//---------------------------------------------
public Paciente( int cod, String nom, String clin, String infoMed, int sex )
{
codigo = cod;
nombre = nom;
clinica = clin;
informacionMedica = infoMed;
sexo = sex;
siguiente = null;
}
}
Al crear un objeto el
atributo siguiente
referencia a null.
![Page 29: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/29.jpg)
OPERACIONES SOBRE LISTAS ENLAZADAS SIMPLES
NIVEL 9
Búsquedas y recorridos
Calcular el número de pacientes de sexo masculino.
Buscar a un paciente dado su código.
Buscar el número de pacientes asociados con una clínica.
Buscar a un paciente dado su nombre.
Inserción
Insertar un nuevo paciente (al inicio, al final, después de otro paciente, antes de
otro paciente).
Eliminación
Eliminar un paciente dado su código.
![Page 30: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/30.jpg)
BÚSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Recorrido total
Definir el método dar número de pacientes en la clase CentralPacientes:
public int darTotalPacientes( )
{
Paciente actual = primero;
int numero = 0;
while( actual != null )
{
numero++;
actual = actual.darSiguiente( );
}
return numero;
}
El recorrido siempre empieza por
la cabeza y se hace utilizando una
variable, regularmente
denominada actual.
El recorrido se hace en un ciclo, el
cual se ejecuta siempre y cuando
no se haya llegado al final de la
lista.
Se efectúan las operaciones
requeridas sobre el elemento
actual.
Se pide que actual ahora
referencia a su elemento
siguiente.
![Page 31: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/31.jpg)
BÚSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Recorrido total
Definir el método dar número de mujeres en la clase CentralPacientes:
public int darNumeroMujeres ( )
{
Paciente actual = primero;
int numero = 0;
while( actual != null )
{
if(actual.darSexo( )==Paciente.MUJER)
numero++;
actual = actual.darSiguiente( );
}
return numero;
}
El recorrido siempre empieza por
la cabeza y se hace utilizando una
variable, regularmente
denominada actual.
El recorrido se hace en un ciclo, el
cual se ejecuta siempre y cuando
no se haya llegado al final de la
lista.
Se efectúan las operaciones
requeridas sobre el elemento
actual.
Se pide que actual ahora
referencia a su elemento
siguiente.
![Page 32: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/32.jpg)
BÚSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Recorrido parcial
Definir el método hay un hombre en la clase CentralPacientes:
public boolean hayUnHombre ( )
{
Paciente actual = primero;
boolean termino= false;
while( actual != null && !termino)
{
if(actual.darSexo( )==Paciente.HOMBRE)
termino=true;
actual = actual.darSiguiente( );
}
return termino;
}
El recorrido siempre empieza por
la cabeza y se hace utilizando una
variable, regularmente
denominada actual.
El recorrido se hace en un ciclo, el
cual se ejecuta siempre y cuando
no se haya llegado al final de la
lista y no se haya cumplido una
condición.
Se efectúan las operaciones
requeridas sobre el elemento
actual.
Se pide que actual ahora
referencia a su elemento
siguiente.
![Page 33: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/33.jpg)
BÚSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Ejercicio de recorrido y búsquedas
Definir el método dar sexo menor número de pacientes en la clase
CentralPacientes. Este método retorna el sexo que tiene el menor número de
pacientes, es decir las constantes HOMBRE o MUJER, en caso de haber
empate el método debe retornar -1.
public int darSexoMenorNumeroPacientes ( )
{
}
![Page 34: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/34.jpg)
BÚSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Ejercicio de recorrido y búsquedas
Definir el método dar paciente mayor código en la clase CentralPacientes:
public Paciente darPacienteMayorCodigo ( )
{
}
![Page 35: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/35.jpg)
BÚSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Ejercicio de recorrido y búsquedas
Definir el método dar último paciente en la clase CentralPacientes. Este método
retorna null en caso de que no hayan pacientes.
public Paciente darUltimoPaciente( )
{
}
![Page 36: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/36.jpg)
BÚSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Ejercicio de recorrido y búsquedas
Definir el método dar última mujer de la lista en la clase CentralPacientes. Este
método retorna null en caso de que no haya una mujer en la lista.
public Paciente darUltimaMujer ( )
{
}
![Page 37: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/37.jpg)
BÚSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Ejercicio de recorrido y búsquedas
Definir el método retornar pacientes en ArrayList, en la clase CentralPacientes.
public ArrayList retornarPacientesEnArrayList ( )
{
}
![Page 38: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/38.jpg)
BÚSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Ejercicio de recorrido y búsquedas (DOBLE RECORRIDO)
Definir el método hay dos pacientes con el mismo nombre en la clase
CentralPacientes.
public boolean hayDosPacientesConElMismoNombre ( )
{
}
![Page 39: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/39.jpg)
BÚSQUEDAS Y RECORRIDOS EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Ejercicio de recorrido y búsquedas (DOBLE RECORRIDO)
Definir el método hay dos pacientes de la misma clínica en la clase
CentralPacientes.
public boolean hayDosPacientesDeLaMismaClinica ( )
{
}
![Page 40: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/40.jpg)
PATRÓN DE RECORRIDO TOTAL
NIVEL 9
Consiste en pararse una vez en cada uno de los elementos de la lista.
Nodo actual = primero;
while( actual != null )
{
……………
actual = actual.darSiguiente( );
}
![Page 41: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/41.jpg)
PATRÓN DE RECORRIDO PARCIAL PARA LOCALIZAR EL ÚTIMO
ELEMENTO
NIVEL 9
Consiste en localizar el último elemento de la lista.
if ( primero != null )
{
Nodo actual = primero;
while( actual.darSiguiente() != null )
{
……………
actual = actual.darSiguiente( );
}
…………
}
![Page 42: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/42.jpg)
PATRÓN DE RECORRIDO PARCIAL HASTA QUE UN ELEMENTO
CUMPLA UNA CONDICIÓN
NIVEL 9
Consiste en verificar que una condición se cumple sobre por lo menos
un elemento de la lista.
Nodo actual = primero;
boolean termino = false;
while( actual != null && !termino )
{
…………..
actual = actual.darSiguiente( );
}
……………
![Page 43: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/43.jpg)
PATRÓN DE RECORRIDO PARCIAL HASTA QUE UNA CONDICIÓN SE
CUMPLA SOBRE EL SIGUIENTE ELEMENTO
NIVEL 9
Consiste en verificar que una condición se cumple sobre el siguiente
elemento de por lo menos uno de los elementos de la lista.
Nodo actual = primero;
Nodo anterior = null;
boolean termino = false;
while( actual != null && !termino )
{
…………..
anterior = actual;
actual = actual.darSiguiente( );
}
……………
![Page 44: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/44.jpg)
PREGUNTAS
NIVEL 9
![Page 45: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/45.jpg)
HOJA DE TRABAJO
NIVEL 9
![Page 46: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/46.jpg)
INSERCIÓN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Problemas de inserción típicos
Insertar un elemento al inicio de la lista.
Insertar un elemento al final de la lista.
Insertar un elemento después de otro elemento.
Insertar un elemento antes de otro elemento.
![Page 47: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/47.jpg)
INSERCIÓN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Problemas de inserción típicos – AL INICIO DE LA LISTA
Definir el método agregar paciente al comienzo, en la clase CentralPacientes:
public void agregarPacienteAlComienzo( Paciente pac )
{
if( primero == null )
{
primero = pac;
}
else
{
pac.cambiarSiguiente( primero );
primero = pac;
}
numPacientes++;
}
Se supone que el paciente
ya se creó normalmente y
que su referencia a siguiente
es null.
Se crea la cabeza si no
existe
Se realiza la adición antes
del paciente que está al
inicio de la lista
![Page 48: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/48.jpg)
INSERCIÓN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Problemas de inserción típicos – AL FINAL DE LA LISTA
Definir el método agregar paciente al final, en la clase CentralPacientes:
public void agregarPacienteAlFinal( Paciente pac )
{
if( primero == null )
{
primero = pac;
}
else
{ Paciente p = localizarUltimo( );
p.insertarDespues( pac );
}
numPacientes++;
}
Se supone que el paciente
ya se creó normalmente y
que su referencia a siguiente
es null.
Se crea la cabeza si no
existe
Se realiza la adición
después del paciente que
está al final de la lista
![Page 49: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/49.jpg)
INSERCIÓN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Problemas de inserción típicos – INSERTAR DESPUÉS DE OTRO
ELEMENTO
Definir el método agregar paciente después de otro, en la clase
CentralPacientes:
public void agregarPacienteDespuesDe( int cod, Paciente pac ) throws
NoExisteException
{
Paciente anterior = localizar( cod );
if( anterior == null )
throw new NoExisteException( cod );
else
anterior.insertarDespues( pac );
numPacientes++;
}
Se supone que el paciente
ya se creó normalmente y
que su referencia a siguiente
es null.
Identificador del
elemento anterior
Se localiza el paciente
anterior
Se adiciona el nuevo
paciente después del
anterior
![Page 50: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/50.jpg)
INSERCIÓN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Problemas de inserción típicos – INSERTAR ANTES DE OTRO
ELEMENTO
Definir el método agregar paciente antes de otro, en la clase CentralPacientes:
public void agregarPacienteAntesDe( int cod, Paciente pac ) throws NoExisteException
{
if( primero == null )
throw new NoExisteException( cod );
else if( cod == primero.darCodigo( ) )
{
pac.cambiarSiguiente( primero );
primero = pac;
}
else
{
Paciente anterior = localizarAnterior( cod );
if( anterior == null )
throw new NoExisteException( cod );
anterior.insertarDespues( pac );
}
numPacientes++;
}
![Page 51: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/51.jpg)
ELIMINACIÓN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Problemas de inserción típicos – ELIMINAR UN ELEMENTO DE LA
LISTA
Definir el método eliminar paciente, en la clase CentralPacientes:
public void eliminarPaciente( int cod ) throws NoExisteException
{
if( primero == null )
throw new NoExisteException( cod );
else if( cod == primero.darCodigo( ) )
{
primero = primero.darSiguiente( ); // El paciente es el primero de la lista
}
else
{
// El paciente es un elemento intermedio de la lista
Paciente anterior = localizarAnterior( cod );
if( anterior == null )
throw new NoExisteException( cod );
anterior.desconectarSiguiente( );
}
numPacientes--;
}
![Page 52: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/52.jpg)
ELIMINACIÓN EN LISTAS ENLAZADAS SIMPLES
NIVEL 9
Problemas de inserción típicos – ELIMINAR UN ELEMENTO DE LA
LISTA
Definir el método eliminar paciente, en la clase CentralPacientes:
public void eliminarPaciente( int cod ) throws NoExisteException
{
if( primero == null )
throw new NoExisteException( cod );
else if( cod == primero.darCodigo( ) )
{
primero = primero.darSiguiente( ); // El paciente es el primero de la lista
}
else
{
// El paciente es un elemento intermedio de la lista
Paciente anterior = localizarAnterior( cod );
if( anterior == null )
throw new NoExisteException( cod );
anterior.desconectarSiguiente( );
}
numPacientes--;
}
![Page 53: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/53.jpg)
INTERFAZ PRINCIPAL
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
![Page 54: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/54.jpg)
COMPONENTE JDialog
Caso de estudio 1: Una Central de Pacientes
NIVEL 9
![Page 55: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/55.jpg)
Diálogos (JDialog)
Métodos
setSize(ancho, alto)
setResizable(cambiable)
setTitle(titulo)
setDefaultCloseOperation(EXIT_
ON_CLOSE)
setVisible(esVisible)
add(componente)
Puede ser modal o no modal.
Método setLayout( ) del
contenedor gráfico.
Se aplican los tipos de layout
BorderLayout y GridLayout igual
a un JFrame.
NIVEL 9
![Page 56: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/56.jpg)
DIAGRAMA DE CLASES CON JDialog
Modelo de la Interfaz
NIVEL 9
Cada JDialog tiene una referencia
a la interfaz principal.
Las líneas punteadas indican
dependencias (no son atributos).
![Page 57: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/57.jpg)
EJEMPLO DE CREACIÓN DE UN JDialog
NIVEL 9
Cada JDialog tiene una referencia a la interfaz principal.
![Page 58: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/58.jpg)
COMO ABRIR UN JDialog DESDE LA INTERFAZ
NIVEL 9
Las líneas punteadas indican dependencias (no son atributos).
![Page 59: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/59.jpg)
COMPONENTE JRadioButton y ButtonGroup
NIVEL 9
![Page 60: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/60.jpg)
COMPONENTE JRadioButton y ButtonGroup
NIVEL 9
![Page 61: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/61.jpg)
COMPONENTE JRadioButton y ButtonGroup
NIVEL 9
Al panel se adicionan los JRadioButton, NO el ButtonGroup
![Page 62: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/62.jpg)
COMPONENTE JRadioButton y ButtonGroup
NIVEL 9
![Page 63: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/63.jpg)
COMPONENTE JRadioButton y ButtonGroup
NIVEL 9
![Page 64: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/64.jpg)
PREGUNTAS
NIVEL 9
![Page 65: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/65.jpg)
HOJA DE TRABAJO
NIVEL 9
![Page 66: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/66.jpg)
CASOS DE ESTUDIO
Caso de estudio 2: Aerolínea
NIVEL 9
![Page 67: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/67.jpg)
CASOS DE ESTUDIO
Caso de estudio 2: Aerolínea
NIVEL 9
![Page 68: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/68.jpg)
CASO DE ESTUDIO 2 – AEROLÍNEA
Requerimientos funcionales.
NIVEL 9
![Page 69: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/69.jpg)
CASO DE ESTUDIO 2 – AEROLÍNEA
Requerimientos funcionales.
NIVEL 9
![Page 70: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/70.jpg)
CASO DE ESTUDIO 2 – AEROLÍNEA
Requerimientos funcionales.
NIVEL 9
![Page 71: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/71.jpg)
CASO DE ESTUDIO 2 – AEROLÍNEA
Requerimientos funcionales.
NIVEL 9
![Page 72: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/72.jpg)
CASO DE ESTUDIO 2 – AEROLÍNEA
Modelo del Mundo
NIVEL 9
![Page 73: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/73.jpg)
CASO DE ESTUDIO 2 – AEROLÍNEA
Modelo de la Interfaz
NIVEL 9
![Page 74: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/74.jpg)
CASO DE ESTUDIO 2 – AEROLÍNEA
Modelo de las Pruebas
NIVEL 9
![Page 75: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/75.jpg)
CASO DE ESTUDIO 2 – AEROLÍNEA
Representación con una Lista Doblemente Enlazada
NIVEL 9
:Ciudad
:Vuelovuelo1
:Vuelo :Vuelo :Vuelo
nu
ll
codigo=30null codigo=80 codigo=50 codigo=100
![Page 76: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/76.jpg)
OPERACIONES SOBRE LISTAS ENLAZADAS DOBLES
NIVEL 9
Búsquedas y recorridos (Similar a como se hace en la listas simples)
Calcular el número de vuelos que tienen por lo menos una silla disponible.
Buscar a un vuelo dado su código.
Buscar si un usuario tiene una reserva en un vuelo.
Inserción
Insertar un nuevo vuelo (al inicio, al final, después de otro vuelo, antes de otro
vuelo).
Eliminación
Eliminar un vuelo dado su código.
![Page 77: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/77.jpg)
ARREGLOS DE CONSTANTES
NIVEL 9
![Page 78: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/78.jpg)
MANEJO DE FECHAS Y FORMATOS
NIVEL 9
![Page 79: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/79.jpg)
NUEVOS DISTRIBUIDORES GRÁFICOS
NIVEL 9
Distribuidor secuencial - FlowLayout
Distribuidor GridBagLayout
![Page 80: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/80.jpg)
Distribuidor secuencial - FlowLayout
NIVEL 9
Sitúa todos los componentes que se encuentran dentro del contenedor
gráfico, uno después de otro de izquierda a derecha.
Tiene en cuenta el orden de llegada y respeta el tamaño preferido que tienen
establecidos cada uno de los componentes gráficos.
Si se termina el espacio en una fila, el distribuidor comienza a usar la
siguiente.
![Page 81: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/81.jpg)
Distribuidor secuencial - FlowLayout
NIVEL 9
![Page 82: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/82.jpg)
Distribuidor secuencial - FlowLayout
NIVEL 9
![Page 83: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/83.jpg)
Distribuidor GridBagLayout
NIVEL 9
Distribuidor muy flexible que permite crear interfaces gráficas de usuario con
una estructura profesional.
Utiliza una malla dinámica en la que cada componente puede utilizar una o
más celdas.
Implementado por dos clases en Java:
GridBagLayout: El distribuidor
GridBagConstraints: Describe las características (posición, tamaño, forma de
adaptarse a los cambios de tamaño, etc.
En el método add para adicionar un nuevo componente al distribuidor, se
debe pasar como parámetro una instancia de la clase GridBagConstraints.
Se verán las principales características de este distribuidor. Para una
documentación más completa se recomienda consultar la documentación de las
clases GridBagLayout y GridBagConstraints.
![Page 84: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/84.jpg)
Objetos de la Clase GridBagConstraints
NIVEL 9
Un objeto de la clase GridBagConstraints tiene definidos (entre otros) los
siguientes atributos.
gridx: Coordenada X de la celda de la malla del distribuidor donde comienza el
componente.
0 1 2
Coordenada X
0
1
2
Coordenada Y
![Page 85: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/85.jpg)
Objetos de la Clase GridBagConstraints
NIVEL 9
Un objeto de la clase GridBagConstraints tiene definidos (entre otros) los
siguientes atributos.
gridy: Coordenada Y de la celda de la malla del distribuidor donde comienza el
componente.
gridwitdh: Número de casillas que va a ocupar el componente en la dirección X.
gridheigh: Número de casillas que va a ocupar el componente en la dirección Y.
![Page 86: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/86.jpg)
Objetos de la Clase GridBagConstraints
NIVEL 9
Un objeto de la clase GridBagConstraints tiene definidos (entre otros) los
siguientes atributos.
fill: Usado cuando el espacio reservado para el componente es mayor que el
espacio que el componente necesita. Puede tomar los siguientes valores:
GridBagConstraints.NONE (valor por defecto y corresponde a no hacer nada).
GridBagConstraints.HORIZONTAL (cambia el tamaño del componente en la
dirección horizontal).
GridBagConstraints.VERTICAL (cambia el tamaño del componente en la
dirección vertical).
GridBagConstraints.BOTH (hace cambios en la dos dimensiones para ocupar
todo el espacio disponible en el distribuidor).
![Page 87: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/87.jpg)
Objetos de la Clase GridBagConstraints
NIVEL 9
Un objeto de la clase GridBagConstraints tiene definidos (entre otros) los
siguientes atributos.
weightx: Define la manera como se va a distribuir el espacio extra en la
dimensión X. Utilizado principalmente cuando se cambie el tamaño del
contenedor gráfico.
weighty: Define la manera como se va a distribuir el espacio extra en la
dimensión Y. Utilizado principalmente cuando se cambie el tamaño del
contenedor gráfico.
![Page 88: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/88.jpg)
Ejemplo con GridBagLayout
NIVEL 9
![Page 89: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/89.jpg)
Ejemplo con GridBagLayout
NIVEL 9
![Page 90: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/90.jpg)
Ejemplo con GridBagLayout
NIVEL 9
![Page 91: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/91.jpg)
Ejemplo con GridBagLayout
NIVEL 9
![Page 92: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/92.jpg)
Ejemplo con GridBagLayout
NIVEL 9
![Page 93: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/93.jpg)
Ejemplo con GridBagLayout
NIVEL 9
![Page 94: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/94.jpg)
PREGUNTAS
NIVEL 9
![Page 95: APO2 - Presentacion nivel 9](https://reader038.fdocuments.co/reader038/viewer/2022102903/55a6ca101a28ab5d1d8b47ca/html5/thumbnails/95.jpg)
HOJA DE TRABAJO
NIVEL 9