X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/6fa44d94353c5f0d8f67f2f722d9ed26c1fe4d9a..c89fed66c4fa3004270e84562e62b796f1208293:/Constructor/doc/especificaciones_tecnicas.lyx?ds=sidebyside diff --git a/Constructor/doc/especificaciones_tecnicas.lyx b/Constructor/doc/especificaciones_tecnicas.lyx index 92e4033..758e964 100644 --- a/Constructor/doc/especificaciones_tecnicas.lyx +++ b/Constructor/doc/especificaciones_tecnicas.lyx @@ -48,7 +48,7 @@ iento o abstracci \layout Section Descripción del desarrollo: -\layout Subsection* +\layout Subsection Constructor: \layout Standard @@ -76,6 +76,11 @@ on_item_drop_drag_recived() estaba creado. \layout Standard +Para facilitar el diseño y disminuir la complejidad, la grilla fue dividida + en sectores de 32x32 pixels, lo que permite que el usuario no tenga que + ser muy preciso a la hora de soltar un item en el área de trabajo. +\layout Standard + Cada nuevo elemento creado es almacenado en una lista de elementos ( \begin_inset Quotes eld \end_inset @@ -109,21 +114,38 @@ check_connection() Mas adelante se verá como cada elemento verifica su conexión. \layout Standard +Esta clase contiene los métodos necesarios para guardar y cargar un archivo + XML cuyo formato se explica mas adelante. +\layout Standard + También está contenida en ella la clase WorkPlace, que detalla a continuación. -\layout Subsection* +\layout Subsection WorkPlace: \layout Standard Esta clase es la encarga de de manejar el área trabajo. + Deriva de Gtk::DrawingArea pues es donde se van a dibujar todos los elementos. Una de sus principales tareas es redibujarse cuando sea necesario y al mismo tiempo, redibujar los elementos que contiene, como pueden ser los items de la planta o las líneas lógicas que conectan los mismos. \layout Standard +Para lograr esto, se ha redefinido el método virtual (contenido en la clase + ancestro) +\begin_inset Quotes eld +\end_inset + +on_expose_event() +\begin_inset Quotes erd +\end_inset + + de manera conveniente. +\layout Standard + También se encarga de eliminar correctamente un item, eliminando al mismo tiempo las lineas que llegan o salen de él. -\layout Subsection* +\layout Subsection CItem: \layout Standard @@ -133,6 +155,10 @@ Ac número único de identificación y diferentes punteros a otros objetos. \layout Standard +Por cuestiones de diseño los elementos de la planta además de tener un número + único que los identifica, también deben tener nombres difrerentes. +\layout Standard + También esta definida en esta clase la estuctura que representa los conectores físicos, y otra que representa a los conectores lógicos. \layout Standard @@ -165,4 +191,126 @@ check_connection() ar su manera de verificar como y con quién esta conectado. \layout Standard +Al ser esta clase abstracta, no puede ser instanciada, con lo cual existirá + una clase derivada de esta para cada item que se quiera agregar en la aplicació +n. +\layout Subsubsection + +Método check_connection(): +\layout Standard + +Anteriormente se mencionó que cada item verifica sus conexiones de manera + diferente. +\layout Standard + +Las clases que heredan de CItem son las siguientes: +\layout Enumerate + +Conduct: representa un tubo. +\layout Enumerate + +Splitter: representa un codo. +\layout Enumerate + +Union: representa un empalme ( UNION ó DIVISION). +\layout Enumerate + +Cistern: representa un tanque, +\layout Enumerate + +Exclusa: representa una exclusa. +\layout Enumerate + +Drain: representa un drenaje. +\layout Enumerate + +Pump: representa una bomba. +\layout Standard + +Para las clases Conduct, Splitter y Exclusa, este método es bastante similar, + sobre todo teniendo en cuenta que una exclusa es un tubo con una propiedad + mas (abierto/cerrado) y el codo es un tubo que en la aplicación representa + un curva. +\layout Standard + +Estos tres elementos tienen la particularidad que sus conectores físicos + no estan definidos en el momento de su creación, sino que se definen una + vez que pertenecen a un circuito. +\layout Standard + +La verificación se realiza recorriendo la lista de items y preguntandole + a cada uno que posee en sus extremos. +\layout Standard + +El tanque, la bomba, el empalme y el drenaje, tiene definidos sus conectores + en el momento de la creación. +\layout Standard + +Supongamos que el circuito es el siguiente: +\layout Standard + + +\begin_inset Graphics + filename /home/nico/plaqui/Constructor/doc/check_connection.png + +\end_inset + + +\layout Standard + +Donde bomba0 y tubo0 son los de la izquiera y bomba1 y tubo1 son los de + la derecha, para poder diferenciarlos. +\layout Standard + +Cabe aclarar que no importa con cual de los items se comience la iteración. +\layout Standard + +Según la imagen actual de la bomba0, este debe preguntar con quién esta + conectado en su salida pero ya sabe, por ser bomba que tendrá una salida, + luego el tubo0 que en ese momento no esta definido, debe averiguar como + definirse, para hacerlo pregunta en su otro extremo el cual esta conectado + con una unión, que por ser unión posee dos entradas (horizontales en este + caso) y una salida (vertical). + La unión le responde que posee una entrada, por lo tanto el extremo derecho + del tubo será una salida, lo cual implica que el extremo izquierdo tiene + que ser una entrada, y esto es compatible con la bomba. + De esta forma la bomba0 y el tubo0 se setean sus conectores y se establecen + como +\begin_inset Quotes eld +\end_inset + +conectados +\begin_inset Quotes erd +\end_inset + +. + Continuando con la iteración, es el turno del tubo0 (por el orden de incersión + en la lista), pero este ya está conectado, por lo tanto no se realizan + verificaciones. +\layout Standard + +Lo mismo ocurre del lado derecho del circuito con la bomba1 y el tubo1. +\layout Standard + +Algo similar ocurre cuando la unión pregunta que tiene en su salida, la + exclusa debe preguntarle al tanque y este le responderá que posee una entrada, + luego la exculsa tendrá una entrada en el extremo superior y una salida + en el inferior; nuevamente el circuito es compatible. + Por último el tanque le solicita al codo que le informe su estado y el + proceso se repite con el drenaje que posee solamente una salida. +\layout Standard + +Así todos los elementos han quedado conectados y conocen también con quién + o quienes lo están. +\layout Section + +Formtato del archivo: +\layout Standard + +El archivo de salida de la planta al guardarla tiene un formato XML. +\layout Standard + +Para el ejemplo anterior el archivo sería el siguiente: +\layout Standard + \the_end