<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>MyAvatar vs V7</title>
	<atom:link href="http://aaahaa.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://aaahaa.wordpress.com</link>
	<description>Experiencias con Velneo</description>
	<lastBuildDate>Mon, 20 Feb 2012 08:24:14 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='aaahaa.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/b1bc8c2ea14245caee164db48e64c097?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>MyAvatar vs V7</title>
		<link>http://aaahaa.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://aaahaa.wordpress.com/osd.xml" title="MyAvatar vs V7" />
	<atom:link rel='hub' href='http://aaahaa.wordpress.com/?pushpress=hub'/>
		<item>
		<title>life is soft 2011</title>
		<link>http://aaahaa.wordpress.com/2011/07/22/life-is-soft-2011/</link>
		<comments>http://aaahaa.wordpress.com/2011/07/22/life-is-soft-2011/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 16:51:05 +0000</pubDate>
		<dc:creator>ikonos</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aaahaa.wordpress.com/?p=290</guid>
		<description><![CDATA[life is soft 2011 Aunque esto va a deteriorar mi igamen reivindicativa y activista, hoy haré un poco de propaganda evangelizadora por que entiendo que es merecida y sería un ingrato si no lo hiciera. Cuando estudiaba en la facultad de física de Valencia, imaginaba como seria llegar a ese punto donde todo lo que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=290&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><span style="color:#ff0000;"><strong>life is soft 2011</strong></span></p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/07/125x125-life-is-soft2.gif"><img class="alignright size-full wp-image-303" title="125x125-life is soft" src="http://aaahaa.files.wordpress.com/2011/07/125x125-life-is-soft2.gif?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Aunque esto va a deteriorar mi igamen reivindicativa y activista, hoy haré un poco de propaganda evangelizadora por que entiendo que es merecida y sería un ingrato si no lo hiciera.</p>
<p style="text-align:justify;">Cuando estudiaba en la facultad de física de Valencia, imaginaba como seria llegar a ese punto donde todo lo que haces es nuevo, ese punto donde cada nueva teoría podría ser una herejía, un salto al vacío o un acierto. Pensaba que esa sensación tendría que ser única, llegar al filo de lo inexplorado, intentando caminar por su borde sin fracasar en el intento.</p>
<p style="text-align:justify;"><span id="more-290"></span></p>
<p style="text-align:justify;">Lamentablemente para mi, la física es un toro demasiado grande y en mis lejanos años de facultad realmente solo llegué a conocer una o dos personas capaces de caminar por ese borde donde terminan las tesis de la ciencia conocida y solo hay conjeturas. Algún que otro ex decano que pasada la edad de jubilación seguía regalándonos clases por emérito, y otra de esas rarezas de la vieja escuela condenado e indultado por insumisión al ser objetor, en una época en la que no era un derecho fundamental y que formó a los nuevos delfines de IFIC (Instituto de Física Corpuscular), en el que inocentemente cada vez que accedíamos con nuestras tarjetas identificativas para realizar prácticas al extraño pequeño y cúbico edificio, nos parecia que íbamos a entrar en el centro mismo del cuartel general dela CIA.</p>
<p style="text-align:justify;">Habia mucha gente dedicada al estudio si, pero talento, talento de verdad, solo lo logré ver en esos dos ancianos que eran los únicos capazes de llegar al borde mismo del abismo donde se agota la ciencia y quedan en soledad las personas. Yo pase en la facultad casi 10 años de mi vida y nunca logré ver en el horizonte ese abismo ni siquiera de lejos, por mucho que intentara participar.</p>
<p style="text-align:justify;">Pero aunque mi travesía por la física nunca me llevó a ese límite, por casualidad si que lo hizo la programación, donde el camino no es tan arduo y cada nuevo proyecto parece que te lleve a un horizonte distinto. Por que en realidad cada nuevo trabajo ya te situa en ese mismo borde y eres tu quién decides si quieres volver atrás sobre la seguridad del camino que ya han recorrido otros para concluir tu trabajo o caminar hacia delante creando una nueva senda que quizás otros puedan llegar a recorrer.</p>
<p style="text-align:justify;">¿Cuantas oportunidades tenemos en la vida de hacer eso? ¿cuantas veces has participado en un camino semejante? ¿cuantos lenguajes de programación conoces de los que puedas participar opinando sobre su desarrollo? ¿y cuantos lenguajes de programación conoces en los que tus proyectos puedan formar parte de esa comunidad de desarrollo que camina por el borde mismo del abismo?</p>
<p style="text-align:justify;">Hoy por hoy, hay una pequeña comunidad de desarrolladores que caminan por ese borde, y dia a dia construyen con más o menos acierto el camino que muchos de nosotros recorremos, a veces por el camino equivocado, pero es solo por que son capacez de llegar hasta ese límite, y eso es un privilegio.</p>
<p style="text-align:justify;">A mi las entrañas de Google me quedan muy lejos, pero lo que si logro ver en el horizonte al alcance de todos es Velneo. <a href="http://lifeissoft.com/"><span style="color:#ff0000;">Life is soft</span></a>, no me parece un mal lema, todo lo contrario y como escribió Noah Gordon en “El Medico”, este le dice a Ibn Sina (Avicena, principe de la medicina) &#8211; “he recorrido medio mundo, solo para tocar el borde de tu túnica”.</p>
<p style="text-align:justify;">¿vendrás tu tambien a <strong><span style="color:#ff0000;"> <a href="http://lifeissoft.com/">life is soft 11 11 11</a></span></strong>?</p>
<p style="text-align:justify;"><a href="http://lifeissoft.com/registrarse/"><img class="aligncenter size-full wp-image-295" title="life is soft" src="http://aaahaa.files.wordpress.com/2011/07/125x125-life-is-soft.gif?w=604" alt=""   /></a></p>
<p style="text-align:justify;">P.D. Si ya se que hay que pagar los seminarios, pero el 11/11/11 la presentación es gratuita así que no hay escusa que luego tenemos toda la tarde para tomar sidras. Yo estaré allí que hay que pedirle autógrafos a Pepeto.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aaahaa.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aaahaa.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aaahaa.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aaahaa.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/aaahaa.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/aaahaa.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/aaahaa.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/aaahaa.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aaahaa.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aaahaa.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aaahaa.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aaahaa.wordpress.com/290/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aaahaa.wordpress.com/290/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aaahaa.wordpress.com/290/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=290&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aaahaa.wordpress.com/2011/07/22/life-is-soft-2011/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d91c2e8595d42ea702229dfc87ba1c54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aaahaa</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/07/125x125-life-is-soft2.gif" medium="image">
			<media:title type="html">125x125-life is soft</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/07/125x125-life-is-soft.gif" medium="image">
			<media:title type="html">life is soft</media:title>
		</media:content>
	</item>
		<item>
		<title>¿Quien distrajo la atención del vArquitecto? (I)</title>
		<link>http://aaahaa.wordpress.com/2011/05/05/%c2%bfquien-distrajo-la-atencion-del-varquitecto-i/</link>
		<comments>http://aaahaa.wordpress.com/2011/05/05/%c2%bfquien-distrajo-la-atencion-del-varquitecto-i/#comments</comments>
		<pubDate>Thu, 05 May 2011 10:10:22 +0000</pubDate>
		<dc:creator>ikonos</dc:creator>
				<category><![CDATA[vClases]]></category>

		<guid isPermaLink="false">http://aaahaa.wordpress.com/?p=279</guid>
		<description><![CDATA[ A casi todos nos gusta viajar, suelen ser emocionantes y de muchas índoles, de trabajo, de placer, de aventura &#8230; pero casi todos ellos nos atrapan en la realidad física y por lo tanto estamos sometidos a sus límites. Sin embargo existe un viaje mucho más emocionante y mágico, en el que solo tú pones [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=279&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p> A casi todos nos gusta viajar, suelen ser emocionantes y de muchas índoles, de trabajo, de placer, de aventura &#8230; pero casi todos ellos nos atrapan en la realidad física y por lo tanto estamos sometidos a sus límites. Sin embargo existe un viaje mucho más emocionante y mágico, en el que solo tú pones el límite. Ese viaje es <span style="color:#808000;"><em>a tu propio mundo interior</em></span>, en el decidirás cual es el destino.</p>
<p style="text-align:justify;">Por supuesto puedes ver los <span style="color:#808000;"><em>viajes interiores</em></span> de otras personas, cuando lees un libro, vas al teatro, o ves una película. ¿Que estas haciendo, sino viajar con los ojos de otra persona? Y yo a menudo suelo ver otro viaje interior, el del vArquitecto con v7.</p>
<p style="text-align:justify;"><span id="more-279"></span></p>
<p style="text-align:justify;">Son contadas las ocasiones en las que tenemos el tiempo y la tranquilidad de espíritu suficiente para desarrollar aislados y protegidos en nuestro <span style="color:#808000;"><em>propio mundo interior</em></span>. En general, cada vez que nos enfrentamos a un desarrollo siempre necesitamos de una <span style="color:#808000;"><em>“puesta en escena inicial, es el comienzo del viaje”</em></span>, esta puesta en escena nos sirve para inicializar nuestros pensamientos y focalizarlos sobre el problema que hay que desarrollar. Son minutos improductivos a nivel de código, pero cruciales para su desarrollo, <span style="color:#808000;"><em>antes hay que calentar motores</em></span> y cuando paramos debemos <span style="color:#808000;"><em>dejar el motor en marcha</em></span> para poder arrancar con rapidez y atacar <span style="color:#808000;"><em>el camino que se ha abierto bajo nuestros pies en ese preciso momento, porque si no lo haces entonces quizás no lo vuelvas a encontrar</em></span>.</p>
<p style="text-align:justify;">Seguro que el vArquitecto se emocionó, cuando ante sus pies se abrió un nuevo camino, siguió con la mirada el trayecto del mismo y seguramente hasta sintió vértigo al vislumbrar el nuevo paisaje al que conducía. Deshizo los pasos adelantados con la mirada, se situó de nuevo en el inicio del camino y comenzó a caminar por la nueva senda <span style="color:#808000;">“empezó a manejar objetos”</span>.</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/05/q1.png"><img class="aligncenter size-full wp-image-280" title="Q1" src="http://aaahaa.files.wordpress.com/2011/05/q1.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Pero para caminar debemos dar un paso después del otro, y una vez que el vArquitecto instanció el primero de sus objetos se paró y pensó &#8211; <span style="color:#808000;"><em>ahora debo lanzarle el primer mensaje</em>, <em>pero ¿que debe contener el mensaje?</em></span><em> </em>– y de nuevo se abrieron bajo sus pies una nueva colección de caminos (variables booleanas, numéricas, alfabéticas, arrays, fichas, listas, etc&#8230;). Y como en esta parada tenia el motor en marcha y todos somos esclavos de nuestro pasado, tomó rápidamente los caminos que ya conocía (variables booleanas, numéricas, alfabéticas) y los enlazó a su nuevo camino. No creo que desechara los otros, simplemente se dijo –<span style="color:#808000;"><em>primero recorreré los conocidos y más tarde ya regresaré a explorar los siguientes</em></span> – y así fue, con estos nuevos caminos rellenó su mensaje y lo lanzó.</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/05/q2.png"><img class="aligncenter size-full wp-image-281" title="Q2" src="http://aaahaa.files.wordpress.com/2011/05/q2.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">El mensaje viajó hasta el objeto, llegó correctamente, y casi sin pensar, el objeto al ver el contenido del mensaje lo procesó de oficio, era inherente a él. Expectante el vArquitecto no pudo contener un grito ahogado al contemplar de nuevo como se abrían bajo sus pies otra colección de caminos y le gritó al objeto –<span style="color:#808000;"> <em>debes contestarme! Cualquier otra cosa sería de mala educación</em></span> – y así fue, los caminos ya eran de ida y vuelta.</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/05/q3.png"><img class="aligncenter size-full wp-image-282" title="Q3" src="http://aaahaa.files.wordpress.com/2011/05/q3.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">De nuevo parado con el motor en marcha, el vArquitecto se quedó mirando el horizonte y pensó -  <span style="color:#808000;"><em>¿hacia donde dirigirme? ¿que más puede contener el mensaje?</em></span> –  Miró fijamente una estructura de datos habitualmente poco utilizada en el país del que venia, los arrays unidimensionales – <span style="color:#808000;"><em>debería recorrer ese camino pero ¿por que no los n-dimensionales?</em></span> – pero pronto abandonó ese pensamiento porque miró fugazmente a otro lado y sin pretenderlo centró su visión en sus particulares estrellas de las estructuras de datos, las <span style="color:#333399;">fichas</span> y las <span style="color:#333399;">listas</span>.</p>
<p style="text-align:justify;">Musitando lo que pensaba dijo – <span style="color:#808000;"><em>estos caminos sin duda los debo recorrer</em></span> – y como si de un cataclismo se tratara se volvieron a abrir bajo sus pies numerosas bifurcaciones,  haciéndole sentir vértigo en su estómago hasta que incluso llego a perder el equilibrio, por que en esta ocasión “<strong>todo era distinto</strong>”…</p>
<p style="text-align:justify;">- <span style="color:#808000;"><em>¿A que objetos debo enviar las fichas y las listas? </em></span>– pensó, y a cada pensamiento le sucedía un nuevo terremoto bajo sus pies.</p>
<p style="text-align:justify;">- <em><span style="color:#808000;">¿Cómo sabrá el objeto que estructura tiene la ficha o la lista que envíe?</span></em> &#8211; hasta creía escuchar el ruido del cataclismo a su alrededor.</p>
<p style="text-align:justify;">- <em><span style="color:#808000;">Si el objeto no conoce previamente la estructura de la ficha o la lista ¿como las puede manejar?</span></em> &#8211; el suelo empezaba a transformarse en arenas movedizas.</p>
<p style="text-align:justify;">- <span style="color:#808000;"><em>¿Se podrían manejar de forma genérica sin conocer su particular estructura?</em></span> &#8211; necesitaba poner orden en su mundo, necesitaba volver a sus orígenes para organizarse.</p>
<p style="text-align:justify;">- <em><span style="color:#808000;">Por el momento ¿no seria más sencillo enviarlas solo a objetos contenedores de  listas o fichas y que tengan ya definida la misma tabla de la lista o ficha que enviamos en el mensaje con lo que el objeto ya conoce previamente su estructura?</span></em>  </p>
<p style="text-align:justify;">Y por aquí empezó,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/05/q4.png"><img class="aligncenter size-full wp-image-283" title="Q4" src="http://aaahaa.files.wordpress.com/2011/05/q4.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Lazó en esa dirección su segundo mensaje a estos particulares objetos de configuración estática, y aunque funcionó correctamente, con lo que los movimientos sísmicos se estabilizaron, <strong><em>me gustaría pensar que no quedó satisfecho</em></strong>. Porque la primera vez que divisó la senda inicial sintiendo el vértigo en su estómago y recorrió el camino con la mirada vislumbrando el nuevo paisaje al que conducía, apuntaba al “<span style="color:#666699;">paradigma de la programación orientada a objetos</span>” y este nuevo camino lo alejaba del sueño.</p>
<p style="text-align:justify;">- <span style="color:#808000;"><em>Seria fantástico añadir una lista “cualquiera” a un objeto y que este fuera capaz de procesarla, retornando la lista procesada</em></span> &#8211; pensó soñando en su objetivo.</p>
<p style="text-align:justify;">-<span style="color:#808000;"><em>¿Podríamos procesar una lista sin conocer previamente su estructura? ¿Tienen las listas atributos comunes que nos sirvan para procesarlas independientemente de su estructura? </em></span>– volvió a replantearse &#8211; <span style="color:#808000;"><em>Joder si!</em></span> – se dijo – <span style="color:#808000;"><em>como mínimo #ID y #NAME</em></span> – y con un estruendo ensordecedor volvieron a abrirse bajo sus pies un abanico de nuevos caminos.</p>
<p style="text-align:justify;">- <em>Y <span style="color:#808000;">¿podría utilizar mis propios comandos de instrucción que ya poseo para manejar cualquier lista solo con esos atributos comunes?</span></em> – decía mientras intentaba mantener el equilibrio – <em><span style="color:#808000;">Joder! pues claro</span>.</em></p>
<p style="text-align:justify;">Y ahí bajo sus pies, en ese preciso día, en ese preciso momento, tuvo ante si el camino que le podía llevar al paisaje que vio adelantando su mirada por la primera senda de nuestra historia. Pero algo pasó, algo o alguien distrajo la atención del vArquitecto, y su viaje interior por ese día finalizó, acabó, se rompió, desapareciendo de su vista, en aquel preciso día, en aquel preciso instante “<em><span style="color:#808000;">el camino que a todos nos hubiera gustado recorrer</span>”.</em></p>
<p style="text-align:justify;">to be continued &#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aaahaa.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aaahaa.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aaahaa.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aaahaa.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/aaahaa.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/aaahaa.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/aaahaa.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/aaahaa.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aaahaa.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aaahaa.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aaahaa.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aaahaa.wordpress.com/279/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aaahaa.wordpress.com/279/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aaahaa.wordpress.com/279/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=279&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aaahaa.wordpress.com/2011/05/05/%c2%bfquien-distrajo-la-atencion-del-varquitecto-i/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d91c2e8595d42ea702229dfc87ba1c54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aaahaa</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/05/q1.png" medium="image">
			<media:title type="html">Q1</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/05/q2.png" medium="image">
			<media:title type="html">Q2</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/05/q3.png" medium="image">
			<media:title type="html">Q3</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/05/q4.png" medium="image">
			<media:title type="html">Q4</media:title>
		</media:content>
	</item>
		<item>
		<title>Paginar resultados en HTML</title>
		<link>http://aaahaa.wordpress.com/2011/04/20/paginar-resultados-en-html/</link>
		<comments>http://aaahaa.wordpress.com/2011/04/20/paginar-resultados-en-html/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 11:25:34 +0000</pubDate>
		<dc:creator>ikonos</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aaahaa.wordpress.com/?p=270</guid>
		<description><![CDATA[Como decia gegeo, ¿es posible paginar resultados en HTML? Un paginador nos dividirá una LISTA de R registros en n páginas de k registros, es decir al aplicar el paginador trasformamos la LISTA de la forma:   en realidad solo hemos hecho una simple división, guardado los valores en R, k, r, c, n, y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=270&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><strong><span style="font-size:small;">Como decia gegeo, <a href="http://velneo.es/foros/topic/%C2%BFes-posible-paginar-resultados-en-html">¿es posible paginar resultados en HTML?</a></span></strong></p>
<p style="text-align:justify;">Un paginador nos dividirá una LISTA de R registros en n páginas de k registros, es decir al aplicar el paginador trasformamos la LISTA de la forma:</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/paginador-1.png"><img class="aligncenter size-full wp-image-271" title="paginador 1" src="http://aaahaa.files.wordpress.com/2011/04/paginador-1.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">en realidad solo hemos hecho una simple división, guardado los valores en R, k, r, c, n, y la LISTA ya está paginada, increíble pero cierto.</p>
<p style="text-align:justify;"><span id="more-270"></span></p>
<p style="text-align:justify;">Ahora vamos con el paginador, necesitamos unos controles/procesos que nos muevan por el paginador, y un puntero que nos indique en que página nos encontramos:</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/paginador-2.png"><img class="aligncenter size-full wp-image-272" title="paginador 2" src="http://aaahaa.files.wordpress.com/2011/04/paginador-2.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">y también necesitamos un proceso que nos devuelva los registros a mostrar en la página seleccionada (<strong>CARGAR_REG_PAGINA</strong>), que básicamente debe hacer,</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/paginador-3.png"><img class="aligncenter size-full wp-image-273" title="paginador 3" src="http://aaahaa.files.wordpress.com/2011/04/paginador-3.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">(a modo de apunte el comando de instrucción que debemos manejar en v7 que nos permitirá reproducir el proceso seria, Cortar Lista)</p>
<p style="text-align:justify;">Ahora para manejar el paginador solo necesitamos movernos por los punteros y cargar nuestra pagina, por lo que los procesos de navegación serian:</p>
<ul>
<li><span style="color:#808000;">Cargar la primera página </span><strong><span style="color:#808000;">P_1</span>:</strong></li>
</ul>
<p style="text-align:justify;padding-left:60px;">p = 1;</p>
<p style="text-align:justify;padding-left:60px;">GARGAR_REG_PAG;</p>
<ul>
<li><span style="color:#808000;">Cargar la última página </span><strong><span style="color:#808000;">P_ULT</span>:</strong></li>
</ul>
<p style="text-align:justify;padding-left:60px;">p = n;</p>
<p style="text-align:justify;padding-left:60px;">GARGAR_REG_PAG;</p>
<ul>
<li><span style="color:#808000;">Cargar página siguiente <strong>P_SIG</strong>:</span></li>
</ul>
<p style="text-align:justify;padding-left:60px;"> Si (p == n) entonces</p>
<p style="text-align:justify;padding-left:60px;">            NADA_de_NADA</p>
<p style="text-align:justify;padding-left:60px;">Si (p &lt; n) entonces</p>
<p style="text-align:justify;padding-left:90px;">p = p+1;</p>
<p style="text-align:justify;padding-left:90px;">GARGAR_REG_PAG;</p>
<ul>
<li>
<div style="text-align:justify;"><span style="color:#808000;">Cargar página anterior </span><strong><span style="color:#808000;">P_ANT</span>:</strong></div>
</li>
</ul>
<p style="text-align:justify;padding-left:60px;">Si (p == 1) entonces</p>
<p style="text-align:justify;padding-left:60px;">            NADA_de_NADA</p>
<p style="text-align:justify;padding-left:60px;">Si (p &gt; 1) entonces</p>
<p style="text-align:justify;padding-left:90px;">p = p-1;</p>
<p style="text-align:justify;padding-left:90px;">GARGAR_REG_PAG;</p>
<p style="text-align:justify;">Y ya está, con esto ya tenemos “assolutamente tutti” lo que necesitamos saber de paginadores, el resto solo es cuestión de traducirlo a un lenguaje y presentar por patalla resultados.</p>
<p style="text-align:justify;">Ahora que controlamos ya nuesto paginador, pensemos una situación real para aplicarlo</p>
<ul style="text-align:justify;">
<li>Tenemos un servidor Apache con vModApache y un vServer con nuetra solución.</li>
<li>Servimos con vModApache las páginas y los datos que gestiona el vServer.</li>
<li>Tras interactuar con la web el vServer devuelve el resultado de una “busqueda o lista” que debemos presentar en HTML.</li>
<li>El número de resultados puede ser lo suficientemente elevado para que necesitemos un paginador de n-paginas con k-registros.</li>
</ul>
<p style="text-align:justify;">Partiendo de esta base solo nos queda un pequeño paso, que es añadir el montaje de la tabla en HTML en el proceso <strong>CARGAR_REG_PAGINA</strong>  justo despues de nuestra instrucción “cargar registros de la lista”, y en v7 el montaje de la tabla HTML por ejemplo podria ser,</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/montaje-de-pc3a1gina-2.png"><img class="aligncenter size-full wp-image-274" title="montaje de página 2" src="http://aaahaa.files.wordpress.com/2011/04/montaje-de-pc3a1gina-2.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">La variable RETORNO nos da el código HTML de la tabla con los registros de la página seleccionada. Y por último a gusto del consumidor en los porcesos <strong>P_1</strong>, <strong>P_ULT</strong>, <strong>P_SIG</strong>, y <strong>P_ANT</strong>, que cada uno monte la página como más le guste, solo hay que referenciar en la pagina los procesos que manejan el paginador adecuadamente, por ejemplo:</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/procesos.png"><img class="aligncenter size-full wp-image-275" title="Procesos" src="http://aaahaa.files.wordpress.com/2011/04/procesos.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Esta sería una las clásicas formas de actuar,  en la que creamos un paginador y unos procesos de montaje de pagina cada vez que necesitamos hacer uso de diferentes listas, con lo que nuestro software cada vez se vuelve más “Frankenstein” a medida que aumento los modulos de consulta.</p>
<p style="text-align:justify;">
<p style="text-align:justify;">¿Se puede hacer de otra forma? Yo creo que si.</p>
<p style="text-align:justify;">Pero como hoy me voy de vacaciones, y no vuelvo hasta dentro de 2 semanas ya lo intentaré entonces <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align:justify;">
<p style="text-align:justify;">Un saludo.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aaahaa.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aaahaa.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aaahaa.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aaahaa.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/aaahaa.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/aaahaa.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/aaahaa.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/aaahaa.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aaahaa.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aaahaa.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aaahaa.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aaahaa.wordpress.com/270/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aaahaa.wordpress.com/270/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aaahaa.wordpress.com/270/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=270&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aaahaa.wordpress.com/2011/04/20/paginar-resultados-en-html/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d91c2e8595d42ea702229dfc87ba1c54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aaahaa</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/paginador-1.png" medium="image">
			<media:title type="html">paginador 1</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/paginador-2.png" medium="image">
			<media:title type="html">paginador 2</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/paginador-3.png" medium="image">
			<media:title type="html">paginador 3</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/montaje-de-pc3a1gina-2.png" medium="image">
			<media:title type="html">montaje de página 2</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/procesos.png" medium="image">
			<media:title type="html">Procesos</media:title>
		</media:content>
	</item>
		<item>
		<title>Burbujas</title>
		<link>http://aaahaa.wordpress.com/2011/04/19/burbujas/</link>
		<comments>http://aaahaa.wordpress.com/2011/04/19/burbujas/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 12:29:33 +0000</pubDate>
		<dc:creator>ikonos</dc:creator>
				<category><![CDATA[vClases]]></category>

		<guid isPermaLink="false">http://aaahaa.wordpress.com/?p=264</guid>
		<description><![CDATA[Merece la pena comentar una de las indicaciones que brillantemente hizo Wamp en el anterior post Hello World, se notaba que conocía perfectamente el diseño de gradientes y haciendo uso de la vClass Radial Gradient compuso un gradiente con parada para hacer una “burbuja” iluminada y con transparencia como toda burbuja que se precie. Unas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=264&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Merece la pena comentar una de las indicaciones que brillantemente hizo Wamp en el anterior post <a href="http://aaahaa.wordpress.com/2011/04/18/hello-world/#more-255"><span style="color:#800080;">Hello World</span></a>, se notaba que conocía perfectamente el diseño de gradientes y haciendo uso de la vClass Radial Gradient compuso un gradiente con parada para hacer una “burbuja” iluminada y con transparencia como toda burbuja que se precie. Unas de las posibles selecciones que podría haber hecho seria:</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/burbuja.png"><img class="aligncenter size-full wp-image-265" title="burbuja" src="http://aaahaa.files.wordpress.com/2011/04/burbuja.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Independientemente de que al implementar la vClase lo hice con prisas y llame Foco_Inicio al Foco_Final y viceversa, podéis probar a manejar la vClase con las especificaciones de la imagen y crear burbujas.</p>
<p style="text-align:justify;">Algunos dirán, <span style="color:#808000;"><em>“muy bonito muy bonito” pero ¿para qué sirve esto si yo hago aplicaciones serias de gestión empresarial?</em></span></p>
<p style="text-align:justify;"><span id="more-264"></span></p>
<p style="text-align:justify;">Pues posiblemente al que se lo pregunte desde esa perspectiva no le sirva de nada, es difícil hacer cambiar a la gente, “casi imposible”, pero los que son capaces de mirar con otros ojos que no son los suyos, seguro que hace tiempo que ya han sacado provecho de ello, por que lo tiene y mucho.</p>
<p style="text-align:justify;">No me repetiré demasiado diciendo que, en primer lugar es un ejercicio práctico de como utilizar la estrategia de vClases. Además ya indiqué que una de mis principales preocupaciones a la hora de programar era, que cada paso que diera, supusiera la consolidación de un nuevo peldaño sobre el que apoyarme para poder escalar otras cimas de forma sencilla sin necesidad de volver a repetir procesos, y a tal efecto orientar la programación de las partes susceptibles de ello a crear estos singulares “artefactos” que son las vClases.</p>
<p style="text-align:justify;">Cada vClase que diseño pasa a formar parte de una librería similar a la del ejemplo del post anterior de fácil consulta y manejo (digo similar por que el diseño de la librería ya la he cambiado para que sea mucho más fácil su consulta y gestión) y de esta manera hacer crecer la base de “operaciones atómicas” sobre las que construir mi software.</p>
<p style="text-align:justify;"><span style="color:#808000;"><em>“&#8230;con electrones, protones y neutrones construimos átomos, con átomos construimos moléculas, y con moléculas construimos elementos complejos, algunos hasta orgánicos capaces de albergar vida propia, y que son autenticas criaturas&#8230;”</em></span></p>
<p style="text-align:justify;">Nosotros tenemos los elementos fundamentales en v7, con ellos podemos construir vClases (átomos) y con ellas construir vClases que llaman a vClases (moléculas), por ejemplo vClass Radial Gradient y con esas particulares moléculas construimos librerías de vClases, capaces de constituir autenticas criaturas con vida propia. Pero en fin, solo es un camino.</p>
<p style="text-align:justify;">Y después de este rollo un ejemplo práctico con <span style="color:#808000;">vClass Radial Gradient</span> para los más pragmáticos, volvamos al ¿para que coñ&#8230; me sirve a mi esa vClase? Pues bien, probar a hacer la siguiente selección de controles:</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/efecto-perla.png"><img class="aligncenter size-full wp-image-266" title="efecto perla" src="http://aaahaa.files.wordpress.com/2011/04/efecto-perla.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Bonito efecto “perla” ¿a que si?, ahora usar vuestra imaginación y seleccionar mentalmente un widget llamado “QPushButton” lo conoceis ¿verdad? Y haciendo uso de vuestra inmensa capacidad de abstracción espacial, localizarme la propiedad “border-radius” y jugar con ella hasta conseguir que vuestro widwet sea redondo. Bien! Bien! ya veo que lo teneis! eso va muy bién! Ahora sacar la varita mágica y agitarla sobre la propiedad “background-color”, soplar y decir las palabras mágicas <span style="color:#808000;">vClass_Radial_Gardient!! </span> Fantástico! acabais de conseguir un “hermoso boton redondo efecto perla” al estilo MAC para utilizar en esas aplicaciones de gestión empresarial tan “serias” que soleis hacer, BRAVO!</p>
<p style="text-align:justify;">¿de verdad alguien se pregunta todavia para que sirve una vClase como esta?</p>
<p style="text-align:justify;">No me lo creo <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align:justify;">P.D. Estas vClases forman parte de una criatura mucho más potente <span style="color:#808000;">vDeepCSS <span style="color:#000000;">pero no depende solo de mi  hacerla  pública, cuando sea al momento  ya os la mostraré.</span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aaahaa.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aaahaa.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aaahaa.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aaahaa.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/aaahaa.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/aaahaa.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/aaahaa.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/aaahaa.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aaahaa.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aaahaa.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aaahaa.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aaahaa.wordpress.com/264/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aaahaa.wordpress.com/264/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aaahaa.wordpress.com/264/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=264&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aaahaa.wordpress.com/2011/04/19/burbujas/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d91c2e8595d42ea702229dfc87ba1c54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aaahaa</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/burbuja.png" medium="image">
			<media:title type="html">burbuja</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/efecto-perla.png" medium="image">
			<media:title type="html">efecto perla</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello World</title>
		<link>http://aaahaa.wordpress.com/2011/04/18/hello-world/</link>
		<comments>http://aaahaa.wordpress.com/2011/04/18/hello-world/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 07:45:10 +0000</pubDate>
		<dc:creator>ikonos</dc:creator>
				<category><![CDATA[vClases]]></category>

		<guid isPermaLink="false">http://aaahaa.wordpress.com/?p=255</guid>
		<description><![CDATA[&#8230; un vObjeto es un ejemplar de una vClase en tiempo de ejecución &#8230; &#8230; y vServer: “vatp://v7cloud5.velneo.com:6510” &#8230; Voy a romper de nuevo mi esquema natural de posts, y es que esto de estar permanentemente en [MODO]: &#60;storm brain training&#62;, no se si es un “estado de gracia” o de “desgracia”, en realidad no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=255&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<pre><a href="http://aaahaa.files.wordpress.com/2011/04/dibujo.png"><img class="aligncenter size-full wp-image-257" title="Dibujo" src="http://aaahaa.files.wordpress.com/2011/04/dibujo.png?w=604" alt=""   /></a></pre>
<p style="text-align:justify;">&#8230; <em>un <strong>vObjeto</strong> es un ejemplar de una <strong>vClase</strong> en tiempo de ejecución &#8230;</em></p>
<p style="text-align:justify;">&#8230; y vServer: “<span style="color:#ff0000;">vatp://v7cloud5.velneo.com:6510</span>” &#8230;</p>
<p style="text-align:justify;">Voy a romper de nuevo mi esquema natural de posts, y es que esto de estar permanentemente en <span style="color:#3366ff;">[MODO]: &lt;storm brain training&gt;,</span> no se si es un “estado de gracia” o de “desgracia”, en realidad no es un estado, si no una “clase” y naturalmente “polimórfica”, por que joder! me acabo de cargar el software de los dos últimos meses!</p>
<p style="text-align:justify;"><span id="more-255"></span></p>
<p style="text-align:justify;">Pero no os asusteis no he perdido nada, la anterior dirección del vServer contiene la primera vClase para que la veais en tiempo de ejecución, lo que ocurre es que me ha cambiado el prisma con el que veo v7 a la hora de abordar una aplicación, y claro está, estoy reescribiendo él código, orientando las partes susceptibles de ello, a crear un ecosistema de colaboración entre vClases a modo de mensajes que fluyen de unas a otras. Y ahora lo veo todo “flow” y no me puedo resistir a reescribirlo.</p>
<p style="text-align:justify;">La primera consecuencia, es que no he aplicado CSS tal y como os prometí a la vClass_Main_ChooseColor, la he dejado como está. Asi que la vereis tal cual, “en ropa interior”, ya la vestiremos con otra vClase más adelante.</p>
<p style="text-align:justify;">Y es que desde que lanzé los 2 últimos post, han sido muchas las vClases que a modo de tormenta de ideas, han llegado a mi pobre cabeza (además de un aluvión de e-mail’s). Algunas no me dejan dormir y estoy impaciente por implementarlas, pero todo tiene un orden natural en esta “estratégia de programación” y de momento me quedan por mostrar dos niveles más de implementación,</p>
<ul style="text-align:justify;">
<li>vClases que llaman a vClases o ecosistemas de vClases formando un conjunto ligado o “<span style="color:#003300;">libreria de vClases</span>” que se llaman unas a otras  en un flow constante de comunicación interna, “yo no soy nada sin ti” ó “tu no eres nada sin mi” aunque siempre hay una Reina que pone el primer huevo .</li>
</ul>
<p style="text-align:justify;"> </p>
<ul style="text-align:justify;">
<li>“vClases ligadas a datos”, vClases todavia en fase experimental, ya las veremos más adelante.</li>
</ul>
<p style="text-align:justify;"> </p>
<p style="text-align:justify;">Por lo tanto, saltandome un paso previo os muestro en este vServer: “vatp://v7cloud5.velneo.com:6510” un primer ejemplo de “micro” libreria de vClases, que consta de 2 vClases con 5 subvClases.</p>
<p style="text-align:justify;">No os digo que hacen cada una de ellas, mejor las veís en acción, pero <span style="color:#ff0000;">ATENCIÓN</span> para que todo funcione correctamente debeis alojar antes los archivos de recursos necesariós en las rutas especificadas, tal y como muestran las imagenes:)</p>
<p><a href="http://aaahaa.files.wordpress.com/2011/04/ubicacic3b3n-recursos.png"><img class="aligncenter size-full wp-image-258" title="Ubicación recursos" src="http://aaahaa.files.wordpress.com/2011/04/ubicacic3b3n-recursos.png?w=604" alt=""   /></a><a href="http://aaahaa.files.wordpress.com/2011/04/resursos-gradientes.png"><img class="aligncenter size-full wp-image-259" title="resursos gradientes" src="http://aaahaa.files.wordpress.com/2011/04/resursos-gradientes.png?w=604" alt=""   /></a></p>
<p>Y aqui os dejo el enlace con el archivo <span style="color:#ff0000;"><a title="recursos vClases" href="http://www.innova.uned.es/webpages/ikonos/vChip.rar">vChip.rar</a></span> que al descomprimir os creará los directorios necesarios con los archivos mencionados, pero revisar que sea todo correcto y quede así:</p>
<p>C:\vChip\vClases\vClass Main ChooseColor\cursor.gif</p>
<p>C:\vChip\vClases\vClass Main ChooseColor\Maiz_Saturacion.png</p>
<p>C:\vChip\vClases \vClass Gradient\inicio.png</p>
<p>C:\vChip\vClases \vClass Gradient\final.png</p>
<p>C:\vChip\vClases \vClass Gradient\pto rojo.png</p>
<p>Ahora si, una vez hecho esto ya sabeis:</p>
<p>vServer: “vatp://v7cloud5.velneo.com:6510”</p>
<p>A ELEGIR 5 entre usuarios:</p>
<p>usuario: demo1, demo2, &#8230;, demo5</p>
<p>password: demo1, demo2, &#8230;, demo5</p>
<p>si la haceis funcionar correctamente, ya me direis si os gusta &#8230;</p>
<p>Un saludo</p>
<p>P.D. El vServer solo estará disponible un par de dias, por que como imaginareis la libreria ya la he vuelto a modificar <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aaahaa.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aaahaa.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aaahaa.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aaahaa.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/aaahaa.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/aaahaa.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/aaahaa.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/aaahaa.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aaahaa.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aaahaa.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aaahaa.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aaahaa.wordpress.com/255/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aaahaa.wordpress.com/255/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aaahaa.wordpress.com/255/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=255&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aaahaa.wordpress.com/2011/04/18/hello-world/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d91c2e8595d42ea702229dfc87ba1c54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aaahaa</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/dibujo.png" medium="image">
			<media:title type="html">Dibujo</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/ubicacic3b3n-recursos.png" medium="image">
			<media:title type="html">Ubicación recursos</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/resursos-gradientes.png" medium="image">
			<media:title type="html">resursos gradientes</media:title>
		</media:content>
	</item>
		<item>
		<title>La primera vClase, vChooseColor.</title>
		<link>http://aaahaa.wordpress.com/2011/04/12/la-primera-vclase-vchoosecolor/</link>
		<comments>http://aaahaa.wordpress.com/2011/04/12/la-primera-vclase-vchoosecolor/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 08:05:37 +0000</pubDate>
		<dc:creator>ikonos</dc:creator>
				<category><![CDATA[vClases]]></category>

		<guid isPermaLink="false">http://aaahaa.wordpress.com/?p=227</guid>
		<description><![CDATA[Antes de empezar a leer el artículo, os haré una petición personal, si no tenéis tiempo suficiente y lo debéis leer a groso modo, por favor busca un momento mas relajado para volver a leerlo, por que es extenso y puede llegar a cansar. Si por el contrario dispones de 15 minutos de tranquilidad, comencemos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=227&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Antes de empezar a leer el artículo, os haré una petición personal, si no tenéis tiempo suficiente y lo debéis leer a groso modo, por favor busca un momento mas relajado para volver a leerlo, por que es extenso y puede llegar a cansar. Si por el contrario dispones de 15 minutos de tranquilidad, comencemos pues con nuestra primera <span style="color:#333300;">vClase</span>.</p>
<p style="text-align:justify;">Vamos a diseñar unos de esos singulares “<span style="color:#333300;"><em>artefactos</em></span>” que respeten el formalismo de la programación orientada a objetos. Para ello he pensado en un artefacto que Velneo no lleva de serie y que a priori no parece que tenga mucha utilidad para una aplicación de gestión, un control ChooseColor, pero las cosas no siempre son lo que parecen.</p>
<p style="text-align:justify;">Desde luego el ChooseColor es un <em><span style="color:#333300;">artefacto</span></em> que tiene toda la pinta de ser tratado como una clase, es un elemento completo, cerrado, con atributos y métodos propios y por lo tanto es un buen candidato a ser la primera <span style="color:#333300;">vClase</span>.</p>
<p style="text-align:justify;"><span style="color:#333300;">vClassChooseColor</span> será un artefacto que podamos invocar de manera sencilla en cualquier parte de nuestra aplicación, capturando sus atributos y haciendo uso de sus métodos. Para ello implementaremos los cuatro mecanismos fundamentales ya mencionados, <span style="color:#333300;"><strong>clases</strong></span>, <strong><span style="color:#333300;">métodos</span></strong>, <strong><span style="color:#333300;">objetos</span></strong> y <span style="color:#333300;"><strong>mensajes</strong></span>, pero no nos quedaremos ahí eso solo es el comienzo.</p>
<p style="text-align:justify;">A estas alturas todos conocemos los comandos de instrucción para el manejo de objetos que nos brinda Velneo, y que son la base para simular estos 4 mecanismos,</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/manejadores.png"><img class="aligncenter size-full wp-image-229" title="manejadores" src="http://aaahaa.files.wordpress.com/2011/04/manejadores.png?w=604" alt=""   /></a><a href="http://aaahaa.files.wordpress.com/2011/04/1c2aa-vclass.png"></a></p>
<p style="text-align:justify;"><span id="more-227"></span></p>
<p style="text-align:justify;">y de hecho los manejamos cotidianamente en nuestros desarrollos, pero generalmente lo hacemos como una abstracción funcional que incrustamos en una parte de nuestra aplicación respondiendo a la función o funciones a las que nuestra solución debe dar solución, y dejan de tener sentido o entidad propia una vez que las descontextualizamos de nuestra aplicación. Y esto es así por que por regla general nos limitamos a hacer uso de los comandos de instrucción para resolver nuestra necesidad más inmediata “la aplicación de nuestro cliente” y  “rápido que es para ayer”.</p>
<p style="text-align:justify;">Si hacemos eso, por supuesto que nos dará resultado y probablemente salgamos como siempre del apuro, pero a la larga nuestro software se empobrecerá y nos costará reconocer qué partes de nuestro código son reutilizables y escalables.</p>
<p style="text-align:justify;">Por el contrario, si cada vez que hacemos uso de los comandos de instrucción de objetos, lo hacemos bajo el prisma de la programación orientada a objetos, podremos construir software de mayor complejidad de una forma escalable, sencilla y 100% reutilizable. Pero no nos equivoquemos, hacer uso de estos comandos de instrucción, no es manejar clases, para manejar clases necesitamos mucho más que utilizar los comandos de instrucción.</p>
<p style="text-align:justify;">Aunque sea una estupidez “empezaremos implementando mal una clase” para poder llegar a entender de forma más comprensible los requisitos que una <span style="color:#333300;">vClase</span> debe cumplir para respetar el formalismo de la programación orientada a objetos.</p>
<p style="text-align:justify;">En el anterior post, ya os la presente y tenia esta pinta,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/1c2aa-vclass1.png"><img class="aligncenter size-full wp-image-230" title="1ª vClass" src="http://aaahaa.files.wordpress.com/2011/04/1c2aa-vclass1.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">como vimos, en fase de diseño los dos mecanismos fundamentales que debemos articular son,</p>
<ul style="text-align:justify;">
<li>El diseño formal de la <span style="color:#333300;"><strong>clase</strong></span>, que en este ejemplo es el formulario <span style="color:#333300;">vClass_ChooseColor</span>.</li>
<li>Y la definición del <strong><span style="color:#333300;">contrato programático API</span></strong>, que define la colección de atributos y métodos de la clase, que en nuestro caso será el formulario <span style="color:#333300;">vClass_ChooseColor_API</span>.</li>
</ul>
<p style="text-align:justify;">Veamos las primeras características de <span style="color:#333300;">vClass_ChooseColor</span>. Este en principio será un formulario cuyo conjunto de componentes representan un control que facilita la gestión del color a un usuario:</p>
<ul style="text-align:justify;">
<li>El usuario podrá escoger el color que desee mediante métodos gráficos, bien sea desde una matriz de color Matiz-Saturación, o bien sobre una paleta de colores predeterminados. Además los métodos gráficos de la matriz Matiz-Saturación deben permitir posicionar un cursor sobre el píxel escogido, y los sliders de saturación y luminosidad deben dibujar en tiempo de ejecución el gradiente de color correspondiente al matiz seleccionado.</li>
<li>Los colores se representarán bajo dos sistemas de coordenadas de color diferentes, el <span style="color:#333300;">modelo RGB (Red, Green, Blue)</span> y el <span style="color:#333300;">modelo HSV (Matiz, Saturación, Luminosidad)</span>. Y por lo tanto deberemos crear controles para manejar los atributos de nuestra clase, R, G, B, H, S, V en los que podamos establecer directamente valores a los atributos, por ejemplo los RGB y la clase nos debe sincronizar automáticamente los métodos necesarios para devolver sus componentes HSV o viceversa.</li>
<li>Por último para redondear el artefacto, le conferiremos un nuevo atributo a la clase, el atributo A, “<span style="color:#333300;">la opacidad</span>”, implementando los métodos gráficos necesarios para dibujar en el slider de opacidad el gradiente de opacidad sobre el color RGB o HSV seleccionado. Con lo que nuestro control sobre la gestión de cualquier color será completo.</li>
</ul>
<p style="text-align:justify;">Tengo que decir que no he cuidado en absoluto la estética del control ya que lo que me interesa es el motor no la carrocería y por supuesto a la clase le podemos pedir que haga algunas otras cosas que serian útiles para un control ChooseColor, pero de momento para nuestro objetivo fundamental es más que suficiente.</p>
<p style="text-align:justify;">Además si este post no tratara sobre <span style="color:#333300;">vClases</span>, seguiría con un denso desarrollo de cómo conseguir que nuestro artefacto haga todas estas cosas, que no son pocas y desde luego no vienen de serie. Pero en principio de lo que aquí se trata, es de poder manejar este artilugio de una manera sencilla independientemente de su complejidad o de los mecanismos internos que utilice, que es donde reside la magia de las clases. Por lo tanto no vamos a ver como el artefacto hace todas estas cosas, si no que para aprender a diseñar y a utilizar una clase nos bastará con mostrar sus entrañas y saber que cometido tienen sus partes.</p>
<p style="text-align:justify;">Este es el aspecto de nuestro formulario <span style="color:#333300;">vClass_ChooseColor</span>,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/vchoosecolor.png"><img class="aligncenter size-full wp-image-231" title="vChooseColor" src="http://aaahaa.files.wordpress.com/2011/04/vchoosecolor.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">En cuanto a su utilización de forma intuitiva podéis adivinar como se maneja para controlar sus atributos. Por una parte tenemos una paleta de colores en la que podemos seleccionar un color clickando en el color deseado, por otra parte tenemos la matriz de color Matiz-Saturación en la que también podemos clickar para seleccionar cualquier color. Además de estos controles gráficos podemos acceder directamente a los modelos RGB y HSV con los sliders correspondientes o introducir valores directamente en los microscrolles. Y finalmente tenemos el control de la opacidad. También he mantenido dos testigos de color RGB y HSV para comprobar en tiempo de ejecución que la sincronización entre modelos de color es correcta y también hice un hueco para agregar colores personalizados a la paleta, pero no he tenido tiempo de implementarlo, me tendréis que perdonar.</p>
<p style="text-align:justify;">En cuanto al diseño, para que esto funcione hemos necesitado las siguientes variables,</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/variables-locales.png"><img class="aligncenter size-full wp-image-232" title="Variables locales" src="http://aaahaa.files.wordpress.com/2011/04/variables-locales.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Unos cuantos eventos,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/eventos.png"><img class="aligncenter size-full wp-image-233" title="eventos" src="http://aaahaa.files.wordpress.com/2011/04/eventos.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Y unas cuantas conexiones de eventos para que finalmente todo esto funcione,</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/conexiones-de-evento.png"><img class="aligncenter size-full wp-image-234" title="conexiones de evento" src="http://aaahaa.files.wordpress.com/2011/04/conexiones-de-evento.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">ya veis estas son la tripas. Pero como os anticipaba antes, nos interesa manejar este artefacto como una unidad sencilla, independientemente de lo que lleve por dentro, por lo tanto para controlar el volante de este coche y poder conducirlo haremos uso del segundo mecanismo fundamental de la programación orientada a objetos en fase de diseño, el <span style="color:#333300;">contrato programático ó API</span> que no es ni mas ni menos que un hoja de instrucciones de nuestro juguete.</p>
<p style="text-align:justify;">En la hoja de instrucciones <span style="color:#333300;">API</span>, diremos cuales son los <span style="color:#333300;">atributos</span> y <span style="color:#333300;">métodos</span> de esta clase, y obviamente la correspondencia ya la habréis establecido casi inmediatamente, <span style="color:#333300;">atributos == variables</span>, <span style="color:#333300;">métodos == eventos</span>. Y casi es así en este caso, y digo casi por que no todas las variables serán atributos de nuestra clase y no todos los eventos serán métodos de nuestra clase. Pero bueno veamos como montamos el <span style="color:#333300;">API</span>.</p>
<p style="text-align:justify;">Dado que Velneo v7 no tiene herramientas internas de documentación de objetos, cosa que es bastante reprochable, para sortear este hecho he utilizado otro formulario en el que he incrustado una caja de texto. En la caja de texto haciendo uso del editor de fórmulas escribimos el contrato programático y como suele ser extenso podemos hacer uso de la vista previa del formulario en vDevelop para consultarlo con más facilidad. De modo que la API quedaría así,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/api.png"><img class="aligncenter size-full wp-image-235" title="API" src="http://aaahaa.files.wordpress.com/2011/04/api.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Como veis en la <span style="color:#333300;">API</span> definimos que variables locales serán atributos de la clase y especificamos que rango de valores puede tomar el atributo, las unidades, si el atributo sirve para dar valores de entrada, salida o ambos y por último si el atributo hace cambiar el estado de la clase.</p>
<p style="text-align:justify;">Por otra parte hemos indicado que eventos serán métodos de la clase, especificando cuales serán sus parámetros de entrada y salida.</p>
<p style="text-align:justify;">Con esto a priori hemos terminado en primera instancia la fase de diseño, y ya podemos pasar a la fase de ejecución donde debemos articular los dos restantes principios fundamentales los <span style="color:#333300;"><strong>objetos</strong> </span>y los<span style="color:#333300;"><strong> mensajes</strong></span>.</p>
<p style="text-align:justify;">Y precisamente aquí, aunque aparentemente todo esta en su sitio y parece que vamos por buen camino, será donde pondremos de manifiesto de forma evidente que <strong>“</strong><em><span style="color:#333300;">hemos implementado mal la clase</span></em><strong>”</strong>.</p>
<p style="text-align:justify;">Centrémonos pues en la <span style="color:#333300;">fase de ejecución</span>, un <span style="color:#333300;">objeto</span> será un ejemplar en tiempo de ejecución de una <span style="color:#333300;">clase</span> y un <span style="color:#333300;">mensaje</span> es un acto de invocación de un <span style="color:#333300;">objeto</span> en tiempo de ejecución. Veamos pues como invocamos un <span style="color:#333300;">objeto</span> y porque nuestro objeto todavía no puede tener la categoría de <span style="color:#333300;">clase</span>.</p>
<p style="text-align:justify;">Para articular el <span style="color:#333300;">mensaje</span>, a modo de ejemplo estableceremos nuestro punto de partida en otro formulario, y en una parte del cual tendremos un control o campo al que le queremos establecer la propiedad color,</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/origen-llamada.png"><img class="aligncenter size-full wp-image-236" title="origen llamada" src="http://aaahaa.files.wordpress.com/2011/04/origen-llamada.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">cuando hagamos doble click sobre el cuadrado background-color debe aparecer un <span style="color:#333300;">objeto</span> de nuestra clase <span style="color:#333300;">vClass_ChooseColor</span>, con el que seleccionaremos el color que deseemos y al aceptar su cuadro de dialogo devuelva los <span style="color:#333300;">atributos</span> de la <span style="color:#333300;">clase</span> a las variables locales de este nuevo formulario, R, G, B, A, H, S, V. Es más utilizaremos las variables RGBA para dar valores iniciales a nuestro <span style="color:#333300;">objeto</span> y de ese modo ya tengamos posicionado de inicio los controles en cierto color.</p>
<p style="text-align:justify;">Pero veamos como articulamos el <span style="color:#333300;">mensaje</span>,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/mensaje-1.png"><img class="aligncenter size-full wp-image-237" title="mensaje 1" src="http://aaahaa.files.wordpress.com/2011/04/mensaje-1.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Esta claro que después de ejecutar este código habremos recogido en las variables locales R, G, B, A, H, S y V todos los atributos del color escogido y podremos construirlo y representarlo haciendo uso de ellos, pero ¿estamos utilizando una <span style="color:#333300;">vClase</span>? La respuesta es NO.</p>
<p style="text-align:justify;">Como dijimos, lo que convertía a la programación orientada a objetos en el paradigma perfecto para realizar diseños basados en sistemas basados en abstracciones de datos (clases) era el uso de 6 características fundamentales, <em><span style="color:#333300;"><strong>abstracción</strong></span>, <span style="color:#333300;"><strong>encapsulación</strong></span>, <span style="color:#333300;"><strong>herencia</strong></span>, <span style="color:#333300;"><strong>polimorfismo</strong></span>, <strong><span style="color:#333300;">ligadura dinámica </span></strong></em>y<em><span style="color:#333300;"> <strong>genericidad</strong></span></em>. Y aunque dijimos que ni mucho menos todas estas características son soportadas por v7 (tan solo la <span style="color:#333300;">abstracción</span>) para conseguir que nuestro artefacto sea una clase, un ente autónomo, completo y cerrado debemos emular con los artificios que sean necesarios como mínimo, la <span style="color:#333300;">encapsulación</span>, el <span style="color:#333300;">polimorfismo</span> e incluso la <span style="color:#333300;">ligadura dinámica</span>.</p>
<p style="text-align:justify;">Y atendiendo a nuestro primer diseño y <span style="color:#333300;">mensaje</span> nos daremos cuenta fácilmente,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/mensaje-2.png"><img class="aligncenter size-full wp-image-238" title="mensaje 2" src="http://aaahaa.files.wordpress.com/2011/04/mensaje-2.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Fijaros como al seleccionar una operación de paso de valores iniciales a la clase, por ejemplo el atributo R, en vDevelop tenemos acceso a todas la variables internas de la <span style="color:#333300;">clase</span>, variables que no son <span style="color:#333300;">atributos</span> de la misma y cuya modificación accidental suponen de facto una operación ilegal de la misma y nos provocarían errores de resolución tanto en los <span style="color:#333300;">atributos</span> de la clase como en sus <span style="color:#333300;">métodos</span>, ya que estas variables son las que utilizamos en el <span style="color:#333300;">vChooseColor</span> para hacer cálculos y operaciones auxiliares necesarias para dar funcionalidad al formulario pero no representan un atributo de la clase. Además el acceso se permite aunque declaremos las variables locales que no sean <span style="color:#333300;">atributos</span>, como privadas.</p>
<p style="text-align:justify;">Para que una<span style="color:#333300;"> clase</span> sea una <span style="color:#333300;">clase</span>, los <span style="color:#333300;">atributos</span> solo pueden ser modificados a través de sus <span style="color:#333300;">métodos</span> y de esta manera no se produzcan cambios de estado ilegales en la misma. Esto es lo que gestiona el <em><span style="color:#333300;"><strong>encapsulamiento</strong>,</span></em> protegiendo el núcleo de la <span style="color:#333300;">clase</span> y haciendo que su uso sea seguro. Por lo tanto algo deberemos variar en nuestro diseño para que esto se cumpla.</p>
<p style="text-align:justify;">Otro aspecto a tener en cuenta también será el <span style="color:#333300;">polimorfismo</span> y  la <span style="color:#333300;">ligadura dinámica</span>.</p>
<p style="text-align:justify;">El <em><span style="color:#333300;"><strong>polimorfismo</strong></span></em> permitirá que podamos usar una <span style="color:#333300;">clase</span> bajo diferentes “<span style="color:#333300;">formatos</span>” ó “<span style="color:#333300;">sub-diseños</span>”, en nuestro caso el <span style="color:#333300;">polimorfismo</span> se podría aplicar a la clase para invocarla de formas distintas, por ejemplo:</p>
<ol style="text-align:justify;">
<li>tal y como la hemos presentado para retornar valores con la intervención del usuario haciendo uso del cuadro de dialogo.</li>
<li>exclusivamente como una función a la que le introducimos los atributos RGB y nos retorne los HSV sin presentación del cuadro de dialogo.</li>
<li>o también exclusivamente como una función a la que le introducimos los atributos HSV y nos devuelve las coordenadas RGB.</li>
</ol>
<p style="text-align:justify;">Por supuesto podríamos buscar otras combinaciones, pero para el ejemplo de hoy estos <span style="color:#333300;">tres estados polimórficos</span> serán más que suficientes.</p>
<p style="text-align:justify;">Y dando tan solo un pequeño pasito más podemos emular la <strong><span style="color:#333300;"><em>ligadura dinámica</em></span></strong>, que como dijimos es la capacidad que tienen algunos lenguajes de cambiar en tiempo de ejecución el <span style="color:#333300;">objeto </span>referenciado por otro <span style="color:#333300;">objeto polimórficamente compatible</span>. En nuestro caso podríamos seleccionar en tiempo de ejecución, desde nuestro formulario de origen, el modo de invocación bajo los <span style="color:#333300;">tres estados polimórficos </span>que hemos propuesto antes, con cuadro de dialogo, sin cuadro de dialogo RGB to HSV, o sin cuadro de dialogo HSV to RGB.</p>
<p style="text-align:justify;">En cuanto al resto, la <em><span style="color:#333300;"><strong>herencia</strong></span></em>, nonos resultará estrictamente necesaria para llegar al estado de vClase, y la <em><span style="color:#333300;"><strong>genericidad</strong></span></em> sigue siendo una meta inalcanzada que nos permite seguir soñando.</p>
<p style="text-align:justify;">Vamos a cambiar pues nuestro diseño actual para llegar al estado deseado de vClase (que la verdad dicho así, parece que vaya a ser el Nirvana). El nuevo diseño propuesto seria:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/2c2aa-vclass.png"><img class="aligncenter size-full wp-image-239" title="2ª vClass" src="http://aaahaa.files.wordpress.com/2011/04/2c2aa-vclass.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Como veis la complejidad de la <span style="color:#333300;">clase</span> a nivel estructural ya ha crecido, en la carpeta <span style="color:#333300;">vClassChooseColor</span> colocamos solamente la <span style="color:#333300;">API</span> y la nueva clase madre <span style="color:#333300;">vClass_Main_ChooseColor </span>que ya se ha transformado en un proceso (que es el <span style="color:#333300;">objeto</span>, perdón corrijo, la “abstracción funcional” más potente que tenemos en Velneo y no lo llamaré <span style="color:#333300;">objeto</span> porque recordar que hemos definido <span style="color:#333300;">objeto</span> como un ejemplar de una <span style="color:#333300;">clase</span> en tiempo de ejecución).</p>
<p style="text-align:justify;">Como veis paralelamente a la <span style="color:#333300;">API</span> y a la <span style="color:#333300;">vClase </span>no debemos poner ningún elemento más, el resto de componentes que nos ayuden a definir la <span style="color:#333300;">vClase</span> y sus posibles <span style="color:#333300;">subClases</span> o <span style="color:#333300;">estados polimórficos </span>los colocaremos en una subcarpeta que he llamado “<span style="color:#333300;">Core_Class</span>”, adivinareis que en esta carpeta residen los elementos <em><strong><span style="color:#333300;">encapsulados </span></strong></em>de la <span style="color:#333300;">vClase</span>, elementos que nunca deberemos invocar para hacer uso de la <span style="color:#333300;">vClase</span> y motivo por el cual están situados fuera de ella. El único elemento que debe llamar a estas <span style="color:#333300;">subClases</span> alojadas en el <span style="color:#333300;">Core Class </span>es la propia <span style="color:#333300;">vClass_Main_ChooseColor</span>.</p>
<p style="text-align:justify;">También habréis reconocido en la imagen los <span style="color:#333300;">tres modos de invocación </span>de la <span style="color:#333300;">vClase</span> propuestos que formaran las tres <span style="color:#333300;">subclases</span> hijas, representados por la ya conocida <span style="color:#333300;">vClass_ChooseColor </span>(formulario), y los procesos <span style="color:#333300;">vClas_ChooseColor_RGB_TO HSV </span>y <span style="color:#333300;">vClas_ChooseColor_HSV_TO_RGB </span>que nos devolverán los <span style="color:#333300;">métodos</span> de transformación de coordenadas de color sin la intervención del usuario en un cuadro de dialogo.</p>
<p style="text-align:justify;">Como curiosidad os puedo enseñar el código para transformación de coordenadas  de las <span style="color:#333300;">subClases RGB_TO_HSV</span>,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/rgb-to-hsv.png"><img class="aligncenter size-full wp-image-240" title="rgb to hsv" src="http://aaahaa.files.wordpress.com/2011/04/rgb-to-hsv.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">y el código de la transformación de coordenadas HSV_TO_RGB</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/hsv-to-rgb.png"><img class="aligncenter size-full wp-image-241" title="hsv to rgb" src="http://aaahaa.files.wordpress.com/2011/04/hsv-to-rgb.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">pero estos procesos los muestro solo a efecto de curiosidad por que a lo que <em><span style="color:#333300;"><strong>debemos prestar especial atención es a la implementación de </strong></span></em><span style="color:#333300;"><strong>vClass_Main_ChooseColor</strong></span>, que hará posible emular el <span style="color:#333300;">encapsulamiento</span>, <span style="color:#333300;">el polimorfismo </span>y la <span style="color:#333300;">ligadura dinámica</span>.</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/vchoosecolor-main.png"><img class="aligncenter size-full wp-image-242" title="vChooseColor MAIN" src="http://aaahaa.files.wordpress.com/2011/04/vchoosecolor-main.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Como podéis ver, la clase madre solo tiene como variables locales (<span style="color:#333300;">atributos</span> de la <span style="color:#333300;">clase</span>) las que verdaderamente escogimos en la <span style="color:#333300;">API inicial </span>(RGB – HSV – A), y ya no aparecen las variables auxiliares cuyo uso accidental podrían provocarían un mal funcionamiento de la <span style="color:#333300;">clase</span>, es decir un cambio de estado. De esta forma estas <span style="color:#333300;">variables auxiliares </span>y sus <span style="color:#333300;">métodos</span> quedarán <em><strong><span style="color:#333300;">encapsulados</span></strong></em> en el <span style="color:#333300;">Core Class </span>y cuando invoquemos la clase <span style="color:#333300;">vClass_Main_ChooseColor </span>no tendremos acceso a los datos <em><strong><span style="color:#333300;">encapsulados</span></strong></em>.</p>
<p style="text-align:justify;">Entonces resulta obvio decir, que ahora solo podremos asignar valores a los <span style="color:#333300;">atributos</span> declarados en la <span style="color:#333300;">API</span> y que solo podremos modificarlos haciendo uso de los <span style="color:#333300;">métodos</span> de la <span style="color:#333300;">clase</span>, (<span style="color:#333300;">vSubClass ChooseColor</span>, <span style="color:#333300;">vSubClass ChooseColor RGB to HSV, vSubClass ChooseColor HSV to RGB</span>), ya que este proceso de asignación de valores iniciales o finales a los atributos no modifican el estado de la clase. Por lo tanto objetivo <strong><em><span style="color:#333300;">encapsulación</span></em></strong> conseguido.</p>
<p style="text-align:justify;">Por otra parte tenemos un nuevo <span style="color:#333300;">atributo MODO</span>, esta variable local nos permitirá gestionar el <em><span style="color:#333300;"><strong>polimorfismo</strong></span></em> de la <span style="color:#333300;">vClase</span> invocándola en modo cuadro de dialogo o procesos (dados nuestros ejemplos) y por supuesto a gusto del consumidor podríamos hacerlo directamente mediante código ó en tiempo de ejecución con lo que aparecería la <em><span style="color:#333300;"><strong>ligadura dinámica</strong></span></em>.</p>
<p style="text-align:justify;">Ya solo queda decir que el mensaje de invocación de las <span style="color:#333300;">vSubclases</span> dentro de la <span style="color:#333300;">vClase</span> representa un anidamiento de declaración de objetos, que tácitamente sigue el mismo formalismo, y como podemos observar para el MODO 1 seria,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/modo1.png"><img class="aligncenter size-full wp-image-243" title="modo1" src="http://aaahaa.files.wordpress.com/2011/04/modo1.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">para el MODO 2,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/modo2.png"><img class="aligncenter size-full wp-image-244" title="modo2" src="http://aaahaa.files.wordpress.com/2011/04/modo2.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">y para el MODO 3,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/modo3.png"><img class="aligncenter size-full wp-image-245" title="modo3" src="http://aaahaa.files.wordpress.com/2011/04/modo3.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Y la <span style="color:#333300;">API</span> en esta ocasión quedará,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/api-2.png"><img class="aligncenter size-full wp-image-246" title="API 2" src="http://aaahaa.files.wordpress.com/2011/04/api-2.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Con esto en principio volvemos a tener cerrada la fase de diseño de nuestra <span style="color:#333300;">vClase</span>. Volvamos ahora de nuevo a la fase de ejecución.</p>
<p style="text-align:justify;">Partimos de nuevo desde nuestro formulario de origen,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/origen-llamada1.png"><img class="aligncenter size-full wp-image-247" title="origen llamada" src="http://aaahaa.files.wordpress.com/2011/04/origen-llamada1.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">¿Cómo articularíamos el<span style="color:#333300;"> mensaje</span> de invocación ahora? Dado que el articulo ya es de por si un poquito largo, para no extendernos demasiado veremos la invocación en modo cuadro de dialogo, ya que el resto de modos ya os resultaran obvios. Entonces seguiremos diciendo que al hacer doble click sobre cuadrado background-color, invocaremos a nuestra <span style="color:#333300;">vClase</span> de la forma:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/invocacion-modo-1.png"><img class="aligncenter size-full wp-image-248" title="invocacion modo 1" src="http://aaahaa.files.wordpress.com/2011/04/invocacion-modo-1.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Y fijaros bien ahora en esto,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/detalle-invocacion-modo-1.png"><img class="aligncenter size-full wp-image-249" title="detalle invocacion modo 1" src="http://aaahaa.files.wordpress.com/2011/04/detalle-invocacion-modo-1.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Como hemos dicho los atributos a los que tengo acceso desde el formulario de origen del mensaje con la <span style="color:#333300;">vClase</span>, <span style="color:#333300;">solo son los declarados en la API</span>, el resto esta <em><span style="color:#333300;">encapsulado</span></em> en el <span style="color:#333300;">Core Class</span>, a salvo de posibles invocaciones ilegales que dañarían la clase. Además también resulta obvio que <span style="color:#333300;">la única manera de recoger cambios de estado en los atributos de la vClase es a través de los métodos declarados en la API</span>.</p>
<p style="text-align:justify;">Con lo cual esto ya empieza a funcionar correctamente, de forma sencilla y segura, pero ¿esta es una clase <span style="color:#333300;"><strong>autónoma </strong>y<strong> cerrada</strong></span>? La respuesta es NO, aunque no es obvia y por lo que hemos visto hasta ahora es difícil de deducir.</p>
<p style="text-align:justify;">Debemos pensar que una <span style="color:#333300;">Clase</span> debe ser un <span style="color:#333300;">elemento autónomo</span> que podamos no solo invocar de manera sencilla bajo el formalismo de la programación orientada a objetos, tal y como hemos visto hasta ahora. Si no que además debemos ser capaces de insertarla en nuestra solución de forma <span style="color:#333300;">completa</span> y <span style="color:#333300;">cerrada</span>, y para ello todos y cada uno de los elementos que la componen no deben presentar dependencias con otros elementos alojados fuera del <span style="color:#333300;">Core Class</span>. Si esto es así, siempre podremos cortar y pegar una <span style="color:#333300;">vClase</span> desde una solución a otra sin consecuencias o efectos secundarios que supongan un malfuncionamiento de la <span style="color:#333300;">vClase</span> y nuestro <em><span style="color:#333300;">artefacto</span></em> en este caso ya será un elemento <span style="color:#333300;">100 % portable </span>y <span style="color:#333300;">100% reutilizable</span>, con lo que ahora si, habremos cerrado la <span style="color:#333300;">vClase</span> y ya será un ente autónomo, ¡POR FIN!, POR FIN! YA ERA HORA!.</p>
<p style="text-align:justify;">En consecuencia, para que <span style="color:#333300;">vClass_Main_ChooseColor </span>sea <span style="color:#333300;">cerrada</span> y autónoma, debo desvelar parcialmente algunos secretos que esta primera joya lleva alojados en su interior para representar los métodos gráficos.</p>
<p style="text-align:justify;">El primero de los secretos para representar los métodos gráficos de forma autónoma será una constante con un carácter especial que me permita realizar las tareas que necesito directamente en el editor de formulas, de manera que la <span style="color:#333300;">vClase</span> quedaría de esta forma,</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/vista-final.png"><img class="aligncenter size-full wp-image-250" title="vista final" src="http://aaahaa.files.wordpress.com/2011/04/vista-final.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">El segundo de los secretos, y “<span style="color:#333300;">paquete adicional</span>” que pueden llevar todas la <span style="color:#333300;">vClases</span> son las <span style="color:#333300;">“carpetas de recursos”</span> (o librerías) y que debemos alojar en el directorio donde tenemos instalado el <span style="color:#333300;">vClient.</span></p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/vclient.png"><img class="aligncenter size-full wp-image-251" title="vClient" src="http://aaahaa.files.wordpress.com/2011/04/vclient.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">yo personalmente crearía una carpeta con donde alojar todos los recursos que necesitaran la <span style="color:#333300;">vClases</span> de mi solución, y dentro de esta carpeta otra subcarpeta con los <span style="color:#333300;">recursos</span> que vamos a utilizar, que son:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/recursos.png"><img class="aligncenter size-full wp-image-252" title="recursos" src="http://aaahaa.files.wordpress.com/2011/04/recursos.png?w=604" alt=""   /></a> </p>
<p style="text-align:justify;">Os suenan los recursos, pues quizás otro día explique como funcionan pero hoy no por favor.</p>
<p style="text-align:justify;">Ahora si, ahora ya hemos acabado, tras estos últimos <span style="color:#333300;">ajustes</span> la <span style="color:#333300;">vClase</span> ya es <span style="color:#333300;">completa</span>, <span style="color:#333300;">autónoma</span>, <span style="color:#333300;">cerrada</span>, <span style="color:#333300;">de fácil invocación</span> y <span style="color:#333300;">100% reutilizable</span>. Y sobre todo y lo mas importante, <span style="color:#333300;">responde a la estrategia de la programación orientada a objetos</span>, que como veis <span style="color:#333300;">dista mucho del mero hecho de manejar objetos</span>, y centra toda su potencia en crear <span style="color:#333300;">un ecosistema colaborativo de mensajes que fluyen entre clases</span> que permite escalar en nuestro software de una manera espectacular, creando estructuras de datos complejas de fácil invocación.</p>
<p style="text-align:justify;">A modo de apunte, recordaremos que en Velneo son bastantes los objetos que podemos manejar, <span style="color:#333300;">formularios, casilleros, procesos, cestas, búsquedas, localizadores, rejillas,</span> etc … y todas estas abstracciones funcionales las podemos convertir en <span style="color:#333300;">vClases</span>.</p>
<p style="text-align:justify;">Pensemos por un momento, en las consecuencias de este paradigma, os imagináis por ejemplo ¿como seria la <span style="color:#333300;">vClase_Agenda</span>? UAh! Vaya control! Me encantaría tenerlo en todas mis aplicaciones de gestión e invocarla de forma sencilla pasándole los parámetros de la tabla que me interese en cada momento.</p>
<p style="text-align:justify;">O por ejemplo, ¿debería Velneo dedicar el tiempo en crear la subindexación en los localizadores? O por el contrario creamos la <span style="color:#333300;">vClase_Localizador_Indexado</span>, con la potencia que me permitiría la personalización de mi localizador.</p>
<p style="text-align:justify;">Yo ya tengo los primeros <span style="color:#333300;">esbozos</span> de estas <span style="color:#333300;">clases</span>, y no resultan complicados de implementar, como siempre solo nos falta tiempo.</p>
<p style="text-align:justify;">Fijaros que con la <span style="color:#333300;">orientación</span> a <span style="color:#333300;">vClases</span> podríamos resolver de forma nativa, muchas de las mejoras que estamos pidiendo día a día a la plataforma. O incluso atacar estructuras complejas de las que actualmente no nos atrevemos, por considerarlas inabordables, como pueda ser el caso de un sistema integral de geoposicionamiento en Velneo, creando las clases necesarias para que el sistema funcione.</p>
<p style="text-align:justify;">En fin esta es solo una primera aproximación del paradigma, y a esta alturas quizás lo que más os interese es ver en acción la primera <span style="color:#333300;">vClass_Main_ChooseColor</span>, y lo que toca es colgarla en un vServer con las instrucciones oportunas para que la veáis trabajando. Solo darme un par de días, para vestirla con un CSS adecuado y montar el tinglado con usuarios suficientes, por que no se vosotros pero yo necesito descansar.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aaahaa.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aaahaa.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aaahaa.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aaahaa.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/aaahaa.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/aaahaa.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/aaahaa.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/aaahaa.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aaahaa.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aaahaa.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aaahaa.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aaahaa.wordpress.com/227/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aaahaa.wordpress.com/227/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aaahaa.wordpress.com/227/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=227&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aaahaa.wordpress.com/2011/04/12/la-primera-vclase-vchoosecolor/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d91c2e8595d42ea702229dfc87ba1c54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aaahaa</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/manejadores.png" medium="image">
			<media:title type="html">manejadores</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/1c2aa-vclass1.png" medium="image">
			<media:title type="html">1ª vClass</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/vchoosecolor.png" medium="image">
			<media:title type="html">vChooseColor</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/variables-locales.png" medium="image">
			<media:title type="html">Variables locales</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/eventos.png" medium="image">
			<media:title type="html">eventos</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/conexiones-de-evento.png" medium="image">
			<media:title type="html">conexiones de evento</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/api.png" medium="image">
			<media:title type="html">API</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/origen-llamada.png" medium="image">
			<media:title type="html">origen llamada</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/mensaje-1.png" medium="image">
			<media:title type="html">mensaje 1</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/mensaje-2.png" medium="image">
			<media:title type="html">mensaje 2</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/2c2aa-vclass.png" medium="image">
			<media:title type="html">2ª vClass</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/rgb-to-hsv.png" medium="image">
			<media:title type="html">rgb to hsv</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/hsv-to-rgb.png" medium="image">
			<media:title type="html">hsv to rgb</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/vchoosecolor-main.png" medium="image">
			<media:title type="html">vChooseColor MAIN</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/modo1.png" medium="image">
			<media:title type="html">modo1</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/modo2.png" medium="image">
			<media:title type="html">modo2</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/modo3.png" medium="image">
			<media:title type="html">modo3</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/api-2.png" medium="image">
			<media:title type="html">API 2</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/origen-llamada1.png" medium="image">
			<media:title type="html">origen llamada</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/invocacion-modo-1.png" medium="image">
			<media:title type="html">invocacion modo 1</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/detalle-invocacion-modo-1.png" medium="image">
			<media:title type="html">detalle invocacion modo 1</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/vista-final.png" medium="image">
			<media:title type="html">vista final</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/vclient.png" medium="image">
			<media:title type="html">vClient</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/recursos.png" medium="image">
			<media:title type="html">recursos</media:title>
		</media:content>
	</item>
		<item>
		<title>Bonus Track</title>
		<link>http://aaahaa.wordpress.com/2011/04/08/bonus-track/</link>
		<comments>http://aaahaa.wordpress.com/2011/04/08/bonus-track/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 12:06:04 +0000</pubDate>
		<dc:creator>ikonos</dc:creator>
				<category><![CDATA[vClases]]></category>

		<guid isPermaLink="false">http://aaahaa.wordpress.com/?p=219</guid>
		<description><![CDATA[Voy a romper mi esquema natural de artículos en el blog, por que entiendo necesario introducir para mí un nuevo aspecto de v7. Ha pasado algún tiempo desde que escribí en el blog el post “Primeros pasos (5). Últimas consideraciones”, en el intenté recopilar las características que personalmente había captado de v7 hasta entonces y hacer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=219&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Voy a romper mi esquema natural de artículos en el blog, por que entiendo necesario introducir para mí un nuevo aspecto de v7. Ha pasado algún tiempo desde que escribí en el blog el post “<a href="http://aaahaa.wordpress.com/2010/12/11/primeros-pasos-5-ultimas-consideraciones/"><span style="color:#800080;">Primeros pasos (5). Últimas consideraciones</span></a>”, en el intenté recopilar las características que personalmente había captado de v7 hasta entonces y hacer las primeras correspondencias con mi tradicional concepto del software. Casi me preguntaba a diario ¿que es Velneo v7? por supuesto Velneo no contestaba, no hay documentación oficial al respecto, y sobre todo tenia una idea en mi mente “desorden”:</p>
<p>“&#8230; no es solo una BD relacional &#8230;”</p>
<p>“&#8230; no es un lenguaje de programación genérica &#8230;”</p>
<p>“&#8230; lo que está claro es que se trata de un producto “abstracto”, y su desarrollo esta basado en abstracciones funcionales&#8230;”</p>
<p>“&#8230; por lo tanto parece un lenguaje estructurado&#8230;”</p>
<p>“&#8230; joder! y no paramos de ver objetos, ¿es un lenguaje orientado a objetos? no lo se &#8230;”</p>
<p>“&#8230; ¿y el código? no lo veo, solo hay objetos contenedores de comandos de instrucción &#8230;”</p>
<p>“&#8230; y vaya comportamiento! aquí hay errores de definición, una <strong>conexión de evento</strong> en realidad es un evento, un <strong>evento</strong> es un proceso,  un <strong>proceso</strong> es una pseudo-función, y una <strong>función</strong> ya no se lo que es &#8230;”</p>
<p>“&#8230; conecta de forma aceptable con otras tecnologías y funcionalmente integra el cloud computing &#8230;”</p>
<p>“&#8230;está claro que este modelo de desarrollo funciona y da buenos resultados pero no se, no lo acabo de asumir &#8230;”</p>
<p style="text-align:justify;"><span id="more-219"></span></p>
<p style="text-align:justify;">Desorden, es la única conclusión clara que tenia. Seguía sin las ideas claras pero aun así podía desarrollar soluciones basadas en la DB y el resultado era aceptable. Tras este periodo de evaluación y aprendizaje (que no acaba nunca) impulsado y de la mano de un buen amigo (velneador hace 20 años) le tocó el turno al primer proyecto serio, ¿cliente? por supuesto una empresa, por lo tanto aplicación orientada a los datos.</p>
<p style="text-align:justify;">Para las aplicaciones empresariales la mayoría de los desarrolladores casi de forma automática piensan en la consistencia de la BD, “&#8230; la solución debe ser robusta y estable, blindando los datos del cliente &#8230;” “ &#8230;esto en la BD lo haré así y asa, &#8230; ahora hago esto y luego lo otro que es muy rápido y rentable y los hago como churros &#8230;”  son gente generosa y piensan en como solucionar los problemas a los demás y encima trabajan rápido con lo cual todos contentos. En V7 no deja de ser distinto, e incluso esta tendencia es todavía mayor dada la filosofía de desarrollo basado en abstracciones funcionales. Todo es tan funcional y ahorra tantas tareas que lo adoptas sin más en un desarrollo compositivo casi de forma secuencial como generalmente hace cualquier RAD y la verdad es que funciona.</p>
<p style="text-align:justify;"><span style="font-size:small;"><span style="font-family:Calibri;">Desde la lejanía ha esto se le llama, <strong>programación estructurada</strong>, el paradigma de la programación estructurada centra la construcción de software en la creación de abstracciones funcionales organizadas de forma compositiva de acuerdo a una estructura jerárquica. La solución principal se descompone funcionalmente en subproblemas, que a su vez se descomponen en abstracciones funcionales más sencillas, hasta llegar a operaciones atómicas. El problema de esta aproximación es que asume, irrealisticamente, que la especificación del problema no cambia a lo largo del tiempo de desarrollo del proyecto, y además la reutilización de cada descomposición esta confinada al contexto funcional donde aparece implicado.</span></span></p>
<p style="text-align:justify;">Pero volviendo a nuestro problema ya llevaba varias semanas con los primeros desarrollos imbuido y contagiado por  este modo de hacer, haciendo uso de todas las abstracciones funcionales que brinda Velneo, rápidas, compositivas, y ya iba siendo hora de cerrar alguna de las partes para sumarla al proyecto, y lo primero que pensé es, esto es serio y no puedo dejar en mal lugar a mi amigo, además mi situación personal no me permite estar a “full time” en el proyecto y cada proceso completado por mi debe servir a cualquier desarrollador del proyecto, y que aunque cambien las necesidades del problema se utilicen mis procesos, sin necesidad de repetirlos casuísticamente, por que de lo contrario en la practica yo no voy a ser útil.</p>
<p style="text-align:justify;">En consecuencia cada cosa que termine debe ser un “artefacto” completo que sirva a mi propósito y que sea utilizado por los demás miembros del proyecto en lo sucesivo, para realizar la tarea para la que ha sido creado, de manera que se pueda crear un ecosistema de colaboración entre artefactos.</p>
<p style="text-align:justify;">Flash! y de repente se me encendió la luz (que ya es raro) hice las primeras pruebas (no sin algún tropiezo) y joder! funcionaba la filosofía!, Velneo v7 empezó a tomar forma y a ser redondo para mi, todas las excentricidades de la herramienta parecían tener sentido y cada objeto de la herramienta (de forma consciente o inconsciente) encajó en un engranaje perfecto para mi propósito, y sobre todo para un formalismo que si que soy capaz de asumir sin péros, el <strong>paradigma de la programación orientada a objetos</strong>.</p>
<p style="text-align:justify;">La construcción de software orientado a objetos es el método de desarrollo de software que basa la arquitectura de un sistema de software en artefactos deducidos de los tipos de objetos que este manipula, en lugar de basarse en la función o funciones a las cuales el sistema debe responder.</p>
<p><a href="http://aaahaa.files.wordpress.com/2011/04/dibujo1.png"><img class="aligncenter size-full wp-image-220" title="Dibujo1" src="http://aaahaa.files.wordpress.com/2011/04/dibujo1.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">En absoluto digo que Velneo es un lenguaje de programación orientado a objetos, para eso aun le queda mucho camino, como veremos mas tarde, lo único que digo es que se puede programar nativamente en velneo bajo el formalismo de la programación orientada a objetos, con todo el beneficio que ello supone, por que v7 tiene las herramientas necesarias para respetar el formalismo, no las adecuadas, pero si las básicamente necesarias (y llama la atención que ninguna de las Open Apps que hay en el catalogo lo respeten. Por supuesto muchos desarrolladores utilizan fantásticamente las herramientas de Velneo que hacen posible un desarrollo basado en objetos, pero generalmente lo hacen desde la deriva de la programación estructurada).</p>
<p style="text-align:justify;">El paradigma de la programación orientada a objetos se articula esencialmente a través de cuatro mecanismos fundamentales: <strong>Clases</strong>, <strong>métodos</strong>, <strong>objetos</strong> y <strong>mensajes</strong>. Los dos primeros tienen lugar en fase de diseño, mientras que los segundos corresponden a fase de ejecución.</p>
<p>Fase de diseño:</p>
<ul>
<li style="text-align:justify;"><strong>Clases: </strong>Una clase es una especificación formal y computable que se utiliza para construir objetos de un mismo tipo en fase de ejecución. Internamente esta compuesta de una colección de atributos y una serie de operaciones.</li>
<li style="text-align:justify;"><strong>Métodos: </strong>La colección de métodos de una clase define las capacidades de la misma y conforma un contrato programático (<strong>API</strong>) para acceder o alterar los atributos de la misma. Los métodos generalmente ocultan su implementación al resto de clases y se perciben como artefactos de fácil invocación.</li>
</ul>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/clase.png"><img class="aligncenter size-full wp-image-221" title="clase" src="http://aaahaa.files.wordpress.com/2011/04/clase.png?w=604" alt=""   /></a></p>
<p>Fase de ejecución:</p>
<ul>
<li style="text-align:justify;"><strong>Objetos:</strong> Un objeto es un ejemplar de una clase que reside en memoria durante cierto tiempo en la fase de ejecución. Esta formado por un estado definido a partir del valor que toma en cada momento cada atributo de la clase en ese ejemplar.</li>
<li style="text-align:justify;"><strong>Mensajes: </strong>Diremos que un mensaje es el acto de invocación de un objeto en tiempo de ejecución. Los algoritmos de la programación orientada a objetos representan la colaboración entre clases, en términos de mensajes que fluyen de unos a otros.</li>
</ul>
<p style="text-align:justify;">Estos cuatro mecanismos fundamentales pueden ser emulados en v7 perfectamente, teniendo Velneo las herramientas necesarias para ello.</p>
<p>Pero lo que convierte la programación orientada a objetos en el paradigma perfecto para realizar diseños basados en sistemas centrados en abstracciones de datos (clases) es el uso de 6 características fundamentales: <strong>abstracción</strong>, <strong>encapsulación</strong>, <strong>herencia</strong>, <strong>polimorfismo</strong>, <strong>ligadura dinámica</strong> y <strong>genericidad</strong>.</p>
<p style="text-align:justify;">Para no extenderme no explicaremos que obviamente, v7 soporta excelentemente la <strong>abstracción</strong>. Pero por el contrario el resto de características fundamentales ya no las soporta.</p>
<p style="text-align:justify;">La <strong>encapsulación</strong>, es el proceso por el cual la colección de métodos de una clase protege el acceso ilegal al estado de un objeto por parte de otros objetos. De esta forma los atributos de una clase no son directamente alterables sino solo a través de métodos de la clase. Esta característica no se puede soportar en v7 y veremos como si es posible alterar los atributos de una “vClase”.</p>
<p style="text-align:justify;">La <strong>herencia</strong> es un mecanismo que permite organizar un conjunto de clases de acuerdo a una jerarquía, de manera que se pueden compartir datos y métodos entre clases. Tampoco es esta una característica que se pueda construir con los objetos que disponemos en v7.</p>
<p style="text-align:justify;">La herencia permite que un objeto pueda tratarse como una instancia de la clase a la que pertenece y de cualquiera de las clases que son padre de esta, por eso un objeto puede tener diferentes tipos y lo llamamos <strong>polimórfico</strong>. Y lógicamente no es esta una propiedad que soporten los objetos velneo (sin embargo me llama la atención que el “arquitecto” de Velneo si que utiliza el polimorfismo en vDevelop, fijaros por ejemplo como cuando seleccionamos un control de un formulario en el editor, y nos fijamos en la pestaña de propiedades podemos cambiar el tipo de control, por ejemplo hacemos que de “edit” pase a ser un “dibujo”, esto es usar el polimorfismo).</p>
<p style="text-align:justify;">La <strong>ligadura dinámica</strong> es la capacidad que tienen algunos lenguajes orientados a objetos de cambiar en tiempo de ejecución el objeto referenciado por otro objeto polimórficamente compatible. ¿Que creéis que hace el “alternador” en C++? pues hacer uso de la ligadura dinámica, sin embargo en v7 no tenemos posibilidad de emular semejante comportamiento.</p>
<p style="text-align:justify;">Y ya mucho más abstracta seria hacer uso de la <strong>genericidad</strong>, que permite abstraerse de los tipos de objetos con los que trabaja internamente una clase por medio de la parametrización de los mismos y generalizar su manejo para cualquier clase, pero esto sería ya rizar el rizo.</p>
<p style="text-align:justify;">En fin, no vamos a pedir que v7 sea un lenguaje orientado a objetos, por que podéis comprobar que sería mucho el camino que debería recorrer para que así fuera, y personalmente no creo que lo necesite ni es el objetivo de v7. Velneo centra su potencia en su BD y en las herramientas necesarias para la creación de aplicaciones empresariales y este foco no hay que cambiarlo.</p>
<p style="text-align:justify;">Pero sin embargo <span style="color:#333300;">¿podemos crear vClases, haciendo uso de los formalismos fundamentales de la programación orientada a objetos, basando la arquitectura de determinadas partes de nuestro software en el manejo de vClases, en lugar de basarla en la creación de abstracciones funcionales organizadas de forma compositiva como solemos hacer en v7?</span></p>
<p style="text-align:justify;">Si hacemos uso de esta estrategia obtenemos fundamentalmente dos beneficios, podemos crear “artefactos” “vClases” que realicen tareas complejas, que sean de fácil invocación y uso desde cualquier parte de la aplicación, siendo estos elementos cerrados que solo necesitamos programar una sola vez y utilizar siempre en cualquier nueva aplicación.</p>
<p style="text-align:justify;">Y otra que no es tan funcional pero que es muy útil, dado que debemos establecer el contrato programático, la API de la vClase, documentando los atributos de la clase y su colección de métodos, nos obliga a escribir la documentación de desarrollo que todo software necesita, y que habitualmente dejamos para casi nunca, y por supuesto casi nuca se hace.</p>
<p style="text-align:justify;">Pues vamos a recopilar, lo visto hasta ahora:</p>
<ul>
<li style="text-align:justify;">Queremos crear “artefactos” que realicen tareas complejas, que sean de fácil invocación y uso desde cualquier parte de la aplicación.</li>
<li style="text-align:justify;">Deben ser elementos cerrados que solo necesitamos programar una sola vez y utilizar siempre en cualquier nueva aplicación.</li>
<li style="text-align:justify;">Para construir estos artefactos vamos a utilizar el formalismo de la programación orientada a objetos.</li>
<li style="text-align:justify;">Para utilizar el formalismo implementaremos los 4 mecanismos fundamentales de la programación orientada a objetos, <strong>Clases</strong>, <strong>métodos</strong>, <strong>objetos</strong> y <strong>mensajes</strong>, mecanismos que se pueden emular en v7.</li>
<li style="text-align:justify;">Por último debemos tener en cuenta que de las características<strong> </strong><strong>abstracción</strong>, <strong>encapsulación</strong>, <strong>herencia</strong>, <strong>polimorfismo</strong>, <strong>ligadura dinámica</strong> y <strong>genericidad</strong>, solo podemos hacer uso de forma rigurosa de la abstracción y por contra debemos tomar las medidas necesarias en el uso de las vClases para respetar la encapsulación y no alterar el estado o los métodos de las vClases en el uso de las mismas. Para ello habrá que especificar rigurosamente en la API el uso los métodos y atributos de la vClase para que esta no resulte dañada.</li>
</ul>
<p style="text-align:justify;">Como veis casi es un memorando de mis preocupaciones a la hora de basar un desarrollo de software serio, de forma colaborativa, sencilla, potente, cerrada, ordenada, con artefactos completos en los que cada paso suma, y por supuesto 100% reutilizable.</p>
<p style="text-align:justify;">¿Os atrevéis con una primera y sencilla vClase? Aquí os la presento. </p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/almacenamiento-de-clases-2.png"><img class="aligncenter size-full wp-image-222" title="Almacenamiento de clases 2" src="http://aaahaa.files.wordpress.com/2011/04/almacenamiento-de-clases-2.png?w=604" alt=""   /></a></p>
<p>Pero mejor lo dejamos para el próximo bonus track. Je!Je!.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aaahaa.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aaahaa.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aaahaa.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aaahaa.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/aaahaa.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/aaahaa.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/aaahaa.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/aaahaa.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aaahaa.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aaahaa.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aaahaa.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aaahaa.wordpress.com/219/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aaahaa.wordpress.com/219/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aaahaa.wordpress.com/219/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=219&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aaahaa.wordpress.com/2011/04/08/bonus-track/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d91c2e8595d42ea702229dfc87ba1c54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aaahaa</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/dibujo1.png" medium="image">
			<media:title type="html">Dibujo1</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/clase.png" medium="image">
			<media:title type="html">clase</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/almacenamiento-de-clases-2.png" medium="image">
			<media:title type="html">Almacenamiento de clases 2</media:title>
		</media:content>
	</item>
		<item>
		<title>Capitulo 3. Construyendo la BD en v7</title>
		<link>http://aaahaa.wordpress.com/2011/04/05/capitulo-3-construyendo-la-bd-en-v7/</link>
		<comments>http://aaahaa.wordpress.com/2011/04/05/capitulo-3-construyendo-la-bd-en-v7/#comments</comments>
		<pubDate>Tue, 05 Apr 2011 12:13:29 +0000</pubDate>
		<dc:creator>ikonos</dc:creator>
				<category><![CDATA[Ejemplo solución básica.]]></category>

		<guid isPermaLink="false">http://aaahaa.wordpress.com/?p=201</guid>
		<description><![CDATA[Construyendo la BD en Velneo Parafraseando a Fray Luís de León “como íbamos diciendo &#8230;” hemos definido de forma teórica lo necesario para desarrollar tanto la BD como todo lo relacionado con el AEB43. Casi estamos preparados para empezar con v7,  y digo casi porque solo quedaría por definir las especificaciones de usuario, interfaz y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=201&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Construyendo la BD en Velneo</strong></p>
<p style="text-align:justify;">Parafraseando a Fray Luís de León “como íbamos diciendo &#8230;” hemos definido de forma teórica lo necesario para desarrollar tanto la BD como todo lo relacionado con el AEB43. Casi estamos preparados para empezar con v7,  y digo casi porque solo quedaría por definir las especificaciones de usuario, interfaz y usabilidad, es decir ¿como queremos que sea nuestra aplicación? ¿quien la debe usar y como la debe usar? etc…</p>
<p style="text-align:justify;">Cuestiones estas que me parecen pseudo-filosóficas, por lo que dado que soy “novato” en la herramienta y esto es un blog de iniciados, quizás sean estas metas muy elevadas para nuestro pobre bagaje, y he decidido modificar el orden de los capítulos y dejar esto para cuando ya hallamos obtenido nuestra primera beta de vCriatura bajo la deriva de la herramienta Velneo. Es decir, veamos a lo que nos conduce dejarnos llevar, y sopesemos los resultados. Y una vez obtenidos los primeros resultados, definamos nuestras propias exigencias, interfaz, usabilidad especificaciones de usuario y comprobemos si ya nos sirven algunas de las partes generadas por Velneo.</p>
<p style="text-align:justify;">Por lo tanto, manos a la obra y empecemos por la BD Velneo. ¿Puede Velneo representar la BD relacional que postulamos de forma teórica? uah!Ja!Ja! estarán pensando los ya evangelizados en la doctrina Velneo, y la verdad es que tienen razones para reírse de forma compasiva cuando observan desde las alturas a otras BD, por que pocas BD se adaptan con tanta elasticidad al modelo real, pero aún les restan algún camino por recorrer.</p>
<p style="text-align:justify;">¿Como queda pues nuestra BD en Velneo? ¿Chula verdad?</p>
<p> <a href="http://aaahaa.files.wordpress.com/2011/04/bd-tes.png"><img class="aligncenter size-full wp-image-202" title="bd tes" src="http://aaahaa.files.wordpress.com/2011/04/bd-tes.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;"><span id="more-201"></span></p>
<p style="text-align:justify;">Su editor de esquemas nos muestra que el grafo en el modelo de Velneo se adapta fielmente a lo deseado de forma teórica, y mediante fechas azules y rojas representa la naturaleza de las relaciones (o enlaces) entre tablas. En general diremos que las flechas azules representan relaciones de uno a uno (enlace singular) y las rojas de uno a n (enlace plural). Vamos a ver cada una de las tablas de la BD:</p>
<p style="text-align:justify;">Especificación de la estructura de la tabla Bancos, tipo maestro con clave numérica:</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/2-tabla-bancos.png"><img class="aligncenter size-full wp-image-203" title="2 tabla bancos" src="http://aaahaa.files.wordpress.com/2011/04/2-tabla-bancos.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Dado que estamos en un desarrollo pseudo-paso a paso, nos saltaremos el asistente para la creación de tablas y solo diremos que para la creación de nuevos campos pulsaremos:</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/3-nuevo-campo.png"><img class="aligncenter size-full wp-image-204" title="3 NUEVO CAMPO" src="http://aaahaa.files.wordpress.com/2011/04/3-nuevo-campo.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;"> Así si que “cunde”! Y escogeremos los tipos de datos en función de las necesidades de cada campo según lo mostrado en la imagen anterior. Hasta aquí no necesitamos de campos enlazados,  pero por el contrario esta tabla tiene relaciones con otras, ¿como las estableceremos?. Para ello atendamos a las siguientes frases semánticas postuladas antes a nivel teórico:</p>
<p style="text-align:justify;"><em>“una Cta. de tesorería pertenecerá a un banco”</em><em> </em>(enlace singular)<em> y “un banco podrá tener varias cuentas de tesorería”</em> (enlace plural)</p>
<p style="text-align:justify;">Sabemos que existe relación con la tabla “Cuentas Tesorería” pero en la <span style="text-decoration:underline;">tabla maestra</span> “Bancos” ninguno de sus campos es de tipo enlazado a otras tablas, por lo tanto ¿donde debemos indexar y definir enlaces para relacionar ambas tablas?  La respuesta obvia es en la <span style="text-decoration:underline;">tabla submaestra</span> “Cuentas de Tesorería”.</p>
<p style="text-align:justify;">Creemos pues la tabla “Cuentas de Tesorería” con los campos básicos Id y Name, y vamos a establecer la relación con la tabla “Bancos” . Para crear un nuevo campo enlazado haremos uso del botón:</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/4-nuevo-campo-enlazado-tabla-maestra1.png"><img class="aligncenter size-full wp-image-206" title="4 NUEVO CAMPO ENLAZADO TABLA MAESTRA" src="http://aaahaa.files.wordpress.com/2011/04/4-nuevo-campo-enlazado-tabla-maestra1.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Y crearemos un campo enlazado a la tabla “Bancos” con lo que definimos el enlace singular. Por otra parte para crear un nuevo índice:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/5-nuevo-indice.png"><img class="aligncenter size-full wp-image-207" title="5 nuevo indice" src="http://aaahaa.files.wordpress.com/2011/04/5-nuevo-indice.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Haremos uso del botón indicado, y crearemos un nuevo índice banco, con el campo enlazado banco y de esta manera establecer el enlace plural. Al dar de alta el campo enlazado y el índice en la tabla Cuentas Tesorería se crean y definen los enlaces que buscamos y automáticamente aparecen las flechas azules y rojas que así lo indican en el editor de esquemas, además de aparecer el enlace plural en la tabla bancos :</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/04/6-enlace-plural.png"><img class="aligncenter size-full wp-image-208" title="6 enlace plural" src="http://aaahaa.files.wordpress.com/2011/04/6-enlace-plural.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">de forma que la tabla “Cuentas Tesorería” queda así:</p>
<p style="text-align:justify;"> <a href="http://aaahaa.files.wordpress.com/2011/04/7-tabla-ctas-teso1.png"><img class="aligncenter size-full wp-image-210" title="7 tabla ctas teso" src="http://aaahaa.files.wordpress.com/2011/04/7-tabla-ctas-teso1.png?w=604" alt=""   /></a></p>
<p>bueno aquí hay mas tomate, pero eso mejor lo vemos en el próximo post y asi no se hacen tan pesados y son mas fáciles de escribir.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aaahaa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aaahaa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aaahaa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aaahaa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/aaahaa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/aaahaa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/aaahaa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/aaahaa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aaahaa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aaahaa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aaahaa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aaahaa.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aaahaa.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aaahaa.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=201&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aaahaa.wordpress.com/2011/04/05/capitulo-3-construyendo-la-bd-en-v7/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d91c2e8595d42ea702229dfc87ba1c54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aaahaa</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/bd-tes.png" medium="image">
			<media:title type="html">bd tes</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/2-tabla-bancos.png" medium="image">
			<media:title type="html">2 tabla bancos</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/3-nuevo-campo.png" medium="image">
			<media:title type="html">3 NUEVO CAMPO</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/4-nuevo-campo-enlazado-tabla-maestra1.png" medium="image">
			<media:title type="html">4 NUEVO CAMPO ENLAZADO TABLA MAESTRA</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/5-nuevo-indice.png" medium="image">
			<media:title type="html">5 nuevo indice</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/6-enlace-plural.png" medium="image">
			<media:title type="html">6 enlace plural</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/04/7-tabla-ctas-teso1.png" medium="image">
			<media:title type="html">7 tabla ctas teso</media:title>
		</media:content>
	</item>
		<item>
		<title>Capitulo 2 (2). Desarrollo teórico (2).</title>
		<link>http://aaahaa.wordpress.com/2011/01/24/capitulo-2-2-desarrollo-teorico-2/</link>
		<comments>http://aaahaa.wordpress.com/2011/01/24/capitulo-2-2-desarrollo-teorico-2/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 13:58:38 +0000</pubDate>
		<dc:creator>ikonos</dc:creator>
				<category><![CDATA[Ejemplo solución básica.]]></category>

		<guid isPermaLink="false">http://aaahaa.wordpress.com/?p=177</guid>
		<description><![CDATA[2.2 Cuaderno AEB43 Ya tenemos definida la estructura básica de la BD, por lo tanto vamos a centrarnos hoy en: La estructura y normas del cuaderno AEB43. Los algoritmos de importación de cuadernos AEB43 mediante ficheros ASCII. La consolidación de los cuadernos AEB43 en apuntes de tesorería. El temario es aburrido, así que este post [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=177&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><strong>2.2 Cuaderno AEB43</strong></p>
<p style="text-align:justify;">Ya tenemos definida la estructura básica de la BD, por lo tanto vamos a centrarnos hoy en:</p>
<ul style="text-align:justify;">
<li>La estructura y normas del cuaderno AEB43.</li>
<li>Los algoritmos de importación de cuadernos AEB43 mediante ficheros ASCII.</li>
<li>La consolidación de los cuadernos AEB43 en apuntes de tesorería.</li>
</ul>
<p style="text-align:justify;">El temario es aburrido, así que este post necesariamente será <span style="color:#808000;">un poco pesadito de digerir</span>, en primer lugar utilizaremos un documento oficial, de la Comisión de Organización Automación y Servicios (COAS) donde se recogen formalmente la serie de normas y procedimientos bancarios Nº 43 (aquí os dejo el <a title="Cuaderno 43" href="http://aaahaa.files.wordpress.com/2011/01/c-43.pdf">enlace AEB43</a>, que estará permanentemente en la página de descargas del blog). En el documento tenéis la información completa de la norma 43, ya que para el desarrollo de vCriatura  simplificaremos los posibles casos de AEB43, centrándonos en los aspectos básicos y generales de la norma.</p>
<p style="text-align:justify;">Esta sería la primera imagen de un AEB43:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/imagen-aeb43.png"><img class="aligncenter size-full wp-image-178" title="IMAGEN AEB43" src="http://aaahaa.files.wordpress.com/2011/01/imagen-aeb43.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;"><span id="more-177"></span></p>
<p style="text-align:justify;">No intentéis validarla que no funcionaría, los datos no son coherentes pero <a href="http://aaahaa.files.wordpress.com/2011/01/aeb43.png"></a>la imagen nos sirve. En esa imagen tenemos todas las características que comentábamos en el post anterior, es decir:</p>
<ul style="text-align:justify;">
<li>El AEB43 recoje el conjunto de movimientos de tesorería durante un periodo, especificando la fecha, el tipo de movimiento o servicio, y el saldo inicial y final del extracto.</li>
<li>El AEB43 pertenece exclusivamente a una cuenta bancaria de tesorería.</li>
<li>La cuenta bancaria de tesorería pertenece exclusivamente a una entidad bancaria.</li>
</ul>
<p style="text-align:justify;">La <span style="color:#808000;">estructura</span> de los datos la tenéis descrita en detalle en el documento del COAS C-43 anterior, pero como vamos a simplificar básicamente lo que nos dice es que la información del AEB43 se organiza de la siguiente forma:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/aeb431.png"><img class="aligncenter size-full wp-image-180" title="AEB43" src="http://aaahaa.files.wordpress.com/2011/01/aeb431.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Escogeremos la modalidad 2 (ver doc. COAS C-43 no la explico pero diré que es la más común), ademas ya que es posible que un AEB43 contenga extractos de más de una cuenta de tesorería, simplificaremos y lo vamos a reducir a una sola cuenta de tesorería por AEB43 (que también es el caso mas común). A partir de aquí tendremos siempre una <span style="color:#808000;">estructura</span> de registros que reproduce las características implementadas en la BD.</p>
<p style="text-align:justify;">A groso modo como veis el AEB43 tiene un <span style="color:#808000;">registro inicial de cabecera </span>(que es <span style="color:#ff0000;">obligatorio</span>) y  donde los datos que contiene son:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/reg-cabecera.png"><img class="aligncenter size-full wp-image-181" title="REG CABECERA" src="http://aaahaa.files.wordpress.com/2011/01/reg-cabecera.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">(repetimos las especificaciones de los campos las teneis en el doc. COAS C-43)</p>
<p style="text-align:justify;">Despues vienen los bloques de registros de movimientos, con el detalle de los movimientos del extracto y contendrá tantos bloques como movimientos contenga el extracto. Cada bloque de registros contiene obligatoriamente un <span style="color:#808000;">registro principal de movimientos </span>y opcionalmente podrá contener hasta 5 <span style="color:#808000;">registros complementarios de concepto </span>y un <span style="color:#808000;">registro de complementario de equivalencia</span>.</p>
<p style="text-align:justify;">El detalle del <span style="color:#808000;">registro principal de movimientos </span>es el siguiente:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/reg-ppal-mov.png"><img class="aligncenter size-full wp-image-182" title="REG PPAL MOV" src="http://aaahaa.files.wordpress.com/2011/01/reg-ppal-mov.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">El detalle del <span style="color:#808000;">registro complementario de concepto </span>es el siguiente:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/reg-comp-concep.png"><img class="aligncenter size-full wp-image-183" title="REG COMP CONCEP" src="http://aaahaa.files.wordpress.com/2011/01/reg-comp-concep.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Y el detalle del <span style="color:#808000;">registro complementario de equivalencia </span>es el siguiente:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/reg-comp-equiv.png"><img class="aligncenter size-full wp-image-184" title="REG COMP EQUIV" src="http://aaahaa.files.wordpress.com/2011/01/reg-comp-equiv.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Por último para cerrar el fichero se presentarán obligatoriamente el <span style="color:#808000;">registro final de cuenta </span>y el<span style="color:#808000;"> registro de fin </span>de fichero, cuyo contenido es:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/reg-final-cta.png"><img class="aligncenter size-full wp-image-185" title="REG FINAL CTA" src="http://aaahaa.files.wordpress.com/2011/01/reg-final-cta.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/reg-fin-fichero.png"><img class="aligncenter size-full wp-image-186" title="REG FIN FICHERO" src="http://aaahaa.files.wordpress.com/2011/01/reg-fin-fichero.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Con esto ya hemos destripado con bastante detalle el AEB43, pero ¿que relación tiene con nuestra definición de BD? La relación es obvia y gráficamente más:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/aeb43-_-bd.png"><img class="aligncenter size-full wp-image-187" title="AEB43 _ BD" src="http://aaahaa.files.wordpress.com/2011/01/aeb43-_-bd.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">El cuerpo lo almacenaremos en la tabla <span style="color:#3366ff;">Movimientos AEB43 </span>y la cabecera y final del fichero en la tabla<span style="color:#3366ff;"> AEB43</span>.</p>
<p style="text-align:justify;">Ya que desgraciadamente no somos entidades financieras, solo nos tenemos que preocupar de leer correctamente el fichero ASCII y guardarlo en nuestra BD. Entonces ¿cual será el algoritmo de importación del fichero ASCII AEB43 a nuestra BD?</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/algoritmo.png"><img class="aligncenter size-full wp-image-188" title="Algoritmo" src="http://aaahaa.files.wordpress.com/2011/01/algoritmo.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Como veis hemos construido un algoritmo sencillo sin anidamientos, que recorre secuencialmente dos veces el fichero, la primera para leer campos y guardar un registro en la tabla AEB43 (con los registros cabecera, final cuenta y fin fichero) y la segunda vez volvemos a recorrer secuencialmente todo el fichero para leer bloques de registros (ppal mov., compl. concepto y compl. equivalencia) y guardar en tabla Movimientos AEB43 tantos registros como bloques leamos. Resulta obvio decir que al grabar registros de Movimientos AEB43 indicamos también a que AEB43 corresponde el movimiento.</p>
<p style="text-align:justify;">El último paso pues, seria dada una cuenta de tesorería localizar sus AEB43 correspondientes (hecho que ya teníamos resuelto con la relación <span style="color:#ff0000;">R5</span> mencionada en el post anterior) y establecer la correspondencia entre los movimientos AEB43 y los apuntes de tesorería para consolidar el AEB43 en la tabla de apuntes de tesorería. Pero dado que nuestra intención es hacer una aplicación básica, haremos que sea el usuario a través de la interfaz de la aplicación el que gestione los AEB43 y autorice la consolidación de las colecciones de movimientos en apuntes de tesorería:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/consolidacic3b3n.png"><img class="aligncenter size-full wp-image-189" title="consolidación" src="http://aaahaa.files.wordpress.com/2011/01/consolidacic3b3n.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Esta claro que podríamos prescindir de la gestión del usuario para el traspaso de datos entre las tablas Movimientos AEB43 y Apuntes de tesorería, pero resultaría menos didáctica la aplicación y no es lo que pretendemos.</p>
<p style="text-align:justify;">En fin tras este otro rollo, ya tenemos definido de forma teórica lo necesario para desarrollar tanto la BD como todo lo relacionado con el AEB43. Casi estamos preparados para empezar con v7,  y digo casi porque solo quedaría por definir las especificaciones de usuario, interfaz y usabilidad, es decir ¿como queremos que sea nuestra aplicación? ¿quien la debe usar y como la debe usar? ¿desde donde debería acceder el usuario? ¿bajo que medios o dispositivos? ¿como queremos que la aplicación resuelva las tareas? ¿con que herramientas? Etc&#8230;</p>
<p style="text-align:justify;">Pero mejor lo dejamos para el próximo post, por que a mi esas me parecen cuestiones pseudo-filosóficas.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aaahaa.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aaahaa.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aaahaa.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aaahaa.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/aaahaa.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/aaahaa.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/aaahaa.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/aaahaa.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aaahaa.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aaahaa.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aaahaa.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aaahaa.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aaahaa.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aaahaa.wordpress.com/177/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=177&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aaahaa.wordpress.com/2011/01/24/capitulo-2-2-desarrollo-teorico-2/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d91c2e8595d42ea702229dfc87ba1c54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aaahaa</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/imagen-aeb43.png" medium="image">
			<media:title type="html">IMAGEN AEB43</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/aeb431.png" medium="image">
			<media:title type="html">AEB43</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/reg-cabecera.png" medium="image">
			<media:title type="html">REG CABECERA</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/reg-ppal-mov.png" medium="image">
			<media:title type="html">REG PPAL MOV</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/reg-comp-concep.png" medium="image">
			<media:title type="html">REG COMP CONCEP</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/reg-comp-equiv.png" medium="image">
			<media:title type="html">REG COMP EQUIV</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/reg-final-cta.png" medium="image">
			<media:title type="html">REG FINAL CTA</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/reg-fin-fichero.png" medium="image">
			<media:title type="html">REG FIN FICHERO</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/aeb43-_-bd.png" medium="image">
			<media:title type="html">AEB43 _ BD</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/algoritmo.png" medium="image">
			<media:title type="html">Algoritmo</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/consolidacic3b3n.png" medium="image">
			<media:title type="html">consolidación</media:title>
		</media:content>
	</item>
		<item>
		<title>Capitulo 2 (1). Desarrollo teórico.</title>
		<link>http://aaahaa.wordpress.com/2011/01/20/capitulo2-desarrollo-teorico-2/</link>
		<comments>http://aaahaa.wordpress.com/2011/01/20/capitulo2-desarrollo-teorico-2/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 00:48:01 +0000</pubDate>
		<dc:creator>ikonos</dc:creator>
				<category><![CDATA[Ejemplo solución básica.]]></category>

		<guid isPermaLink="false">http://aaahaa.wordpress.com/?p=154</guid>
		<description><![CDATA[2.1. Estructura básica de la BD: Como definimos en el análisis funcional vCriatura será un gestor de cuentas bancarias de Tesoreria normalizado, que debe cubrir  básicamente las siguientes areas: Titulares Bancos Cuentas bancarias Multi-titularidad de cuentas Extractos Apuntes de Tesoreria Gestor de cuadernos AEB43 Importador de ficheros ASCII AEB43 Consolidación cuaderno AEB43 en apuntes de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=154&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><strong>2.1. Estructura básica de la BD:</strong></p>
<p style="text-align:justify;">Como definimos en el análisis funcional <span style="color:#ff0000;"><strong>vCriatura</strong></span> será un gestor de cuentas bancarias de Tesoreria normalizado, que debe cubrir  básicamente las siguientes areas:</p>
<ul style="text-align:justify;">
<li>Titulares</li>
<li>Bancos</li>
<li>Cuentas bancarias</li>
<li>Multi-titularidad de cuentas</li>
<li>Extractos</li>
<li>Apuntes de Tesoreria</li>
<li>Gestor de cuadernos AEB43</li>
<li>Importador de ficheros ASCII AEB43</li>
<li>Consolidación cuaderno AEB43 en apuntes de tesoreria.</li>
</ul>
<p style="text-align:justify;">Solo con leer las funcionalidades pedidas, todos os habreis hecho una idea de los aspectos básicos que hay que cubrir, pero ¿pensaís en los mismos que yo?.</p>
<p style="text-align:justify;">Seguramente cada uno de nosotros tengamos un concepto similar, pero distinto, así que inicialmente vamos a sobrevolar estos aspectos básicos, por lo que quizás no hagamos más que decir obviedades (del estilo &#8211; <span style="color:#3366ff;"><em>“esto es una manzana”</em> </span>) pero aunque resulte un poco estúpido, será necesario para definir teóricamente la solución y poder compararla posteriormente con los resultados (si somos capaces de obtenerlos, claro esta).</p>
<p style="text-align:justify;"><span id="more-154"></span></p>
<p style="text-align:justify;"><em>Una <span style="color:#808000;">cuenta bancaria </span>es un contrato financiero con una entidad bancaria en virtud del cual se registran el balance (es decir el saldo) y los subsiguientes <span style="color:#808000;">movimientos</span> (apuntes) de dinero del cliente (o <span style="color:#808000;">tiltular de la cuenta</span>).</em></p>
<p style="text-align:justify;">Podrán ser una o varias pesonas los titulares de una cuenta bancaria y los servicios que vayan asociados a una cuenta bancaria dependerán en gran medida de la entidad y de la finalidad de la cuenta, en nuestro caso particular hemos centrado el tema especificamente en cuentas <span style="color:#808000;">bancarias de “tesoreria”.</span></p>
<p style="text-align:justify;">Para las <span style="color:#808000;">cuentas bancarias de tesoreria</span>, los servicios más comunes suelen ser, por ejemplo:</p>
<ul style="text-align:justify;">
<li>Ingresos y pagos en efectivo.</li>
<li>Ingresos y pagos de cheques.</li>
<li>Domiciliaciones de recibos.</li>
<li>Emisión recepción de Transferencias.</li>
<li>Pago de impuestos</li>
<li>etc &#8230;</li>
</ul>
<p style="text-align:justify;">El <span style="color:#808000;">conjunto de movimientos </span>(apuntes) de una <span style="color:#808000;">cuenta bancaria </span>que refleja los sevicios asociados a la cuenta de tesoreria, será en consecuencia nuestro <em>“<span style="color:#808000;">extracto bancario</span>”.</em></p>
<p style="text-align:justify;">El primer concepto fundamental es el de <em>“<span style="color:#808000;">extracto bancario normalizado</span>”</em> que en realidad es la situación que pretendemos emular y gestionar con <span style="color:#ff0000;"><strong>vCiratura</strong></span>. Cuando pensamos en un extracto bancario pensamos en una imagen mas o menos como esta:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/extracto2.jpg"><img class="aligncenter size-full wp-image-157" title="extracto" src="http://aaahaa.files.wordpress.com/2011/01/extracto2.jpg?w=604" alt=""   /></a><a href="http://aaahaa.files.wordpress.com/2011/01/extracto1.jpg"></a></p>
<p style="text-align:justify;">En ella reflejamos todas las definiciones recogidas anteriormente:</p>
<ul style="text-align:justify;">
<li>El extracto recoje el conjunto de movimientos de tesoreria durante un periodo, espefificando la fecha, el tipo de movimiento o servicio, y el saldo (balance) tras el movimiento.</li>
<li>El extracto pertenece exclusivamente a una cuenta bancaria de tesoreria.</li>
<li>La cuenta bancaria de tesoreria pertenece exclusivamente a una entidad bancaria.</li>
<li>La cuenta bancaria de tesoreia podrá tener uno o varios titulares.</li>
</ul>
<p style="text-align:justify;">En consecuencia nuestra solución deberá reproducir y gestionar este conjunto de relaciones. ¿Cual será pues el modelo de datos? ¿Que estructura de tablas utilizaremos y como las relacionarenos para reproducir la situación?</p>
<p style="text-align:justify;">Puntualizaré que estamos en el desarrollo teórico, y para nosotros de momento no existe Velneo. Teniendo en cuenta esto, la estructura de datos elegida, aplicable a cualquier BD relacional sería:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/modelo-datos11.png"><img class="aligncenter size-full wp-image-159" title="modelo datos1" src="http://aaahaa.files.wordpress.com/2011/01/modelo-datos11.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">En primer lugar elegimos una tabla <span style="color:#0000ff;">Bancos</span> donde recogemos los datos de las entidades bancarias, una tabla <span style="color:#0000ff;">Ctas.Tesoreria </span>donde recogemos los datos generales de las cuentas de tesoreria, y estableceremos la relacion (<span style="color:#ff0000;">R1</span>) entre estas tablas indexando las cuentas de tesoreria por banco.</p>
<p style="text-align:justify;">En segundo lugar, para resolver la <span style="color:#808000;">Multi-titularidad</span> de cuentas en la que una cuenta de tesoreria podrá tener varios titulares y un titular podrá tener varias cuentas de tesoreria, ademas de crear la tabla <span style="color:#0000ff;">Titulares</span> donde recogemos los datos de los titulares, creamos una tabla puente <span style="color:#0000ff;">Titulares-Cuentas</span> indexando la relacion entre ambas tablas doblemente, donde definiremos una relación (<span style="color:#ff0000;">R2</span>) para resolver que cuentas de tesoreria tiene un determinado titular, y otra relación (<span style="color:#ff0000;">R3</span>) para resolver que titulares tiene una determinada cuenta de tesoreria.</p>
<p style="text-align:justify;">Y en tercer lugar, creamos una tabla  <span style="color:#0000ff;">Apuntes</span> donde recogeremos todos los movimientos de tesoreria, estableciendo la relación (<span style="color:#ff0000;">R4</span>) entre esta tabla y la tabla <span style="color:#0000ff;">Ctas. Tesoreria </span>indexando los apuntes de tesoreria por cuenta de tesoreria.</p>
<p style="text-align:justify;">Hasta ahora, podríamos decir que hemos definido teóricamente la primera parte de la estructura básica de la BD, otra cuestión será ¿como utilizamos Velneo para implementar esta estructura? y sobre todo ¿que definiciones y objetos v7 utilizaremos para implementar las relaciones (<span style="color:#ff0000;">R1</span>, <span style="color:#ff0000;">R2</span>, <span style="color:#ff0000;">R3</span>, <span style="color:#ff0000;">R4</span>) definidas de forma teórica?</p>
<p style="text-align:justify;">Las respuestas a estas perguntas las encontraremos en los capitulos dedicados a la implementación y no en la parte teórica, por lo que no nos vamos a adelantar ya que antes tenemos que realizar otras tareas previas.</p>
<ul style="text-align:justify;">
<li>Debemos definir teóricamente la segunda parte de la estructura básica de la BD, es decir la definición y gestión del cuaderno 43 del Consejo Superior Bancario, dando por cerrada la definición básica de la DB.</li>
<li>Debemos definir los procedimientos de importación de AEB43 mediante ficheros ASCII y definir la consolidación de los cuadernos AEB43 en apuntes de tesoreria.</li>
<li>Y por último deberemos definir los requerimientos de usuario, interfaz y usabilidad.</li>
</ul>
<p style="text-align:justify;">Vamos pues a definir la 2ª parte de la BD, y para ello lo primero que tendremos que dejar claro es ¿que es un gestor de <span style="color:#808000;">cuadernos AEB43</span>? O mejor dicho ¿que es un <span style="color:#808000;">AEB43</span>?.</p>
<p style="text-align:justify;">Pues bien, las entidades bancarias españolas a traves de sus respectivas asociaciones, Asociación Española de Banca (<span style="color:#808000;">AEB</span>), Confederación Española de Cajas de Ahorros (CECA) y Unión Nacional de Cooperativas de Credito (UNACC), crearon un marco comun, con una serie de <span style="color:#808000;">procedimientos y normas de organización y comunicación de información bancaria </span>de determinados servicios comunes a todas ellas, para la automatización de procesos entre los clientes y la banca.</p>
<p style="text-align:justify;">Esta serie de procedimientos y normas vienen recogidos en lo que llamamos <span style="color:#808000;">cuadernos bancarios</span>, y cada uno de estos cuadernos estan asociados a diversos serviciós que prestan las entidades bancarias a sus clientes, por ejemplo:</p>
<ul style="text-align:justify;">
<li>AEB19 (o cuaderno 19, C-19): Emision de recibos domicialidos.</li>
<li>AEB58 (o cuaderno 58, C-58): Emisión de anticipos de crédito.</li>
<li>AEB34 (o cuaderno 34, C-34): Emision de transferencias.</li>
<li>AEB32 (o cuaderno 32, C-32): Emision de efectos comerciales.</li>
<li>Etc &#8230;</li>
</ul>
<p style="text-align:justify;">La utilidad de estos cuadernos en la automatización de procedimientos bancarios con sus clientes es sencilla pero potente, y permite agilizar los procedimientos de comunicación entre ambos. Como todos sabemos que hay clientes bancarios que tienen la necesidad de emitir de una sola vez, por ejemplo 250 ó 1.000 transferencias, lo del número es lo de menos. Seria una tarea muy ardua si nos plantasemos en la ventanilla de un banco y le dijeramos al cajero – <span style="color:#800080;"><em>Buenos dias! Quisiera emirtir estas 3.000 transferencias</em></span>. La cara del cajero seria un poema. Para evitar esta situación utilizariamos un cuaderno AEB34 (C-34) donde escribiriamos toda la imformación necesaria para la emisión de las 3.000 transferencias con las normas contempladas en el AEB34 para la correcta harmonización de los datos y le entregariamos al cajero el cuaderno AEB34, con lo que la cara del cajero se relajaría y respiraria de alivio <span style="color:#800080;">uf!</span> sobre todo al comprobar que el cuaderno 34 no es más que un <span style="color:#800080;">fichero de texto plano ASCII </span>donde toda la informacion esta normalizada para su lectura automatica por su ordenador.</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/bancos.png"><img class="aligncenter size-full wp-image-160" title="BANCOS" src="http://aaahaa.files.wordpress.com/2011/01/bancos.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Esta situación en la que utilizamos un cuaderno AEB para comunicar o solicitar servicios a una entidad bancaria, lógicamente puede ser <span style="color:#808000;">bidireccional</span> y puede ser la entidad bancaria la que nos comunique o preste servicios a traves de un cuaderno AEB.</p>
<p style="text-align:justify;">A estas alturas muchos de vosotros sabreís o habeis imaginado que el cuaderno AEB43 es el cuaderno bancario con el que las entidades bancarias españolas pueden comunicar los extractos bancarios de una cuenta de tesoreria a sus clientes a traves de un fichero de texto plano ASCII con las normas y el formato contemplado en el AEB43.</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/bancoss.png"><img class="aligncenter size-full wp-image-161" title="BANCOSS" src="http://aaahaa.files.wordpress.com/2011/01/bancoss.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Asi pues, partimos de una situación en la que nuestra entidad bancaria nos comunicará-emitirá a peticion nuestra cuadernos AEB43, que contendran el extracto bancario de un periodo concreto de una determinada cuenta de tesoreria de nuestra titularidad.</p>
<p style="text-align:justify;">Es decir:</p>
<ul style="text-align:justify;">
<li>El AEB43 recoje el conjunto de movimientos de tesoreria durante un periodo, espefificando la fecha, el tipo de movimiento o servicio, y el saldo inicial y final del extracto.</li>
<li>El AEB43 pertenece exclusivamente a una cuenta bancaria de tesoreria.</li>
<li>La cuenta bancaria de tesoreria pertenece exclusivamente a una entidad bancaria.</li>
</ul>
<p style="text-align:justify;">En consecuencia la estructura básica del modelo de datos que elegiremos será:</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/modelo-de-datos-212.png"><img class="aligncenter size-full wp-image-175" title="modelo de datos 21" src="http://aaahaa.files.wordpress.com/2011/01/modelo-de-datos-212.png?w=604" alt=""   /></a> En primer lugar, partiendo de nuestra anterior tabla <span style="color:#0000ff;">Ctas.Tesoreria </span>donde recogimos los datos generales de las cuentas de tesoreria, vamos a establecer la relacion (<span style="color:#ff0000;">R5</span>) entre esta y la nueva tabla <span style="color:#0000ff;">AEB43</span> indexando los cuadernos AEB43 por cuenta de tesoreria. Ni que decir tiene que en la tabla <span style="color:#0000ff;">AEB43</span> recogeremos todos los datos generales del cuaderno 43.</p>
<p style="text-align:justify;">Y en segundo lugar, crearemos la tabla <span style="color:#0000ff;">Movimientos AEB43 </span>donde recogeremos todos los movimientos del cuaderno AEB43, y definiremos la relacion (<span style="color:#ff0000;">R6</span>) indexando los movimientos del cuaderno por cuaderno AEB43.</p>
<p style="text-align:justify;">Con esto la estructura básica de la BD esta completa y pasaremos al siguiente punto teórico, que es mostrar la estructura y normas del cuanerdo AEB43, los algoritmos de importación de cuadernos AEB43 mediante ficheros ASCII, y definir por fin la consolidación de los cuadernos AEB43 en apuntes de tesoreria, lo que significaria que hemos conseguido un procedimiento por el cual no es necerario que un usuario de la aplicación vaya dando de alta los apuntes de tesoreria de una cuenta bancaria, uno a uno. Si no que utilizando los servicios bancarios, mediante la importación de un fichero ASCII, que no es otra cosa que un AEB43 podamos dar de alta esos registros de movimientos bancarios en nuestra BD de forma automatizada.</p>
<p style="text-align:justify;"><a href="http://aaahaa.files.wordpress.com/2011/01/bancosss.png"><img class="aligncenter size-full wp-image-164" title="BANCOSSS" src="http://aaahaa.files.wordpress.com/2011/01/bancosss.png?w=604" alt=""   /></a></p>
<p style="text-align:justify;">Esto lo dejaremos para el próximo capitulo &#8230; jeje</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aaahaa.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aaahaa.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aaahaa.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aaahaa.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/aaahaa.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/aaahaa.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/aaahaa.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/aaahaa.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aaahaa.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aaahaa.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aaahaa.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aaahaa.wordpress.com/154/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aaahaa.wordpress.com/154/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aaahaa.wordpress.com/154/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aaahaa.wordpress.com&amp;blog=17793839&amp;post=154&amp;subd=aaahaa&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aaahaa.wordpress.com/2011/01/20/capitulo2-desarrollo-teorico-2/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d91c2e8595d42ea702229dfc87ba1c54?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">aaahaa</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/extracto2.jpg" medium="image">
			<media:title type="html">extracto</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/modelo-datos11.png" medium="image">
			<media:title type="html">modelo datos1</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/bancos.png" medium="image">
			<media:title type="html">BANCOS</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/bancoss.png" medium="image">
			<media:title type="html">BANCOSS</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/modelo-de-datos-212.png" medium="image">
			<media:title type="html">modelo de datos 21</media:title>
		</media:content>

		<media:content url="http://aaahaa.files.wordpress.com/2011/01/bancosss.png" medium="image">
			<media:title type="html">BANCOSSS</media:title>
		</media:content>
	</item>
	</channel>
</rss>
