Added more documentation
This commit is contained in:
@@ -15,7 +15,14 @@ import java.util.ArrayList;
|
||||
* Clase que contiene métodos que guarda y ordena cada transición del archivo XML ya validado
|
||||
*/
|
||||
public class Automata {
|
||||
/**
|
||||
* Los estados y sus enlaces
|
||||
*/
|
||||
private ArrayList<Estado> estados;
|
||||
|
||||
/**
|
||||
* Los estados que existen
|
||||
*/
|
||||
private ArrayList<Integer> estadosExistentes;
|
||||
|
||||
/**
|
||||
|
||||
@@ -11,9 +11,24 @@ package cl.cromer.mt;
|
||||
* Clase que funciona como enlaze entre dos estados ó asi mismo
|
||||
*/
|
||||
public class Enlace {
|
||||
/**
|
||||
* El simbolo a leer
|
||||
*/
|
||||
private char si;
|
||||
|
||||
/**
|
||||
* El simbolo a escribir
|
||||
*/
|
||||
private char sj;
|
||||
|
||||
/**
|
||||
* El movimento a hacer
|
||||
*/
|
||||
private char movimiento;
|
||||
|
||||
/**
|
||||
* El estado
|
||||
*/
|
||||
private Estado qj;
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,7 +12,14 @@ import java.util.ArrayList;
|
||||
* Clase que almanecerá un estado con su subindices y sus enlaces adyacentes
|
||||
*/
|
||||
public class Estado {
|
||||
/**
|
||||
* El estado actual
|
||||
*/
|
||||
private final int q;
|
||||
|
||||
/**
|
||||
* Los enlaces que tiene este estado
|
||||
*/
|
||||
private final ArrayList<Enlace> enlaces;
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,8 +13,19 @@ import java.util.ArrayList;
|
||||
* Esta clase es un objeto para pasar entre los stage.
|
||||
*/
|
||||
public class EstadosFinales {
|
||||
/**
|
||||
* Los estados que existen
|
||||
*/
|
||||
private ArrayList<Integer> estadosExistentes;
|
||||
|
||||
/**
|
||||
* Los estados que eligó el usuario
|
||||
*/
|
||||
private ArrayList<Integer> estadosElegidos;
|
||||
|
||||
/**
|
||||
* La maquina turning con sus transiciones, estados y enlaces
|
||||
*/
|
||||
private Maquina maquina;
|
||||
|
||||
/**
|
||||
@@ -24,7 +35,7 @@ public class EstadosFinales {
|
||||
*/
|
||||
public EstadosFinales(Maquina maquina) {
|
||||
this.maquina = maquina;
|
||||
this.estadosExistentes = maquina.getMaquina().getEstadosExistentes();
|
||||
this.estadosExistentes = maquina.getAutomata().getEstadosExistentes();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,8 +20,15 @@ import java.util.ArrayList;
|
||||
* Controlar las acciones cuando el usuario elige los estados finales
|
||||
*/
|
||||
public class EstadosFinalesController {
|
||||
/**
|
||||
* El contenido de la ventan de eligir estados finales
|
||||
*/
|
||||
@FXML
|
||||
private VBox contenido;
|
||||
|
||||
/**
|
||||
* Los estados finales eligidos
|
||||
*/
|
||||
private EstadosFinales estadosFinales;
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,48 +20,99 @@ import javafx.scene.text.Text;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
public class IndividualController extends VBox {
|
||||
/**
|
||||
* El contenido de la venta
|
||||
*/
|
||||
@FXML
|
||||
private VBox contenido;
|
||||
|
||||
/**
|
||||
* La cadena que ingresa el usuario
|
||||
*/
|
||||
@FXML
|
||||
private TextField cadena;
|
||||
|
||||
/**
|
||||
* La cinta en la pantalla
|
||||
*/
|
||||
@FXML
|
||||
private HBox cinta;
|
||||
|
||||
/**
|
||||
* El boton de acapter cadena
|
||||
*/
|
||||
@FXML
|
||||
private Button aceptar;
|
||||
|
||||
/**
|
||||
* El boton que corre paso a paso
|
||||
*/
|
||||
@FXML
|
||||
private Button paso;
|
||||
|
||||
/**
|
||||
* El estado actual de la maquina
|
||||
*/
|
||||
@FXML
|
||||
private Text estadoActual;
|
||||
|
||||
/**
|
||||
* El estado en el paso anterior
|
||||
*/
|
||||
@FXML
|
||||
private Text estadoPrevio;
|
||||
|
||||
/**
|
||||
* El simbolo que lee la maquina
|
||||
*/
|
||||
@FXML
|
||||
private Text simboloLeido;
|
||||
|
||||
/**
|
||||
* Lo que escribe la maquina
|
||||
*/
|
||||
@FXML
|
||||
private Text simboloEscrito;
|
||||
|
||||
/**
|
||||
* A donde mueve la maquina
|
||||
*/
|
||||
@FXML
|
||||
private Text movimiento;
|
||||
|
||||
/**
|
||||
* La cadena acapatada por el usario
|
||||
*/
|
||||
private String cadenaAceptada;
|
||||
|
||||
/**
|
||||
* Los estados finales que viene de la ventana anterior
|
||||
*/
|
||||
private EstadosFinales estadosFinales;
|
||||
|
||||
/**
|
||||
* La maquina turning pasado para correr
|
||||
*/
|
||||
private Maquina maquina;
|
||||
|
||||
/**
|
||||
* Donde estaba el cabezal anteriormente
|
||||
*/
|
||||
private int cabezalAnterior;
|
||||
|
||||
/**
|
||||
* La cantidad de cajas que está en la pantalla
|
||||
*/
|
||||
private int cajas;
|
||||
|
||||
/**
|
||||
* El numero qx del estado anterior
|
||||
*/
|
||||
private int estadoPrevioi;
|
||||
|
||||
/**
|
||||
* El simbolo que lee antes que la maquina escribe
|
||||
*/
|
||||
private char simboloAnterior;
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,7 +20,7 @@ import java.io.*;
|
||||
/**
|
||||
* Esta clase puede abrir y validar un archivo de XML. Se necesita un archivo mtbase.dtd
|
||||
*/
|
||||
class LeerXML {
|
||||
public class LeerXML {
|
||||
/**
|
||||
* El metodo va a verificar que el archivo existe y que contiene XML valido. Si es valido devuelve el documento.
|
||||
*
|
||||
@@ -28,7 +28,7 @@ class LeerXML {
|
||||
*
|
||||
* @return Devuelve un document de XML o null si hay algun error.
|
||||
*/
|
||||
Document leerArchivo(File archivo) {
|
||||
public Document leerArchivo(File archivo) {
|
||||
if (archivo == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -20,11 +20,20 @@ import javafx.stage.Stage;
|
||||
* Controlar las acciones de reconocimiento por lote
|
||||
*/
|
||||
public class LoteController extends VBox {
|
||||
/**
|
||||
* La tabla de resultados por lote
|
||||
*/
|
||||
private final ObservableList<TablaData> tablaData = FXCollections.observableArrayList();
|
||||
|
||||
/**
|
||||
* El contenido de la ventana
|
||||
*/
|
||||
@FXML
|
||||
private VBox contenido;
|
||||
|
||||
/**
|
||||
* La cadena que el usuario ingresa
|
||||
*/
|
||||
@FXML
|
||||
private TextField cadena;
|
||||
|
||||
|
||||
@@ -25,6 +25,9 @@ import javafx.stage.Stage;
|
||||
* @version 1.0.0
|
||||
*/
|
||||
public class MT extends Application {
|
||||
/**
|
||||
* La version de Maquina de Turing
|
||||
*/
|
||||
static public final String version = "1.0.0";
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,10 +13,29 @@ import org.w3c.dom.Document;
|
||||
* Clase de la Maquina de Turing que renocerá algún asociado a las transiciones escritas en un archivo XML
|
||||
*/
|
||||
public class Maquina {
|
||||
private final Automata maquina;
|
||||
/**
|
||||
* La automata destras de la maquina de turning
|
||||
*/
|
||||
private final Automata automata;
|
||||
|
||||
/**
|
||||
* El estado actual donde se encuentra la maquina
|
||||
*/
|
||||
private Estado estadoActual;
|
||||
|
||||
/**
|
||||
* El enlace actual
|
||||
*/
|
||||
private Enlace enlaceActual;
|
||||
|
||||
/**
|
||||
* La cinta anterior para usar paso a paso
|
||||
*/
|
||||
private String cintaAnterior;
|
||||
|
||||
/**
|
||||
* Donde está el cabezal
|
||||
*/
|
||||
private int cabezal;
|
||||
|
||||
/**
|
||||
@@ -25,21 +44,21 @@ public class Maquina {
|
||||
* @param document Document asociado al XML
|
||||
*/
|
||||
public Maquina(Document document) {
|
||||
maquina = new Automata(document);
|
||||
automata = new Automata(document);
|
||||
reset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retorna la maquina de Turing
|
||||
* Retorna la automata de Turing
|
||||
*
|
||||
* @return maquina asociado a alguna función de transición
|
||||
* @return automata asociado a alguna función de transición
|
||||
*/
|
||||
public Automata getMaquina() {
|
||||
return maquina;
|
||||
public Automata getAutomata() {
|
||||
return automata;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retorna el estado en que esta la maquina
|
||||
* Retorna el estado en que esta la automata
|
||||
*
|
||||
* @return estado actual
|
||||
*/
|
||||
@@ -48,16 +67,16 @@ public class Maquina {
|
||||
}
|
||||
|
||||
/**
|
||||
* Asigna un estado actual que esta la maquina en un instante de tiempo
|
||||
* Asigna un estado actual que esta la automata en un instante de tiempo
|
||||
*
|
||||
* @param estadoActual En que estado es la maquina
|
||||
* @param estadoActual En que estado es la automata
|
||||
*/
|
||||
public void setEstadoActual(Estado estadoActual) {
|
||||
this.estadoActual = estadoActual;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retorna un enlace en que la maquina asocio a la cadena ingresada y al cabezal que se encuentra
|
||||
* Retorna un enlace en que la automata asocio a la cadena ingresada y al cabezal que se encuentra
|
||||
*
|
||||
* @return el enlace actual
|
||||
*/
|
||||
@@ -66,16 +85,16 @@ public class Maquina {
|
||||
}
|
||||
|
||||
/**
|
||||
* Asigna un enlace actual que esta la maquina en un instante de tiempo
|
||||
* Asigna un enlace actual que esta la automata en un instante de tiempo
|
||||
*
|
||||
* @param enlaceActual La enlace donde esta la maquina
|
||||
* @param enlaceActual La enlace donde esta la automata
|
||||
*/
|
||||
public void setEnlaceActual(Enlace enlaceActual) {
|
||||
this.enlaceActual = enlaceActual;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retorna la cadena anterior a que la maquina hiciera cambios
|
||||
* Retorna la cadena anterior a que la automata hiciera cambios
|
||||
*
|
||||
* @return la cadena anterior
|
||||
*/
|
||||
@@ -84,7 +103,7 @@ public class Maquina {
|
||||
}
|
||||
|
||||
/**
|
||||
* Asigna la cadena anterior a que la maquina hiciera cambios
|
||||
* Asigna la cadena anterior a que la automata hiciera cambios
|
||||
* @param cintaAnterior La cinta a verificar
|
||||
*/
|
||||
public void setCintaAnterior(String cintaAnterior) {
|
||||
@@ -113,14 +132,14 @@ public class Maquina {
|
||||
* Inicializa atributos
|
||||
*/
|
||||
public void reset() {
|
||||
setEstadoActual(getMaquina().getEstados().get(0));
|
||||
setEstadoActual(getAutomata().getEstados().get(0));
|
||||
setEnlaceActual(null);
|
||||
setCintaAnterior("");
|
||||
setCabezal(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Comprueba que si la cadena ingresada es reconocida por la maquina
|
||||
* Comprueba que si la cadena ingresada es reconocida por la automata
|
||||
*
|
||||
* @param cinta cadena ingresada por el usuario
|
||||
* @param estadosFinales Arreglo de estados finales, también ingresados por usuario
|
||||
@@ -146,7 +165,7 @@ public class Maquina {
|
||||
|
||||
/**
|
||||
* Comprueba que si el simbolo en la cadena, identificado por el cabezal
|
||||
* es reconocido por la maquina. Este guarda la cadena anterior, estado actual y
|
||||
* es reconocido por la automata. Este guarda la cadena anterior, estado actual y
|
||||
* un enlace actual
|
||||
*
|
||||
* @param cinta Cadena ingresada por el usuario
|
||||
|
||||
@@ -35,13 +35,27 @@ import java.util.regex.Pattern;
|
||||
* Controlar las acciones cuando una opción es elegido en el menu.
|
||||
*/
|
||||
public class MenuController {
|
||||
/**
|
||||
* La barra del menu
|
||||
*/
|
||||
@FXML
|
||||
private MenuBar menuBar;
|
||||
|
||||
/**
|
||||
* La opción del menu por individual
|
||||
*/
|
||||
@FXML
|
||||
private MenuItem menuIndiv;
|
||||
|
||||
/**
|
||||
* La opción del enu por individual
|
||||
*/
|
||||
@FXML
|
||||
private MenuItem menuLote;
|
||||
|
||||
/**
|
||||
* Los estados finales que se usa en lote y individual
|
||||
*/
|
||||
private EstadosFinales estadosFinales;
|
||||
|
||||
/**
|
||||
@@ -94,8 +108,8 @@ public class MenuController {
|
||||
|
||||
ObservableList<TablaData> tablaData = FXCollections.observableArrayList();
|
||||
Pattern pattern = Pattern.compile("(\\(.*\\)) = (\\(.*\\))");
|
||||
for (int i = 0; i < maquina.getMaquina().getEstados().size(); i++) {
|
||||
Matcher matcher = pattern.matcher(maquina.getMaquina().getEstados().get(i).toString());
|
||||
for (int i = 0; i < maquina.getAutomata().getEstados().size(); i++) {
|
||||
Matcher matcher = pattern.matcher(maquina.getAutomata().getEstados().get(i).toString());
|
||||
while (matcher.find()) {
|
||||
tablaData.add(new TablaData(matcher.group(1), matcher.group(2)));
|
||||
}
|
||||
|
||||
@@ -13,7 +13,14 @@ import javafx.beans.property.SimpleStringProperty;
|
||||
* Esta clase se usa para organizar las columnas de un TableView
|
||||
*/
|
||||
public class TablaData {
|
||||
/**
|
||||
* La primera columna de la fila
|
||||
*/
|
||||
private final SimpleStringProperty primera;
|
||||
|
||||
/**
|
||||
* La segunda columna de la fila
|
||||
*/
|
||||
private final SimpleStringProperty segunda;
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user