]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Constructor/doc/especificaciones_tecnicas.lyx
Se agrega diagrama de clases del modelo.
[z.facultad/75.42/plaqui.git] / Constructor / doc / especificaciones_tecnicas.lyx
index 92e403347663c22db880a691efc0b6525d92ba44..758e96418f3649dd3354ac077cd3bd0a5020b112 100644 (file)
@@ -48,7 +48,7 @@ iento o abstracci
 \layout Section
 
 Descripción del desarrollo:
 \layout Section
 
 Descripción del desarrollo:
-\layout Subsection*
+\layout Subsection
 
 Constructor:
 \layout Standard
 
 Constructor:
 \layout Standard
@@ -76,6 +76,11 @@ on_item_drop_drag_recived()
  estaba creado.
 \layout Standard
 
  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 
 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
 
  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.
 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.
 
 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
 
  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.
 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
 
 CItem:
 \layout Standard
@@ -133,6 +155,10 @@ Ac
  número único de identificación y diferentes punteros a otros objetos.
 \layout Standard
 
  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
 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
 
 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
 \the_end