Este repositorio contiene código fuente y consignas a realizar en Java
└───src
├───main
│ ├───negocio -----------> Clases con la lógica de negocio del proyecto
│ │ └───grafo ---------> Clases con la lógica para generar grafos, aristas y vértices
│ └───interfaz ----------> Clases con las interfaces visuales del proyecto
│ ├───controles -----> Clases con la lógica para generar controles
│ └───util ----------> Clases con funciones auxiliares
└───test
├───controles ---------> Tests para verificar la funcionalidad de los diferentes generadores de controles visuales
├───grafo -------------> Test para verificar la funcionalidad de Grafo
└───util --------------> Test para verificar la funcionalidad de las diferentes funciones auxiliares
Es una Clase
que guarda los siguientes datos:
- Vértice inicial
- Vértice final
- Peso de la arista
Es una Clase
que implementa un grafo utilizando Lista de Vecinos.
Cuenta con los siguientes métodos públicos:
void agregarVertice(int)
: Agrega un vértice al grafo.void agregarArista(int, int)
: Agrega una arista al grafo.
- Excepciones:
- Tipo:
IllegalArgumentException
. - Mensaje:
- Vértice no puede ser negativo.
- No existen aristas entre un vértice y si mismo!.
- El vértice no existe!.
- Tipo:
boolean existeArista(Arista)
: Valida la existencia de una arista dentro del grafo.void eliminarArista(Arista)
: Elimina una arista del grafo.void eliminarAristasSobreMedia(double)
: A partir de un porcentaje de densidad, elimina las aristas cuyo peso supera la media del porcentaje de densidad.int buscarIndiceAristaPorPeso(double peso)
: Devuelve el índice de la arista correspondiente al peso.
Es una Clase
que guarda los siguientes datos:
- Vértice de destino
- Peso de la arista
Es una Clase
que implementa al vértice de un grafo
Cuenta con los siguientes métodos públicos:
list<Vecino> obtenerVecinos()
: Devuelve los vecinos del vértice.void agregarVecino(int, double)
: Registra un nuevo vecino con su correspondiente peso de arista.void eliminarVecino(int)
: Elimina un vecino del vértice.int vecinoUnidoPorArista(int)
: A partir de un vertice determina el índice del vecino dentro de la lista de vecinos.
Es una Clase
que implementa el algoritmo de Kruskal para la obtención de un árbol generador mínimo a partir de un grafo.
Cuenta con los siguientes métodos públicos:
grafo ejecutarAlgoritmo(Grafo)
: Aplica el algoritmo y devuelve un grafo nuevo con el agm.int buscarVertice(int[], int)
: Devuelve el vértice padre del vértice dado dentro del grafo.void actualizarGrupoMaestro(int[], int, int)
: Coloca a ambos vértices dentro del mismo grupo maestro.void inicializarGrupoMaestro(int[])
: Inicializa un grupo maestro donde cada elemento apunta a si mismo.
Clases
para generar controles visuales:
combo
: PaqueteCombo
: Generar control del tipo Combo.ComboItem
: Items del control.ComboItemRender
: Lógica para leerComboItem
y cargarlos dentro del combo.
general
: PaqueteBordes
: Generar borde para un control.Dimensiones
: Generar dimensiones para un control.
Alerta
: Generar un cartel de alerta con un mensaje.Boton
: Generar control del tipo botón.Etiqueta
: Generar control del tipo label.Mapa
: Generar control del tipo jmapviewer.Panel
: Generar control del tipo panel.SelectorArchivo
: Generar control del tipo fileupload.Texto
: Generar control del tipo textbox.
Clases
con diversas utilidades:
Archivo
: Levantar y leer archivo.Coordenada
: Generación y validación de coordenadas.Instancia
: Datos de los diversos casos de instancia de coordenadas.Instancias
: Inicializar datos de instancia.Unidad
:ENUM
con las unidades para calcular distancia entre coordenadas.Varios
: Diversas validaciones.
Es un Singleton
que asocia las diferentes coordenadas a los vértices del grafo.
Es una Clase
que inicializa el programa.
Es una Clase
que concentra los controles visuales y consume el código de negocio