Moved types into parent classes.

This commit is contained in:
Chris Cromer 2016-07-04 12:37:35 -04:00
parent b888744104
commit 1229576df9
10 changed files with 213 additions and 221 deletions

View File

@ -122,4 +122,85 @@ public class Arbol {
} }
} }
} }
/**
* Esta clase contiene los tipos de arboles.
*
* @author Chris Cromer
*/
final static public class Tipos {
/**
* Tipo general.
*/
static final public int GENERAL = 0;
/**
* Tipo binario.
*/
static final public int BINARIO = 1;
/**
* Tipo busqueda binaria.
*/
static final public int BUSQUEDA_BINARIA = 2;
/**
* Tipo AVL.
*/
static final public int AVL = 3;
/**
* Tipo rojo-negro.
*/
static final public int ROJO_NEGRO = 4;
/**
* Tipo B-Tree.
*/
static final public int B_TREE = 5;
/**
* El tipo elegido.
*/
final private int tipo;
/**
* Inicilizar el tipo de arbol.
*
* @param tipo int: El tipo de lista enlazada, {@value #GENERAL}, {@value #BINARIO}, {@value #BUSQUEDA_BINARIA}, {@value #AVL}, {@value #ROJO_NEGRO} o {@value #B_TREE}
*/
public Tipos(int tipo) {
switch (tipo) {
case GENERAL:
this.tipo = GENERAL;
break;
case BINARIO:
this.tipo = BINARIO;
break;
case BUSQUEDA_BINARIA:
this.tipo = BUSQUEDA_BINARIA;
break;
case AVL:
this.tipo = AVL;
break;
case ROJO_NEGRO:
this.tipo = ROJO_NEGRO;
break;
case B_TREE:
this.tipo = B_TREE;
break;
default:
this.tipo = GENERAL;
}
}
/**
* Devolver el tipo de arbol.
*
* @return int: El tipo.
*/
public int getTipo() {
return tipo;
}
}
} }

View File

@ -4,17 +4,12 @@ import javafx.fxml.FXML;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text; import javafx.scene.text.Text;
import java.net.URL; import java.net.URL;
import java.util.Queue;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import java.util.Scanner;
import java.util.Stack; import java.util.Stack;
import java.util.logging.Level;
/** /**
* Esta clase es para controlar todos la interfaz de Arbol. * Esta clase es para controlar todos la interfaz de Arbol.
@ -127,7 +122,7 @@ public class ArbolController implements Initializable {
contenidoArbol.setGridLinesVisible(true); contenidoArbol.setGridLinesVisible(true);
grafico = new Grafico(scene); grafico = new Grafico(scene);
//this.arbol = new Arbol(); //this.arbol = new Arbol();
ArbolTipos arbolTipos = (ArbolTipos) scene.getUserData(); Arbol.Tipos tipos = (Arbol.Tipos) scene.getUserData();
} }
/** /**
@ -164,6 +159,7 @@ public class ArbolController implements Initializable {
boolean filaVacio = false; boolean filaVacio = false;
int x = medio; int x = medio;
int y = 0; int y = 0;
Colores colores = new Colores();
while (!filaVacio) { while (!filaVacio) {
Stack localStack = new Stack(); Stack localStack = new Stack();
filaVacio = true; filaVacio = true;
@ -180,7 +176,8 @@ public class ArbolController implements Initializable {
text = new Text(); text = new Text();
text.setText(String.valueOf(temp.getValor())); text.setText(String.valueOf(temp.getValor()));
text.setId(x + "_" + y); text.setId(x + "_" + y);
contenidoArbol.add(text, x, y); contenidoArbol.add(Grafico.crearCirculo(colores, x + "_" + y), x, y);
colores.siguinteColor();
localStack.push(temp.getIzquerda()); localStack.push(temp.getIzquerda());
localStack.push(temp.getDerecha()); localStack.push(temp.getDerecha());

View File

@ -1,82 +0,0 @@
package cl.cromer.estructuras;
/**
* Esta clase contiene los tipos de arboles.
*
* @author Chris Cromer
*/
final public class ArbolTipos {
/**
* Tipo general.
*/
static final public int GENERAL = 0;
/**
* Tipo binario.
*/
static final public int BINARIO = 1;
/**
* Tipo busqueda binaria.
*/
static final public int BUSQUEDA_BINARIA = 2;
/**
* Tipo AVL.
*/
static final public int AVL = 3;
/**
* Tipo rojo-negro.
*/
static final public int ROJO_NEGRO = 4;
/**
* Tipo B-Tree.
*/
static final public int B_TREE = 5;
/**
* El tipo elegido.
*/
final private int tipo;
/**
* Inicilizar el tipo de arbol.
*
* @param tipo int: El tipo de lista enlazada, {@value #GENERAL}, {@value #BINARIO}, {@value #BUSQUEDA_BINARIA}, {@value #AVL}, {@value #ROJO_NEGRO} o {@value #B_TREE}
*/
public ArbolTipos(int tipo) {
switch (tipo) {
case GENERAL:
this.tipo = GENERAL;
break;
case BINARIO:
this.tipo = BINARIO;
break;
case BUSQUEDA_BINARIA:
this.tipo = BUSQUEDA_BINARIA;
break;
case AVL:
this.tipo = AVL;
break;
case ROJO_NEGRO:
this.tipo = ROJO_NEGRO;
break;
case B_TREE:
this.tipo = B_TREE;
break;
default:
this.tipo = GENERAL;
}
}
/**
* Devolver el tipo de arbol.
*
* @return int: El tipo.
*/
public int getTipo() {
return tipo;
}
}

