<?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>Memorias de OCA</title>
	<atom:link href="http://ocablog08.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ocablog08.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Thu, 29 May 2008 11:03:13 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ocablog08.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Memorias de OCA</title>
		<link>http://ocablog08.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ocablog08.wordpress.com/osd.xml" title="Memorias de OCA" />
	<atom:link rel='hub' href='http://ocablog08.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Entre hilos y madejas&#8230;&#8230;. :)</title>
		<link>http://ocablog08.wordpress.com/2008/05/23/entre-hilos-y-madejas/</link>
		<comments>http://ocablog08.wordpress.com/2008/05/23/entre-hilos-y-madejas/#comments</comments>
		<pubDate>Fri, 23 May 2008 11:51:10 +0000</pubDate>
		<dc:creator>ocablog08</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ocablog08.wordpress.com/?p=13</guid>
		<description><![CDATA[PRÁCTICA 10!!!! Una pequeña introducción….   ·                  PROCESOS   - Los procesos que hay en un momento determinado ejecutándose en un ordenador se pueden ver en el administrador de tareas. Simultáneamente puede haber varios aunque nosotros no nos demos cuenta, esto es debido a los hilos de ejecución que comentaremos más adelante. Windows es multitarea, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=13&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><em><span style="font-size:18pt;">PRÁCTICA 10!!!!</span></em></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><em></em></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><em></em></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><em><span style="font-size:16pt;">Una pequeña introducción….</span></em></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><span style="font-size:small;"> </span></span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span style="font-size:14pt;color:#cc00cc;font-family:Symbol;"><span>·<span style="font:7pt;">                  </span></span></span><strong><span style="font-size:14pt;color:#cc00cc;">PROCESOS</span></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><span style="font-size:small;"> </span></span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><span style="font-size:small;">- Los procesos que hay en un momento determinado ejecutándose en un ordenador se pueden ver en el administrador de tareas.</span></span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><span style="font-size:small;">Simultáneamente puede haber varios aunque nosotros no nos demos cuenta, esto es debido a los hilos de ejecución que comentaremos más adelante.</span></span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><span style="font-size:small;">Windows es multitarea, puede tener<span>  </span>50 procesos ejecutándose a la vez y nosotros no ser conscientes de ello, aunque realmente no se ejecutan todos a la vez como pensamos, sino que se ejecuta un proceso en cada momento, en un rango de milisegundo, este orden de milisegundos nos hace creer que se hace todo a mogollón en el mismo momento.</span></span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><span style="font-size:small;">Por tanto, podemos concluir con que un proceso hace sus tareas secuencialmente.</span></span></p>
<div></div>
<div><span></span></div>
<p><span><span style="font-size:small;"></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span style="font-size:14pt;color:#cc00cc;font-family:Symbol;"><span>·<span style="font:7pt;">                  </span></span></span><strong><span style="font-size:14pt;color:#cc00cc;">Diferencia entre programas y procesos:</span></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><span> </span></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><span style="font-family:Times New Roman;">-<span style="font:7pt;"> </span></span></span><span><span> </span>La diferencia más destacada es que los programas necesitan los procesos <span> </span>los programas necesitan procesos para funcionar.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>En realidad, un programa y un proceso es lo mismo, no hay diferencia entre ambos, son una línea de código que se puede ejecutar.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>Un programa es lanzado a mano con una ventanita</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><span>* <span style="color:#ff0000;">THEADS EN JAVA &#8211; Hilo de ejecución</span></span></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>- En un proceso hay hilos de ejecución, los cuales facilitan la ejecución de tareas; (reparte equitativamente el tiempo de ejecución), <span> </span>de esta forma se pueden ejecutar a la vez , en la práctica son dos hilos haciendo dos tareas; </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><em><span style="font-size:16pt;color:#333399;">EJERCICIO 1:</span></em></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span style="font-family:Wingdings;"><span>Ø<span style="font:7pt;">    </span></span></span><span>Clase </span><span>&#8220;DING!&#8221; : nos muestra un mensaje ding cada vez que pulsamos la tecla ENTER de nuestro ordenador.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span style="font-family:Wingdings;"><span>Ø<span style="font:7pt;">    </span></span></span><span>Clase &#8220;DONG!&#8221; : nos muestra por pantalla el mensaje dong cada segundo. </span><span> </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><span style="font-family:Wingdings;"><span>Ø <span style="font-family:'Times New Roman';"> <span style="font-size:small;font-family:Bell MT;">Clase &#8220;DingDongPoor&#8221; :nos muestra por pantalla el mensaje ding cada vez que pulsamos la tecla ENTER y el mensaje dong cada segundo.</span></span></span></span></span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>- Este programa no funciona correctamente puesto que espera a que el usuario pulse la tecla ENTER para mostrar por pantalla el dong una vez pasado 1 segundo.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>Si el usuario está sin pulsar ninguna tecla, el programa se queda congelado y no muestra nada.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><em><span style="font-size:16pt;color:#333399;">EJERCICIO 2:</span></em></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><em><span> </span></em></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>En un sistema donde se están ejecutando dos procesos, cada uno tendrá la mitad del tiempo del tiempo de ejecución total para ejecutarse, es decir, el tiempo de ejecución se reparte entre los procesos de forma equitativa independientemente de los threas que tenga cada proceso.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:-3.35pt;margin:0 25.5pt 0 -5.65pt;"><span><span style="font-family:Times New Roman;">-<span style="font:7pt;">   </span></span></span><span>Sinceramente no le hemos pillado mucho el truquillo a esto de los Threads, pero intentaremos explicarlo como buenamente hemos entendido; si hay algún tipo de error o vosotros creéis que lo habéis entendido de una forma más fácil esperamos que nos resolváis las dudas.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:5.65pt;margin:0 25.5pt 0 -5.65pt;"><strong><span>Runnable r = new Runnable()</span></strong><span> &#8212;&gt;<span>  </span>Runnable es una interfaz, por lo general no se puede crear un objeto de tipo interfaz.</span></p>
<p class="MsoNormal" style="text-indent:5.65pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><span>r</span></strong><span>= referencia de tipo Runnable.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>La línea anterior es una sintaxis válida para crear un objeto cuya clase implementa un objeto de tipo Runnable.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>-La <strong><em>clase Thread</em></strong> tiene un método característico <strong><span style="color:#0000ff;">start()</span></strong>, de una forma u otra, esta clase está relacionada con Runnable, de esta forma, si sólo quiero imprimir el nombre, lo indico en el método run(); </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><span>Thread t = new Thread(r);</span></strong><span> &#8212;&gt; obtenemos un objeto tipo r que implementa la interfaz de runnable, y se lo paso al constructor de Thread</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -9pt;"><strong><span>t.start();</span></strong><span> &#8212;&gt; este método se encarga de hacer la bifurcación en un hilo y ejecuta lo que va dentro del método run(); </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -9pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>start() crea primero<span>  </span>un thread a parte y ejecuta el otro método.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<ul style="margin-top:0;" type="disc">
<li class="MsoNormal"><span>Cuando el código del programa principal acaba, se acaba el hilo de ejecución.</span></li>
<li class="MsoNormal"><span>Cuando termina el código del método run(), se termina el hilo.</span></li>
<li class="MsoNormal"><span>Si se termina el código de la raíz, se termina todo, aunque el código del hilo no haya terminado.</span></li>
</ul>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span> </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><span>PrintThreadName();</span></strong><span> &#8212;&gt; este código se ejecuta en paralelo con el hilo creado en t.start(); </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p> </p>
<p> </p>
<p></span></p>
<h4 class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>Ø<span style="font:7pt;">    </span></span><span><span> </span>El programa </span><span>TwoThreadsSimple, es más sencillo con respecto a la implementación aunque la funcionalidad es la misma; </span></h4>
<h4 class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>Alguna de las diferencias son:</span></h4>
<h4 class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>.- Implementa directamente en la cabecera de la clase.</span></h4>
<h4 class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>.- Crea un objeto de su propia clase y se la pasa como parámetro al constructor de Thread.</span></h4>
<h4 class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>Ø<span style="font:7pt;">    </span></span><span>El programa TwoThreadsSimple2: la única diferencia notable es que es una clase que hereda de Thread, después el código es prácticamente el mismo que en la clase TwoThreadsSimple.</span></h4>
<h4 class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>Dentro de este código dispongo de la posibilidad de hacer start(), porque estoy en la clase Thread que tiene ese código; implementaremos también el método run().</span></h4>
<h4 class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>En este caso, tenemos un programa con dos Threads que acceden a una base de datos en forma de vector , que es un atributo de la clase que los contiene. Se podría acceder al vector desde cualquiera de los hilos, ya que es un elemento compartido para ambos hilos, </span></h4>
<h4><span> </span><span style="font-size:small;"><strong><em><span style="font-size:16pt;color:#333399;">EJERCICIO 3:</span></em></strong><strong><em></em></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><em><span style="font-size:14pt;"><span style="color:#008000;">Condición de Carrera</span></span></em></strong><span><span style="color:#008000;">:</span> es la situación producida cuando dos o más threads intentan acceder en el mismo momento al recurso compartido; </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>Podemos decir, que es el acceso de dos hilos a un determinado elemento.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>Esta situación no se puede dar puesto que ambos no van a acceder a la vez, ya que no lo harán a la vez, sino que van por turnos.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>Lo que se destaca en la expresión “<strong><em>Condición de Carrera”</em></strong> es la “intención” de ambos Threads en acceder al mismo tiempo.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><span>No tenemos ninguna garantía de en que orden los threads </span></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><span>van a ser ejecutados</span></strong><span>.</span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span style="text-decoration:underline;"><span style="color:#800080;">&#8230;  Continuará &#8230;.</span></span></p>
<div></div>
<div><span></span></div>
<p><span><span style="font-size:small;"></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;">Como lo prometido es deuda&#8230;.</p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;">&#8230; Aquí tenemos el siguiente capítulo <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;">- En la clase &#8220;RaceConditionSolved&#8221; lo que pretendemos es crear una solución para la condición de carrera, esto se consigue con:</p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;">_Introducimos información en la cola desde un hilo, y desde el otro buscamos la información en la misma cola.</p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><em></em></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><strong><em><span style="font-size:16pt;color:#333399;">EJERCICIO 4:</span></em></strong></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>El <em>event-dispaching thread</em> se arranca automáticamente cuando llamas por primera vez a cualquiera de estos métodos: <tt>setVisible()</tt>, <tt>show()</tt>, <tt>pack()</tt>. </span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span>ambos métodos se utilizan para hacer visible las aplicaciones gráficas, a unos más y a otros menos, pero a todos nos suenan bastante estos métodos, no es así? <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </span><span><em> </em></span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><em>Como decía en el ejercicio anterior, un hilo introduce información en una cola y otro obtiene esa información; </em></span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><em>En este caso, un thread puede añadir un evento a la cola de eventos mediante los siguientes métodos:</em></span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><em>-&gt; </em><span style="font-family:Courier New;">static void javax.swing.SwingUtilities.invokeLater(Runnable doRun) == encola los eventos en la cola del event-dispaching thread, este evento hace ejecutarse el método run();</span></span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;">
<div class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span><span style="font-family:Courier New;">-&gt; static void javax.swing.SwingUtilities.invokeAndWait(Runnable doRun)== el evento que se encola, es el que ejecuta el método run(), pero con la diferencia de que bloquea la ejecución del hilo que lo llama hasta que la tarea ha sido realizada. </span></span></p>
<div class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span></span></p>
<div class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"><span></span></p>
<div class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"></div>
<p> </p>
<p> </p>
<p> </p>
<div><span><span style="font-family:Courier New;"></p>
<div><span><span style="font-size:small;"></p>
<div><span><span style="font-size:small;"></p>
<div><span></span></div>
<p></span></span></div>
<p></span></span></div>
<p></span></span></div>
<p><span><span style="font-family:Courier New;"><span><span style="font-size:small;"><span><span style="font-size:small;"><span><span style="font-family:Courier New;"></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p> </p>
<div><span><span style="font-size:small;"></p>
<div><span><span style="font-size:small;"> </p>
<p></span></span> </p>
</div>
<p></span></span></p>
<div><span><span style="font-size:small;"></p>
<div><span><span style="font-size:small;"></p>
<div></div>
<p></span></span></div>
<p></span></span></div>
</div>
<p></span></span></span></span></span></span></span></span><span><span style="font-size:small;"><span><span style="font-size:small;"><span></p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p> </p>
<p> </p>
<p></span></span></span></span></span> </p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p class="MsoNormal" style="text-indent:8.5pt;margin:0 25.5pt 0 -5.65pt;"> </p>
<p> </p>
</div>
</div>
</div>
<p></span></span></span></h4>
<p></span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocablog08.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocablog08.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocablog08.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocablog08.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocablog08.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocablog08.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocablog08.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocablog08.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocablog08.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocablog08.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocablog08.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocablog08.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocablog08.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocablog08.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocablog08.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocablog08.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=13&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocablog08.wordpress.com/2008/05/23/entre-hilos-y-madejas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07bc33d6f9d53de0a9031858b6660165?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocablog08</media:title>
		</media:content>
	</item>
		<item>
		<title>Resurgimos&#8230;.</title>
		<link>http://ocablog08.wordpress.com/2008/05/22/resurgimos/</link>
		<comments>http://ocablog08.wordpress.com/2008/05/22/resurgimos/#comments</comments>
		<pubDate>Thu, 22 May 2008 18:36:44 +0000</pubDate>
		<dc:creator>ocablog08</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ocablog08.wordpress.com/?p=12</guid>
		<description><![CDATA[PRÁCTICA 9: El esperado SWING….. INTRODUCCIÓN: - JFrame &#8211;&#62; La clase JFrame implementa un objeto ventana, JFrame es una extensión de la clase Frame del paquete AWT. - JPanel &#8211;&#62; Un panel es un contenedor (componente no visible que contiene uno o más componentes) - JLabel &#8211;&#62; Las etiquetas nos permiten mostrar información o mostrar [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=12&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="text-align:left;"><strong><em><span style="font-size:18pt;">PRÁCTICA 9:</span></em></strong></p>
<p class="MsoNormal" style="text-align:left;"><strong><em><span style="font-size:18pt;"> </span></em></strong></p>
<p class="MsoNormal" style="text-align:left;"><strong><em><span style="font-size:18pt;color:#333399;">El esperado SWING…..</span></em></strong></p>
<p class="MsoNormal" style="text-align:left;"><strong><em><span style="color:#009999;">INTRODUCCIÓN:</span></em></strong></p>
<p class="MsoNormal" style="text-align:left;">
<p class="MsoNormal" style="text-align:left;"><span style="font-size:11pt;">- JFrame </span><span style="font-size:11pt;font-family:Wingdings;"><span>&#8211;&gt; </span></span><span style="font-size:11pt;">La clase </span><tt><span style="font-size:11pt;">JFrame</span></tt><span style="font-size:11pt;"> implementa un objeto ventana, </span><tt><span style="font-size:11pt;">JFrame</span></tt><span style="font-size:11pt;"> es una extensión de la clase </span><tt><span style="font-size:11pt;">Frame</span></tt><span style="font-size:11pt;"> del paquete </span><tt><span style="font-size:11pt;">AWT</span></tt><span style="font-size:11pt;">.</span></p>
<p class="MsoNormal" style="text-align:left;"><span style="font-size:11pt;">- JPanel </span><span style="font-size:11pt;font-family:Wingdings;"><span>&#8211;&gt; </span></span><span style="font-size:11pt;">Un panel es un contenedor (componente no visible que contiene uno o más componentes) </span></p>
<p class="MsoNormal" style="text-align:left;"><span style="font-size:11pt;">- JLabel</span><span style="font-size:11pt;font-family:Wingdings;"><span> &#8211;&gt; </span></span><span style="font-size:11pt;">Las etiquetas nos permiten mostrar información o mostrar una imagen</span></p>
<h2><span style="color:#9735c9;"><strong><em><span>EJERCICIO 1:</span></em></strong></span></h2>
<p class="MsoNormal" style="text-align:left;"><span style="font-size:11pt;">- En este apartado no hay mucho que hacer en referente a programación pura y dura, lo único que hemos hecho ha sido comentar la función de cada una de las líneas; </span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><span style="font-size:11pt;">Destacando aquellas que pueden ser más raras:</span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;">-<span style="font-size:11pt;"><span><span> </span></span></span><!--[endif]--><strong><span style="font-size:11pt;">frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);</span></strong><span style="font-size:11pt;"> &#8212;&gt; Con esta línea, cerramos la ventana también en la consola, de esta forma nos sale dentro de la misma consola un fin de ejecución.</span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;"><span>-<span> </span></span></span><!--[endif]--><strong><span style="font-size:11pt;">JPanel contentPane = (JPanel) frame.getContentPane();</span></strong><span style="font-size:11pt;"> &#8212;-&gt; En esta sentencia, inicializamos un panel a partir de la conversión del panel de ventana.</span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;"><span>-<span> </span></span></span><!--[endif]--><strong><span style="font-size:11pt;">frame.setSize(100,50);</span></strong><span style="font-size:11pt;"> &#8212;&gt;<span> </span>Le damos una dimensión a la ventana; esta sentencia; esto nos sirve para ampliar la ventana, modificando 100 y 50.</span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;font-family:Wingdings;"><span>Ø<span> </span></span></span><!--[endif]--><strong><span style="font-size:11pt;">Creamos a continuación una clase con una etiqueta en la que cambiemos el color de fondo.</span></strong></p>
<h3 style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;font-weight:normal;"><span>-<span> </span></span></span><!--[endif]--><span style="font-size:11pt;">Utilizamos para cambiar el color de fondo el método </span><em><span style="font-size:11pt;">setBackground ()</span></em><span style="font-size:11pt;">, pasándole como parámetro Color.color, siendo color= el color que queramos ponerle, en nuestro caso, pusimos el fondo de pantalla de color azul, por lo tanto… pusimos:</span></h3>
<h3 style="text-align:left;"><span style="color:#0000ff;"><span style="font-size:11pt;"> label.setBackground(Color.BLUE);</span></span></h3>
<p style="text-align:left;">
<h3 style="text-align:left;"><span style="font-size:11pt;"><span> </span></span><span style="color:#ff0000;"><span style="font-size:14pt;"> MUY IMPORTANTEEE!!!!</span></span></h3>
<h3 style="text-align:left;"><span style="font-size:11pt;"> Antes de poner el código anterior tenemos que poner: </span><span style="font-size:14pt;">label.setOpaque(true);</span><span style="font-size:11pt;"> si no, no nos saldrá nada, puesto que es como si la ventana fuese trasparente y no se puede pintar.</span></h3>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;font-family:Wingdings;"><span>Ø<span> </span></span></span><!--[endif]--><strong><span style="font-size:11pt;">Creamos la clase HelloWorldGUIDelayed:</span></strong></p>
<p class="MsoBodyTextIndent" style="text-align:left;">En esta clase, conseguimos retener la ejecución durante un tiempo<span> </span>con el código Thread.sleep(10*1000); de esta forma, una vez que lo ejecutamos, tarda 10 segundos en reaccionar.<span> </span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;"><span>-<span> </span></span></span><!--[endif]--><span style="font-size:11pt;">No es extraño que deje de funcionar el programa una vez que se termine el código del método main() puesto que existen hilos de ejecución que aún tienen código para ejecutar.</span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;">
<h2><span style="color:#9735c9;"><strong><em><span> EJERCICIO 2:</span></em></strong></span></h2>
<p class="MsoNormal" style="text-align:left;"><span style="font-size:11pt;"> Los manejadores de Ventanas:</span></p>
<p class="MsoNormal" style="text-align:left;"><span style="font-size:11pt;"> &#8211; Son programas que controlan las ventanas de un entorno gráfico. Estos manejadores permiten al usuario hacer operaciones sobre las ventanas.</span></p>
<p class="MsoNormal" style="text-align:left;"><span style="font-size:11pt;"> Por tanto, un programa gráfico tendrá que tener las siguientes interfaces de comunicación.</span></p>
<p class="MsoBodyText" style="text-align:left;">- Métodos necesarios para hacer posible esta comunicación entre ventana y manejador:</p>
<ul style="margin-top:0;text-align:left;" type="disc">
<li class="MsoNormal"><strong><em><span style="font-size:11pt;">setVisible(boolean b)=</span></em></strong><span style="font-size:11pt;"> necesita que le pasemos true para que se haga visible, si no lo      hacemos no nos mostrará la pantalla de ninguna de las maneras.</span></li>
</ul>
<ul style="margin-top:0;text-align:left;" type="disc">
<li class="MsoNormal"><strong><em><span style="font-size:11pt;">setLocation(int x, int y)=</span></em></strong><span style="font-size:11pt;"> indicamos el punto (coordenadas)donde queremos que nos aparezca      situada la ventana.</span></li>
</ul>
<ul style="margin-top:0;text-align:left;" type="disc">
<li class="MsoNormal"><strong><em><span style="font-size:11pt;">setUndecorated(boolean b)=</span></em></strong><span style="font-size:11pt;"> nos referimos a la decoración de la ventana(barra de título y      botones para manejarla)</span></li>
</ul>
<ul style="margin-top:0;text-align:left;" type="disc">
<li class="MsoNormal"><strong><em><span style="font-size:11pt;">setExtendedEstate(int state)=</span></em></strong><span style="font-size:11pt;"> estados en los que puede estar una ventana, como icono, oculta…</span></li>
</ul>
<ul style="margin-top:0;text-align:left;" type="disc">
<li class="MsoNormal"><strong><em><span style="font-size:11pt;">setDefaultLookAndFeelDecorated(boolean      b)=</span></em></strong><span style="font-size:11pt;"> cambio de la decoración de la ventana.</span></li>
</ul>
<ul style="margin-top:0;text-align:left;" type="disc">
<li class="MsoNormal"><strong><em><span style="font-size:11pt;">setDefaultCloseOperation(int      operation)=</span></em></strong><span style="font-size:11pt;">configuración del comportamiento de una      ventana cuando cerramos, o hacer una operación alternativa.</span></li>
</ul>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;font-family:Wingdings;"><span>Ø<span> </span></span></span><!--[endif]--><strong><span style="font-size:11pt;">Creamos la clase HelloWorldGUIDeaf:</span></strong></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:left;"><span style="font-size:11pt;">- En esta clase hacemos que ignore el mensaje de cierre del manejador de ventanas, de esta forma, cuando pulsamos el aspa para cerrar no nos hará nada. </span></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:left;"><strong><span style="font-size:11pt;">Cerrar la ventana, no significa cerrar el programa</span></strong><span style="font-size:11pt;">, esto lo vemos cuando no incluimos frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<span> </span></span></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:left;"><strong><span style="font-size:11pt;">Si cerramos el programa, lo hará también la ventana.</span></strong></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:left;"><span style="font-size:11pt;">En este caso, cuando incorporamos un código que haga al programa ignorar la petición de cierre de la ventana, tendremos que situarnos sobre la ventana de la consola (programa) e introducir el comando ctrl+supr, de esta forma se cerrará la ventana automáticamente.</span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;font-family:Wingdings;"><span>Ø<span> </span></span></span><!--[endif]--><span style="font-size:11pt;">En la <strong>clase HelloWorldGUIUndecorated</strong> obtenemos una ventana un tanto simple con los bordes tipo desteñidos <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </span></p>
<h2><span style="color:#9735c9;"><strong><em><span> EJERCICIO 3:</span></em></strong></span></h2>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;font-family:Wingdings;"><span>Ø<span> </span></span></span><!--[endif]--><span style="font-size:11pt;">Creamos ahora una <strong>clase CompassSimple</strong>, </span></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:left;"><span style="font-size:11pt;">- La única diferencia que encontramos es que tenemos que cambiar el color de la letra que va dentro de la etiqueta, esto lo conseguimos con <strong><em>setForeground(Color.WHITE);</em></strong></span></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:left;"><span style="font-size:11pt;">Y nos piden también maximizar la ventana al tamaño completo &#8212;&gt; <strong><em>ventana.pack();</em></strong></span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;"><span>-<span> </span></span></span><!--[endif]--><span style="font-size:11pt;">Ahora queremos colocar una etiqueta en cada uno de los puntos cardinales, esto lo conseguimos con BorderLayout, </span></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:left;"><strong><em><span style="font-size:11pt;">labelNorth.setLayout(new BorderLayout());</span></em></strong></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:left;"><span style="font-size:11pt;"><span> </span>y a la hora de añadirlo al panel principal le indicamos dónde queremos que lo coloque concretamente<strong><em>: contentPane.add(&#8220;North&#8221;,labelNorth);</em></strong></span></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:left;"><span style="font-size:11pt;">en ese ejemplo lo colocaría en la parte de arriba (Norte ) de la ventana.</span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><span style="font-size:11pt;font-family:Wingdings;"><span>Ø<span> </span></span></span><!--[endif]--><span style="font-size:11pt;">Para implementar la <strong>clase CompassMuchBetter</strong>, en la que introducimos la imagen, tenemos que hacer un cambio de formato en la imagen puesto que hasta ahora sabemos que swing sólo soporta formato de imagen .gif, </span></p>
<p class="MsoNormal" style="margin-left:18pt;text-align:left;"><span style="font-size:11pt;"> Esta clase, utiliza setHorizontalAlignment() y setVerticalAlignment() para centrar las etiquetas.</span></p>
<p class="MsoNormal" style="margin-left:36pt;text-align:left;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-size:11pt;font-family:Wingdings;"><span>Ø<span> </span></span></span><!--[endif]--><span style="font-size:11pt;">Llegados a este punto, se van complicando las cosas y comenzamos a tener algunas dudas serias, como por ejemplo, cómo implementar<span> </span>la clase HelloWorldGUICentered, la cual nos pide que nos muestre una ventana justo en medio de la pantalla y que utilicemos JFrame.getToolkit().getScreenSize(), no sabemos realmente cómo hacerlo, por lo que os pedimos consejos para resolver nuestras dudas.</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocablog08.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocablog08.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocablog08.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocablog08.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocablog08.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocablog08.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocablog08.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocablog08.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocablog08.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocablog08.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocablog08.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocablog08.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocablog08.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocablog08.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocablog08.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocablog08.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=12&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocablog08.wordpress.com/2008/05/22/resurgimos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07bc33d6f9d53de0a9031858b6660165?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocablog08</media:title>
		</media:content>
	</item>
		<item>
		<title>Y van 6&#8230;</title>
		<link>http://ocablog08.wordpress.com/2008/04/08/y-van-6/</link>
		<comments>http://ocablog08.wordpress.com/2008/04/08/y-van-6/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 16:45:45 +0000</pubDate>
		<dc:creator>ocablog08</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ocablog08.wordpress.com/?p=11</guid>
		<description><![CDATA[PRÁCTICA 6 Esta semanita hemos dado en las clases de teoría un nuevo concepto: Cola y Pila; Cola &#8212;&#62; es una estructura de datos que almacena elementos, marcando un orden de llegada y salida de elementos. Esto se refleja en que el primer elemento que llegue a la cola es el primero en salir. Esta [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=11&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1 style="margin:auto 0;"><span style="font-size:x-large;"><em><span style="font-family:Georgia;">PRÁCTICA 6</span></em></span></h1>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Esta semanita hemos dado en las clases de teoría un nuevo concepto:</span></span></p>
<p><strong><em><span style="color:#800080;font-family:Georgia;"><span style="font-size:small;">Cola y Pila;</span></span></em></strong></p>
<p><span style="font-size:small;"><strong><em><span style="font-family:Georgia;">Cola</span></em></strong><span style="font-family:Georgia;"> &#8212;&gt; es una estructura de datos que almacena elementos, marcando un orden de llegada y salida de elementos.</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Esto se refleja en que el primer elemento que llegue a la cola es el primero en salir.</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Esta clase tiene dos métodos principalmente:</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;"><span> </span><span style="color:#008000;">encolar();</span> &#8212;&gt; Inserta un elemento en la cola</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;"><span> </span><span style="color:#008000;">desencolar();</span> &#8212;&gt; Saca elementos de la cola, en base al orden de llegada.</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">aunque normalmente se suelen implementar otros métodos que nos van a ayudar a la hora de introducir elementos en esta estructura como son:</span></span></p>
<p><span style="color:#008000;font-family:Georgia;"><span style="font-size:small;">estaVacía();</span></span></p>
<p><span style="color:#008000;font-family:Georgia;"><span style="font-size:small;">estaLlena();</span></span></p>
<p><strong><em><span style="font-size:11pt;font-family:Georgia;">Pila &#8212;&gt; <span> </span></span></em></strong><span style="font-size:small;"><span style="font-family:Georgia;">es una estructura de almacenamiento de elementos que permite apilar dichos elementos uno encima de otro.</span><strong><em></em></strong></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Viendo esta estructura, lógicamente el último elemento en entrar será el primero en salir ya que cada elemento se va colocando encima del primero, por tanto, a la hora de sacar, se sacará el último que se introdujo.</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Los métodos principales que contendrá esta clase serán:</span></span></p>
<p style="margin-left:36pt;text-indent:-18pt;"><span style="color:#008000;font-family:Wingdings;"><span><span style="font-size:small;">ü</span><span style="font:7pt;">      </span></span></span><span style="color:#008000;font-family:Georgia;"><span style="font-size:small;">Apilar();</span></span></p>
<p style="margin-left:36pt;text-indent:-18pt;"><span style="color:#008000;font-family:Wingdings;"><span><span style="font-size:small;">ü</span><span style="font:7pt;">      </span></span></span><span style="color:#008000;font-family:Georgia;"><span style="font-size:small;">Desafilar();</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Al igual que en la estructura anterior, debemos saber si la pila está llena o vacía, por lo que se implementarán adicionalmente los dos siguientes métodos:</span></span></p>
<p style="margin-left:36pt;text-indent:-18pt;"><span style="color:#008000;font-family:Wingdings;"><span><span style="font-size:small;">ü</span><span style="font:7pt;">      </span></span></span><span style="color:#008000;font-family:Georgia;"><span style="font-size:small;">estaVacía();</span></span></p>
<p style="margin-left:36pt;text-indent:-18pt;"><span style="color:#008000;font-family:Wingdings;"><span><span style="font-size:small;">ü</span><span style="font:7pt;">      </span></span></span><span style="color:#008000;font-family:Georgia;"><span style="font-size:small;">estaLlena();</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Ambas estructuras son muy recomendadas a la hora de realizar el juego adicional para esta asignatura puesto que puede ser interesante tener una cola o una pila para ir guardando la información en una estructura de datos.</span></span></p>
<div><span style="font-family:Georgia;"><span style="font-size:small;"><span style="font-family:Georgia;">Esta clase está definida como <span style="color:#008000;">Stack.</span></span></span></span></div>
<div></div>
<div><span style="font-family:Georgia;"><span style="font-size:small;"><strong><span style="font-size:16pt;color:#ff3300;font-family:Georgia;">Curiosidad:</span></strong></span></span></div>
<p><span style="font-family:Georgia;"><span style="font-size:small;"><span style="font-family:Georgia;">A la hora de programar nuestro juego hemos utilizado (en un primer momento) una estructura de datos pila.</span><span style="font-family:Georgia;">Directamente nos emocionamos un poquito y nos pusimos a programar sin haber visto antes que esta clase se llamaba Stack; creamos un atributo de tipo Pila y a la hora de compilar nos daba error y más tarde hemos entendido por qué nos daba error.</span></p>
<p style="margin-left:36pt;text-indent:-18pt;"><span style="font-family:Wingdings;"><span>Ø<span style="font:7pt;">      </span></span></span><span style="font-family:Georgia;">Lo primero: nos faltaba el famoso… import… <span> </span>en realidad no habíamos puesto<span>   </span>java.util.*; (generalmente se pone así puesto que de esta forma (con *) coge todas las clases de java.util) aunque también podríamos haber puesto:</span></p>
<p><span style="color:#008080;font-family:Georgia;">import <span> </span>java.util.Stack;</span></p>
<p style="margin-left:36pt;text-indent:-18pt;"><span style="font-family:Wingdings;"><span>Ø<span style="font:7pt;">      </span></span></span><span style="font-family:Georgia;">Lo segundo: Pila = Stack, no existe una clase Pila como tal sino que es la clase Stack, por tanto tendríamos que haber puesto</span></p>
<p><span style="font-family:Georgia;">Stack nombreAtributo;</span></p>
<p><span style="font-family:Georgia;">- Es una cosa sencillísima, pero estamos seguras de que hay más gente que ha puesto eso o lo estaba pensando. </span></p>
<p><span style="font-family:Georgia;"> </span></p>
<p><strong><span style="color:#3333cc;font-family:Georgia;">CLASE COLA;</span></strong></p>
<p><span style="font-family:Georgia;">Para implementar esta clase hemos utilizado los atributos: tamaño, último y un array de elementos de tipo int.</span></p>
<p><span style="font-family:Georgia;">Inicializamos último a -1, ya tenemos en cuenta que cuando último sea 0 se referirá a la primera posición de la cola.</span></p>
<p><span style="font-family:Georgia;">Definimos los dos métodos principales:</span></p>
<p><span style="color:#666699;font-family:Georgia;">encolar();</span></p>
<p><span style="font-family:Georgia;">En este método vamos añadiendo los elementos que nos van entrando en la cola0.</span></p>
<p><span style="color:#666699;font-family:Georgia;">desencolar();</span></p>
<p><span style="font-family:Georgia;">Este método saca elementos de la cola.</span></p>
<p><font face="Georgia"><font size="3"><span style="font-family:Georgia;"><span style="font-size:small;"> </span></span></p>
<p></font></font></span><font face="Georgia"> </p>
<p></font></span><span style="font-family:Georgia;"><span style="font-size:small;">Como el último elemento en entrar en la cola es el último en salir, este método recorre un bucle en el que<span>  </span>va cambiando<span>  </span>el elemento de una posición determinada a la posición anterior.</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Para comprobar el estado de la cola implementamos los siguientes métodos:</span></span></p>
<p><span style="color:#666699;font-family:Georgia;"><span style="font-size:small;">estaVacia();</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Compara que el atributo último sea igual -1, si esto<span>  </span>es así, significa que no se ha añadido ningún elemento y por tanto la cola está vacía, por lo que devolvería true.</span></span></p>
<p><span style="color:#666699;font-family:Georgia;"><span style="font-size:small;">estaLlena();</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Comprueba que el índice que nos indica la posición del último elemento sea igual al tamaño.</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">De esta forma, si esto se cumple nos devolvería true, mientras que si no se cumple devolvería false.</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">- Hemos introducido un método mostrar() para ir viendo el estado de la cola en cada momento.</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">Lo hemos comprobado con una cola de 3 elementos, y para asegurarnos de que cada paso va saliendo bien, incluimos System.out’s</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;"> </span></span></p>
<p style="margin-left:0;text-indent:-18pt;"><span style="font-family:Wingdings;"><span><span style="font-size:small;">ü</span><span style="font:7pt;">      </span></span></span><span style="font-family:Georgia;"><span style="font-size:small;">En el caso del tetris tendríamos que hacer una cola de piezas e irla rellenando con cada una de las piezas del juego, no habría que hacer muchos cambios sobre la clase cola que hemos implementado, únicamente cambiando el int por Pieza.</span></span></p>
<p style="margin-left:-18pt;"><span style="font-family:Georgia;"><span style="font-size:small;"> </span></span></p>
<p style="margin-left:0;text-indent:-18pt;"><span style="font-family:Wingdings;"><span><span style="font-size:small;">ü</span><span style="font:7pt;">      </span></span></span><span style="font-family:Georgia;"><span style="font-size:small;"><span> </span>La clase pieza tendrá como atributos el tipo de pieza y las coordenadas (x, y), como métodos tendrá mover() y toString();</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">No tenemos claro a qué se refiere el método mover, es decir si se refiere a cambiar la posición (rotar) o al movimiento a lo largo del tablero.</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;">El método toString(); nos facilita la información del objeto Pieza.</span></span></p>
<p><span style="font-family:Georgia;"><span style="font-size:small;"> </span></span></p>
<p> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocablog08.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocablog08.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocablog08.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocablog08.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocablog08.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocablog08.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocablog08.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocablog08.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocablog08.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocablog08.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocablog08.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocablog08.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocablog08.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocablog08.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocablog08.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocablog08.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=11&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocablog08.wordpress.com/2008/04/08/y-van-6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07bc33d6f9d53de0a9031858b6660165?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocablog08</media:title>
		</media:content>
	</item>
		<item>
		<title>A por la quinta&#8230;</title>
		<link>http://ocablog08.wordpress.com/2008/04/03/a-por-la-quinta/</link>
		<comments>http://ocablog08.wordpress.com/2008/04/03/a-por-la-quinta/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 17:36:41 +0000</pubDate>
		<dc:creator>ocablog08</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ocablog08.wordpress.com/?p=9</guid>
		<description><![CDATA[PRÁCTICA 5  Esta semana se nos ha acumulado un poquito el trabajo, pero con paciencia y ganas se va llevando todo.Hemos tenido varias dudas durante la realización de la práctica, pero con la ayuda del profesor se han ido solucionando; Somos conscientes de que hay cosas que tal vez las hayamos ido haciendo de la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=9&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1 align="left"><span style="color:windowtext;"><em><font size="5"><font face="Times New Roman"><font color="#8cbf40">PRÁCTICA 5</font></font></font></em></span></h1>
<p align="left"><font face="Times New Roman"> </font><span style="font-size:11pt;font-family:'Comic Sans MS';">Esta semana se nos ha acumulado un poquito el trabajo, pero con paciencia y ganas se va llevando todo.</span><span style="font-size:11pt;font-family:'Comic Sans MS';">Hemos tenido varias dudas durante la realización de la práctica, pero con la ayuda del profesor se han ido solucionando;</span></p>
<p align="left" style="margin:0;" class="MsoBodyText"><font face="Comic Sans MS">Somos conscientes de que hay cosas que tal vez las hayamos ido haciendo de la forma cutre, por tanto agradeceríamos que nos aconsejaseis sobre cómo hacerlo de una forma más sencilla y válida.</font></p>
<p align="left" style="margin:0;" class="MsoBodyText"><font face="Comic Sans MS"></font></p>
<p align="left"><font face="Times New Roman"><span style="color:#ff0066;">Ejercicio 0</span><span>   </span><span style="color:#ff9900;">&#8212; &gt;</span><span>  </span><b><i><span style="font-size:14pt;color:#ff3399;">INTRODUCCIÓN</span></i></b></font><font face="Times New Roman"> </font></p>
<p align="left" style="margin:0;" class="MsoNormal"><font face="Times New Roman">En esta práctica se supone que conocemos el concepto de herencia y su aplicación, por ello comienza con la definición de POLIMORFISMO que está relacionado con la herencia.</font></p>
<p align="left" style="margin:0;" class="MsoBodyText"><span style="font-size:12pt;font-family:'Times New Roman';">El Polimorfismo se basa en conseguir que los objetos se comporten de una forma u otra en función de la clase a la que pertenezcan; la herencia nos permite tener referencia a la clase base y por tanto una colección de objetos.</span></p>
<p><span style="font-size:12pt;font-family:'Times New Roman';"></span><span style="font-size:12pt;font-family:'Times New Roman';"></span><span style="font-size:12pt;font-family:'Times New Roman';"></span><span style="font-size:12pt;font-family:'Times New Roman';"></p>
<p align="left" style="margin:0;" class="MsoNormal">-Tenemos dos tipos de Polimorfismo:</p>
<ul>
<li>
<div align="left"><b><span style="color:#ff9900;">de Clase –Herencia:</span></b> cuando un objeto puede comportarse como objeto de otras clases.</div>
</li>
</ul>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">Un ejemplo es el rectángulo, que puede comportarse como un rectángulo y como una figura.</p>
<p align="left" style="text-indent:-18pt;margin:0 0 0 72pt;" class="MsoNormal"><span>-<span style="font:7pt 'Times New Roman';">         </span></span>La herencia nos permite crear polimorfismo de clase.</p>
<ul>
<li>
<div align="left"><b><span style="color:#ff9900;">de Método:</span></b> cuando llamamos a dos métodos con el mismo nombre y les pasamos distintos argumentos, sobrecargar (SÓLO de métodos).</div>
</li>
</ul>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">El modificador de acceso abstract se utiliza para dejar métodos sin implementar, generalmente se utiliza en la herencia, de esta forma obliga a las clases que heredan a implementarlos.</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">método abstracto =&gt; no tienen implementación<br />
una clase abstracta es una clase que tiene algún método abstracto.</p>
<p align="left" style="margin:0;" class="MsoNormal"><span style="font-size:12pt;font-family:'Times New Roman';">(cuando sabemos qué queremos hacer, pero no sabemos como hacerlo, de esta fora nos creamos clases y métodos abstractos )<br />
Una clase abstracta no es instancial, exige que sea implementada en las clases derivadas, por lo que serán las clases derivadas las que serán las instanciables.</span></p>
<p><span style="font-size:12pt;font-family:'Times New Roman';"></span><span style="font-size:12pt;font-family:'Times New Roman';"></span><span style="font-size:12pt;font-family:'Times New Roman';"></p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">Otro concepto que se utiliza en esta práctica es INTERFACE.</p>
<p align="left">- Una <i><span style="color:#0099ff;">interface</span></i> es una clase puramente abstracta, sólo define un comportamiento.</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoBodyTextIndent">En un interfaz SÓLO se declaran los métodos, los atributos son constantes de tipo final y static.</p>
<p align="left"><span style="font-size:12pt;font-family:'Times New Roman';">Con un interfaz se puede extender utilizando herencia y se puede implementar dando lugar a una clase.</span><span style="font-size:12pt;color:#fa6400;font-family:'Courier New';"><br />
</span></p>
<p><span style="font-size:12pt;color:#fa6400;font-family:'Courier New';"></span><span style="font-size:12pt;color:#fa6400;font-family:'Courier New';"></span><span style="font-size:12pt;color:#fa6400;font-family:'Courier New';"></p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal"><font color="#000000" face="Times New Roman">Si heredo de una clase que tiene métodos abstractos, tendremos que implementarlos en la clase que hereda<br />
ventajas de los interfaces es que podemos implementar varios interfaces<br />
es una forma de hacer herencia múltiple.</font></p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal"><font color="#000000" face="Times New Roman"></font></p>
<p align="left"><font color="#000000"><font face="Times New Roman">* Cómo Java es capaz de saber a qué método invocar para cada elemento del array<span>  </span>a la hora de realizar la invocación a un método.<span style="font-size:10pt;font-family:Arial;"></span></font></font></p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal"><font color="#000000" face="Times New Roman">Con el late binding o enlace tardío, la invocacion del método se hace en tiempo de ejecución, en este momento es cuando java sabe a qué método se refiere, para ellos se fija en el tipo de parámetro que nos pasan.</font></p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoBodyTextIndent"><font color="#000000" face="Times New Roman">Un ejemplo a modo de aclaración sería el siguiente: </font></p>
<p align="left"><span style="font-size:12pt;color:gray;font-family:'Times New Roman';">         Miembro m = new<span>  </span>Atributo(&#8220;3&#8243;,&#8221;2&#8243;);<br />
          m.metodo(3.0);</span><span style="font-size:12pt;color:#00ccff;font-family:'Times New Roman';"><br />
</span></p>
<p><span style="font-size:12pt;color:#00ccff;font-family:'Times New Roman';"></span><span style="font-size:12pt;color:#00ccff;font-family:'Times New Roman';"></span><span style="font-size:12pt;color:#00ccff;font-family:'Times New Roman';"></p>
<p align="left" style="margin:0;" class="MsoNormal"><font color="#000000">tengo que llamar al método de m</font></p>
<p align="left" style="margin:0;" class="MsoNormal"><font color="#000000">- ¿De qué tipo es? </font></p>
<p align="left" style="margin:0;" class="MsoNormal"><font color="#000000">Es de tipo atributo, entonces.. </font></p>
<p align="left" style="margin:0;" class="MsoNormal"><font color="#000000">- ¿A qué método llamo?</font></p>
<p align="left" style="margin:0;" class="MsoNormal"><font color="#000000">&#8230; pues me fijo en el parámetro que me pasan.</font></p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">&nbsp;</p>
<p align="left"><b><i><span style="color:#00cc00;font-family:'Comic Sans MS';">EJERCICIO 1:</span></i></b><b><i><span style="color:#00cc00;font-family:'Comic Sans MS';"> </span></i></b></p>
<p align="left" style="margin:0;" class="MsoNormal"><font color="#000000">En este apartado lo único que nos pedían era sobrescribir el método toString() de las clases implementadas en la práctica 1 por lo tanto no tenía mucha dificultad, simplemente bastaba con poner super.toString(); salvo en alguna que otra clase en la que se definían algunos atributos más de los que había en la clase base y teníamos que añadirlo a la cadena de caracteres originada por el método </font></p>
<p align="left" style="margin:0;" class="MsoNormal"><font color="#000000">toString().</font></p>
<p align="left" style="margin:0;" class="MsoNormal"><font color="#000000"></font></p>
<p align="left"><b><i><span style="color:#ff6600;font-family:'Comic Sans MS';">EJERCICIO 2:</span></i></b><span style="color:#ff6600;"></span><font color="#000000"> </font></p>
<p align="left" style="margin:0;" class="MsoNormal"><font color="#000000">No sabemos cómo realizar este apartado por tanto pediríamos que nos ayudaseis para poner implementar la clase Almacenable.</font></p>
<p align="left" style="margin:0;" class="MsoNormal"><font color="#000000"></font></p>
<p align="left"><font color="#000000"><b><i><span style="color:#ff3300;font-family:'Comic Sans MS';">EJERCICIO 3:</span></i></b><span style="color:#ff3300;"></span><b><i><span style="font-family:'Comic Sans MS';"> </span></i></b></font></p>
<p align="left"><font color="#000000"><b><i><span style="font-family:'Comic Sans MS';"></span></i></b><b><i><span style="font-family:'Comic Sans MS';">Apartado 3.1;</span></i></b><b><i><span style="font-family:'Comic Sans MS';"> </span></i></b></font></p>
<p><font color="#000000"><b><i><span style="font-family:'Comic Sans MS';"></span></i></b><span style="color:#cc00cc;"><span>-<span style="font:7pt 'Times New Roman';">         </span></span></span><b><i><span style="color:#cc00cc;font-family:'Comic Sans MS';">CLASE COMPONTENTE GRÁFICO</span></i></b><span style="color:#cc00cc;"></span> </font><font color="#000000"> </font><font color="#000000"></font><font color="#000000"></p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">Programar los métodos:</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">*Constructor: es lo más sencillo que nos pueden pedir, puesto que simplemente es igualar los parámetros pasados por el constructor con los atributos declarados.</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">*pintaFondo(): es tal vez algo más complicado puesto que hay que darle un color al fondo de pantalla, definir las dimensiones del rectángulo(ventanita donde en apartados posteriores nos van a pedir que introduzcamos un texto..), dar color a este rectángulo&#8230;</p>
<p align="left" style="margin:0;" class="MsoNormal">&nbsp;</p>
<p align="left" style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoNormal"><span>-<span style="font:7pt 'Times New Roman';">         </span></span>Para dar color al fondo de la pantalla hemos utilizado: <span style="color:gray;">setBackground(Color.color);</span></p>
<p align="left"><span>      -<span style="font:7pt 'Times New Roman';">         </span></span>Para rellenar el rectángulo con un cierto color: <span style="color:gray;"><span>   </span>g.getColor();</span></p>
<p align="left"><span>   </span><span style="color:gray;"><span>   </span>g.setColor(Color.YELLOW);<span>   </span></span></p>
<p align="left">Para rellenar el rectángulo hemos empleado la llamada al siguiente método, en realidad no nos queda muy clara su función.</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal"><span style="color:gray;"><span>  </span>g.fillRect(posX,posY,ancho,alto);</span></p>
<p align="left" style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoNormal"><span>-<span style="font:7pt 'Times New Roman';">         </span></span>Para dibujar el rectángulo:</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal"><span style="color:gray;"><span>  </span>g.drawRect(posX,posY,ancho,alto);</span></p>
<p align="left">      y darle color al borde:</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal"><span style="color:gray;"><span>  </span>g.setColor(Color.BLACK);</span></p>
<p align="left" style="margin:0;" class="MsoNormal">&nbsp;</p>
<p align="left"><b><i><span style="font-family:'Comic Sans MS';">Apartado 3.2;</span></i></b></p>
<p align="left"><b><i><span style="font-family:'Comic Sans MS';">  </span></i></b> <b><i><span style="color:#ff6600;font-family:'Comic Sans MS';">CLASE BOTÓN:</span></i></b> </p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">- En la primera línea del constructor de esta clase hacemos una llamada a super(); pasándole como parámetros los atributos que ya estaban definidos en la clase ComponenteGrafico que es de la que hereda esta clase.</p>
<p align="left" style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoNormal"><span>-<span style="font:7pt 'Times New Roman';">         </span></span>Respecto al método paint(); hacemos una llamada al método paint() de la clase base con super.paint(g); y pasándole como parámetro un objeto de la clase Graphics.</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">Establecemos el color de texto con</p>
<p align="left"><span style="color:gray;"><span> </span>setColor(Color.color);</span> </p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">El texto lo introducimos a partir de:</p>
<p align="left"><span style="color:gray;">g.drawString(&#8220;Boton&#8221;,85,80);</span><span style="color:gray;"> </span></p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal"><span> </span>Las coordenadas dadas son las que nos sirven para centrar más o menos el texto.</p>
<p align="left"> <b><i><span style="color:red;font-family:'Comic Sans MS';">CLASE MENÚ:</span></i></b><span style="color:red;"></span> </p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoBodyTextIndent">Al igual que en la clase Botón, la primera línea del constructor es una llamada al constructor de la clase base ComponenteGráfico.</p>
<p align="left" style="text-indent:-18pt;margin:0 0 0 36pt;" class="MsoNormal"><span>-<span style="font:7pt 'Times New Roman';">         </span></span>El método paint() de esta clase se vale del de la clase base, con la diferencia de que tenemos que añadirle dos textos con el método drawString:</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal"><span>  </span>g.drawString(<span style="color:#00cc00;">&#8220;menu1&#8243;</span>,90,70);<br />
<span>  </span>g.drawString(<span style="color:#00cc00;">&#8220;menu2&#8243;</span>,140,80);</p>
<p align="left">    A la hora de ejecutarlo el cuadro que nos sale tiene el fondo de color amarillo, como tiene que salir cuando ejecutamos en la clase Botón, esto es debido a que lo ha heredado directamente de la clase base, para ello, nosotras hemos implementado directamente el método pintaFondo() en la clase menú y le hemos cambiado el color del rectángulo (debería ser verde).</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">Es quizás una forma incorrecta puesto que en el guión de la práctica no nos indica que haya que modificar nada con respecto al método pintaFondo(), esperamos que nos podáis ayudar para que no caigamos en estos fallos y cuando llegue la hora de la verdad podamos saber por dónde salir.</p>
<p align="left">&nbsp;</p>
<p align="left" style="margin:0 0 0 18pt;" class="MsoNormal">Seguimos trabajando para poder publicar los siguientes ejercicios, más que nada porque nos conviene practicar sobre representación gráfica, ya que nos vendrá bien a la hora de programar nuestro juego.</p>
<p style="margin:0 0 0 18pt;" class="MsoNormal">&nbsp;</p>
<p></font></span></p>
<p style="margin:0;" class="MsoNormal">&nbsp;</p>
<p></span></span></span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocablog08.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocablog08.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocablog08.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocablog08.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocablog08.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocablog08.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocablog08.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocablog08.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocablog08.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocablog08.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocablog08.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocablog08.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocablog08.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocablog08.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocablog08.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocablog08.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=9&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocablog08.wordpress.com/2008/04/03/a-por-la-quinta/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07bc33d6f9d53de0a9031858b6660165?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocablog08</media:title>
		</media:content>
	</item>
		<item>
		<title>Seguimos&#8230;!!!</title>
		<link>http://ocablog08.wordpress.com/2008/04/03/seguimos/</link>
		<comments>http://ocablog08.wordpress.com/2008/04/03/seguimos/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 17:26:04 +0000</pubDate>
		<dc:creator>ocablog08</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ocablog08.wordpress.com/?p=8</guid>
		<description><![CDATA[PRÁCTICA 4 Esta semana la cosa va de Herencia, La verdad es que no hemos hecho mucho de la práctica porque no entendíamos bien lo que nos pedían, y juntándolo con la Semana Santa..pues se nos ha echado el tiempo encima, así es que &#8230;vamos a hacer una introducción de lo que hemos hecho para [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=8&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em><strong><font color="#862dd2">PRÁCTICA 4</font></strong></em></p>
<address>
<p style="margin:0;" class="MsoNormal"><font face="Times New Roman">Esta semana la cosa va de <span style="font-size:18pt;">Herencia</span>, </font></p>
<p style="margin:0;" class="MsoNormal"><font face="Times New Roman">La verdad es que no hemos hecho mucho de la práctica porque no entendíamos bien lo que nos pedían, y juntándolo con la Semana Santa..pues se nos ha echado el tiempo encima, así es que &#8230;vamos a hacer una introducción de lo que hemos hecho para no quedarlo cojo e iremos introduciendo simultáneamente datos sobre la práctica 5.</font></p>
<p style="margin:0;" class="MsoNormal"><font face="Times New Roman">¿Quién dijo que no se puede recuperar&#8230; </font><span style="font-family:Wingdings;"><span>J</span></span><font face="Times New Roman">?</font></p>
<p style="margin:0;" class="MsoNormal">&nbsp;</p>
<p style="margin:0;" class="MsoNormal"><font face="Times New Roman"></font></p>
<p style="margin:0;" class="MsoNormal"><b><u><span style="font-size:16pt;color:#009999;"><font face="Times New Roman">INTRODUCCIÓN:</font></span></u></b></p>
<p><span style="font-size:16pt;color:#009999;"><font face="Times New Roman"><span style="text-decoration:none;"><font size="3" color="#000000"><strong><u></u></strong></font></span></font></span><span style="font-size:16pt;color:#009999;"><font face="Times New Roman"></p>
<p style="margin:0;" class="MsoNormal"><font size="3"><span style="color:#ff6600;"><strong>- HERENCIA:</strong></span><font color="#000000"> es un mecanismo a partir del cual podemos crear una clase en función de otra de esta forma, la clase derivada tendrá todos los atributos y métodos de la clase madre siendo posible su modificación en las clases derivadas si es necesario.</font></font></p>
<p><font size="3"><font color="#000000"><span>A priori, la explicación que se dio en clase serviría para entender más o menos la lógica de herencia:</span><span>Tenemos dos clases, alumno y profesor; ambas clases van a tener atributos iguales como son nombre, apellidos, edad, dni&#8230;., por tanto esos atributos se podrían guardar en una clase de la que podamos coger los atributos comunes.</span><span>Caso a parte son los demás atributos que tengan diferentes como sueldo, NID, titulación, nota..</span><span>Con estos datos se nos viene a la mente que necesitaríamos una clase, por ejemplo, Persona donde incluir los atributos nombre, apellidos, edad, dni.., esta clase sería la clase madre, de la cual heredarían las demás.</span></font></font> <span><font size="3" color="#000000"> </font></span> </p>
<p></font></span></address>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocablog08.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocablog08.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocablog08.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocablog08.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocablog08.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocablog08.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocablog08.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocablog08.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocablog08.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocablog08.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocablog08.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocablog08.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocablog08.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocablog08.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocablog08.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocablog08.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=8&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocablog08.wordpress.com/2008/04/03/seguimos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07bc33d6f9d53de0a9031858b6660165?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocablog08</media:title>
		</media:content>
	</item>
		<item>
		<title>Otra experiencia más para contar&#8230;.</title>
		<link>http://ocablog08.wordpress.com/2008/03/12/otra-experiencia-mas-para-contar/</link>
		<comments>http://ocablog08.wordpress.com/2008/03/12/otra-experiencia-mas-para-contar/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 18:52:25 +0000</pubDate>
		<dc:creator>ocablog08</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ocablog08.wordpress.com/?p=7</guid>
		<description><![CDATA[PRÁCTICA 3 EJERCICIO 0:  Nos centraremos en comentar los conceptos y curiosidades de esta parte del ejercicio: -         El atributo contador tiene de especial que es estático, es decir, que lleva delante la palabra reservada static Lo característico que tiene el ser un atributo estático es que:  -         Si accedes desde fuera de la clase ponemos: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=7&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><em><u><font size="5">PRÁCTICA 3</font></u></em></strong></p>
<p><b><i><span style="font-size:16pt;color:#cc0099;font-family:'Comic Sans MS';">EJERCICIO 0:</span></i></b><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">Nos centraremos en comentar los conceptos y curiosidades de esta parte del ejercicio:</span><span style="font-family:'Comic Sans MS';"> </span><span><font face="Times New Roman">-<span style="font:7pt 'Times New Roman';">         </span></font></span><span style="font-family:'Comic Sans MS';">El atributo contador tiene de especial que es estático, es decir, que lleva delante la palabra reservada </span><b><i><u><span style="font-size:14pt;font-family:'Comic Sans MS';">static </span></u></i></b></p>
<p><b><i><u><span style="font-size:14pt;font-family:'Comic Sans MS';"></span></u></i></b><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">Lo característico que tiene el ser un atributo estático es que:</span><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="color:#333333;"><span><font face="Times New Roman">-<span style="font:7pt 'Times New Roman';">         </span></font></span></span><span style="color:#333333;font-family:'Comic Sans MS';">Si accedes desde fuera de la clase ponemos: </span><span style="color:blue;font-family:'Comic Sans MS';">nombreClase.nombreAtributo.</span><span style="color:#333333;font-family:'Comic Sans MS';"></span><span style="color:#333333;font-family:'Comic Sans MS';"> </span></p>
<p><span style="color:#333333;font-family:'Comic Sans MS';"></span><span style="color:#333333;"><span><font face="Times New Roman">-<span style="font:7pt 'Times New Roman';">         </span></font></span></span><span style="color:#333333;font-family:'Comic Sans MS';">Si accedes desde dentro de la clase ponemos: </span><span style="color:blue;font-family:'Comic Sans MS';">nombreObjeto.nombreAtributo.</span><span style="color:#333333;font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">* El modificador static se utiliza para el caso en el que tenemos varios objetos con el mismo valor, si se modifican a lo largo de la clase, sólo bastaría con cambiar la variable estática creada anteriormente, de esta forma se simplificaría el uso.</span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">Un caso en el que nos podría ser muy útil este modificador, es en una clase que nos diga la cantidad de objetos que se han creado basándose en ella. </span></p>
<p><span style="font-family:'Comic Sans MS';">Podemos meter una línea de código en el constructor que incremente la variable contador con el modificador static, y así cada vez que se declare un objeto el contador se incrementará. </span><span style="font-family:'Comic Sans MS';"> </span><span style="font-family:'Comic Sans MS';"><span> </span></span></p>
<p><span style="font-family:'Comic Sans MS';"><span></span>* Desde cualquier objeto podremos consultar el valor del contador. El código sería algo así:</span><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Arial Unicode MS';">class Clase {</span><span style="font-family:'Arial Unicode MS';"><span>  </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>static int contador;</span><span style="font-family:'Arial Unicode MS';"> </span><span style="font-family:'Arial Unicode MS';"><span>  </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>Clase() {</span><span style="font-family:'Arial Unicode MS';"><span>   </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>contador++;</span><span style="font-family:'Arial Unicode MS';"><span>  </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>}</span><span style="font-family:'Arial Unicode MS';"> </span><span style="font-family:'Arial Unicode MS';"><span>  </span>i</span></p>
<p><span style="font-family:'Arial Unicode MS';">nt getContador() {</span><span style="font-family:'Arial Unicode MS';"><span>   </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>return contador;</span><span style="font-family:'Arial Unicode MS';"><span>  </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>}</span></p>
<p><span style="font-family:'Arial Unicode MS';"></span><span style="font-family:'Arial Unicode MS';">}</span><span style="font-family:'Arial Unicode MS';"> </span></p>
<p><span style="font-family:'Arial Unicode MS';">            &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 0 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; </span></p>
<p><span style="font-family:'Arial Unicode MS';">class Codigo {</span><span style="font-family:'Arial Unicode MS';"><span>  </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>public static void main(String[] args) {</span><span style="font-family:'Arial Unicode MS';"><span>   </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>Clase uno = new Clase();</span><span style="font-family:'Arial Unicode MS';"><span>   </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>Clase dos = new Clase();</span><span style="font-family:'Arial Unicode MS';"><span>   </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>Clase tres = new Clase();</span><span style="font-family:'Arial Unicode MS';"><span>   </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>Clase cuatro = new Clase();</span><span style="font-family:'Arial Unicode MS';"><span>   </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>System.out.println(&#8220;Hemos declarado &#8221; + uno.getContador() + &#8220;objetos.&#8221;);</span><span style="font-family:'Arial Unicode MS';"><span>  </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>}</span></p>
<p><span style="font-family:'Arial Unicode MS';"></span><span style="font-family:'Arial Unicode MS';">}</span></p>
<p><span style="font-family:'Arial Unicode MS';"></span><span style="font-family:'Comic Sans MS';"> </span><span style="font-family:'Comic Sans MS';"> </span><b><span style="font-size:14pt;font-family:'Comic Sans MS';">Ventajas:</span></b><b><span style="font-size:14pt;font-family:'Comic Sans MS';"> </span></b></p>
<p><b><span style="font-size:14pt;font-family:'Comic Sans MS';"></span></b><span style="font-family:'Comic Sans MS';">-Simplificación a la hora de programar</span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">-Ahorro de memoria</span><span style="font-family:'Comic Sans MS';"> </span><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="color:blue;font-family:'Comic Sans MS';">¿Cómo se destruye un objeto en java?</span><span style="color:blue;font-family:'Comic Sans MS';"> </span></p>
<p><span style="color:blue;font-family:'Comic Sans MS';"></span><span><font face="Times New Roman">-<span style="font:7pt 'Times New Roman';">         </span></font></span><span style="font-family:'Comic Sans MS';">Se consigue con la eliminación de la referencia al objeto, de esta forma, el recolector de basura eliminará los objetos que estén sin referenciar.</span><span style="font-family:'Comic Sans MS';"> </span><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span><font face="Times New Roman">-<span style="font:7pt 'Times New Roman';">         </span></font></span><span style="font-family:'Comic Sans MS';">Un constructor JAMÁS tendrá un tipo de retorno.</span><span style="font-family:'Comic Sans MS';"> </span><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">* Volviendo al método toString(), decíamos que devuelve una cadena de caracteres, podemos decir que es una representación textual de un objeto.</span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">Normalmente haremos métodos toString(), de esta forma, cuando vayamos a utilizarlos, si se llama desde una clase distinta a la que está el método, pondremos</span></p>
<p style="margin:0 0 0 18pt;" class="MsoNormal"><span style="font-family:'Comic Sans MS';">nombreClase(donde está el método).toString();</span></p>
<p><span style="font-family:'Comic Sans MS';"></span> <b><i><span style="font-size:16pt;color:teal;font-family:'Comic Sans MS';">EJERCICIO 1:</span></i></b><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">Las <span>Cuestiones para responder en casa:</span></span></p>
<ul>
<li class="MsoNormal"><span style="font-size:11pt;font-family:'Comic Sans MS';">Programa una clase </span><span style="font-size:11pt;font-family:'Comic Sans MS';">ModificadorPrueba</span><span style="font-size:11pt;font-family:'Comic Sans MS';"> cuyo método &#8220;</span><span style="font-size:11pt;font-family:'Comic Sans MS';">main</span><span style="font-size:11pt;font-family:'Comic Sans MS';">&#8221; imprima por pantalla todos los posibles valores de salida del método </span><span style="font-size:11pt;font-family:'Comic Sans MS';">toString()</span><span style="font-size:11pt;font-family:'Comic Sans MS';"> que hemos definido en este ejercicio. </span></li>
</ul>
<p><span style="font-family:'Comic Sans MS';">- Nosotras hemos entendido que se nos pide que imprimamos de una vez todos los literales que corresponden a los posibles valores que se le pasan al metodo toString()</span><span style="font-family:'Comic Sans MS';">Para ello hemos<span>  </span>creado un array en el cual se nos calcula los numeros que corresponden a cada literal. </span></p>
<p style="margin:0;" class="MsoNormal"><span style="font-family:'Comic Sans MS';">Lo que hacemos es ir rellenando el array de la siguiente manera: (siendo nuestro array un array de enteros llamado<span>  </span>“num”) NOTA: Para realizar esta operación hemos tenido que importar el paquete de la clase Math</span></p>
<p><span style="font-family:'Comic Sans MS';"></span> <span style="font-family:'Arial Unicode MS';"><span>         </span>for(int i=0; i&lt;num.length; i++){</span><span style="font-family:'Arial Unicode MS';"><span>            </span>num[i]=(int)Math.pow(2, i);</span></p>
<p style="margin:0;" class="MsoNormal"><span style="font-family:'Arial Unicode MS';"><span>         </span>}</span></p>
<p><span style="font-family:'Arial Unicode MS';"></span></p>
<p style="margin:0;" class="MsoNormal"><span style="font-family:'Comic Sans MS';">- Por ultimo lo que tenemos que hacer es imprimirlo, para ello creamos otro bucle for, de manera que en cada iteración nos imprima el literal correspondiente al valor almacenado en la posición i del array</span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Arial Unicode MS';"></span> <span style="font-family:'Arial Unicode MS';"><span>         </span>for (int i=0;i&lt;num.length;i++){</span><span style="font-family:'Arial Unicode MS';"><span>            </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>System.out.println(num[i]+&#8221;:&#8221;+Modificador.toString(num[i]));</span><span style="font-family:'Arial Unicode MS';"><span>  </span><span>         </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>}</span></p>
<ul>
<li class="MsoNormal"><span style="font-size:11pt;font-family:'Comic Sans MS';">¿Que crees que debería pasar si al método toString()  se le pasa, como argumento, un número mayor que el número máximo de posibles combinaciones de modificadores de acceso que has calculado en la primera  pregunta?</span><span style="font-family:'Comic Sans MS';"> </span></li>
</ul>
<p><span style="font-size:12pt;font-family:'Comic Sans MS';"><span>      </span>Si le pasamos un numero mayor que el número máximo de posibles combinaciones de modificadores de acceso no nos imprimiría nada en las  <span style="font-family:'Comic Sans MS';">posiciones que no tienen asignado ningún modificador(se imprimiría una cadena vacía).</span></span><span style="font-size:12pt;font-family:'Comic Sans MS';"></span><span style="font-size:12pt;font-family:'Comic Sans MS';"></span><span style="font-size:12pt;font-family:'Comic Sans MS';"></span><span style="font-size:12pt;font-family:'Comic Sans MS';"></span><span style="font-size:12pt;font-family:'Comic Sans MS';"></span><span style="font-size:12pt;font-family:'Comic Sans MS';"></span><span style="font-size:12pt;font-family:'Comic Sans MS';"></p>
<p style="margin:0;" class="MsoNormal"><span style="font-family:'Comic Sans MS';"><span>      </span></span></p>
<p style="margin:0;" class="MsoNormal"><span style="font-family:'Comic Sans MS';"><span></span></span><i><span style="font-size:16pt;color:#ff9900;font-family:'Comic Sans MS';">Ejercicio 2.  La clase Atributo</span></i></p>
<p><i><span style="font-size:16pt;color:#ff9900;font-family:'Comic Sans MS';"></span></i> <span style="font-family:'Comic Sans MS';">Tenemos que implementar el constructor y el metodo toString() de la clase atributo.</span><span style="font-family:'Comic Sans MS';">Para ello hemos hecho lo siguiente:</span></p>
<ul>
<li class="MsoNormal"><span style="font-family:'Comic Sans MS';">en el CONSTRUCTOR simplemente hemos igualado el valor de los parámetros que se le pasan al constructor, a los atributos de la clase.</span></li>
</ul>
<p><span style="font-family:'Comic Sans MS';">En el toString()<span>  </span>lo único que hemos hecho es crear una variable de tipo String y en ella hemos ido concatenando lo que se nos pedía<span>  </span>a la salida del método(cuando llegamos a la parte en la que hay que agregar el modificador de acceso, como nuestro atributo es un int, lo que hacemos es llamar al método toString de la clase Modificador –método que nos pasa a String-). </span></p>
<p><span style="font-family:'Comic Sans MS';">Después hemos devuelto ese String.</span><span style="font-family:'Comic Sans MS';"> </span><span style="font-family:'Arial Unicode MS';">p</span></p>
<p><span style="font-family:'Arial Unicode MS';">ublic String toString() {</span><span style="font-family:'Arial Unicode MS';"><span>         </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>String s = &#8220;ATRIBUTO : NOMBRE= &#8220;+nombre+&#8221; TIPO =java.lang.String MODIFICADOR&#8221;+&#8221; ACCESO = &#8221; + Modificador.toString( modificadores );</span><span style="font-family:'Arial Unicode MS';"><span>       </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span>  </span>return s;</span><span style="font-family:'Comic Sans MS';"> </span><span style="font-family:'Comic Sans MS';"> </span></p>
<p></span></p>
<h2><em><u></u></em></h2>
<p><b><span style="font-size:16pt;color:#3399ff;font-family:'Comic Sans MS';"><em>EJERCICIO 3</em></span></b><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';">- </span><span style="font-family:'Comic Sans MS';">En esta parte no hemos hecho nada relevante, lo único que nos pedían era implementar los métodos<span>  </span>de la clase Método y Constructor.</span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">Lo único complicado que se nos podía presentar era implementar el método toString(),</span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">En nuestro caso, hemos definido una variable s de tipo String, a la cual le hemos pasado los parámetros que queríamos que nos devolviese </span><span style="font-family:'Comic Sans MS';">(return s)</span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">Como es costumbre nuestra, creamos un main para probar que está todo correcto en la clase, nos hemos creado un objeto y con un <font color="#0000ff">System.out.println(objeto.toString);</font> </span></p>
<p><span style="font-family:'Comic Sans MS';">hemos sacado por pantalla la información que nos pedían.</span><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">En el main hemos utilizado la siguiente forma de resolución:</span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">(Hemos igualado cada uno de los parámetros a una de las entradas por teclado en la ventana de comandos)</span><span style="font-family:'Comic Sans MS';"> </span><span style="font-family:'Comic Sans MS';"><span> </span></span><span style="font-family:'Arial Unicode MS';"><span>       </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span> </span>String nombre =args[0];</span><span style="font-family:'Arial Unicode MS';"><span>         </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>i</span><span style="font-family:'Arial Unicode MS';">nt modificador = Integer.parseInt(args[1]);</span><span style="font-family:'Arial Unicode MS';"><span>         </span></span></p>
<p><span style="font-family:'Arial Unicode MS';"><span></span>String tipoRetorno=args[2];</span><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">De esta forma, a la hora de ejecutar haríamos:</span></p>
<p><span style="font-family:'Comic Sans MS';">java Metodo<span>   </span>“nombre”<span>    </span>“nºmodificador”<span>    </span>“tipoRetorno”</span><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">En el lugar ocupado por las comillas directamente iría el nombre o dato correspondiente.</span><span style="font-family:'Comic Sans MS';"> </span></p>
<p><span style="font-family:'Comic Sans MS';"></span><span style="font-family:'Comic Sans MS';">*</span><font face="Times New Roman"> Creemos que es una forma para resolverlo, pero aceptaríamos más propuestas, estamos aquí para aprender, comparar y<span>  </span>compartir opiniones.</font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocablog08.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocablog08.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocablog08.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocablog08.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocablog08.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocablog08.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocablog08.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocablog08.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocablog08.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocablog08.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocablog08.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocablog08.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocablog08.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocablog08.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocablog08.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocablog08.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=7&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocablog08.wordpress.com/2008/03/12/otra-experiencia-mas-para-contar/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07bc33d6f9d53de0a9031858b6660165?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocablog08</media:title>
		</media:content>
	</item>
		<item>
		<title>Práctica 2</title>
		<link>http://ocablog08.wordpress.com/2008/03/04/practica-2/</link>
		<comments>http://ocablog08.wordpress.com/2008/03/04/practica-2/#comments</comments>
		<pubDate>Tue, 04 Mar 2008 18:07:18 +0000</pubDate>
		<dc:creator>ocablog08</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ocablog08.wordpress.com/?p=6</guid>
		<description><![CDATA[Buf..buf.. - Durante la realización de esta práctia nos han surgido gran cantidad de problemas debido a la gran cantidad de dudas que hemos ido teniendo.Aún no la hemos terminado pero estamos en ello como dos campeonas - En primer lugar haremos una introducción teórica de los conceptos dados en clase. Aserciones: explican nuestras suposiciones [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=6&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:11pt;font-family:Tahoma;">Buf..buf..</span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;">- Durante la realización de esta práctia nos han surgido gran cantidad de problemas debido a la gran cantidad de dudas que hemos ido teniendo.</span><span style="font-size:11pt;font-family:Tahoma;">Aún no la hemos terminado pero estamos en ello como dos campeonas <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;">- En primer lugar haremos una introducción teórica de los conceptos dados en clase.</span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><b><u><span style="color:blue;font-family:Tahoma;">Aserciones:</span></u></b><span style="font-size:11pt;font-family:Tahoma;"> <span style="color:black;">explican nuestras suposiciones para que un programa sea más fácil de interpretar por personas distintas al programador; son predicados que se resuelven a cierto o falso.</span></span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"><span style="color:black;"></span></span><span style="font-size:11pt;color:black;font-family:Tahoma;">También entendemos como aserción las comprobaciones a la hora de ejecutar un programa, tales como un if. (tenemos dudas sobre esa aplicación, es decir, si se refiere a una aserción).</span></p>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;">- Otros métodos usados por el programador para ver dónde está exáctamente el fallo en su programa es incluir un System.out.println que nos vaya indicando lo que nuestro programa va haciendo en cada momento a esta herramienta se le denomina</span><b><u><span style="color:blue;font-family:Tahoma;"> Traza de depuración.</span></u></b></p>
<p><b><u><span style="color:blue;font-family:Tahoma;"></span></u></b><span style="font-size:11pt;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">- Las</span><b><u><span style="color:blue;font-family:Tahoma;"> Excepciones</span></u></b><span style="font-size:11pt;color:black;font-family:Tahoma;"> están destinadas a la corrección y detección de errores.</span><span style="font-size:11pt;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;">Podemos lanzar las excepciones o capturarlas y tratarlas.</span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;">- Es más adecuado capturarlas y tratarlas con try-catch puesto que si las lanzamos éstas se propagan y si no son tratadas en ninguna parte del código llegan al main y el programa da error.</span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;">- Después de esta introducción comenzamos a comentar los ejercicios que hemos realizado con más o menos éxito <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
<address><strong><span style="font-size:14pt;color:#ca3476;font-family:Tahoma;">Ejercicio 1;</span></strong><span style="font-size:14pt;font-family:Tahoma;"></span></address>
<p><span style="font-size:11pt;font-family:Tahoma;">Para el cálculo de una ecuación de segundo grado, necesitaríamos métodos tales como:</span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><strong><span style="font-size:11pt;color:blue;font-family:Tahoma;">sqrt()</span></strong><span style="font-size:11pt;font-family:Tahoma;"> = nos calcula la raíz cuadrada de un número(de tipo double), el resultado es esta operación es también de tipo double.</span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><strong><span style="font-size:11pt;color:blue;font-family:Tahoma;">pow() </span></strong><strong><span style="font-size:11pt;color:black;font-family:Tahoma;">=</span></strong><span style="font-size:11pt;font-family:Tahoma;"> en este método le pasamos como parámetros la base y el exponente, de esta forma obtendremos el resultado de una potencia, tanto los parámetros como resultados devueltos son de tipo double.</span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;">- Podríamos también utilizar el  método <strong><span style="color:blue;font-family:Tahoma;">hypot ()</span></strong><strong><span style="color:red;font-family:Tahoma;"> </span></strong> de la siguiente forma:</span><span style="font-size:11pt;color:black;font-family:Tahoma;">public static double hypot(double x, double y)</span><span style="font-size:11pt;color:green;font-family:Tahoma;"> </span><span style="font-size:11pt;color:black;font-family:Tahoma;">devuelve sqrt(x2 +y2) = la raíz cuadrada de x.^2 e y.^2</span></p>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;"></span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;">- Para Generar un número aleatorio utilizaremos el método random()  de la clase Math, o bien crear un objeto de la clase Random y llamar al método. nextDouble();</span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;">Hay que tener cuidado puesto que en ambos casos los valores que nos dan van de 0.0 a 1.0, por lo tanto tendremos que multiplicarlos por una cifra para tener un rango mayor.</span></p>
<address><strong><span style="font-size:14pt;color:#ca3476;font-family:Tahoma;">Ejercicio2;</span></strong><span style="font-size:14pt;font-family:Tahoma;"></span></address>
<p><span style="font-size:11pt;font-family:Tahoma;">-</span><b><i><span style="font-family:Tahoma;">Preguntas Teóricas:</span></i></b></p>
<p><b><i><span style="font-family:Tahoma;"></span></i></b><span style="font-size:11pt;font-family:Tahoma;"></span><span style="font-size:11pt;font-family:Tahoma;">Seguro que nunca os habeis preguntado&#8230;.</span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><strong><span style="font-size:11pt;color:purple;font-family:Tahoma;">¿Por qué System.exit tiene como parámetro un 1  ó un 0?</span></strong><span style="font-size:11pt;color:green;font-family:Tahoma;"> </span></p>
<p><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">es decir: System.exit(1) ó System.exit(0);</span></p>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;"></span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">Pues bien:</span><span style="font-size:11pt;color:green;font-family:Tahoma;"> </span></p>
<p><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">- el método exit hace que el programa termine.</span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">Puede terminar exitosamente o con un fallo cuando el programa sale.</span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">- si el exit llevo un 0 = terminó bien, ha funcionado correctamente</span></p>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;"></span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">- si el exit es igual a 1 terminó con fallo,no ha funcionado correctamente, por lo que deberíamos mirar dónde está el fallo.</span></p>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;"></span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><b><i><span style="color:black;font-family:Tahoma;">Respecto al ejercicio 2: </span></i></b></p>
<p><b><i><span style="color:black;font-family:Tahoma;"></span></i></b><b><i><span style="color:green;font-family:Tahoma;"></span></i></b><span style="font-size:11pt;color:black;font-family:Tahoma;">En vez de poner System.out.println(&#8220;Error: valor negativo de x&#8221;) , </span><span style="font-size:11pt;color:black;font-family:Tahoma;">deberíamos haber puesto.System.err, puesto que es la salida de error estándar, y al tratarse de un error es aconsejable que lo tramite esta salida.</span></p>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;"></span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><b><i><span style="font-family:Tahoma;">Respuestas a las preguntas pedidas:</span></i></b></p>
<p><b><i><span style="font-family:Tahoma;"></span></i></b><span style="font-size:11pt;font-family:Tahoma;">No compila correctamente puesto que hemos intentado dividir un número entre 0 (indeterminación) y nos ha salido una excepción del tipo <span style="color:green;">ArithmeticException </span><span style="color:black;">debido a que en java no está registrada la división por 0.</span></span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"><span style="color:black;"></span></span><span style="font-size:11pt;color:black;font-family:Tahoma;">Ha finalizado en la sentencia b+=c/d, esto lo sabemos porque el mensaje mostrado antes de que nos saliese el fallo ha sido  el de la línea de código anterior, y no ha llegado a mostrar el mensaje que indicaba el correcto funcionamiento.</span><span style="font-size:11pt;color:green;font-family:Tahoma;"> </span></p>
<p><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">- Para solucionarlo hemos introducido una comprobación con un if poniendole como condición que si d==0, nos mostrase un mensaje de error y saliera del programa con el System.exit(1).</span></p>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;"></span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">Si esa condición no se cumple, que haga la división (puesto que el denominador es distinto de 0 y se puede realizar el cociente).</span></p>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;"></span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">No hemos llegado a programar la clase LogTrace puesto que no entendemos los métodos </span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span></p>
<pre><span style="font-size:11pt;color:green;font-family:Tahoma;">assertion(boolean condicion, String mensaje) </span><span style="font-size:11pt;color:black;font-family:Tahoma;">y</span><span style="font-size:11pt;color:green;font-family:Tahoma;"> log(String mensaje) </span> <span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">agradeceríamos vuestros comentarios </span> <span style="font-size:11pt;color:black;font-family:Tahoma;">para entenderlos, porque aun buscando en el API </span> <span style="font-size:11pt;color:black;font-family:Tahoma;">no hemos logrado hacer el ejercicio.</span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span></pre>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><br />
 </p>
<address><strong><span style="font-size:14pt;color:#ca3476;font-family:Tahoma;">Ejercicio4;</span></strong></address>
<address><span style="font-size:14pt;font-family:Tahoma;"></span></address>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;">- ¿<b><i>Qué excepción salta cuando accedemos a una posición no especificada en un array?</i></b> </span></p>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;"></span><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">Nos sale una excepción del tipo  </span><span style="font-size:11pt;color:green;font-family:Tahoma;">java.lang.ArrayIndexOutOfBoundsException: dato erroróneo</span></p>
<p><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><b><i><span style="font-size:11pt;color:black;font-family:Tahoma;">¿Se os ocurre alguna forma de controlar este problema? </span></i></b></p>
<p><b><i><span style="font-size:11pt;color:black;font-family:Tahoma;"></span></i></b><b><i><span style="font-size:11pt;color:green;font-family:Tahoma;"></span></i></b><span style="font-size:11pt;font-family:Tahoma;">-Para controlar este problema, tendríamos que comprobar que la posición a la que queremos acceder del array no sea menor que 0 ni &gt;= que longitud del array.</span></p>
<p><span style="font-size:11pt;font-family:Tahoma;"></span><b><i><span style="font-size:11pt;color:black;font-family:Tahoma;">¿Qué sucede si hacemos uso de una referencia que está puesta a null</span></i></b><span style="font-size:11pt;color:black;font-family:Tahoma;">?</span></p>
<p><span style="font-size:11pt;color:black;font-family:Tahoma;"></span><span style="font-size:11pt;color:black;font-family:Tahoma;">- Nos saldría una excepción del tipo NullPointerException.</span><span style="font-size:11pt;color:green;font-family:Tahoma;"> </span></p>
<p><span style="font-size:11pt;color:green;font-family:Tahoma;"></span></p>
<p><span style="font-size:11pt;color:green;font-family:Tahoma;"></span><font size="2" color="#008000"><font color="#000000"><font size="2" color="#008000"><font color="#000000"><font size="2" color="#008000"><font size="2" color="#008000"><font color="#000000" face="Tahoma">Esperamos vuestros comentarios para poder continuar con la practica ^^</font></font></font></font></font></font></font></p>
<p><font color="#008000"><font color="#000000"><font color="#008000"><font color="#000000"><font color="#008000"><font color="#008000"><font size="2" color="#000000" face="Tahoma">Un saludo,</font></font></font></font></font></font></font></p>
<p><font color="#008000"><font color="#000000"><font color="#008000"><font color="#000000"><font color="#008000"><font color="#008000"><font size="2" color="#000000" face="Tahoma">Jessica y Bea</font></font></font></font></font></font></font><font color="#008000"><font color="#000000"><font color="#008000"><font color="#000000"><font color="#008000"><font color="#008000"><font size="2"></font><font size="+0"><font size="+0"><font color="#008000"><font color="#000000"></font></font></font></font></font></font></font></font></font></font><font color="#008000"><font color="#000000"><font color="#008000"><font color="#000000"><font color="#008000"><font color="#008000"><font size="+0"></font></font></font></font></font></font></font><font color="#008000"><font color="#000000"><font color="#008000"><font color="#000000"><font color="#008000"><font color="#008000"><font size="2"></font></p>
<p></font></font></font></font></font><font size="2"><font size="2" color="#008000"><font size="2" color="#008000"></font></font><font color="#008000"></font></font></p>
<p></font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocablog08.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocablog08.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocablog08.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocablog08.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocablog08.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocablog08.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocablog08.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocablog08.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocablog08.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocablog08.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocablog08.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocablog08.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocablog08.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocablog08.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocablog08.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocablog08.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=6&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocablog08.wordpress.com/2008/03/04/practica-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07bc33d6f9d53de0a9031858b6660165?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocablog08</media:title>
		</media:content>
	</item>
		<item>
		<title>Primera Toma de Contacto</title>
		<link>http://ocablog08.wordpress.com/2008/02/23/primera-toma-de-contacto/</link>
		<comments>http://ocablog08.wordpress.com/2008/02/23/primera-toma-de-contacto/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 16:35:23 +0000</pubDate>
		<dc:creator>ocablog08</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ocablog08.wordpress.com/?p=4</guid>
		<description><![CDATA[(PRÁCTICA 1)  Después de haber ido al laboratorio y realizar la práctica, en parte, nos hemos dado cuenta de que aún hay conceptos que necesitamos repasar. Únicamente hemos llegado hasta el ejercicio 3, pero continuaremos a lo largo de la semana trabajando sobre esta práctica. Conceptos a destacar del Ejercicio 0; - path= camino que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=4&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:'Tw Cen MT';">(PRÁCTICA 1)</span></p>
<p><span style="font-family:'Tw Cen MT';"> Después de haber ido al laboratorio y realizar la práctica, en parte, nos hemos dado cuenta de que aún hay conceptos que necesitamos repasar.</span></p>
<p><span style="font-family:'Tw Cen MT';">Únicamente hemos llegado hasta el ejercicio 3, pero continuaremos a lo largo de la semana trabajando sobre esta práctica.</span></p>
<p><span style="font-family:'Tw Cen MT';">Conceptos a destacar del Ejercicio 0;</span></p>
<p><span style="font-family:'Tw Cen MT';">- path= camino que contiene una lista de directorios donde podemos encontrar el programa a ejecutar en un determinado momento. </span></p>
<p><span style="font-family:'Tw Cen MT';">- jre= máquina virtual de java (entorno de ejecución de java) </span></p>
<p><span style="font-family:'Tw Cen MT';">- URL del API de la versión 6.0 de java :</span></p>
<p><span style="font-family:'Tw Cen MT';"> http://java.sun.com/javase/6/docs/api/</span></p>
<p><span style="font-family:'Tw Cen MT';">- Cada versión tiene su url diferente. </span></p>
<p><span style="font-family:'Tw Cen MT';">- <b>En el primer ejercicio</b> simplemente implementamos un bucle for que va desde 0 200, en nuestro caso le hemos incluido en la sentencia System.out.print() la variable i usada en el bucle para indicarnos que ciertamente se está imprimiendo por pantalla las 200 veces el mensaje HelloWorld.</span></p>
<p><span style="font-family:'Tw Cen MT';">(No sería necesario incluirlo, pero en ocasiones viene bien demostrarlo)</span></p>
<p><span style="font-family:'Tw Cen MT';">Respecto al <b>segundo ejercicio</b>,  lo primero que hicimos al programar el <span>                                  </span>- <b>EchoArgsReverse,</b> fue:</span></p>
<p style="margin-left:35.4pt;text-indent:17.4pt;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:'Tw Cen MT';">Para asegurarnos de que estamos trabajando con el tamaño correcto del array le hemos introducido una sentencia Sytem.out.print() para que nos muestre la longitud.</span></p>
<p style="margin-left:35.4pt;text-indent:17.4pt;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:'Tw Cen MT';">Recorremos el array de forma inversa, para que a la hora de imprimir nos muestre en primer lugar el último dato introducido por teclado.</span></p>
<p style="margin-left:35.4pt;text-indent:17.4pt;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:'Tw Cen MT';">A la hora de cambiar<span>  </span>el orden de la numeración, simplemente hemos restado a la última posición del array, la posición actual en la que se encuentra.</span></p>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span>-<span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;">         </span></span><!--[endif]--><span style="font-family:'Tw Cen MT';">Problemas presentados:</span></p>
<p style="margin-left:35.4pt;text-indent:17.4pt;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:'Tw Cen MT';">En un primer momento no nos salía nada cuando ejecutábamos ya que la condición del for estaba mal formulada. El fallo era que en vez de poner i&gt;-1 (ya que siempre va a ser mayor, teniendo en cuenta que la longitud es 4), poníamos i&lt;-1 y eso nunca se cumplía por lo que se salía siempre del for y no imprimía nada.</span></p>
<p class="MsoNormal" style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span>-<span style="font-family:'Times New Roman';font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;">         </span></span><!--[endif]--><span style="font-family:'Tw Cen MT';">Para el programa que tenia que imprimir el espacio al final, al principio encontramos una solución un poco “cutre” que era recorrer el array hasta la penúltima posición, mostrándonos por pantalla lo que había en cada posición más el espacio. </span></p>
<p class="MsoNormal" style="margin-left:35.4pt;"><span style="font-family:'Tw Cen MT';">Como para la última posición no nos interesaba que se imprimiera el espacio, lo que hicimos fue imprimirla a parte, sin el espacio (con una sentencia System.out).</span></p>
<p class="MsoNormal" style="margin-left:18pt;"><span style="font-family:'Tw Cen MT';"> </span></p>
<p class="MsoNormal" style="margin-left:35.4pt;"><span style="font-family:'Tw Cen MT';">Después se nos ocurrió, que sería mejor evaluar dentro del for si nos encontrábamos en la ultima posición ( en cuyo caso, no imprimíamos espacio) o si era otra ( entonces si se imprimía un espacio).</span></p>
<p class="MsoNormal" style="margin-left:18pt;text-indent:17.4pt;"><span style="font-family:'Tw Cen MT';">Esto lo hemos hecho con un if- else dentro del for.</span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';"> </span></p>
<p class="MsoNormal"><b><span style="font-family:'Tw Cen MT';">Ejercicio 3</span></b><span style="font-family:'Tw Cen MT';"></span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:'Tw Cen MT';">Creemos que</span><span style="font-family:'Tw Cen MT';"> la comparación de b con -1 se debe a lo siguiente:</span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';">Tenemos una variable b que al principio la ponemos a -1. Este valor cambia a medida que vamos introduciendo los distintos caracteres( cada uno caracterizado por un int).</span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';">El -1 es para identificar si hemos terminado de escribir, es decir si hemos pulsado enter, por eso nos hace la comparación si b == -1.</span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';"><span> </span>Si ésta se cumple, y salimos del bucle (con el break).</span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';"> </span></p>
<p class="MsoNormal" style="text-align:center;" align="center"><span style="font-family:'Tw Cen MT';">if (b == -1)</span></p>
<p class="MsoNormal" style="text-align:center;" align="center"><span style="font-family:'Tw Cen MT';">break;</span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';">Si no se cumple, saca por pantalla lo q hemos escrito, y comienza la siguiente iteración</span></p>
<p class="MsoNormal" style="text-align:center;" align="center"><span style="font-family:'Tw Cen MT';">System.out.write(b);</span></p>
<p class="MsoNormal" style="text-align:center;" align="center"><span style="font-family:'Tw Cen MT';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';"> </span></p>
<p class="MsoNormal"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:'Tw Cen MT';"> ahora nos tocaba programar, pero estamos teniendo bastantes problemas con este ejercicio. El primero de ellos es la comprensión, porque no sabemos<span>  </span>a que se refiere exactamente la frase: “</span><i>que mande a su salida estándar el número de bytes de su entrada estándar.”</i> <span style="font-family:'Tw Cen MT';">Estamos dudando si tenemos que mandar el byte que le corresponde a cada carácter que nos introduzcan o el numero de caracteres que se han introducido :S</span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';">Pensamos que tal vez se podría hacer con una sentencia switch, dándole a cada letra un valor pero puede ser una carga demasiado grande, puesto que hay un número elevado de letras y por tanto habría<span>  </span>un número elevado de case’s.</span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';">Por otra parte, también podríamos hacer una suma de los caracteres que se han introducido pero a la hora de igualar la variable b a un número no podemos puesto que b de tipo carácter, habría que hacer un cambio de tipo.</span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';">Aceptaríamos algún comentario para poder continuar con los siguientes apartados puesto que nos hemos quedado encasquilladas aquí y no sabemos cómo continuar; ideas no nos faltan pero no sabemos llevarlas a cabo.</span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';"> </span></p>
<p class="MsoNormal"><span style="font-family:'Tw Cen MT';">A lo largo de esta semana continuaremos realizando la práctica con las ideas que nos vayan surgiendo y con vuestros comentarios, de esta forma podremos incluir los comentarios y tal vez nos pueda servir a más de uno para entender mejor la asignatura.</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocablog08.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocablog08.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocablog08.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocablog08.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocablog08.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocablog08.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocablog08.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocablog08.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocablog08.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocablog08.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocablog08.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocablog08.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocablog08.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocablog08.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocablog08.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocablog08.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=4&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocablog08.wordpress.com/2008/02/23/primera-toma-de-contacto/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07bc33d6f9d53de0a9031858b6660165?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocablog08</media:title>
		</media:content>
	</item>
		<item>
		<title>Bienvenid@s</title>
		<link>http://ocablog08.wordpress.com/2008/02/21/bienvenids/</link>
		<comments>http://ocablog08.wordpress.com/2008/02/21/bienvenids/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 18:46:45 +0000</pubDate>
		<dc:creator>ocablog08</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ocablog08.wordpress.com/?p=3</guid>
		<description><![CDATA[Buenassss, aquí dejamos nuestra primera entrada en este blog. Esperamos que nuestros siguientes posts nos sean útiles tanto a nosotras como al resto de alumnos para entender mejor la asignatura. Un saludo Bea y Jéssica<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=3&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Buenassss, aquí dejamos nuestra primera entrada en este blog.</p>
<p>Esperamos que nuestros siguientes posts nos sean útiles tanto a nosotras como al resto de alumnos para entender mejor la asignatura.</p>
<p>Un saludo <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bea y Jéssica</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocablog08.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocablog08.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocablog08.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocablog08.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocablog08.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocablog08.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocablog08.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocablog08.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocablog08.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocablog08.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocablog08.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocablog08.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocablog08.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocablog08.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocablog08.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocablog08.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocablog08.wordpress.com&amp;blog=2937556&amp;post=3&amp;subd=ocablog08&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocablog08.wordpress.com/2008/02/21/bienvenids/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/07bc33d6f9d53de0a9031858b6660165?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocablog08</media:title>
		</media:content>
	</item>
	</channel>
</rss>
