<?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>Hucross's Weblog</title>
	<atom:link href="http://hucross.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://hucross.wordpress.com</link>
	<description>Organización de Contenidos Audiovisuales</description>
	<lastBuildDate>Tue, 27 May 2008 21:09:17 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='hucross.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Hucross's Weblog</title>
		<link>http://hucross.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://hucross.wordpress.com/osd.xml" title="Hucross&#039;s Weblog" />
	<atom:link rel='hub' href='http://hucross.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Últimas Valoraciones Del Juego</title>
		<link>http://hucross.wordpress.com/2008/05/27/ultimas-valoraciones-del-juego/</link>
		<comments>http://hucross.wordpress.com/2008/05/27/ultimas-valoraciones-del-juego/#comments</comments>
		<pubDate>Tue, 27 May 2008 21:07:49 +0000</pubDate>
		<dc:creator>hucross</dc:creator>
				<category><![CDATA[Prácticas]]></category>

		<guid isPermaLink="false">http://hucross.wordpress.com/?p=48</guid>
		<description><![CDATA[Que podemos decir, se han cumplido todas nuestras espectativas, el juego funciona tal y como queremos: - ya nos guarda la partida cuando nosotros le digamos - antes de empezar nos deja la opción de cargar partida guardada o no - podemos salirnos sin guardar - podemos salirnos en cualquier momento dando a la cruceta [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=48&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://hucross.files.wordpress.com/2008/05/final.jpg"><img class="aligncenter size-full wp-image-49" src="http://hucross.files.wordpress.com/2008/05/final.jpg?w=500&#038;h=351" alt="" width="500" height="351" /></a></p>
<p>Que podemos decir, se han cumplido todas nuestras espectativas, el juego funciona tal y como queremos:</p>
<p>- ya nos guarda la partida cuando nosotros le digamos</p>
<p>- antes de empezar nos deja la opción de cargar partida guardada o no</p>
<p>- podemos salirnos sin guardar</p>
<p>- podemos salirnos en cualquier  momento dando a la cruceta de la esquina superior derecha</p>
<p>en definitiva, todas los objetivos cumplidos, el juego del comecocos, está listo para ser mandado!! jejeje</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hucross.wordpress.com/48/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hucross.wordpress.com/48/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hucross.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hucross.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hucross.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hucross.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hucross.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hucross.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hucross.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hucross.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hucross.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hucross.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hucross.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hucross.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hucross.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hucross.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=48&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hucross.wordpress.com/2008/05/27/ultimas-valoraciones-del-juego/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/12021838d4f25c1bd30f0ac77169d18f?s=96&#38;d=identicon" medium="image">
			<media:title type="html">hucross</media:title>
		</media:content>

		<media:content url="http://hucross.files.wordpress.com/2008/05/final.jpg" medium="image" />
	</item>
		<item>
		<title>Duodécima Práctica</title>
		<link>http://hucross.wordpress.com/2008/05/27/duodecima-practica/</link>
		<comments>http://hucross.wordpress.com/2008/05/27/duodecima-practica/#comments</comments>
		<pubDate>Tue, 27 May 2008 20:58:21 +0000</pubDate>
		<dc:creator>hucross</dc:creator>
				<category><![CDATA[Prácticas]]></category>

		<guid isPermaLink="false">http://hucross.wordpress.com/?p=43</guid>
		<description><![CDATA[Bueno gentecilla parece que este es nuestro último post de prácticas, y la verdad es que, qué rápido se pasa el tiempo,no?? parece que era ayer, cuando no sabíamos ni que era el Blogroll, y fijaos que ahora somos unos &#8220;expertos&#8221; en esto de &#60;Blogear&#62; jejeje. Y que decir de la última práctica, que nos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=43&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://hucross.files.wordpress.com/2008/05/montanasnevadas.jpg"><img class="aligncenter size-full wp-image-46" src="http://hucross.files.wordpress.com/2008/05/montanasnevadas.jpg?w=500&#038;h=345" alt="" width="500" height="345" /></a></p>
<p>Bueno gentecilla parece que este es nuestro último post de prácticas, y la verdad es que, qué rápido se pasa el tiempo,no?? parece que era ayer, cuando no sabíamos ni que era el Blogroll, y fijaos que ahora somos unos &#8220;expertos&#8221; en esto de &lt;Blogear&gt; jejeje.</p>
<p>Y que decir de la última práctica, que nos deja con el gusanillo de los reproductores de video y audio, pero no nos preocupemos, que en segundo nos vamos a hinchar!!jejeje, y es que tenemos una asignatura prácticamente sólo de JMF!!;)</p>
<p class="MsoNormal">Hablando un poco de la práctica del pasado viernes, qué podemos decir que JMF es un API que permite manejar multimedia que no viene dentro del JDK. Tenemos que descargarla a parte y configurar el classpath, cosa que nos tocó preguntar a nuestro compañero de delante porque no nos acordábamos!jejeje.</p>
<p class="MsoNormal">Lo primerode todo, el profesor nos mando bucear en el API un poco, para que viésemos la cantidad de cosas que se pueden hacer con JMF.</p>
<p class="MsoNormal">En el ejercicio 1, se nos pedía que hiciéramos un reproductor, que reprodujera un video que teníamos que descargar con la práctica.Teníamos que usar JFrame de swing, extraer su content pane y añadir sus componentes visuales ( que se extraen de la clase player).</p>
<p class="MsoNormal">¿Como creo la clase player? Tenemos una clase con 2 métodos principales, getVisualComponent(), y otro que es getControlPanelComponent(), que tenemos que añadir a un content pane.</p>
<p class="MsoNormal">Player es una interfaz, no puedo hacer un new, y quedarme tan ancho, con la clase Manager,se define una serie de métdos estáticos, uno es createPlayer(“¿donde encotrar el fichero, el imputStream, que vamos a reproducir?); donde nosotros podemos meterle la url del fichero para que lo reproduzca.</p>
<p class="MsoNormal">Por lo tanto, tendremos que hacer un objeto tipo URL y se lo pasaremos por parámetro. Al componer una URL se hace así:<strong> prot://destino/recurso;</strong><span> </span>ejemplo!!file://video.mpg</p>
<p class="MsoNormal">Tenemos nuestra ventana con nuestros 2 componentes que hemos creado a traves de un manager, y con nuestro control de excepciones debidamente hecho. Al estar en el estado de Unrealized, para pasar correctamente al estado de Realized deberemos hacer p.realize(); y después getVisualComponent();.</p>
<p class="MsoNormal">No podemos reservar un tamaño sin saber antes el tamaño que tiene de verdad lo que queramos hacer, por eso hacemos el realize(); Primero salta al estado de &#8220;me estoy dando cuenta&#8221;, y se ejecuta un nuevo Thread que está ejecutando realize. El problema es que estamos tardando, y no sabemos cuanto puede tardar, y no se ejecuta getVisualComponent(), y se solucionaría si ponemos un thread.Sleep(); pero es una burrada. Por eso hacemos lo que hemos contado en el párrafo anterior.</p>
<p class="MsoNormal">JMF también trabaja con eventos porque el hecho de que un player cambie de estados también genera un evento.</p>
<p class="MsoNormal">Si seguimos con la práctica, tendremos que saber que hay que añadir un controllerListener(), para que cuando se lance u ocurra un evento. (ocurra el evento que ocurra) ,descubramos de qué tipo de evento estamos hablando, qué objeto es el que nos aperce, entonces haremos un instanceof nombre_del_evento, y en vez de esperar un tiempo arbitrario, instalamos un modelo de evento, y nos ponemos a escuchar, de tal forma que cuando se haya dado cuenta de lo que está pasando continuamos. El evento que nos hace falta es RealizeCompleteEvent (evento de que se ha terminado el paso del estado Realize).</p>
<p class="MsoNormal">NO PUEDO INVOCAR VISUAL COMPONENT ANTES DE PASAR AL ESTADO REALIZE ; POR ESO ES POR LO QUE HAGO EL TRATAMIENTO DE EVENTOS.</p>
<p class="MsoNormal">Con el video es posible que nos salte este mensaje, variable Handle format; (nos soy capaz de manejar este formato), que estamos usando un video no compatible, y ¿dónde hay un video compatible? www.it.uc3m-es/alcortes/tmp/otrovideo.mpg</p>
<p class="MsoNormal">Y bueno, ahora para más detalles, os ponemos el código a continuación:</p>
<p class="MsoNormal">import javax.swing.*;<br />
import javax.media.*;<br />
import java.awt.event.*;<br />
import java.net.URL;<br />
import javax.swing.JFileChooser;<br />
import java.net.MalformedURLException;<br />
import java.io.*;<br />
import java.awt.*;</p>
<p class="MsoNormal">public class MiReproductor extends JFrame implements ControllerListener{<br />
URL direccion;<br />
Player player;<br />
Component c;<br />
JPanel panel;</p>
<p>public MiReproductor(String cadena)<br />
{<br />
try {<br />
direccion = new URL (cadena);<br />
player = Manager.createPlayer(direccion);<br />
player.addControllerListener(this);<br />
}<br />
catch(IOException e){<br />
}<br />
catch(MediaException me){<br />
}<br />
catch(Exception e){<br />
}<br />
player.start();<br />
setTitle(&#8220;Reproductor&#8221;);<br />
panel = (JPanel)getContentPane();<br />
setVisible(true);<br />
System.out.println(direccion.toString());<br />
setDefaultCloseOperation(EXIT_ON_CLOSE);<br />
}</p>
<p>public synchronized void controllerUpdate(ControllerEvent ce){</p>
<p>if(ce instanceof RealizeCompleteEvent){<br />
c = player.getControlPanelComponent();<br />
if(c != null)<br />
panel.add(&#8220;South&#8221;,c);<br />
c = player.getVisualComponent();<br />
if(c != null)<br />
panel.add(&#8220;North&#8221;,c);<br />
}</p>
<p>if(ce instanceof EndOfMediaEvent){<br />
player.setMediaTime(new Time(0));<br />
player.start();<br />
}</p>
<p>}<br />
public static void main(String[]args)<br />
{<br />
MiReproductor aver = new MiReproductor(&#8220;file:video.mpg&#8221;);<br />
}</p>
<p>}</p>
<p class="MsoNormal">Y hasta aquí, el que podría ser nuestro último post! muchas gracias a todos los que nos habéis leido, y a todos los que han hecho posible que esta propuesta no se haya venido a pique.</p>
<p class="MsoNormal">1Saludo a todos!!!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hucross.wordpress.com/43/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hucross.wordpress.com/43/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hucross.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hucross.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hucross.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hucross.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hucross.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hucross.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hucross.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hucross.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hucross.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hucross.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hucross.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hucross.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hucross.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hucross.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=43&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hucross.wordpress.com/2008/05/27/duodecima-practica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/12021838d4f25c1bd30f0ac77169d18f?s=96&#38;d=identicon" medium="image">
			<media:title type="html">hucross</media:title>
		</media:content>

		<media:content url="http://hucross.files.wordpress.com/2008/05/montanasnevadas.jpg" medium="image" />
	</item>
		<item>
		<title>Undécima Práctica</title>
		<link>http://hucross.wordpress.com/2008/05/16/undecima-practica/</link>
		<comments>http://hucross.wordpress.com/2008/05/16/undecima-practica/#comments</comments>
		<pubDate>Fri, 16 May 2008 17:57:08 +0000</pubDate>
		<dc:creator>hucross</dc:creator>
				<category><![CDATA[Prácticas]]></category>

		<guid isPermaLink="false">http://hucross.wordpress.com/?p=40</guid>
		<description><![CDATA[Ya queda menos chicos!!!jejje, como os fue esta práctica?? Si pudiésemos definirla con una sola palabra, la ideal sería CATÁSTROFE!!! y es que primero los ordenadores de al área de no-telemática no tiraban, se quedaba la pantalla azul y no entraba en windows, luego, nos mudamos a la torre de telemática, y que pasaba??? que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=40&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><img class="size-full wp-image-42" src="http://hucross.files.wordpress.com/2008/05/paisaje1.jpg?w=452&#038;h=316" alt="" width="452" height="316" /></p>
<p>Ya queda menos chicos!!!jejje, como os fue esta práctica?? Si pudiésemos definirla con una sola palabra, la ideal sería CATÁSTROFE!!! y es que primero los ordenadores de al área de no-telemática no tiraban, se quedaba la pantalla azul y no entraba en windows, luego, nos mudamos a la torre de telemática, y que pasaba??? que el classpath no estaba configurado!!jejej, que bien!! menos mal que nos dejo volver a la otra torre, pero como usuario &#8220;invitado&#8221;, así que a tirar de block de notas y simbolo del sistema!!jejejej</p>
<p>Hoy nos vamos a comunicar con los programas! Hay varias formas de comunicarse por ejemplo:<br />
- La entrada estándar, system(in), si queremos lo transformamos en un bufferReader para que<br />
nos lea de teclado..pero bien, sabemos comunicarnos con un programa gracias a la entrada estándar pero no es muy ortodoxo que digamos.</p>
<p>- También podemos hacerlo con parámetros de entrada, tampoco es muy adecuado, pero se usa a veces.</p>
<p>- Y como no, el manejador de ventanas, mediante eventos. Hay componentes gráficos que pueden capturar eventos, y que esos eventos se darán cuando pase algo. Y qué pasa entonces???? que cuando alguien pulse por ejemplo, un JButton, éste se encolará en la cola de eventos, de tal forma que si pulsas 10 veces el boton, se meterán 10 eventos dentro de la cola.</p>
<p>Estructura básica de los hilos:<br />
Quien procesa los eventos es event-dispaching thread, y el hilo principal es que los lanza, y todos ellos se meten dentro de una cola.</p>
<p>Por ejemplo, setVisible() lanza un evento, y el event-dispaching thread, cuando en la cola le toque su<br />
turno, se encargará de hacer ese setvisible().</p>
<p>Esta clase de hoy esta básicamente para familiariazarnos y trabajar rárpido con hilos en swing. Recordamos pues que para crear una ventana con un componente: creabamos un JFrame, creabamos un JPanel. y se creaba un contentPane, y dentro de él un JPanel, JButton y JText.<br />
¿Qué diferencia hay entre insertar un JButton y un JPanel?<br />
Que un JBUtton contiene un ActionListener, que se lo tenemos que añadir así, b.addActionListener(e), siendo e un objeto de ActionPerform; y cuando lance este evento se va a encolar en la cola de eventos.<br />
¿Cómo conseguimos un objeto de una clase que implemente actionListener? O con una clase interna<br />
o implementándola como interfaz.<br />
Al final llegamos a la conclusión de la pregunta sobre que diferencia hay entre ellos y es que sobre JButton puedo ejecutar un evento, y sobre JPanel no. JButton es un elemento activo y JLabel pasivo.</p>
<p>En el ejercicio 1 se nos pedía que escribiéramos un programa que presentara una ventana con un botón y que cada vez que le pulsáramos imprimiera un texto por salida estándar, y bueno la verdad es que no fue muy complicado, simplemente había que poner un escuchador al botón y cuando éste se activara, sacase por pantalla ese texto que queramos.</p>
<p>En el ejercicio 2 se nos pedía que hiciéramos una ventana que tuviera un botón y una etiqueta, y cada vez que se pulsara el botón se cambiara de color la etiqueta, y bueno esto tampoco tuvo mucha difultad porque sabiendo que teníamos que usar un escuchador para el botón y luego para cambiar el fondo un setOpaque() (para poder pintarlo) y setBackground() (para darle color).</p>
<p>En el ejercicio 3 se nos pide que calculemos eventos de boton y de salida estandar.<br />
Aunque tenemos una ventana, tenemos también otro hilo que sigue trabajando, sigue<br />
haciendo código, que es lo vulgarmente diríamos &#8220;lo que está en la linea comandos&#8221;,y está respondiendo a eventos dentro de ese linea de comandos. Lo que principalmente se nos pide es que mezclemos ejercicios 1 y 2, por lo que no tiene mucha complejidad,pero..</p>
<p>¿¿qué hilo es el que se está ejecutando?? Dentro de la tarea que estemos utilizando antes de cambiar el color o imprimir por salida estandar (ejercicio anterior) debemos poner para saberlo la siguiente línea de código: Thread.currentThread().getName();</p>
<p>Cuando alguien pulsa enter en ese hilo, lo escuchamos y ejecutamos un código, y a ese jLabel, lo cambiamos de color, así mismo cuando pulsemos el botón.</p>
<p>¿¿Por qué queremos que lo ejecute el hilo event-dispaching thread?? porque esta para eso, esta para procesar y ejercutar eventos!!jejjee, y ¿cómo se lanza un evento? ponemos:<br />
pongo invokeAndWait( )<br />
invokeLater(Runnable r);<br />
creo una clase que implemente Runnable, y en el método run lo que quiera que haga!!</p>
<p>Bueno chicos, la verdad es que no nos dio tiempo a más, y todo gracias a nuestros problemas informáticos..jejeje.<br />
Intentaremos a ver si acabamos la práctica y la ponemos por aquí, pero no se si lo sabéis, pero las soluciones hoy mismo ya estaban colgadas, echadlas un ojo por si acaso nunca viene mal!!</p>
<p>De todas formas la dinámica de los ejrecicios no es muy complicada si los 3 primeros se entienden bien, es mezclar los conceptos aprendidos unos con otros, y añadiendo el concepto de búsqueda en threads!</p>
<p>Un saludo a todos y hasta la próxima y última clase!!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hucross.wordpress.com/40/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hucross.wordpress.com/40/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hucross.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hucross.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hucross.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hucross.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hucross.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hucross.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hucross.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hucross.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hucross.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hucross.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hucross.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hucross.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hucross.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hucross.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=40&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hucross.wordpress.com/2008/05/16/undecima-practica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/12021838d4f25c1bd30f0ac77169d18f?s=96&#38;d=identicon" medium="image">
			<media:title type="html">hucross</media:title>
		</media:content>

		<media:content url="http://hucross.files.wordpress.com/2008/05/paisaje1.jpg" medium="image" />
	</item>
		<item>
		<title>Décima Práctica</title>
		<link>http://hucross.wordpress.com/2008/05/09/decima-practica/</link>
		<comments>http://hucross.wordpress.com/2008/05/09/decima-practica/#comments</comments>
		<pubDate>Fri, 09 May 2008 19:14:53 +0000</pubDate>
		<dc:creator>hucross</dc:creator>
				<category><![CDATA[Prácticas]]></category>

		<guid isPermaLink="false">http://hucross.wordpress.com/?p=37</guid>
		<description><![CDATA[  Hola a todos!! Quien decía que programar es fácil?? Es facilísimo!!jajaja, la verdad es que no, pero bueno.. Como lo lleváis??? La práctica de hoy, la verdad es que ha sido bastante teórica pero ha venido bien, pese a que en clase se nos avisara de que hilos nos muy probable que caiga en [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=37&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="text-align:center;margin:0;"><span style="font-size:small;font-family:Times New Roman;"><a href="http://hucross.files.wordpress.com/2008/05/espectacular1.jpg"><img class="aligncenter size-full wp-image-39" src="http://hucross.files.wordpress.com/2008/05/espectacular1.jpg?w=459&#038;h=312" alt="" width="459" height="312" /></a></span></p>
<p class="MsoNormal" style="text-align:center;margin:0;"> </p>
<p class="MsoNormal" style="text-align:center;margin:0;"><span style="font-size:small;font-family:Times New Roman;"><a href="http://hucross.files.wordpress.com/2008/05/espectacular.jpg"></a></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Hola a todos!! Quien decía que programar es fácil?? Es facilísimo!!jajaja, la verdad es que no, pero bueno.. Como lo lleváis??? </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">La práctica de hoy, la verdad es que ha sido bastante teórica pero ha venido bien, pese a que en clase se nos avisara de que hilos nos muy probable que caiga en el examen, pero oye, nunca viene mal saber estas cosas, sobre todo para nuestros juegos!!jejeje</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">La práctica de hoy se podría decir que se divide en: </span></p>
<ol style="margin-top:0;" type="1">
<li class="MsoNormal"><span style="font-size:small;font-family:Times New Roman;">Procesos</span></li>
<li class="MsoNormal"><span style="font-size:small;font-family:Times New Roman;">Threads en Java</span></li>
<li class="MsoNormal"><span style="font-size:small;font-family:Times New Roman;">Condiciones de Carrera</span></li>
<li class="MsoNormal"><span style="font-size:small;font-family:Times New Roman;">Hilos de Swing</span></li>
</ol>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<ol style="margin-top:0;" type="1">
<li class="MsoNormal"><strong><span style="text-decoration:underline;"><span style="font-size:small;"><span style="font-family:Times New Roman;">Procesos</span></span></span></strong></li>
</ol>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Cuantos procesos hay ejecutándose en el ordenador a la vez, si miramos el administrador de tareas de Windows (Ctrl.+Alt.+Supr.) vemos que son 50!!!</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">¿Que diferencia hay entre un programa y un proceso? Los programas necesitan procesos para ejecutarse. No hay diferencia entre ellos, son lo mismo. El resumen de procesos es llamado programa. Tanto proceso como programa son líneas de código compilado ejecutándose. Un proceso es un código en ejecución. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Tenemos 50 procesos ejecutándose a la vez, pero lo están haciendo realmente a la vez??? Pues no, como Windows es un sistema operativo multitarea: </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">es posible ejecutar 5 procesos al mismo tiempo (la cpu en cada momento solo puede ejecutar <span style="text-decoration:underline;">un proceso</span>) la diferencia es que los procesadores trabajan en rangos de milisegundos y si dividimos 1 segundo en 5 partes, en la primera se ejecuta el primero (20milisegundos) y así con todos</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Un procesos hace sus tareas secuencialmente, si uno necesita hacer 2 cosas ala vez, esperar 2 segundos, y aceptar cosas por líneas de comando, ¿Qué pasa? Que solo puedo ejecutar una tarea en cada momento por cada proceso.</span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">En el ejercicio 1 hay un programa que cada vez q damos al enter hace ding, y otro que hace dong cada un cierto intervalo de tiempo, ¿podemos hacer que un código que espere un temporizador y a la vez lea una entrada por teclado?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">El ejercicio 1 es fácil, porque solo es compilar, ejecutar, y entender!jejeje</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">¿siempre se reparten equitativamente los procesos? En principio es la mas sencilla de hacer, pero a veces hay prioridades (es como en avión que el que va en Business pues tiene prioridad sobre los demás).</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;">     <strong> 2.</strong>   </span></span><strong><span style="text-decoration:underline;"><span style="font-size:small;"><span style="font-family:Times New Roman;">Threads en java</span></span></span></strong></p>
<p class="MsoNormal" style="margin:0 0 0 18pt;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Un thread (hilo de ejecución), es un camino que sigue nuestro programa mientras se ejecuta, podemos hacerlo de tal forma que nuestro programa tenga 2 hilos de ejecución en el mismo proceso. Es más, por ejemplo, tienes 20 milisegundos y te las apañas como puedas, y esto nos permite hacer dos cosas a la vez. La situación sería lo mismo que tener 2 procesos asociados a un única salida estándar.</span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">El ejercicio 2, es aprender a lanzar un hilo…</span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">Runnable r = new Runnable (){</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">Public void run(){</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;">}</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">¿Qué es Runnable? Hemos dicho, que de una interfaz no podemos hacer un objeto de ella. Una clase que los implemente (clase interna), quiere decir que estoy poniendo un atributo de clase (va ser r), que es un interfaz tipo Runnable, siempre y cuando estén implementado todos los métodos de esta interfaz. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Esta es una sintaxis válida para crear un objeto que implemente una interfaz, es un objeto más.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Lo que queremos es lanzar un hilo nuevo. Existe una clase que tiene un método run(), y la clase Thread esta relacionada con algo que implementa run().</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">La clase Thread lanza un hilo nuevo, se ejecuta el código que esté dentro de run() si quiero hacer que cuando se ejecute el hilo imprima el nombre del hilo por pantatalla, thread hace la bifurcación y dentro de run() ponemos el S.O.P</span><span style="font-size:small;font-family:Times New Roman;">.</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Tenemos un objeto r que implementa la interfaz Runnable, y se lo paso al constructor de thread, de tal forma que tengo un hilo que esta relacionado en su construcción con un tipo Runnable, y el método start(); q se encarga de hacer la ejecución.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">Thread t = new Thread (r);</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">t.start;</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">¿Qué pasa cuando el código principal se acaba?¿Se puede dar la situación de que nuestro hilo no raíz siga y el de la raíz se muera? no!!!</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Otra forma de lanzar un Thread es el código 2, hago que la clase principal implemente Runnable, y en el main lanzo el thread (new thread) y le paso un objeto de la clase principal.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Y la tercera forma, una clase principal que herede de thread, y como algo que herede de thread a parte de los métodos que tenga ,arrastra las interfaces que implemente.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Thread implementa Runnable, y dentro del código tengo la posibilidad de hacer start, e implementar el método run(); </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">Class TwoThreads extends thread{</span></span></span></p>
<p class="MsoNormal" style="text-indent:35.4pt;margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">start ();</span></span></span></p>
<p class="MsoNormal" style="text-indent:35.4pt;margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">run(){</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span>       </span>}</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span>   </span>}</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Luego puede pasar que en vez invocar el método start invoco el método run, estoy hablando de un error común!!! No invocar t.run(), lo que estoy haciendo es no lanzar la bifurcación que eso lo hace start!!.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;">    <strong>3</strong>. </span></span><strong><span style="text-decoration:underline;"><span style="font-size:small;"><span style="font-family:Times New Roman;">Condiciones de Carrera</span></span></span></strong></p>
<p class="MsoNormal" style="margin:0 0 0 18pt;"><span style="text-decoration:underline;"><span style="font-size:small;"></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">ERROR CLÁSICO!!</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Imaginad un programa con 2 threads, y esos 2 threads acceden a una base de datos en la forma de un vector, pila, cola, (contenedor de objetos) que es una atributo de esta clase. Puedo acceder desde cualquier thread a él, es un elemento compartido desde de los 2 hilos. ¿Qué pasa? Si dos elementos acceden a la vez a un mismo sitio de la memoria, como el tiempo asignado a cada hilo es aleatorio, es una cosa que esta fuera de nuestro control, no sabemos cual de los 2 accesos se van<span>  </span>a ejecutar primero, si a la vez, esto se llama CONDICION DE CARRERA!!!!! (Es el accesos simultaneo de dos hilos del mismo programa a un recurso compartido)</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">En el ejercicio 3 se nos habla de esto:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Antes de ejecutar podríamos esperar que primero saldrían unos y luego ceros, se puede saber ese orden??? Hay alguna forma??? Te dice si primero se lanza un hilo a simple vista en el código, pero el problema es que no sabemos que pasa después.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Imaginamos que tenemos un fichero que es “hola” y tenemos 2 hilos, y el primer hilo accede y asigna un “1” y luego el segundo hilo lo mismo y pone un “2”, y viceversa entonces se pueden tener 2 casos: o que salga hola12, o salga hola 21.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">¿Cómo evitar esta confusión?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Comprobando que el otro hilo no lo aya usado!! o mejor compramos otra taza!!jajaja</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Si genera problemas acceder a un recurso compartido, sino es necesario pues no lo hacemos, y si no nos queda mas remedio, hay comprobar que el otro no este accediendo.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">En el ejercicio siguiente, vamos a evitar que los 2 hilos accedan a la salida estándar. Tenemos un hilo que genera eventos y un hilo que procesa a eventos, uno sale a salida estándar y el otro ordena que vaya a salida estándar. Se comunican con una cola de eventos (es una forma de que uno de lo hilos ataque la salida estándar).</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Ahora tenemos un ejemplo de código, pero la idea es que desde un hilo se metan una serie de eventos en una cola, y desde el otro hilo se mire para procesar esos eventos.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Bueno esto nos pareció curioso y es que en este ejemplo</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:#000000;font-family:'Courier New';"><span>  </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:#000000;font-family:'Courier New';">Runnable write1Runnable = new Runnable(){</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:#000000;font-family:'Courier New';">public void run(){</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:#000000;font-family:'Courier New';">eventQueue.add(&#8217;1&#8242;);</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:#000000;font-family:'Courier New';">eventQueue.add(&#8216;z&#8217;);</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:#000000;font-family:'Courier New';"><span>     </span>}</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:#000000;font-family:'Courier New';">};</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:#000000;font-family:'Courier New';"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;">Pasa que después de la llave del final, hay un “;”, por qué?? Por que al ejecutar el constructor “Runnable write1Runnable<span>  </span>= new Runnable() } { ;” dentro de esas llaves podemos meter lo que queramos! Que funciona dentro de ese constructor!</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;">El resto del ejercicio consistió en compilar y ejecutar y entender!jejeje</span></span></span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;">    <strong> </strong></span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><strong>          4.</strong>    <strong><span style="font-size:12pt;"><span style="text-decoration:underline;">Hilos en Swing</span></span></strong></span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><strong><span style="font-size:12pt;"></span></strong></span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><strong></strong></span></span></span><span style="color:#000000;"></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span style="color:#000000;">Y a partir del ejercicio 4, hemos visto que cuando yo quiero ejecutar algo en swing, como es multihilo, tendremos un hilo “jefe”, y un hilo que procesa eventos (</span><span>event-dispaching thread</span><span style="color:#000000;">), que mira a ver si hay eventos gráficos que procesar.</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;">Cuando hago el setVisible(), el hilo siempre chequea si existe algo en la cola de eventos, si lo hay lo procesa, y sino, cada X tiempo vuelve a chequear.</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span style="color:#000000;">Un hilo que maneja el estado del programa, y otro que lo procesa (</span><span>event-dispaching thread) es el resumen fundamental de la función multihilo. El event-dispaching thread l</span><span style="color:#000000;">o procesa y el principal lo lanza., cualquier evento que se lance, no se va ejecutar al principio, se va a una cola de eventos, y ya se irán ejecutando.</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;">En el apartado 2 se nos habla de una ventanita que parpadea, y principalmente lo que hay que hacer es createGUI, procesarlo, y actualizarlo.</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;">Se lanza el main, y lanzamos el GUI, lanzamos una ventana, la ventana inicial, dentro del main cambiamos los atributos tipo COLOR y los tocamos de tal forma que se adecuen a lo que nos piden, y llamamos a updateGUI.</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="text-indent:-35.4pt;margin:0 0 0 35.4pt;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;">Y bueno como dicen, el resto de apartados acabarlos en casa!!jejeje, ya los miraremos y conforme los tengamos actualizaremos si andamos bien de tiempo!!</span></span></span></p>
<p class="MsoNormal" style="text-indent:-35.4pt;margin:0 0 0 35.4pt;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="text-indent:-35.4pt;margin:0 0 0 35.4pt;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;">1Saludo a todos!!!!</span></span></span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hucross.wordpress.com/37/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hucross.wordpress.com/37/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hucross.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hucross.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hucross.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hucross.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hucross.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hucross.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hucross.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hucross.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hucross.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hucross.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hucross.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hucross.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hucross.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hucross.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=37&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hucross.wordpress.com/2008/05/09/decima-practica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/12021838d4f25c1bd30f0ac77169d18f?s=96&#38;d=identicon" medium="image">
			<media:title type="html">hucross</media:title>
		</media:content>

		<media:content url="http://hucross.files.wordpress.com/2008/05/espectacular1.jpg" medium="image" />
	</item>
		<item>
		<title>Novena Práctica</title>
		<link>http://hucross.wordpress.com/2008/04/25/novena-practica/</link>
		<comments>http://hucross.wordpress.com/2008/04/25/novena-practica/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 18:50:05 +0000</pubDate>
		<dc:creator>hucross</dc:creator>
				<category><![CDATA[Prácticas]]></category>

		<guid isPermaLink="false">http://hucross.wordpress.com/?p=34</guid>
		<description><![CDATA[Saludos gentecilla!! que tal con nuestro primer dia de swing??jejeje, no ha estado mal!!:P Bueno comenzamos con un poquito de teróría!!ejeje , y es que, qué es una interfaz gráfica? Lo que comunica el ordenador con la persona , algo que permite que un programa que hace lo que sea, se comunica con el usuario. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=34&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://hucross.files.wordpress.com/2008/05/hielito.jpg"><img class="aligncenter size-full wp-image-47" src="http://hucross.files.wordpress.com/2008/05/hielito.jpg?w=500&#038;h=352" alt="" width="500" height="352" /></a></p>
<p>Saludos gentecilla!! que tal con nuestro primer dia de swing??jejeje, no ha estado mal!!:P</p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Bueno comenzamos con un poquito de teróría!!ejeje , y es que, qué es una interfaz gráfica? Lo que comunica el ordenador con la persona , algo que permite que un programa que hace lo que sea, se comunica con el usuario.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Nosotros vamos a hacer una representación gráfica, pero puede interesarnos que el programa se comunique con nosotros por sonido, basada en texto..,el programa es el mismo, la diferencia es la forma de comunicarse con el usuario.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">¿Cuándo es útil y cuando no, un interfaz gráfico?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Por ejemplo, un antivirus que hace? rastrea continuamente el sistema, entonces, para que tenemos una interfaz gráfica en los antivirus? Para que el usuario no se asuste de la cantidad de frases de código que es lo que internamente hace el antivirus!!jejeje</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Ahora vamos a hacer el ejercicio 1, y así de paso vamos explicando un poco de todo.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">¿Cuántas clases estamos programando? Una, y ¿cuántos métodos tiene? Uno, el main.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">¿De qué tipo se crean los objetos? De tipo JFrame, JPanel y JLabel.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">¿qué métodos que se invocan?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">El main </span></span><span style="font-size:small;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:Times New Roman;"> HelloWorldWorldGUI (el nombre de la clase)</span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">El constructor de JFrame </span></span><span style="font-size:small;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:Times New Roman;"> JFrame (se crea un panel cuando lo ejecutamos)</span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">El setDefaultCloseOperation </span></span><span style="font-size:small;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:Times New Roman;"> JFrame (que estamos haciendo?? darle una operación de cierre por defecto)</span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">El getContentPane </span></span><span style="font-size:small;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:Times New Roman;"> J Frame ( crea un contenedor)</span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">El constructor de JLabel </span></span><span style="font-size:small;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:Times New Roman;"> JLabel (una etiqueta) </span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">El add(label) </span></span><span style="font-size:small;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:Times New Roman;"> container (añadimos cosas al contenedor, al JPANEL )</span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">El setSize(100,50) </span></span><span style="font-size:small;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:Times New Roman;"> window (nos crea una ventana de cierto tamaño)</span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">El setVisible(true) </span></span><span style="font-size:small;"><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:Times New Roman;"> window (hace que podamos ver la ventana)</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Antes de swing, está awt, solo que está un poco anticuado ya! Cuando ponemos una “j” delante de las clases que pertenecen a swing.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Para esta práctica y las que nos queden hay que quedarse con algo seguro, y es que JFrame es algo relacionado con ventana, JPanel es algo relacionado con contenedor y JLabel algo relacionado con etiqueta.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Ahora vamos a ver las líneas de código una a una a ver que nos dicen:</span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><em><strong><span style="font-family:Arial Unicode MS;font-size:x-small;"> JFrame frame = new JFrame(&#8220;HelloWorldGUI window title&#8221;);</span> </strong></em></span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Le estoy pasando un String como parámetro, que es este es el título de nuestro frame que vamos a crear.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><em><strong><span style="font-size:small;"><span style="font-family:Times New Roman;"> <span style="font-family:Arial Unicode MS;font-size:x-small;">frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</span></span></span><span style="font-size:12pt;"><span> </span></span></strong></em></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span><span style="font-family:Times New Roman;font-size:small;">Aquí lo que hacemos es darle una condición de salida (cerrar). Para cerrar la ventana, cuando das a la “X”. El atributo EXIT_ON_CLOSE, es un atributo de clase, de tipo entero , de tipo estático, de tipo final. </span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span style="font-family:Arial Unicode MS;font-size:x-small;"><em><strong>JPanel contentPane = (JPanel) frame.getContentPane();</strong></em></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Lo que estamos haciendo, es obtener algo que se llama contentPane, que me devuelve un objeto que tengo que transformar a JPanel (por eso lo del casting).</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:12pt;color:#000000;"><span> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="color:#000000;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span style="font-family:Arial Unicode MS;font-size:x-small;"><em><strong>JLabel label = new JLabel(&#8220;Hello World!&#8221;);</strong></em></span></span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Creamos un objeto de tipo JLabel, y le estamos pasando como parámetro un String.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">¿solo puedo pasar texto? Pues no, también imágenes, color de fondo, pero sonido no!!</span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span style="color:#000000;"><span style="font-size:x-small;"><span style="font-family:Arial Unicode MS;"><em><strong></strong></em></span></span></span></span></span></span></p>
<p><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span style="color:#000000;"><span style="font-size:x-small;"><span style="font-family:Arial Unicode MS;"><em><strong></strong></em></span></span></span></span></span></span></p>
<p><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span style="color:#000000;"><span style="font-size:x-small;"><span style="font-family:Arial Unicode MS;"><em><strong>contentPane.add(label);</strong></em></span></span></span></span></span></span></p>
<p><span style="font-family:Times New Roman;font-size:small;">Aquí se dice que se añada el siguiente elemento, le paso un JLabel como parámetro y a partir de esta línea el contenedor tiene una etiqueta.</span></p>
<p><span style="color:#000000;"><span style="font-size:x-small;"><span style="font-family:Arial Unicode MS;"><em><strong></strong></em></span></span></span></p>
<p><span style="color:#000000;"><span style="font-size:x-small;"><span style="font-family:Arial Unicode MS;"><em><strong>frame.setSize(100,50);</strong></em></span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Ajusto el tamaño de frame.</span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span style="color:#000000;"><span style="font-size:x-small;"><span style="font-family:Arial Unicode MS;"><em><strong></strong></em></span></span></span></span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span style="color:#000000;"><span style="font-size:x-small;"><span style="font-family:Arial Unicode MS;"><em><strong>f</strong></em></span></span></span></span></span></span><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span style="color:#000000;"><span style="font-size:x-small;"><span style="font-family:Arial Unicode MS;"><em><strong>rame.setVisible(true);</strong></em></span></span></span></span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Muestra por pantalla el frame.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Ahora se nos dice que hagamos la ventana 4 veces mas grande, y bueno eso es simplemente es multiplicar por 4 a cada numero del setSize.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Luego se nos pide cambiar el fondo y solo tenemos que añadir esto:</span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 88.8pt;"><span style="font-family:Symbol;"><span style="font-size:small;">¨</span><span style="font:7pt;"> </span></span><strong><span><span style="font-size:small;"><span style="font-family:Times New Roman;">label.setBackground(Color.RED);<span> </span></span></span></span></strong></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 88.8pt;"><span style="font-family:Symbol;"><span style="font-size:small;">¨</span><span style="font:7pt;"> </span></span><strong><span><span style="font-size:small;"><span style="font-family:Times New Roman;">label.setOpaque(true);</span></span></span></strong></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span></span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">la primera sentencia entra en funcionamiento cuando los objetos sean opacos!!, resulta que las etiquetas pueden ser transparentes u opacas, y la nuestra como es??jejeje, pues ya sabéis para que está la segunda línea, porque sino no podríamos pintar nada!!</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Ahora se nos pide que toqueteemos un poco más esta clase, y tras comprobar qué pasa cuando pones los system.exit, y demás, vemos que aunque lo que hacen es o cerrarte tu programa o no dejártelo abrir según donde los pongas.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Bueno ahora vamos a meternos con el <strong>manejador de ventanas</strong>, y qué es eso? “Es lo que lo pinta” , el programa no puede controlar todo lo que ocurre en la pantalla, por eso existe el manejador de ventanas.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">A cada programa que quiere utilizar una ventana, le da un rectángulo (le llamamos ventana). La ventana la crea el manejador de ventanas, y el programa lo maneja el usuario.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">El programa se puede comunicar con el usuario. ¿Cómo? Con un texto, color e imagen.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">El usuario se puede comunicar con el programa, con un JButton, con un J algo.. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">En algún momento el programa se tiene que comunicar con el manejador de ventanas para que éste le dibuje por pantalla y le dibujará la típica ventana. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Luego los símbolos<span> </span>_ [] X<span> </span>son responsabilidad del manejador de ventanas, por lo que el programa no tiene que preocuparse. Cuando pulsamos la X, el manejador le dice oye que te están cerrando!! Y el programa tiene que ejecutar el evento correspondiente a qué pasa cuando pulsan la X.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Es necesario que nos comuniquemos con el manejador de ventanas??? </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Cuando queremos operar con ventanas si!, minimizar, cambiar de ventanas, cerrar..</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Necesito un medio de comunicación:<span> </span>_ [] X ,<span> </span>alt+F4, alt+Tab&#8230;</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">El manejador de ventanas tiene sentido que se comunique con el usuario??</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Por ejemplo tenemos una barra de estado en la parte inferior de nuestra pantalla, que tenemos en esa barra?? ¿una lista de programas en ejecución o una lista de ventanas abiertas? Pues una lista de ventanas, que el manejador de ventanas comunicará al usuario diciéndole que tiene tales ventanas abiertas.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">El programa no es el único elemento que interviene cuando hay interfaz gráfica, por eso está el manejador de ventanas. ¿Qué operaciones podemos hacer con el manejador de ventanas? Por ejemplo setVisible, setLocation..</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">¿Qué pasa si no ponemos la algo relacionado con el cierre de la ventana en nuestro programa? pues que no se cierra del todo el programa. Solo la ventana, pero el programa sigue abierto.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">¿Qué pasa si no ponemos decoración? Que no se nos decorará la ventana, lo siento no se cómo explicarlo!!jejjeje</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">¿Y si ponemos setDefaultLookAndFeelDecorated(true); al principio de nuestro código dentro del main? Que le dirá a la clase si los nuevos JFrame los creo con la decoración por defecto o no, y en este caso si lo ponemos antes del constructor nos sale algo como esto:</span></p>
<p class="MsoNormal" style="margin:0;"><a href="http://hucross.files.wordpress.com/2008/04/ventana.jpg"></a></p>
<p style="text-align:center;"><img class="size-medium wp-image-36" src="http://hucross.files.wordpress.com/2008/04/ventana.jpg?w=300&#038;h=172" alt="" width="300" height="172" /></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Cuando quieres añadir varios componentes gráficos a una sola ventana, has de agruparlos en un JPanel. Y si quieres añadir varias etiquetas, solo tienes que crearlas y añadirlas todas. Recuerda que un JPanel es un componente gráfico, por lo que podrás añadir JPanelS al interior de otros JpanelS.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Y hasta aquí hemos llegado!! no dio tiempo a hacer más, ni a él ni a nosotros!!jejeje,</span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">Pero nos pusimos a ello durante estos días y bueno el ejercicio 3 no nos costó demasiado pero es muy importante hacerlo!! Sabemos que para cambiar el color de fondo usamos el setOpaque() y el color se puede cambiar con setFontColor(); Luego nos pedían que ocupara la pantalla entera (maximizara), y con un setSize(<span style="font-family:Times New Roman;font-size:small;">1024,760) conseguíamos hacerlo!!</span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">El apartado 2 empezamos haciendo un setLayout(new BorderLayout()); para que el panel se nos dividiera en 5 partes, como ya vimos en clase, que son , norte, sur, este, oeste y centro, y para colocar una etiqueta en la posición que queramos lo hacemos con marco.add(JLabel, BorderLayout.NORTH) por ejemplo, y con el método pack(); colocamos bien todos los elementos.</p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;">Para añadir una imagen a la etiqueta, declaramos la imagen con la ruta de acceso Icon imagen= new ImagenIcon(&#8220;flecha.jpg&#8221;); y luego lo añadimos a la etiqueta con etiqueta.add(imagen);y bueno así más o menos hemos resumido lo más importante del ejercicio 3.</p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">El ejercicio 4, nos pedía crear lo que veíamos en la imagen, así que con un grid layout 1,19, y con un bucle for desde 0 a 18, insertamos el texto de las etiquetas. Luego con un if, miramos si es par hacemos setOpaque(Color.WITHE), y si es impar setOpaque(Color.BLACK)., esto es lo más importante del ejercicio 4 a grosso modo, por lo demás nos salio sin problemas, bueno, mucho pensar y echarle un ratejo!jejeje</p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Un saludo a todos!! y hasta la proxima!!!<br />
</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hucross.wordpress.com/34/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hucross.wordpress.com/34/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hucross.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hucross.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hucross.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hucross.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hucross.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hucross.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hucross.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hucross.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hucross.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hucross.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hucross.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hucross.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hucross.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hucross.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=34&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hucross.wordpress.com/2008/04/25/novena-practica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/12021838d4f25c1bd30f0ac77169d18f?s=96&#38;d=identicon" medium="image">
			<media:title type="html">hucross</media:title>
		</media:content>

		<media:content url="http://hucross.files.wordpress.com/2008/05/hielito.jpg" medium="image" />

		<media:content url="http://hucross.files.wordpress.com/2008/04/ventana.jpg?w=300" medium="image" />
	</item>
		<item>
		<title>Octava Práctica</title>
		<link>http://hucross.wordpress.com/2008/04/20/octava-practica/</link>
		<comments>http://hucross.wordpress.com/2008/04/20/octava-practica/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 12:00:01 +0000</pubDate>
		<dc:creator>hucross</dc:creator>
				<category><![CDATA[Prácticas]]></category>

		<guid isPermaLink="false">http://hucross.wordpress.com/?p=32</guid>
		<description><![CDATA[  Cómo va eso??? ha sido entretenida la práctica 8,e?? jejej, ya cada vez nos quedan menos, según el profesor estamos en el ecuador del curso!jejej, y que mejor que hacer una práctica de Tablas hash y Recursividad.   Una tabla hash, es una especie de tabla en la que podemos insertar y sacar objetos, sin [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=32&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0;"><strong></strong></p>
<p class="MsoNormal" style="margin:0;"><a href="http://hucross.files.wordpress.com/2008/04/escocia.jpg"></a> </p>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-33" src="http://hucross.files.wordpress.com/2008/04/escocia.jpg?w=479&#038;h=344" alt="" width="479" height="344" /></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Cómo va eso??? ha sido entretenida la práctica 8,e?? jejej, ya cada vez nos quedan menos, según el profesor estamos en el ecuador del curso!jejej, y que mejor que hacer una práctica de </span><span style="font-size:small;font-family:Times New Roman;">Tablas hash y Recursividad.</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Una tabla hash, es una especie de tabla en la que podemos insertar y sacar objetos, sin necesidad de definir un primero o un último. Literalmente hash significa “resumen”. </span><span style="font-size:small;font-family:Times New Roman;">Cuál es la motivación de ésta??</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">En muchas de las coleccione</span><span style="font-size:small;font-family:Times New Roman;">s (arrays, pilas, colas, vectores, listas) que vamos a usar, es muy probable que una vez que las tengamos, necesitemos sacar o trabajar con un elemento concreto. </span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;"><span style="font-size:small;"><span>Ahora vamos a ver un ejemplo para cada una de estas colecciones, y así veremos que es mejor usar en cada situación y por qué. </span></span></span><span style="font-family:Times New Roman;"><span style="font-size:small;"><span>Dada la clase persona:</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">public Perona{</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">int DNI;</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">String Nombre;</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">}</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Tenemos un array de peronas donde vamos a buscar personas concretas,</span><span style="font-size:small;font-family:Times New Roman;"> </span><span style="font-size:small;font-family:Times New Roman;">¿tardo mucho en insertar una nueva persona en mi array de personas? </span><span style="font-size:small;font-family:Times New Roman;">¿importa el numero de personas q ay en el array a la ora de meter una persona mas? </span><span style="font-size:small;font-family:Times New Roman;">¿tardamos lo mismo si hay alguien que sino lo hay?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Si, si que importa, porque si esta vacio, le meto en el primer hueco que haya, s</span><span style="font-size:small;font-family:Times New Roman;">i esta semilleno lo meto pero tengo que recorrer hasta que encuentre el hueco más cercano y así sucesivamente.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Si intentas hacer rapida</span><span style="font-size:small;font-family:Times New Roman;"> la extracción, lo que va ser lenta es la inserción, y viceversa.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Nos interesa que insertar sea rápido, por tanto puedo usar una variable libre, que me indique cual es la posición que este libre, asi  no tendré que recorrerlo cada vez que quiera insertar, por tanto tardo muchísimo menos.</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">¿Cuánto tardo en encontrar a una persona si doy el DNI?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Si está vacio, tardaré lo que tarde en mirar la variable libre, y s</span><span style="font-size:small;font-family:Times New Roman;">i tengo 100 personas??pues 100</span><span style="font-size:small;font-family:Times New Roman;"> veces lo que tarde en buscar por cada persona. Entonces de promedio, si la ocupación es <strong>n</strong>, tardaré <strong>(n/2)·t</strong> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">¿Cuánto tardo en insertar una nueva persona en una nueva lista?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Primero una constante que define lo que tardaré en crear el objeto, otra que me indica lo que tardaré en apuntar al nuevo objeto y seleccionarle un nodo vacío.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Si lo ponemos al principio cada vez que quiera meter un nuevo objeto, crearé un nuevo nodo y correré los otros para que mi nuevo nodo sea el primero. No me importa el numero de nodos que tenga en la lista porque no necesito nada mas que un tiempo constante que corresponde a la creación de nuestro nodo y apuntar a él.</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">¿Cuánto vamos a tardar en buscar una persona? ¿</span><span style="font-size:small;font-family:Times New Roman;">Depende del numero de persanas que tenemos en la lista?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">En los arrays sí importaba, y al</span><span style="font-size:small;font-family:Times New Roman;"> final no va ser lo mismo recorrer una lista grande que una lista pequeña, nuestro promedio </span><span style="font-size:small;font-family:Times New Roman;">será <strong>(n+1)/2</strong>.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">¿por qué tardamos lo mismo, en que se diferencian  listas de arrays?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">En los arrays desperdicio memoria y en las listas no.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">¿Qué pasa con las cola? ¿</span><span style="font-size:small;font-family:Times New Roman;">Cuánto tardo en insertar un objeto en mi cola? </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Lo que tarde en insertar el propio ordenador y, ¿cuánto tardo en buscar una persona en mi cola? compruebo con el método </span><span style="font-size:small;font-family:Times New Roman;"><em><strong>peek</strong>,</em> si mi primer elemento es el que estaba buscando, y si no lo es, lo saco a otra cola con el método <em><strong>push</strong></em>, y así hasta que lo encuentre, luego tendré que hacer <em><strong>pop</strong> </em>para dejar la cola como estaba.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">De promedio tardaré el doble que en listas y arrays, <strong>n</strong></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">(En las pilas es lo mismo que en las colas, no cambia nada)</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Ahora llegamos a las tablas hash!</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Una tabla hash, es una mezcla de array con listas enlazadas, y s</span><span style="font-size:small;font-family:Times New Roman;">iguiendo con el ejemplo de la clase persona puedo decir, que no me importa cuanta gente que haya en mi tabla, siempre tardo lo mismo en encontrar cualquier persona. </span><span style="font-size:small;font-family:Times New Roman;">Asigno a cada persona que vaya metiendo un valor, o las ordeno alfabéticamente.</span><span style="font-size:small;font-family:Times New Roman;"> El tiempo en buscar es muy pequeño, pero ¿qué pasa cuando tengo 2 personas con el mismo nombre? ¿irían las 2 en el mismo sitio?  </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Como yo tengo mi array, puedo hacer que ese array sea un array de listas de personas, así que se crearía un nuevo nodo dentro de la lista en la que haya habido esa coincidencia de nombres.</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Las tablas hash como son muy &#8220;listas&#8221; (jajaja, lo habéis pillado xDD) de vez en cuando se recorren a sí mismas, y miran si hay alguna de sus listas dentro del array , e</span><span style="font-size:small;font-family:Times New Roman;">s demasiado grande, mas grande que incluso el tamaño del propio array, entonces la tabla hash, hace una nueva agrupación y divide esas colas a la mitad, y así hasta que volvamos a tener listas de tamaño muy grande, que las volverá a partir.</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Por eso a nosotros cuando se nos planteen problema, tendremos que</span><span style="font-size:small;font-family:Times New Roman;"> ver qué es lo que nos sale más rentable usar en cada situación.</span></p>
<p class="MsoNormal"><span style="font-size:small;font-family:Times New Roman;">Hablando un poco de recursividad, podemos llegar a decir que un método es recursivo si s</span><span style="font-size:small;font-family:Times New Roman;">e llama así mismo. así es lo que vulgarmente entendemos por recursividad. Un ejemplo! </span><span style="font-size:small;font-family:Times New Roman;">F(n) = F(n-1) + F(n-2)</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span style="font-family:Lucida Sans Unicode;">Y d</span>espués de esta explicación teórica de nuestro profesor, nos dedicamos a leer la práctica, y es que estuvo una hora explicando en la pizarra!!jejeje, nosotos no nos quejamos ya que lo que dice nos aclara mucho las cosas!!</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;"><span style="font-size:small;">En nues<span>tra práctica, se nos pedía que usáramos una tabla hash, pero antes nos dijeron que si hacíamos medio bien la práctica nos iba a dar un </span></span></span><span style="font-size:small;font-family:Times New Roman;">error a la hora de compilar debido a que estaríamos usando terminología adecuado, por tanto se nos dijo, que a la hora de crear nuestra tabla, la pusieramos sus &#8220;apellidos&#8221;(técnicamente se llama generics), que en nuestro caso sería String, y el nombre del objeto.</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">También hace unos años, l</span><span style="font-size:small;font-family:Times New Roman;">as pilas dejaron de ser pilas de objetos, y se convirtieron en pilas de lo que sea (de personas, enteros, Strings…), lo bueno es que ya no necesitaríamos hacer casting, porque ya le podemos decir de qué va a estar rellena!! y por eso sino ponemos &#8220;apellidos&#8221; a nuestras colecciones, java le autoasigna, que lo que lleva sera de tipo  &lt;Object&gt;.</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;">Bueno pues nos pusimos rápidamente a mirar el API, y tras un rato de búsqueda..</span></span></p>
<p class="MsoNormal" style="margin:0;"><strong></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:small;font-family:Times New Roman;">  import java.util.*;<br />
   public class Truco{<br />
   String informacion;<br />
      public Truco(String informacion){<br />
      this.informacion = informacion;<br />
  }<br />
  <br />
      public static void main(String[]args){<br />
     <br />
         Truco truco = new Truco();<br />
  System.out.println(Truco.get());<br />
      }</span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:small;font-family:Times New Roman;">   }</span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong></strong></p>
<p class="MsoNormal" style="margin:0;"><strong></strong></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">import java.util.*;<br />
public class ListaDeTrucos{<br />
 public static void main(String[]args){<br />
  Hashtable Trucos = new Hashtable();<br />
 <br />
   Trucos.put(&#8220;one&#8221;, new Truco(&#8220;este el truco1&#8243;));<br />
     Trucos.put(&#8220;two&#8221;, new Truco(&#8220;este es el truco2&#8243;));<br />
     Trucos.put(&#8220;three&#8221;, new Truco(&#8220;este es el truco3&#8243;));<br />
   Trucos.put(&#8220;four&#8221;, new Truco(&#8220;este es el truco4&#8243;));<br />
   Trucos.put(&#8220;five&#8221;, new Truco(&#8220;este es el truco5&#8243;));<br />
   Trucos.put(&#8220;six&#8221;, new Truco(&#8220;este es el truco6&#8243;));<br />
   Trucos.put(&#8220;seven&#8221;, new Truco(&#8220;este es el truco7&#8243;));<br />
   Trucos.put(&#8220;eight&#8221;, new Truco(&#8220;este es el truco8&#8243;));<br />
   Trucos.put(&#8220;nine&#8221;, new Truco(&#8220;este es el truco9&#8243;));<br />
   Trucos.put(&#8220;ten&#8221;, new Truco(&#8220;este es el truco10&#8243;));<br />
 <br />
 Trucos.get(&#8220;uno&#8221;); // llama a la tabla hash, trucos y devuelve el objeto de tipo truco<br />
 <br />
 }<br />
 </p>
<p class="MsoNormal" style="margin:0;">Seguimos con el ejercicio 2!! y es que al ser prácticamente teórico, djimos a ver si lo acabos!! y sí!!jejje</p>
<p class="MsoNormal" style="margin:0;">Se nos pedía que dados algunos métodos recursivos, dijésemos que hacía cada uno:</p>
<p class="MsoNormal" style="margin:0;">- El <strong>método p1</strong>, mira que a sea &gt; 1, la saca por pantalla, y le resta 1. Cuando a sea &lt;= que 1, entonces sacará por pantalla &#8220;FIN&#8221;.</p>
<p class="MsoNormal" style="margin:0;">- El <strong>método p2</strong>, se le pasa como parámetro los enteros a y b, y comprueba si a es &gt; 0, y si lo es, hace la resta a-1, y luego suma a+b. Y si a es &lt;= 0, entonces sacará por pantalla &#8220;b&#8221;.</p>
<p class="MsoNormal" style="margin:0;">- El método <strong>suma</strong>, se le pasa como parámetro un array de longs, un entero posActual, y otro tamaño. Si la posición en la que estamos es = al tamaño -1 de nuestro array,  nos devuelve el array en la posActual. Sino, nos devuelve lo que hay en la posActual restándole 1. En cada iteración se suma uno a posActual.</p>
<p class="MsoNormal" style="margin:0;">- El método<strong> inverso</strong>, consiste en cojer un numero y poner sus cifras al revés. Se le pasa como paráemetro el entero n. Lo primero, imprime por pantalla el resto de la división de n entre 10, luego compruebo si n &gt;= 10, y si lo es, llama al método inverso, pasándole como parámetro la división n/10, así obtemeos cifra a cifra el resultado inverso.</p>
<p class="MsoNormal" style="margin:0;">- El método <strong>fibonacci</strong>, se le pasa un long como parámetros. Si es 1 o 2, devuelve 1, sino devuelves la suma de los resultados de llamarse así mismo con el (numero &#8211; 2) y otro con el (num-1), como parámetros, obteniendo cada vez un número de la ya conocida serie de fibonacci!!</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"> Aquí está lo que conseguimos!!jejej, la verdad es que nos enteramos bastante bien de lo que es y como se usan las hash table! y cuanto a recursividad parece que entendimos los métodos propuestos!jejje, lástima que para cuando quisimos hacer el ejercicio 3 de recursividad nos quedáramos sin tiempo, pero que queréis que os digamos, prefiero una hora de explicación a una hora perdido leyendo la práctica sin saber que hacer!!jejje</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Bueno gentecilla, espero que a lo largo de esta semana, podamos acabar el ejercicio de recursividad y lo pongamos por aquí.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Un saludo y hasta la próxima!!!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hucross.wordpress.com/32/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hucross.wordpress.com/32/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hucross.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hucross.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hucross.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hucross.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hucross.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hucross.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hucross.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hucross.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hucross.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hucross.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hucross.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hucross.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hucross.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hucross.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=32&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hucross.wordpress.com/2008/04/20/octava-practica/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/12021838d4f25c1bd30f0ac77169d18f?s=96&#38;d=identicon" medium="image">
			<media:title type="html">hucross</media:title>
		</media:content>

		<media:content url="http://hucross.files.wordpress.com/2008/04/escocia.jpg" medium="image" />
	</item>
		<item>
		<title>Valoraciones Sobre Nuestro Juego</title>
		<link>http://hucross.wordpress.com/2008/04/16/valoraciones-sobre-nuestro-juego/</link>
		<comments>http://hucross.wordpress.com/2008/04/16/valoraciones-sobre-nuestro-juego/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 20:53:18 +0000</pubDate>
		<dc:creator>hucross</dc:creator>
				<category><![CDATA[Prácticas]]></category>

		<guid isPermaLink="false">http://hucross.wordpress.com/?p=29</guid>
		<description><![CDATA[Hey Hey Hey!!! vamos a comentar un poco sobre el juego que vamos a realizar para esta asignatura, que por si no lo sabéis es el mítico &#8220;comecocos&#8221;, que por no pagar copyright deberíamos haberle cambiado el nombre, pero.. nos sobra el dinero!!!jajaja Bueno centrándonos en el juego, como ya sabéis, esta semana hay que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=29&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://hucross.files.wordpress.com/2008/04/isla-wpsima1.jpg"><img class="size-full wp-image-31" src="http://hucross.files.wordpress.com/2008/04/isla-wpsima1.jpg?w=449&#038;h=316" alt="" width="449" height="316" /></a></p>
<p>Hey Hey Hey!!! vamos a comentar un poco sobre el juego que vamos a realizar para esta asignatura, que por si no lo sabéis es el mítico &#8220;comecocos&#8221;, que por no pagar copyright deberíamos haberle cambiado el nombre, pero.. nos sobra el dinero!!!jajaja</p>
<p>Bueno centrándonos en el juego,  como ya sabéis, esta semana hay que hacer la primera entrega, en la que más o menos deberíamos mandarles una pequeña idea de qué es lo que queremos hacer, pero seguro que alguno ya le tiene casi terminado!!jejej</p>
<p>Poco a poco nosotros hemos ido añadiendo cosas que o bien nos han ido enseñando en clase, o bien nos hemos tenido que buscar un poco la vida ( más bien mucho) jejje, porque bueno, la verdad es que no queríamos que se nos juntara con exámenes, y oye que tenemos algo de experiencia en eso de buscar información, no somos pioneros en esto!!jejeje</p>
<p>Nuestro juego consta de varias clases, y bueno, hasta ahora lo que llevamos hecho es la creación de los fantasmitas y la del protagonista, y estas dos clases heredan de una clase padre que hemos llamado individuo, ya que estas dos anteriores tienen un patrón bastante parecido!!</p>
<p>Luego, hemos conseguido dar un poco de libertad a estos personajes, pero de momento no les hemos visto moverse jejej, simplemente les hemos definido cómo tienen que moverse, utilizando una lista de movimiento para enemigos, dándoles un poco de inteligencia a los fantasmitas!!jejeje</p>
<p>Ahora nos queda hacer el tablero, las casillas, y a jugar!!!!jejjee</p>
<p>Ojala nos salga bien, porque llevamos muchas horas delante del ordenador!!:-(</p>
<p>Mucha suerte para los que estén intentando el juego!!! y cualquier duda si la podemos resolver, no dudéis en comunicárnoslo!!</p>
<p>Un saludo!!!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hucross.wordpress.com/29/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hucross.wordpress.com/29/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hucross.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hucross.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hucross.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hucross.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hucross.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hucross.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hucross.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hucross.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hucross.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hucross.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hucross.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hucross.wordpress.com/29/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hucross.wordpress.com/29/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hucross.wordpress.com/29/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=29&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hucross.wordpress.com/2008/04/16/valoraciones-sobre-nuestro-juego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/12021838d4f25c1bd30f0ac77169d18f?s=96&#38;d=identicon" medium="image">
			<media:title type="html">hucross</media:title>
		</media:content>

		<media:content url="http://hucross.files.wordpress.com/2008/04/isla-wpsima1.jpg" medium="image" />
	</item>
		<item>
		<title>Séptima Práctica</title>
		<link>http://hucross.wordpress.com/2008/04/11/septima-practica/</link>
		<comments>http://hucross.wordpress.com/2008/04/11/septima-practica/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 18:57:24 +0000</pubDate>
		<dc:creator>hucross</dc:creator>
				<category><![CDATA[Prácticas]]></category>

		<guid isPermaLink="false">http://hucross.wordpress.com/?p=27</guid>
		<description><![CDATA[Hey Hey Hey!!! creo que para muchos de nosotros la primera palabra cuando empezamos a leer la práctica fue, queeeeeeeeeeeeeeeeeeeeeeeeee???????? jajjaja, como se nota cuando nos hacen pensar a que sí??jejje, pues creo que todos andubimos igual.. Así que bueno empecemos por una pequeña introdución a esta práctica, que así, por si acaso alguien no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=27&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://hucross.files.wordpress.com/2008/04/plantitas.jpg"><img class="aligncenter size-full wp-image-28" src="http://hucross.files.wordpress.com/2008/04/plantitas.jpg?w=462&#038;h=328" alt="" width="462" height="328" /></a></p>
<p>Hey Hey Hey!!! creo que para muchos de nosotros la primera palabra cuando empezamos a leer la práctica fue, queeeeeeeeeeeeeeeeeeeeeeeeee???????? jajjaja, como se nota cuando nos hacen pensar a que sí??jejje, pues creo que todos andubimos igual..</p>
<p>Así que bueno empecemos por una pequeña introdución a esta práctica, que así, por si acaso alguien no se enteró bien en clase, esto le vendrá bien:</p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">La semana pasada hicimos una cola con un array, pero todos sabemos que la clase cola de java es distinta:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">entre otras cosas, no está hecha con un array y al constructor no se le pasa ningún tamaño (en cambio, la que hicimos nosotros,</span><span style="font-family:Times New Roman;font-size:small;"> sí lo que lo hacía).</span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Reescribiremos la cola del otro día pero con memoria dinámica, pero, ¿q</span><span style="font-family:Times New Roman;font-size:small;">ué cambios nuevos meteremos?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">no debería cambiar el interfaz de la clase, tampoco tiene sentido que le entre un tamaño, lo mejor es que hagamos un constructor vacío, y </span><span style="font-family:Times New Roman;font-size:small;">¿qué mas le meteremos? ¿cómo irán sus métodos?</span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font-family:'Times New Roman';"> </span><span style="font-size:small;">boolean estaLlena() ( no tiene sentido preguntarlo si está llena, porque no tiene tamaño fijo, es dinamico)</span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font-family:'Times New Roman';"> </span><span style="font-size:small;">void encolar( objeto o) ( que pasa si la memoria está llena?? Que lanza una excepción de memoria llena, pero ya lo hace java, así que nosotros no nos tenemos que preocupar xD)</span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font-family:'Times New Roman';"> </span><span style="font-size:small;">objeto desencolar() (¿qué objeto devuelve? El primero que hayas metido)</span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font-family:'Times New Roman';"> </span><span style="font-size:small;">boolean estaVacia() (comprueba si la cola está vacía)</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Con estos métodos de aquí, ya puedes hacer la práctica, es básicamente rehacer lo mismo del otro día, pero en memoria dinámica, y </span><span style="font-family:Times New Roman;font-size:small;">¿qué ventajas tiene esto?</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">- Aparte de que puedes meter lo que quieras sin preocuparte de dar un tamaño antes.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;">- La <strong>complejidad</strong> es importante, que es cuánto tardas en realizar una determinada operación, por ejemplo: si en mover un elemento de la cola tardo 3 segundos, el tiempo total empleado será el numero de elementos de la cola por el tiempo que tardo en mover cada elemento mas una constante que viene dada por los aspectos que rodean al programa. </span></span><span style="font-size:small;"><span style="font-family:Times New Roman;">El numero de elementos siempre será menor que el tamaño de nuestra cola!! ( y esto es lo que pasa si tenemos una cola estática) L</span></span><span style="font-family:Times New Roman;font-size:small;">a solución es no asignar la cabeza de la cola,<span> </span>y así lo único que tardaría sería, en buscar el elemento y extraerle, o sea, esa constante de antes.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">- No es necesario un último para comprobar que la cola está vacía, si primero apunta a null, es que está vacía (puedes hacerlo así), aunque por otro lado es necesario un último, pero para cuando metemos un valor, para saber que tendremos que meterle en la posición “último + 1”</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">- ¿</span><span style="font-family:Times New Roman;font-size:small;">Qué pasa sino tengo un último? Que tengo que recorrerla, y claro, voy a tardar!!(entoces es mas complejo).</span><span style="font-family:Times New Roman;font-size:small;">Las estáticas reservan recursos que creen que van a necesitar, una de las ventajas es que las colas dinámicas no ocupan más memoria de la que van a necesitar. </span><span style="font-family:Times New Roman;font-size:small;">Con una estructura dinámica aprovecho la memoria y con una estática la desaprovecho.</span></p>
<p>Y ahora es cuando te preguntas por donde empiezo??? pues lo primero, desempolvamos nuestra práctica 6 y todo lo que tenga que ver con arrays lo tenemos que sustituir, por algo que se le parezca, así aquí nos toca pensar, jejejej.</p>
<p>Hacemos 3 clases, una con el main ( clase prueba), otra con la pieza y sus características (clase pieza), y luego, la más importante, la clase cola. En ella, vamos a tener:</p>
<div><span style="font-family:Courier New;color:#941edf;">public</span><span style="font-family:Courier New;"> </span><span style="font-family:Courier New;color:#941edf;">class</span><span style="font-family:Courier New;"> Cola{<br />
</span><span style="font-family:Courier New;color:#941edf;"> public</span><span style="font-family:Courier New;"> </span><span style="font-family:Courier New;color:#941edf;">int</span><span style="font-family:Courier New;"> ultimo;</span><span style="font-family:Courier New;"><br />
</span><span style="font-family:Courier New;color:#941edf;"> public</span><span style="font-family:Courier New;"> </span><span style="font-family:Courier New;color:#941edf;">int </span><span style="font-family:Courier New;">tamaño;<span style="font-family:Courier New;"> </span></span></div>
<div><span style="font-family:Courier New;color:#941edf;">public </span><span style="font-family:Courier New;">Cola (){<br />
}<span style="font-family:Courier New;"> </span></span></div>
<div><span style="font-family:Courier New;color:#941edf;">public</span><span style="font-family:Courier New;"> </span><span style="font-family:Courier New;color:#941edf;">boolean</span><span style="font-family:Courier New;"> estaVacia(){<br />
</span><span style="font-family:Courier New;color:#941edf;">boolean</span><span style="font-family:Courier New;"> s=</span><span style="font-family:Courier New;color:#941edf;">true</span><span style="font-family:Courier New;">;<br />
</span><span style="font-family:Courier New;color:#941edf;">for</span><span style="font-family:Courier New;"> (</span><span style="font-family:Courier New;color:#941edf;">int</span><span style="font-family:Courier New;"> i=0;i&lt;tamaño;i++){<br />
</span><span style="font-family:Courier New;color:#941edf;">if</span><span style="font-family:Courier New;">(ultimo=!</span><span style="font-family:Courier New;color:#941edf;">null</span><span style="font-family:Courier New;">) s=</span><span style="font-family:Courier New;color:#941edf;">false</span><span style="font-family:Courier New;">;<br />
}<br />
</span><span style="font-family:Courier New;color:#941edf;">return </span><span style="font-family:Courier New;">s;<br />
}<span style="font-family:Courier New;"> </span></span></div>
<p class="MsoNormal"><span style="font-family:&quot;">public void encolar(Pieza p){<br />
if (cola.estaVacia()==true){ //cola es un objeto de la clase cola<br />
tamaño = ultimo; // si está vacía entonces el elemento que metamos será el primero<br />
tamaño= tamaño + 1;<br />
for (int i=0;i&lt;tamaño;i++){ // falta completarlo para que empieces a meter elementos</span></p>
<p class="MsoNormal"><span style="font-family:&quot;">}<br />
}else{ //falta completar, porque sino está vacía también meterá elementos </span></p>
<p><span style="font-family:&quot;">tamaño = tamaño +1;<br />
}<br />
}<br />
public pieza desencolar(){<br />
if (cola.estaVacia()==true){<br />
System.out.println(&#8220;La cola está vacía&#8221;); </span></p>
<p><span style="font-family:&quot;">tamaño = null;</span></p>
<p><span style="font-family:&quot;">}else{<br />
return pieza;<br />
tamaño = tamaño -1;</span></p>
<p><span style="font-family:&quot;">}<br />
}<br />
}<br />
como habéis podido comprobar, nos falta lo esencial, como guardar esas piezas, bueno, nosotros nos rompimos el coco con el tamaño, a ver si nos podéis echar un cable ahora con esto! de todas formas, a lo largo de la semana, ya completaremos el código, lo que pasa es que hoy andábamos poco inspirados!jejjee</span></p>
<p><span style="font-family:&quot;">Un saludo, y hasta que actualicemos, por el momento aquí dejamos esto!!</span></p>
<p class="MsoNormal">
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hucross.wordpress.com/27/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hucross.wordpress.com/27/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hucross.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hucross.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hucross.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hucross.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hucross.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hucross.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hucross.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hucross.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hucross.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hucross.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hucross.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hucross.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hucross.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hucross.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=27&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hucross.wordpress.com/2008/04/11/septima-practica/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/12021838d4f25c1bd30f0ac77169d18f?s=96&#38;d=identicon" medium="image">
			<media:title type="html">hucross</media:title>
		</media:content>

		<media:content url="http://hucross.files.wordpress.com/2008/04/plantitas.jpg" medium="image" />
	</item>
		<item>
		<title>Sexta Práctica</title>
		<link>http://hucross.wordpress.com/2008/04/05/sexta-practica/</link>
		<comments>http://hucross.wordpress.com/2008/04/05/sexta-practica/#comments</comments>
		<pubDate>Sat, 05 Apr 2008 17:40:03 +0000</pubDate>
		<dc:creator>hucross</dc:creator>
				<category><![CDATA[Prácticas]]></category>

		<guid isPermaLink="false">http://hucross.wordpress.com/?p=25</guid>
		<description><![CDATA[Cuanto tiempooooooooo!!jejeje, que tal fue la práctica?? la verdad es que estuvo un poco mal organizado a nuestro juicio, ya que habiendo dado la semana pasada colas y pilas, no entendimos, el porqué una semana despúés de haberlo dado, nos metían esta práctica, pero como quien dice, mejor tarde que nunca!!jjajaj Nuestra primera impresión sobre la [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=25&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://hucross.files.wordpress.com/2008/04/rayito.jpg"><img class="aligncenter size-full wp-image-26" src="http://hucross.files.wordpress.com/2008/04/rayito.jpg?w=451&#038;h=355" alt="" width="451" height="355" /></a></p>
<p>Cuanto tiempooooooooo!!jejeje, que tal fue la práctica?? la verdad es que estuvo un poco mal organizado a nuestro juicio, ya que habiendo dado la semana pasada colas y pilas, no entendimos, el porqué una semana despúés de haberlo dado, nos metían esta práctica, pero como quien dice, mejor tarde que nunca!!jjajaj</p>
<p>Nuestra primera impresión sobre la práctica fue buenísima: cómo??? solo 2 ejercicios?? yuhuuuuuu!!!jajjaa, luego descubrimos que ponía una hora en cada uno de ellos, pero daba igua!!jejeje, era el tetris!!!</p>
<p>Lástima, que graficamente no hicieramos nada, pero aún así sabíamos que era para el tetris, así como que trabajamos con más ganas!! se nos pedía desarrollar el algoritmo de caída de piezas durante el juego así como su previo relleno de piezas.</p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">También podríamos hacer un generador aleatorio, que nos manda una pieza cuando la otra está bajando, y cuando llegue al final la saca.( esto es muy costoso), así que m</span><span style="font-size:small;font-family:Times New Roman;">ejor las vamos a meter en una cola y luego las vamos a sacar, no nos interesa el orden, simplemente hay que pensar en la cola como un contenedor.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;font-family:Times New Roman;">Si nos toca hacer la cola de piezas qué es lo que tenemos que hacer?? , qué clases vamos a utilizar??</span></p>
<ul style="margin-top:0;" type="disc">
<li class="MsoNormal"><span style="font-size:small;font-family:Times New Roman;">Una clase pieza:</span><span style="font-family:Wingdings;"><span style="font-family:'Times New Roman';">   </span></span><span style="font-size:small;font-family:Times New Roman;">hay varios tipos de piezas pero no nos interesa que tipo de piezas son.</span></li>
<li class="MsoNormal"><span style="font-size:small;font-family:Times New Roman;">Un contenedor:</span><span style="font-family:Wingdings;"><span style="font-family:'Times New Roman';">  </span></span><span style="font-size:small;font-family:Times New Roman;">necesitamos una cola de piezas</span></li>
<li class="MsoNormal"><span style="font-size:small;font-family:Times New Roman;">Algún tipo de clase que genere el main()</span></li>
</ul>
<p class="MsoNormal" style="margin:0;">y cómo lo hicimos nosotros, pues muy sencillo:</p>
<p class="MsoNormal" style="margin:0;">public class Pieza{<br />
      private char tipo;<br />
      private int x;<br />
      private int y;<br />
  <br />
      public void Pieza(char tipo){<br />
         this.tipo = tipo;  }<br />
  <br />
      public void mover(){<br />
         System.out.println(&#8220;Empieza a mover!!!&#8221;);  }</p>
<p class="MsoNormal" style="margin:0;">   <br />
      public String toString(){<br />
      String mov = &#8220;&#8221;;<br />
      mov = &#8220;La pieza es un&#8221;+tipo;<br />
      return mov;    }</p>
<p class="MsoNormal" style="margin:0;">   Pieza contenido[] = new contenido [100];<br />
  <br />
 public boolean estaVacia(){<br />
 boolean s=true;<br />
  for (int i=0;i&lt;contenido.length;i++){<br />
  if(contenido[i]!=0) s=false;<br />
  }<br />
   return s;  {<br />
 <br />
 public boolean estaLlena(){<br />
 boolean n=true;<br />
 for(int i=0;i&lt;contenido.length;i++){<br />
 if(contenido[i]=0) f=false;<br />
 }<br />
 return f; {<br />
 <br />
 public void encolar(Pieza p){ <br />
  for (int i=0;i&lt;contenido.length;i++){<br />
  if (contenido.estaLlena()){<br />
   System.out.println(&#8220;aaaaaaah perdiste!!!&#8221;);<br />
  }else{<br />
   contenido[i]=p; </p>
<p class="MsoNormal" style="margin:0;">    } </p>
<p class="MsoNormal" style="margin:0;">  }     <br />
 public <span style="font-size:12pt;">pieza desencolar(){</span></p>
<p class="MsoNormal" style="margin:0;"> for (int i=0;i&lt;contenido.length;i++){<br />
  if (contenido.estaVacia()){<br />
System.out.println(&#8220;aaaaaaah ganaste!!!&#8221;);</p>
<p class="MsoNormal" style="margin:0;">}else{</p>
<p class="MsoNormal" style="margin:0;">return pieza;  }</p>
<p class="MsoNormal" style="margin:0;">}</p>
<p class="MsoNormal" style="margin:0;">}</p>
<p class="MsoNormal" style="margin:0;"> y aquí quedaría nuestro código, no es muy bueno, porque sabemos que el hecho de recorrer con un for cada vez que saquemos o metamos una pieza, relantiza, pero hoy en día hay buenos ordenadores así que no habría problema!!jejjeje, es nuestra primera cola!!:P luego la probamos y funcionó sin problemas, pero deberíamos haberla hechos sin el for!! y vosotros como la hicistéis??? Bueno pues no hay mucho más que contar, esperemos que salgan igual de bien todas las que nos quedan, así que ,mucha suerte!!</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Un saludo!!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hucross.wordpress.com/25/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hucross.wordpress.com/25/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hucross.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hucross.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hucross.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hucross.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hucross.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hucross.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hucross.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hucross.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hucross.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hucross.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hucross.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hucross.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hucross.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hucross.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=25&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hucross.wordpress.com/2008/04/05/sexta-practica/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/12021838d4f25c1bd30f0ac77169d18f?s=96&#38;d=identicon" medium="image">
			<media:title type="html">hucross</media:title>
		</media:content>

		<media:content url="http://hucross.files.wordpress.com/2008/04/rayito.jpg" medium="image" />
	</item>
		<item>
		<title>Quinta Práctica</title>
		<link>http://hucross.wordpress.com/2008/04/05/quinta-practica/</link>
		<comments>http://hucross.wordpress.com/2008/04/05/quinta-practica/#comments</comments>
		<pubDate>Sat, 05 Apr 2008 16:30:33 +0000</pubDate>
		<dc:creator>hucross</dc:creator>
				<category><![CDATA[Prácticas]]></category>

		<guid isPermaLink="false">http://hucross.wordpress.com/?p=23</guid>
		<description><![CDATA[Hola a todos!!! jo, esta vez nos hemos retrasado en publicar el post, y todo tiene una explicación&#8230;jjeje, no queríamos comentar sin antes haber acabado o al menos haber terminado casi toda la práctica, y es que andábamos por el ejercicio 2 cuando miramos el reloj y quedaban 10 minutos para acabar la clase.. y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=23&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://hucross.files.wordpress.com/2008/04/cobertizoooooo.jpg"><img class="aligncenter size-full wp-image-24" src="http://hucross.files.wordpress.com/2008/04/cobertizoooooo.jpg?w=471&#038;h=346" alt="" width="471" height="346" /></a></p>
<p>Hola a todos!!! jo, esta vez nos hemos retrasado en publicar el post, y todo tiene una explicación&#8230;jjeje, no queríamos comentar sin antes haber acabado o al menos haber terminado casi toda la práctica, y es que andábamos por el ejercicio 2 cuando miramos el reloj y quedaban 10 minutos para acabar la clase.. y como que no era plan de ponerse a contaros tan poco!!jejej</p>
<p>Por fin las cosas estas que hacemos con el ordenador empiezan a dar su fruto, y quien no puso cara de felicidad cuand dio a ejecutar la clase del ejercicio 3.1 y derrepente apareció esa ventana con un cuadrado de colores!!!jjajaja</p>
<p>Pues esta práctica básicamente trata de polimorfismos, y el trabajo con interfaces. Hay 2 tipos de polimorfismos, de clase, y de método, e<span style="font-family:Times New Roman;font-size:small;">l polimorfismo de clase es cuando un objeto puede comportarse como un objeto de una clase o de otra, y e</span><span style="font-family:Times New Roman;font-size:small;">l polimorfismo de método es lo que responde a, ¿cómo sabe java que hacer cuando llamo a un método que dos clases le tienen igual? en este ejemplo está muy bien explicado:</span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">public class Figura{</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">getArea();</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">}</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">public class Rectángulo extends Figure{</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">Rectángulo (Point A, Point B);</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">Rectángulo (Point A, int area);</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">float getArea();</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">}</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">//Si llamo al getArea() de una clase rectángulo, es distinto que llamar al método getArea() de la clase figura.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;"><span style="font-size:small;">//<span style="font-size:12pt;">Si le paso 2 puntos, me hace una cosa, y si le paso un punto y un área, entonces me usa el otro.</span></span></span></p>
<p>Luego también vimos el operador abstract y su función báscia principal,que <span style="font-family:Times New Roman;font-size:small;">se utiliza cuando quiero dejar métodos sin implementar,<span> </span>por ejemplo:</span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">public class Figura{</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">abstract float getArea()}{</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">}</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;"><span style="font-size:small;">public class Rectángulo{<span> </span></span><span style="font-size:9pt;">// aquí lo estoy usando, y “sobreescribiendo el método getArea()</span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">float getArea(……)}{</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">}</span></span></span></p>
<p>Después vimos interfaces, y nos explicaron que en <span style="font-family:Times New Roman;font-size:small;">un interfaz solo se puede declarar métodos (no rellenarlos),se parecen mucho a las clases y sus atributos son de tipo final, ¿pero para qué los uso? </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Hay 3 tipos de datos en java:</span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">las clases </span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">tipos básicos</span></span></p>
<p class="MsoNormal" style="text-indent:-18pt;margin:0 0 0 36pt;"><span style="font-family:Times New Roman;"><span style="font-size:small;">-</span><span style="font:7pt;"> </span><span style="font-size:small;">interfaz</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Un objeto puede ser de tipo básico (int, float..), con referencias a clases (persona, figura..), y referencia a interfaces.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Se puede implementar un interfaz o extender un interfaz, es</span><span style="font-family:Times New Roman;font-size:small;"> una manera de configurar las clases, de “colorear las clases”. </span><span style="font-family:Times New Roman;font-size:small;">Un interfaz es un “contrato” que firmas con el exterior, cuando tu haces por ejemplo:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;">public class Coche implements Guiable{</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">acelerar()</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">frenar()</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">girar a la izquierda()</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">….</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">}</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Tu clase coche está obligado a cumplir unas ciertas normas,<span> </span>tu coche tiene que ser como diga el interfaz y luego ya le añades tú características.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">No me importa lo que haga cada método, porque cada marca de coche acelera de una forma, frena de otra..,pero todos coinciden en que todos frenan, todos aceleran.., da igual la marca.</span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;"><span style="font-family:Times New Roman;font-size:small;">Una clase no puede extender de varias clases y puede implementar varios interfaces, pero un interfaz sí puede extender de varios interfaces</span></p>
<p>Y después de esta explicación teórica (que siempe viene bien saberlo) en teoría estábamos preparados para hacer la práctica..jejeje y aunque no se si a vosotros también os pasó pero ya el ejercicio 1 se hacía un poco largo. En él nos pedían que sobreescribiéramos el método toString() de la clase Clase, heredando lo ya escrito en la clase base, y añadiendo nosotros alguna anotación adicional que caracterizaba la clase, y así no tuvierámos que copiar todo el código ya heredado de la clase base, esto ahorra bastante tiempo, pero como lo hicimos? pues:</p>
<p><span><span style="font-size:small;"><span style="font-family:Times New Roman;">Public String toString() {</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span></span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span>String str = &#8220;&#8221;;</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span><span> </span></span>str += &#8220;\nMETODO\t&#8221;;</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span>//str += &#8220;Nombre = &#8221; + nombre+&#8221;, MODIFICADOR = &#8220;+ Modificador.toString(modificadores);</span></span><span style="font-size:small;"><span style="font-family:Times New Roman;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;">//en vez de hacer todo esto, es mucho mejor que lo heredemos de la clase base, poniendo super.toString();</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span>str += super.toString();</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span>str += &#8221; TIPO RETORNO = &#8220;+tipoRetorno;</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span><span>if ( parametros != null ){</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span><span> </span>for (int i=0; i&lt;parametros.length; i++)</span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span><span> </span></span>str +=&#8221; PARAMETRO(&#8220;+i+&#8221;) TIPO= &#8220;+parametros[i].tipo;</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span>return str;</span></span><span><span style="font-family:Times New Roman;font-size:small;"> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Times New Roman;"><span> </span>}</span></span></p>
<p>de tal forma que así nos evitamos copiar de nuevo todo el código! es importante saber que hay<span style="font-family:Arial;"><span style="font-size:small;"> ciertos caracteres en Java que significan varias cosas, por ejempñlo, el “+” ( operador aritmetico u operador concatenador). A la hora de pasarle un numero ya sabe que es un operador aritmético. Si le pasas un string te lo concatena. Por eso, si ponemos un string + (objeto, o cualquier cosa) automáticamente como<span> </span>se encuentra primero con un string<span> </span>sabe que el objeto o cualquier cosa hace referencia al metodo toString<span> </span>por defecto. Por eso podemos eliminar el metodo toString cuando hacemos referencia al objeto:</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;"><span style="font-family:Arial;">“hola!”+a1.tostring(); </span><span style="font-family:Wingdings;"><span>à</span></span><span style="font-family:Arial;"> lo podemos cambiar por “hola!”+a1, DA LO MISMO!!! </span><span style="font-family:Wingdings;"><span>J</span></span></span></p>
<p class="MsoNormal" style="margin:0;">
<p class="MsoNormal" style="margin:0;">
<p>Llegamos al ejercicio 2, y entre el API, y nosotros lo hicimos sin problemas, pero ahora llega lo dificil, lo que nos dio tiempo a hacer en clase, el ejercicio 3..mola, pero cuando te sale!! jejeje. Este ejercicio pedia API a gritos!! jajja, así le hicimos caso para mirar los métodos que teníamos que usar, para conseguir rellenar tanto el borde como el fondo de nuestro cuadrado, así que después de divagar un poco los encontramos a los 2 y nos pusimos a completar el código, eran  fillRect() y drawRect(), y el método para establecer el color era setColor(), el resto era compilar, ejecutar, ojo con las mayúsculas, y.. pantalla con colores!!! jajjaja</p>
<p>Pero tuvimos un problema, cuando pusimos para hacer una prueba g.pintaFondo() y g.pintaBorde(), simprre salía en negro el fondo,pero caímos en que primero pusimos el fillRect() y luego el setColor, y el método que pintaba se ejecuta en función del orden de los métodos que van apareciendo, y nosotros lo teniamos al revés, nos pintaba el fondop antes de rellenar el color, por eso salía, el negro, porque es el que hay por defecto!</p>
<p>En el ejercicio 3.2, nos pedían &#8220;hacer&#8221; las clases Boton y Menu, y bueno, ya curtidos del anterior ejercicio, uno ya estaba mas inspirado, y como el ejercicio 1 nos sirvió de bastante vimos que el método paint tenía que pintar el boton usando paint de la clase padre, y esto nos salió casi sin pensar jajja, super.paint(g). Luego ya tuvimos que tirar de API, y encontramos el método necesario para escribir tano en el boton como en el menú setText(String texto), después añadimos las opciones al menú y bueno creo que por hoy ya basta, me enrollado demasiado!! jejeje, la proxima práctica se nos dará mejor..eso espero jejejje, espero que al menos las explicaciones vengan bien!</p>
<p>Un saludo a todos!!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/hucross.wordpress.com/23/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/hucross.wordpress.com/23/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/hucross.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/hucross.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/hucross.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/hucross.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/hucross.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/hucross.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/hucross.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/hucross.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/hucross.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/hucross.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/hucross.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/hucross.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/hucross.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/hucross.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=hucross.wordpress.com&amp;blog=2944230&amp;post=23&amp;subd=hucross&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://hucross.wordpress.com/2008/04/05/quinta-practica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/12021838d4f25c1bd30f0ac77169d18f?s=96&#38;d=identicon" medium="image">
			<media:title type="html">hucross</media:title>
		</media:content>

		<media:content url="http://hucross.files.wordpress.com/2008/04/cobertizoooooo.jpg" medium="image" />
	</item>
	</channel>
</rss>