View File

@ -527,4 +527,53 @@ final public class Array {
return punteroIzquerda; return punteroIzquerda;
} }
} }
/**
* Esta clase contiene los tipos de array.
*
* @author Chris Cromer
*/
final static public class Tipos {
/**
* Tipo de array simple.
*/
static final public int SIMPLE = 0;
/**
* Tipo de array ordenado.
*/
static final public int ORDENADO = 1;
/**
* El tipo que está elegido.
*/
final private int tipo;
/**
* Inicilizar el tipo.
*
* @param tipo int: Tipo de array, {@value #SIMPLE} o {@value #ORDENADO}
*/
public Tipos(int tipo) {
switch (tipo) {
case SIMPLE:
this.tipo = SIMPLE;
break;
case ORDENADO:
this.tipo = ORDENADO;
break;
default:
this.tipo = SIMPLE;
}
}
/**
* Devolver el tipo.
*
* @return int: El tipo de array.
*/
public int getTipo() {
return tipo;
}
}
} }

View File

@ -231,8 +231,8 @@ public class ArrayController implements Initializable {
scene = contenidoArray.getScene(); scene = contenidoArray.getScene();
grafico = new Grafico(scene); grafico = new Grafico(scene);
this.array = new Array(10); this.array = new Array(10);
ArrayTipos arrayTipos = (ArrayTipos) scene.getUserData(); Array.Tipos arrayTipos = (Array.Tipos) scene.getUserData();
if (arrayTipos.getTipo() == ArrayTipos.ORDENADO) { if (arrayTipos.getTipo() == Array.Tipos.ORDENADO) {
this.array.setOrdered(true); this.array.setOrdered(true);
} }
} }

View File

@ -1,50 +0,0 @@
package cl.cromer.estructuras;
/**
* Esta clase contiene los tipos de array.
*
* @author Chris Cromer
*/
final public class ArrayTipos {
/**
* Tipo de array simple.
*/
static final public int SIMPLE = 0;
/**
* Tipo de array ordenado.
*/
static final public int ORDENADO = 1;
/**
* El tipo que está elegido.
*/
final private int tipo;
/**
* Inicilizar el tipo.
*
* @param tipo int: Tipo de array, {@value #SIMPLE} o {@value #ORDENADO}
*/
public ArrayTipos(int tipo) {
switch (tipo) {
case SIMPLE:
this.tipo = SIMPLE;
break;
case ORDENADO:
this.tipo = ORDENADO;
break;
default:
this.tipo = SIMPLE;
}
}
/**
* Devolver el tipo.
*
* @return int: El tipo de array.
*/
public int getTipo() {
return tipo;
}
}

View File

