\layout Section
Descripción del desarrollo:
-\layout Subsection*
+\layout Subsection
Constructor:
\layout Standard
\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
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 Standard
+
\the_end