@ -178,4 +178,61 @@ final public class ListaEnlazada {
public int size() { public int size() {
return size; return size;
} }
/**
* Esta clase contiene los tipos de listas enlazadas.
*
* @author Chris Cromer
*/
final static public class Tipos {
/**
* Tipo simple.
*/
static final public int SIMPLE = 0;
/**
* Tipo circular.
*/
static final public int CIRCULAR = 1;
/**
* Tipo doblemente enlazada.
*/
static final public int DOBLEMENTE_ENLAZADA = 2;
/**
* El tipo elegido.
*/
final private int tipo;
/**
* Inicilizar el tipo de lista enlazada.
*
* @param tipo int: El tipo de lista enlazada, {@value #SIMPLE}, {@value #CIRCULAR} o {@value #DOBLEMENTE_ENLAZADA}
*/
public Tipos(int tipo) {
switch (tipo) {
case SIMPLE:
this.tipo = SIMPLE;
break;
case CIRCULAR:
this.tipo = CIRCULAR;
break;
case DOBLEMENTE_ENLAZADA:
this.tipo = DOBLEMENTE_ENLAZADA;
break;
default:
this.tipo = SIMPLE;
}
}
/**
* Devolver el tipo de lista enlazada.
*
* @return int: El tipo.
*/
public int getTipo() {
return tipo;
}
}
} }

View File

@ -1,58 +0,0 @@
package cl.cromer.estructuras;
/**
* Esta clase contiene los tipos de listas enlazadas.
*
* @author Chris Cromer
*/
final public class ListaEnlazadaTipos {
/**
* Tipo simple.
*/
static final public int SIMPLE = 0;
/**
* Tipo circular.
*/
static final public int CIRCULAR = 1;
/**
* Tipo doblemente enlazada.
*/
static final public int DOBLEMENTE_ENLAZADA = 2;
/**
* El tipo elegido.
*/
final private int tipo;
/**
* Inicilizar el tipo de lista enlazada.
*
* @param tipo int: El tipo de lista enlazada, {@value #SIMPLE}, {@value #CIRCULAR} o {@value #DOBLEMENTE_ENLAZADA}
*/
public ListaEnlazadaTipos(int tipo) {
switch (tipo) {
case SIMPLE:
this.tipo = SIMPLE;
break;
case CIRCULAR:
this.tipo = CIRCULAR;
break;
case DOBLEMENTE_ENLAZADA:
this.tipo = DOBLEMENTE_ENLAZADA;
break;
default:
this.tipo = SIMPLE;
}
}
/**
* Devolver el tipo de lista enlazada.
*
* @return int: El tipo.
*/
public int getTipo() {
return tipo;
}
}

View File

@ -65,7 +65,7 @@ public class ListaEnlazdaController implements Initializable {
/** /**
* Tipo de lista enlazada a trabajar. * Tipo de lista enlazada a trabajar.
*/ */
private ListaEnlazadaTipos listaEnlazadaTipos; private ListaEnlazada.Tipos listaEnlazadaTipos;
/** /**
* Grafico rectangulos y lineas. * Grafico rectangulos y lineas.
@ -104,7 +104,7 @@ public class ListaEnlazdaController implements Initializable {
int minimo = 0; int minimo = 0;
int rango = maximo - minimo + 1; int rango = maximo - minimo + 1;
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) { if (listaEnlazadaTipos.getTipo() != ListaEnlazada.Tipos.CIRCULAR) {
for (listaEnlazada.size(); listaEnlazada.size() < 5; ) { for (listaEnlazada.size(); listaEnlazada.size() < 5; ) {
int numero = random.nextInt(rango) + minimo; int numero = random.nextInt(rango) + minimo;
while (listaEnlazada.buscar(numero) != null) { while (listaEnlazada.buscar(numero) != null) {
@ -156,7 +156,7 @@ public class ListaEnlazdaController implements Initializable {
if (valorLista.getText() != null && ! valorLista.getText().trim().equals("")) { if (valorLista.getText() != null && ! valorLista.getText().trim().equals("")) {
try { try {
boolean exito; boolean exito;
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) { if (listaEnlazadaTipos.getTipo() != ListaEnlazada.Tipos.CIRCULAR) {
exito = listaEnlazada.insertar(Integer.valueOf(valorLista.getText())); exito = listaEnlazada.insertar(Integer.valueOf(valorLista.getText()));
} }
else { else {
@ -199,7 +199,7 @@ public class ListaEnlazdaController implements Initializable {
try { try {
if (valorLista.getText() != null && ! valorLista.getText().trim().equals("")) { if (valorLista.getText() != null && ! valorLista.getText().trim().equals("")) {
boolean exito; boolean exito;
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) { if (listaEnlazadaTipos.getTipo() != ListaEnlazada.Tipos.CIRCULAR) {
exito = listaEnlazada.eliminar(Integer.valueOf(valorLista.getText())); exito = listaEnlazada.eliminar(Integer.valueOf(valorLista.getText()));
} }
else { else {
@ -243,7 +243,7 @@ public class ListaEnlazdaController implements Initializable {
try { try {
if (valorLista.getText() != null && ! valorLista.getText().trim().equals("")) { if (valorLista.getText() != null && ! valorLista.getText().trim().equals("")) {
ListaEnlace listaEnlace; ListaEnlace listaEnlace;
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) { if (listaEnlazadaTipos.getTipo() != ListaEnlazada.Tipos.CIRCULAR) {
listaEnlace = listaEnlazada.buscar(Integer.valueOf(valorLista.getText())); listaEnlace = listaEnlazada.buscar(Integer.valueOf(valorLista.getText()));
} }
else { else {
@ -276,20 +276,20 @@ public class ListaEnlazdaController implements Initializable {
private void initializeLista() { private void initializeLista() {
scene = contenidoLista.getScene(); scene = contenidoLista.getScene();
grafico = new Grafico(scene); grafico = new Grafico(scene);
listaEnlazadaTipos = (ListaEnlazadaTipos) scene.getUserData(); listaEnlazadaTipos = (ListaEnlazada.Tipos) scene.getUserData();
nuevaLista(); nuevaLista();
} }
private String getTipoString() { private String getTipoString() {
String tipo; String tipo;
switch (listaEnlazadaTipos.getTipo()) { switch (listaEnlazadaTipos.getTipo()) {
case ListaEnlazadaTipos.SIMPLE: case ListaEnlazada.Tipos.SIMPLE:
tipo = "Simple"; tipo = "Simple";
break; break;
case ListaEnlazadaTipos.CIRCULAR: case ListaEnlazada.Tipos.CIRCULAR:
tipo = "Circular"; tipo = "Circular";
break; break;
case ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA: case ListaEnlazada.Tipos.DOBLEMENTE_ENLAZADA:
tipo = "Doble"; tipo = "Doble";
break; break;
default: default:
@ -307,13 +307,13 @@ public class ListaEnlazdaController implements Initializable {
contenidoLista.getChildren().clear(); contenidoLista.getChildren().clear();
contenidoListaCircular.getChildren().clear(); contenidoListaCircular.getChildren().clear();
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) { if (listaEnlazadaTipos.getTipo() != ListaEnlazada.Tipos.CIRCULAR) {
for (int i = 0; i < listaEnlazada.size(); i++) { for (int i = 0; i < listaEnlazada.size(); i++) {
ListaEnlace listaEnlace = listaEnlazada.getIndice(i); ListaEnlace listaEnlace = listaEnlazada.getIndice(i);
if (listaEnlazada.getTipo() == ListaEnlazadaTipos.SIMPLE) { if (listaEnlazada.getTipo() == ListaEnlazada.Tipos.SIMPLE) {
dibujarSimple(listaEnlace, false); dibujarSimple(listaEnlace, false);
} }
else if (listaEnlazada.getTipo() == ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA) { else if (listaEnlazada.getTipo() == ListaEnlazada.Tipos.DOBLEMENTE_ENLAZADA) {
if (i != listaEnlazada.size() - 1) { if (i != listaEnlazada.size() - 1) {
dibujarDoble(listaEnlace, (i == 0)); dibujarDoble(listaEnlace, (i == 0));
} }
@ -340,13 +340,13 @@ public class ListaEnlazdaController implements Initializable {
* Crear una nueva lista enlazada. * Crear una nueva lista enlazada.
*/ */
private void nuevaLista() { private void nuevaLista() {
if (listaEnlazadaTipos.getTipo() != ListaEnlazadaTipos.CIRCULAR) { if (listaEnlazadaTipos.getTipo() != ListaEnlazada.Tipos.CIRCULAR) {
listaEnlazada = new ListaEnlazada(); listaEnlazada = new ListaEnlazada();
listaEnlazada.setTipo(listaEnlazadaTipos.getTipo()); listaEnlazada.setTipo(listaEnlazadaTipos.getTipo());
} }
else { else {
listaEnlazadaCircular = new ListaEnlazadaCircular(); listaEnlazadaCircular = new ListaEnlazadaCircular();
listaEnlazadaCircular.setTipo(ListaEnlazadaTipos.SIMPLE); listaEnlazadaCircular.setTipo(ListaEnlazada.Tipos.SIMPLE);
} }
} }

View File

@ -19,8 +19,6 @@ import java.util.Optional;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import java.util.logging.Level; import java.util.logging.Level;
import static cl.cromer.estructuras.ListaEnlazadaTipos.SIMPLE;
/** /**
* Controlar las acciones cuando una opción es elegido en el menu. * Controlar las acciones cuando una opción es elegido en el menu.
*/ */
@ -52,7 +50,7 @@ public class MenuController extends VBox implements Initializable {
*/ */
@FXML @FXML
protected void menuArraySimple() { protected void menuArraySimple() {
ArrayTipos arrayTipos = new ArrayTipos(ArrayTipos.SIMPLE); Array.Tipos arrayTipos = new Array.Tipos(Array.Tipos.SIMPLE);
loadStage( loadStage(
resourceBundle.getString("tituloArraySimple"), resourceBundle.getString("tituloArraySimple"),
"/cl/cromer/estructuras/fxml/array.fxml", "/cl/cromer/estructuras/fxml/array.fxml",
@ -66,7 +64,7 @@ public class MenuController extends VBox implements Initializable {
*/ */
@FXML @FXML
protected void menuArrayOrdenado() { protected void menuArrayOrdenado() {
ArrayTipos arrayTipos = new ArrayTipos(ArrayTipos.ORDENADO); Array.Tipos arrayTipos = new Array.Tipos(Array.Tipos.ORDENADO);
loadStage( loadStage(
resourceBundle.getString("tituloArrayOrdenado"), resourceBundle.getString("tituloArrayOrdenado"),
"/cl/cromer/estructuras/fxml/array.fxml", "/cl/cromer/estructuras/fxml/array.fxml",
@ -152,7 +150,7 @@ public class MenuController extends VBox implements Initializable {
*/ */
@FXML @FXML
protected void menuListaEnlazadaSimple() { protected void menuListaEnlazadaSimple() {
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(SIMPLE); ListaEnlazada.Tipos listaEnlazadaTipos = new ListaEnlazada.Tipos(ListaEnlazada.Tipos.SIMPLE);
loadStage( loadStage(
resourceBundle.getString("tituloListaEnlazadaSimple"), resourceBundle.getString("tituloListaEnlazadaSimple"),
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml", "/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
@ -166,7 +164,7 @@ public class MenuController extends VBox implements Initializable {
*/ */
@FXML @FXML
protected void menuListaEnlazadaCircular() { protected void menuListaEnlazadaCircular() {
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(ListaEnlazadaTipos.CIRCULAR); ListaEnlazada.Tipos listaEnlazadaTipos = new ListaEnlazada.Tipos(ListaEnlazada.Tipos.CIRCULAR);
loadStage( loadStage(
resourceBundle.getString("tituloListaEnlazadaCircular"), resourceBundle.getString("tituloListaEnlazadaCircular"),
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml", "/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
@ -180,7 +178,7 @@ public class MenuController extends VBox implements Initializable {
*/ */
@FXML @FXML
protected void menuListaEnlazadaDoble() { protected void menuListaEnlazadaDoble() {
ListaEnlazadaTipos listaEnlazadaTipos = new ListaEnlazadaTipos(ListaEnlazadaTipos.DOBLEMENTE_ENLAZADA); ListaEnlazada.Tipos listaEnlazadaTipos = new ListaEnlazada.Tipos(ListaEnlazada.Tipos.DOBLEMENTE_ENLAZADA);
loadStage( loadStage(
resourceBundle.getString("tituloListaEnlazadaDoble"), resourceBundle.getString("tituloListaEnlazadaDoble"),
"/cl/cromer/estructuras/fxml/listaEnlazada.fxml", "/cl/cromer/estructuras/fxml/listaEnlazada.fxml",
@ -218,7 +216,7 @@ public class MenuController extends VBox implements Initializable {
*/ */
@FXML @FXML
protected void menuArbolGeneral() { protected void menuArbolGeneral() {
ArbolTipos arbolTipos = new ArbolTipos(ArbolTipos.GENERAL); Arbol.Tipos arbolTipos = new Arbol.Tipos(Arbol.Tipos.GENERAL);
loadStage( loadStage(
resourceBundle.getString("tituloCola"), resourceBundle.getString("tituloCola"),
"/cl/cromer/estructuras/fxml/arbol.fxml", "/cl/cromer/estructuras/fxml/arbol.fxml",