<?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>O.C.A: a la Octava Convocatoria Aprobamos</title>
	<atom:link href="http://jorge0belen.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jorge0belen.wordpress.com</link>
	<description>Práctica teórica de OCA</description>
	<lastBuildDate>Wed, 04 Jun 2008 08:02:55 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='jorge0belen.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>O.C.A: a la Octava Convocatoria Aprobamos</title>
		<link>http://jorge0belen.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jorge0belen.wordpress.com/osd.xml" title="O.C.A: a la Octava Convocatoria Aprobamos" />
	<atom:link rel='hub' href='http://jorge0belen.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Esto se acaba&#8230;</title>
		<link>http://jorge0belen.wordpress.com/2008/06/04/esto-se-acaba/</link>
		<comments>http://jorge0belen.wordpress.com/2008/06/04/esto-se-acaba/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 07:58:00 +0000</pubDate>
		<dc:creator>belen0jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorge0belen.wordpress.com/?p=30</guid>
		<description><![CDATA[Todo principio tiene un final, (o al menos eso esperemos xD) y este es el nuestro, nuestro punto final a las prácticas de esta apasionante asignatura que al menos…no nos deja indiferente a ninguno. Porque…quien no se ha emocionado alguna vez cuando te compilaba ese pedazo de programa tras 5 horas de intento tras intento….o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=30&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0 0 10pt;">
<div class="MsoNormal" style="margin:0 0 10pt;"><span style="font-family:Arial;"><span style="font-size:small;">Todo principio tiene un final, (o al menos eso esperemos xD) y este es el nuestro, nuestro punto final a las prácticas de esta apasionante asignatura que al menos…no nos deja indiferente a ninguno.<br />
Porque…quien no se ha emocionado alguna vez cuando te compilaba ese pedazo de programa tras 5 horas de intento tras intento….o quien no se ha acordado de la gran familia de Microsoft y compañía cuando llegabas a las 9 de la mañana un viernes y veías q no funcionaba tu ordenador.<br />
Esta asignatura nos ha dado grandes alegrías y tristezas y ahora en junio, nuestra fecha definitiva,<span>  </span>debemos enseñar a todos de lo que somos capaces y lo que hemos aprendido en este arduo camino.<br />
Igual que este año España si pasará de cuartos nosotros este año si…si pasaremos del cuatro!!<br />
Y con eso y las horas que hemos echado a esos grandes videojuegos (mención especial para este año donde la cosecha pinta muy elegante en mi opinión)…OBJETIVO CUMPLIDO.Nuestra valoración sobre las prácticas es por lo general buena pese a que en las últimas no prestáramos toda la atención necesaria porque estábamos liados con el juego. De hecho de la última no hay ni post (sorry!!)<span>  </span>pero si la cosecha de este año es elegante es debido también a este tipo de horas de trabajo xD. Las quejas sobre las prácticas son las de siempre, muy largas, pero hay que decir que gran parte de lo que no daba tiempo a hacer en clase se intentaba en casa (con más o menos fortuna).</span></span></div>
<div><span style="font-family:Arial;"></span></div>
<p><span style="font-family:Arial;"><span style="font-size:small;"></p>
<div><span style="font-family:Arial;"><span style="font-size:small;">En cuanto al blog…es una buena iniciativa en nuestra opinión ya que, además de que desde chiquitito ya se sabe que toda iniciativa que conlleve una subida de nota siempre se debe presuponer buena xD, también ha fomentado que, teniendo que escribir una entrada semanal, consigamos familiarizarnos aun más con el entorno java. También hemos podido solucionar dudas consultando en los diversos blogs de nuestros<span>  </span>distinguidos compañeros de fatiga y nos hemos dado cuenta de que si no eres capaz de explicar algo con tus palabras, es que no sabes ese algo.<br />
Cierto es que a veces se hace pesado tener q escribir una entradita por práctica, la mayoría de nosotros nacimos cansados y eso no es culpa nuestra, pero habiendo conseguido, en parte, vencer esa pereza (en nuestro caso al menos), pero los beneficios obtenidos pueden ayudarnos muy mucho. Lo mejor, hemos conseguido ir más o menos al día y ahora nos queda menos por hacer. Lo peor, la comunicación entre blogs ha sido algo difícil pues no éramos muchos los que íbamos más o menos al día con los post (aunque no sabernos si meternos del todo en este saco…).</span></span></div>
<p><font face="Arial"><font size="3"></font></font></span><font face="Arial"></font></span></p>
<div><span style="font-family:Arial;"><span style="font-size:small;">Y desde aquí, ánimos a los que dudan en presentarse o no al examen, si total, la convocatoria va a pasar igual y quien sabe…quizás estos maravillosos profes que tenemos (ya de paso haremos un poco la pelota) no se portan muy mal con los ejercicios… Y a los que nos presentamos al examen, nos vemos el día 20 y…</span></span></div>
<p class="MsoNormal" style="text-align:center;"><a href="http://Ninguno"><img class="size-full wp-image-32 aligncenter" src="http://jorge0belen.files.wordpress.com/2008/06/buena-suerte.jpg?w=200&#038;h=181" alt="" width="200" height="181" /></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jorge0belen.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jorge0belen.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorge0belen.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorge0belen.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorge0belen.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorge0belen.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorge0belen.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorge0belen.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorge0belen.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorge0belen.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorge0belen.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorge0belen.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorge0belen.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorge0belen.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorge0belen.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorge0belen.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=30&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorge0belen.wordpress.com/2008/06/04/esto-se-acaba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53078b7771d81c126b36241d834858dc?s=96&#38;d=identicon" medium="image">
			<media:title type="html">belen0jorge</media:title>
		</media:content>

		<media:content url="http://jorge0belen.files.wordpress.com/2008/06/buena-suerte.jpg" medium="image" />
	</item>
		<item>
		<title>Memoria de nuestro juego</title>
		<link>http://jorge0belen.wordpress.com/2008/06/03/memoria-de-nuestro-juego/</link>
		<comments>http://jorge0belen.wordpress.com/2008/06/03/memoria-de-nuestro-juego/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 20:25:44 +0000</pubDate>
		<dc:creator>belen0jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorge0belen.wordpress.com/?p=20</guid>
		<description><![CDATA[  El juego que nos hemos aventurado a hacer es un “PUZZLE”. Como todo el mundo sabe, el objetivo es completar una imagen que se muestra al inicio de la partida, antes de que se agote el tiempo. La interacción con el usuario se hará mediante el ratón y en la zona de juego que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=20&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">El juego que nos hemos aventurado a hacer es un “PUZZLE”. Como todo el mundo sabe, el objetivo es completar una imagen que se muestra al inicio de la partida, antes de que se agote el tiempo. La interacción con el usuario se hará mediante el ratón y en la zona de juego que es la siguiente:</span></p>
<p class="MsoNormal" style="text-align:center;margin:0;" align="center"> </p>
<p class="MsoNormal" style="text-align:center;margin:0;"><span style="font-size:11pt;font-family:Arial;"><a href="http://Ninguno"><img class="aligncenter size-medium wp-image-23" src="http://jorge0belen.files.wordpress.com/2008/06/jugar1.jpg?w=300&#038;h=225" alt="" width="300" height="225" /></a> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;"> </span></strong><span style="font-size:11pt;font-family:Arial;">Hemos formada nuestro juego con 9 clases, que son las siguientes:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <strong><span style="font-family:Arial;">PantallaPrincipal</span></strong>: es la que contiene el main y, por ello, la que se ejecuta en primer lugar. Desde aquí podrás acceder, pinchando sobre los botones correspondientes, a la pantallaInstrucciones (creando un objeto de la misma al pulsar el botón “Instrucciones”), elegir un nivel (creando un objeto de la pantallaNivel), ir a la pantalla de juego (creando un objeto de PantallaJugar) o cerrar toda la ejecución (con un System.exit(0)).</span></p>
<p style="text-align:center;"><img class="size-medium wp-image-24" src="http://jorge0belen.files.wordpress.com/2008/06/principal.jpg?w=300&#038;h=223" alt="" width="300" height="223" /> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <strong><span style="font-family:Arial;">PantallaInstrucciones</span></strong>: crea una ventana que muestra una serie de normas a seguir en el juego. Además contiene dos botones que te permiten salir (pues esta ventana no se puede cerrar mediante la cruz de la misma) o ir a la pantalla de juego. </span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="text-align:center;margin:0;"><a href="http://Ninguno"><img class="aligncenter size-full wp-image-25" src="http://jorge0belen.files.wordpress.com/2008/06/instrucciones.jpg?w=400&#038;h=443" alt="" width="400" height="443" /></a></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <strong><span style="font-family:Arial;">PantallaNivel</span></strong>: su función principal es dar un valor a las variables que controlan el número de piezas y el tiempo disponible para completar el puzzle, según el nivel que se seleccione. No se puede salir sin hacer clic sobre el botón “OK”, pues hemos anulado la función del botón X del Jframe mediante el siguiente código en el constructor: <em><span style="text-decoration:underline;"><span style="font-family:Arial;">this.setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE)</span></span></em></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="text-align:center;margin:0;" align="center"><a href="http://Ninguno"><img class="aligncenter size-medium wp-image-26" src="http://jorge0belen.files.wordpress.com/2008/06/niveles.jpg?w=300&#038;h=263" alt="" width="300" height="263" /></a></p>
<p class="MsoNormal" style="text-align:center;margin:0;" align="center"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <strong><span style="font-family:Arial;">PantallaJugar</span></strong>: es la clase que define la pantalla de juego. Un Jlabel situado en la parte superior, te irá mostrando la información que necesitas en cada momento. Esta clase incluye un Timer que actualiza a cada segundo el tiempo restante que te queda para lograr completar el puzzle y un método pintar( ) que coloca las piezas en su sitio inicial. Los botones de abajo te sirven para definir los cambios en el funcionamiento que quiera hacer el usuario: empezar una nueva partida (llama al método pintar e inicializa el Timer), consultar la pista (crea un objeto de la clase BotonPista), resolver (muestra la solución y finaliza tu partida), comprobar las piezas que lleva bien colocadas (llama al método comprobar polución de la clase Sñlgoritmos), salir (cierra limpiamente el programa con un System.exit(0)) y cambiar de nivel (crea un objeto de PantallaInstrucciones). </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <strong><span style="font-family:Arial;">BotonPista</span></strong>: cuando el botón “Pista” de la pantalla de juego es pulsado, se crea un objeto de esta clase que implantará una ventana con la imagen que debes formar. También contiene un Timer para controlar su desaparición al cabo de 5 segundos. Cada vez que se pulsa disminuye el tiempo que te queda en 10 segundos como penalizacion. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <strong><span style="font-family:Arial;">Algoritmos</span></strong>: clase auxiliar que implementa varios métodos que se utilizarán en PantallaJugar. Entre ellos están: </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <span style="text-decoration:underline;">comprobarSolucion ( ):</span> comprueba si la colocación de las piezas que has puesto en el tablero se corresponde con la correcta, con la imagen bien formada. Si es así te mostrará un mensaje de enhorabuena, y si no te dirá cuantas piezas tienes bien colocadas. Esto se hace gracias a un array donde vamos almacenando que pieza hay en cada posición. Se comprueba a cada segundo si el tablero está completo (no falta ninguna pieza por colocar, bien o mal, en él), utilizando el Timer de la clase PantallaJugar, para que si es así se llame a este método.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <span style="text-decoration:underline;">crearAleatorios ( ):</span> crea números aleatorios que se almacenarán en variables para controlar cual es la imagen y el orden de las piezas en cada partida. Por tanto la imagen que aparece al empezar una partida y el orden de las piezas, es aleatorio. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <strong><span style="font-family:Arial;">Audio</span></strong>: define el comportamiento de cualquier objeto de sonido, pues deberá  ser de tipo Audio, esta clase esta basada en los ejemplos de teoría. Para que un sonido se reproduzca, tan solo deberás poner nombreObjetoAudio.player.star( ) en el lugar correspondiente y después pararlo cuando querar (por ejemplo al pulsar un botón) con nombreObjetoAudio.player.star( ).</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <strong><span style="font-family:Arial;">EventosPiezas</span></strong>: esta clase define el funcionamiento de las piezas de la pantalla de juego. Para ello hemos implementado de MouseListener, y en el método mouseClicked(MouseEvent ev) hemos añadido la funcionalidad que deseábamos que  realice cada pieza al pinchar sobre ella con el ratón. Hay que recordar que aunque no se utilicen, hay que poner todos los métodos que contiene el Mouse Listener.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- <strong><span style="font-family:Arial;">EventosTablero</span></strong>: se encarga de crear el movimiento de la zona del tablero de la pantalla de juego. Es una clase muy parecida a la anterior, sólo que describe otro comportamiento.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Pues estas son las pautas generales que hemos seguido para hacer el juego que… visto a si, no parece ni complicado xD pero os aseguro que ha dado mucho que pensar. Encima cuando ya parecía todo hecho porque compilaba, nos aparecían errores de ejecución o nos poníamos a jugar y hacía cosas que no debería… cada vez aparecían más problemas. Pero los fuimos resolviendo uno a uno con mucha paciencia y al final… </span><strong><span style="font-size:11pt;font-family:Arial;">¡LO CONSEGIMOS!</span></strong></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jorge0belen.wordpress.com/20/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jorge0belen.wordpress.com/20/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorge0belen.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorge0belen.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorge0belen.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorge0belen.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorge0belen.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorge0belen.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorge0belen.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorge0belen.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorge0belen.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorge0belen.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorge0belen.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorge0belen.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorge0belen.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorge0belen.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=20&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorge0belen.wordpress.com/2008/06/03/memoria-de-nuestro-juego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53078b7771d81c126b36241d834858dc?s=96&#38;d=identicon" medium="image">
			<media:title type="html">belen0jorge</media:title>
		</media:content>

		<media:content url="http://jorge0belen.files.wordpress.com/2008/06/jugar1.jpg?w=300" medium="image" />

		<media:content url="http://jorge0belen.files.wordpress.com/2008/06/principal.jpg?w=300" medium="image" />

		<media:content url="http://jorge0belen.files.wordpress.com/2008/06/instrucciones.jpg" medium="image" />

		<media:content url="http://jorge0belen.files.wordpress.com/2008/06/niveles.jpg?w=300" medium="image" />
	</item>
		<item>
		<title>Práctica 11: Swing y Eventos II</title>
		<link>http://jorge0belen.wordpress.com/2008/05/22/practica-11-swing-y-eventos-ii/</link>
		<comments>http://jorge0belen.wordpress.com/2008/05/22/practica-11-swing-y-eventos-ii/#comments</comments>
		<pubDate>Thu, 22 May 2008 16:51:47 +0000</pubDate>
		<dc:creator>belen0jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorge0belen.wordpress.com/?p=16</guid>
		<description><![CDATA[En esta sesión, intentamos dedicarnos solo a la práctica y no terminar haciendo algo del videojuego pero… algunos de vosotros (no diré culpables) nos pedisteis, muy amablemente, que os ayudáramos con el juego echando una partidita para comprobar si funcionaba todo bien y&#8230; ¡No sabemos decir que no! Pero entre partida y partida de algunos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=16&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">En esta sesión, intentamos dedicarnos solo a la práctica y no terminar haciendo algo del videojuego pero… algunos de vosotros (no diré culpables) nos pedisteis, muy amablemente, que os ayudáramos con el juego echando una partidita para comprobar si funcionaba todo bien y&#8230; ¡No sabemos decir que no!</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Pero entre partida y partida de algunos juegos, conseguimos hacer algo:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;" lang="ES-TRAD">Primer y único ejercicio </span></strong><span style="font-size:11pt;font-family:Arial;" lang="ES-TRAD">(lo que no hace que la práctica sea corta):<strong> </strong></span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;" lang="ES-TRAD"> </span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;" lang="ES-TRAD">1. </span></strong><span style="font-size:11pt;font-family:Arial;" lang="ES-TRAD">Este punto es sencillo, lo más importante (y lo único que merece la pena comentar) es como va a crearse el evento en este caso. Lo primero es no olvidar poner el </span><strong><span style="font-size:11pt;color:gray;font-family:Arial;">implements ActionListener</span></strong><span style="font-size:11pt;color:black;font-family:Arial;">. Para añadir nuestro botón (no todos los componentes se podrán añadir) a la </span><span style="font-size:11pt;font-family:Arial;" lang="ES-TRAD">interfaz <span> </span></span><span style="font-size:11pt;font-family:Arial;">ActionListener (que se va a encargar de controlar los eventos) hay que poner:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;color:navy;font-family:Arial;">nombreBoton.addActionListener (this);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">(El this se pone si hemos heredado de JFrame y lo escribimos dentro del constructor, sino habrá que poner un objeto de tipo ActionListener) De este modo, cada vez que se pinche sobre este botón, se generará un evento. Los eventos son guardados en una cola y por ello el sistema los trata en orden de creación.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Una vez que ya tenemos esto, podemos definir el método actionPerformed que se ejecuta cada vez que se produce un evento sobre cualquier componente añadido al ActionListener. Este método quedará así:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;color:navy;font-family:Arial;">public void actionPerformed(ActionEvent e){<br />
<span>  </span>if (e.getSource( )== nombreBoton){<br />
<span>    </span>System.out.println (&#8220;Se ha pulsado el Botón&#8221;);<br />
<span>  </span>}</span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;color:navy;font-family:Arial;">}</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">El <span> </span><strong><span style="color:gray;">getSource()</span></strong><span style="color:gray;">,</span> devuelve el nombre del componente que ha producido el evento.<span style="color:black;"></p>
<p></span></span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;" lang="ES-TRAD">2. </span></strong><span style="font-size:11pt;font-family:Arial;" lang="ES-TRAD">Es parecido al anterior pero, en lugar de observar el cambio que produce el evento en la consola, se visualizará en la misma ventana donde se produce el evento. Para esto hay que crear un label (no olvides añadirlo a un panel, para que se pueda ver, y hacer su fondo opaco, para que pueda cambiar de color) y cambiar la sentencia de antes que imprimía un mensaje por pantalla, por un código que haga lo pedido ahora; es decir, que cambie el color de fondo de nuestro label. Para ello, nos ayudaremos del <strong><span style="color:gray;">setBackground (Color.BLUE).</span></strong></span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;color:gray;font-family:Arial;" lang="ES-TRAD"> </span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;" lang="ES-TRAD">3. </span></strong><span style="font-size:11pt;font-family:Arial;" lang="ES-TRAD">Ahora sólo hay que añadir </span><span style="font-size:11pt;font-family:Arial;">que cuando el usuario introduzca un &#8220;enter&#8221; por la consola, se cambie también el color de fondo de la etiqueta. Para hacer esto nos hemos ayudado de las clases de la práctica anterior que hacían algo parecido… y así fue fácil.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Con las preguntas que te hacen sobre los hilos en este punto, ya nos liamos y no conseguimos avanzar más, la verdad es que no se nos dan nada bien los hilos. Sabemos que en el punto anteriores el hilo que produce el cambio es sólo uno y por tanto el que tenga asignado JAVA por defecto pero ahora… ¿Qué es lo que pasa? ¿Hay dos hilos?.. Puff!!, vaya lío, habrá que trabajar más esto de los hilos a ver si conseguimos llevarnos bien con ellos.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Bye!! </span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jorge0belen.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jorge0belen.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorge0belen.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorge0belen.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorge0belen.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorge0belen.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorge0belen.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorge0belen.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorge0belen.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorge0belen.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorge0belen.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorge0belen.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorge0belen.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorge0belen.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorge0belen.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorge0belen.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=16&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorge0belen.wordpress.com/2008/05/22/practica-11-swing-y-eventos-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53078b7771d81c126b36241d834858dc?s=96&#38;d=identicon" medium="image">
			<media:title type="html">belen0jorge</media:title>
		</media:content>
	</item>
		<item>
		<title>Práctica 10: Swing y Eventos</title>
		<link>http://jorge0belen.wordpress.com/2008/05/15/practica-10-swing-y-eventos/</link>
		<comments>http://jorge0belen.wordpress.com/2008/05/15/practica-10-swing-y-eventos/#comments</comments>
		<pubDate>Thu, 15 May 2008 18:56:30 +0000</pubDate>
		<dc:creator>belen0jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorge0belen.wordpress.com/?p=15</guid>
		<description><![CDATA[Esta vez empezamos solucionando algunos problemillas del videojuego (que ya parece que va funcionando de verdad), así que no nos dio tiempo a hacer demasiado de esta práctica en clase. Esto fue todo lo que logramos:   Ejercicio 1: Simplemente  hay que ejecutar los tres programas que te dan para entender un poco esto de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=15&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div></div>
<div><span style="font-size:11pt;font-family:Arial;"></span></div>
<p><span style="font-size:11pt;font-family:Arial;"><span style="font-size:11pt;font-family:Arial;"></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Esta vez empezamos solucionando algunos problemillas del videojuego (que ya parece que va funcionando de verdad), así que no nos dio tiempo a hacer demasiado de esta práctica en clase. Esto fue todo lo que logramos:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;"> </span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">Ejercicio 1: </span></strong><span style="font-size:11pt;font-family:Arial;">Simplemente<span>  </span>hay que ejecutar los tres programas que te dan para entender un poco esto de los hilos. Si no lo veis muy claro no os preocupéis demasiado porque no es algo que suela caer en el examen de OCA y se da a fondo en una asignatura de segundo, “Servidores de Información Multimedia”. Lo más importante es quedarse con la idea de que como Windows no es un Sistema Operativo Multiproceso, <strong>un mismo proceso</strong> (programa) <strong>no puede tener a la vez dos hilos en ejecución</strong>. Por esto la clase D</span><tt><span style="font-size:11pt;font-family:Arial;">ingDongPoor no funciona bien porque no se pueden hacer más de una tarea simultáneamente (en este caso dormir durante un segundo y esperar a que se pulse ENTER).</span></tt></p>
<p class="MsoNormal" style="margin:0;"><tt><span style="font-size:11pt;font-family:Arial;"> </span></tt></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">Ejercicio 2: </span></strong><span style="font-size:11pt;font-family:Arial;">Los hilos se representan en Java mediante la clase Thread y para poder trabajar con ellos debemos crear objetos de esta clase y utilizar sus métodos, uno de ellos es el start() que nos permite lanzar el hilo. Los objetos de la clase Thread no son exactamente hilos, sino secuencias de control que van a controlar a los verdaderos hilos. Una vez que controlamos esto, vamos a analizar las clases que nos dan:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="text-decoration:underline;"><span style="font-size:11pt;font-family:Arial;">Clase TwoThreads</span></span><span style="font-size:11pt;font-family:Arial;">: Creamos en el main un objeto Runnable que se arranca mediante el método <strong>run (). </strong>Este método llama al PrintThreadName( ) que imprime el nombre del hilo actual, es decir el main, que es lo que nos aparece escrito por consola al ejecutarlo.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">El constructor del objeto Thread es el siguiente : <code><strong><span style="font-family:Arial;"><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html#Thread(java.lang.Runnable)"><span style="color:windowtext;text-decoration:none;">Thread</span></a> </span></strong></code><code><strong><span style="font-family:Arial;">(<a title="interface in java.lang" href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runnable.html"><span style="color:windowtext;text-decoration:none;">Runnable</span></a> target)</span></strong></code><code><span style="font-family:Arial;">, por esto le ponemos como parámetro el objeto Runnable que hemos creado.</span></code></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="text-decoration:underline;"><span style="font-size:11pt;font-family:Arial;">Clase TwoThreadsSimple</span></span><span style="font-size:11pt;font-family:Arial;">: Hace exactamente lo mismo que la clase anterior pero implementar la interfaz Runnable, lo que nos ahorra el tener que crear un objeto Runnable. Ahora el parámetro del constructor del objeto Thread, será un objeto se nuestra clase que, como implementa de Runnable, es de este tipo. <span> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="text-decoration:underline;"><span style="font-size:11pt;font-family:Arial;">Clase TwoThreadsSimple2</span></span><span style="font-size:11pt;font-family:Arial;">: También hace lo mismo que las dos anteriores. La diferencia es que ahora heredamos de la clase Thread y no tenemos que crear ni un objeto de la clase Runnable, ni de la case Thread. Ahora al crear un objeto de la clase TwoThreadsSimple2, le podemos aplicar directamente los métodos de Thread.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">Ejercicio 3: </span></strong><span style="font-size:11pt;font-family:Arial;">Hay que saber que la pega de usar </span><span style="font-size:11pt;font-family:Arial;">multithreading es que no sabemos exactamente el orden en que van a ser ejecutados ni cuando van a ser interrumpidos para realizar otro. Esto se comprueba al ejecutar la clase RaceCondition donde va imprimiéndose un grupo de 1 tras otro grupo de 0 sin dibujar siempre la misma forma.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Y justo aqui fue cuando llegaba la hora de irse, echamos un vistazo a la clase RaceConditionSolved pero no sacamos mucho en claro. Sabemos que ahora tenemos <span> </span>el objeto Runnable eventDispacherRunnable que controla que el primer hilo no esté ejecutándose en ese momento antes de dejar trabajar al segundo. Pero no entendemos muy bien como consigue hacer esto. Nos pasaremos por algunos blogs, haber si se os ha dado mejor a vosotros. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<div><span style="font-family:Arial;"></span></div>
<p><span style="font-family:Arial;"><span style="font-family:Arial;"><font face="Arial"><font face="Arial"><font face="Arial"><font face="Arial"></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Hasta la próxima práctica, y ánimo que ya quedan pocas.</span></p>
<p></font></font></font></font></span><font face="Arial"><font face="Arial"><font face="Arial"></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p></font></font></font></span><font face="Arial"><font face="Arial"></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p></font></font></span><font face="Arial"></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p></font></span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jorge0belen.wordpress.com/15/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jorge0belen.wordpress.com/15/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorge0belen.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorge0belen.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorge0belen.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorge0belen.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorge0belen.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorge0belen.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorge0belen.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorge0belen.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorge0belen.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorge0belen.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorge0belen.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorge0belen.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorge0belen.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorge0belen.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=15&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorge0belen.wordpress.com/2008/05/15/practica-10-swing-y-eventos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53078b7771d81c126b36241d834858dc?s=96&#38;d=identicon" medium="image">
			<media:title type="html">belen0jorge</media:title>
		</media:content>
	</item>
		<item>
		<title>Práctica 9: Swing</title>
		<link>http://jorge0belen.wordpress.com/2008/05/12/practica-9-swing/</link>
		<comments>http://jorge0belen.wordpress.com/2008/05/12/practica-9-swing/#comments</comments>
		<pubDate>Mon, 12 May 2008 11:50:17 +0000</pubDate>
		<dc:creator>belen0jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorge0belen.wordpress.com/?p=14</guid>
		<description><![CDATA[Esta práctica estuvo muy interesante… vale, ya veo que no ha colao&#8230; La verdad es que a esta práctica no fuimos porque alargamos un día más el finde y nos fuimos de viaje algunos de clase (de paso aprovecho para mandaros un besito, vosotros sabéis quienes sois). Nuestra intención era hacernos los despistados y no [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=14&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">Esta práctica estuvo muy interesante… vale, ya veo que no ha colao&#8230; La verdad es que a esta práctica no fuimos porque alargamos un día más el finde y nos fuimos de viaje algunos de clase (de paso aprovecho para mandaros un besito, vosotros sabéis quienes sois). Nuestra intención era hacernos los despistados y no comentar esta práctica pero me dio por mirarla y tras leer la “</span><span style="font-size:10pt;font-family:Arial;">Advertencia sobre esta práctica” decidí hacerla en casa. Clonclusiones de la práctica… sigue leyendo xD</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">Ejercicio 1: </span></strong><span style="font-size:10pt;font-family:Arial;">Primero voy a explicar lo que hace cada línea del código dado:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"><span> </span></span><span style="font-size:9pt;font-family:Arial;">1 import javax.swing.JFrame;<br />
<span> </span>2 import javax.swing.JPanel;<br />
<span> </span>3 import javax.swing.JLabel;<br />
<span>  </span><br />
<span> </span>4 class HelloWorldGUI {<br />
<span> </span>5 <span>  </span>public static void main(String args[]) {<br />
<span> </span>6 <span>     </span>JFrame frame = new JFrame(&#8220;HelloWorldGUI window title&#8221;);<br />
<span> </span>7 <span>    </span><span> </span>frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p>
<p></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:9pt;font-family:Arial;"><span> </span>8 <span>     </span>JPanel contentPane = (JPanel) frame.getContentPane();<br />
<span> </span>9<span>     </span><span> </span>JLabel label = new JLabel(&#8220;Hello World!&#8221;);<br />
10 <span>    </span>contentPane.add(label);<br />
<span> </span><br />
11 <span>    </span>frame.setSize(100,50);<br />
12 <span>    </span>frame.setVisible(true);<br />
13 <span>  </span>}<br />
14 }</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="text-decoration:underline;"><span style="font-size:10pt;font-family:Arial;">Líneas 1,2 y 3</span></span></em><em><span style="font-size:10pt;font-family:Arial;">.</span></em><span style="font-size:10pt;font-family:Arial;"> Importan las clases JFrame, JPanel y JLabel para poder crear en nuestra clase objetos de las mismas.</span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="text-decoration:underline;"><span style="font-size:10pt;font-family:Arial;">Línea 6</span></span></em><em><span style="font-size:10pt;font-family:Arial;">.</span></em><span style="font-size:10pt;font-family:Arial;"> Crea un objeto de la clase importada JFrame llamado frame al que se le pasa como parámetro “HelloWorldGUI window title”. Esto lo que hará es que aparezca este texto en la barra superior (a la izquierda de los botones de minimizar, maximizar y cerrar) de nuestro Jframe o ventana (para que nos entendamos en nuestro lenguaje).</span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="text-decoration:underline;"><span style="font-size:10pt;font-family:Arial;">Línea 7.</span></span></em><span style="font-size:10pt;font-family:Arial;"> Este método de la clase Jframe consigue que al pulsar sobre el botón cerrar de nuestra ventana (el de la cruz de toda la vida), el programa se cierre de forma limpia, como ocurría con un System.exit(0);</span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="text-decoration:underline;"><span style="font-size:10pt;font-family:Arial;">Línea 8.</span></span></em><span style="font-size:10pt;font-family:Arial;"> Crea un objeto de la clase importada JPanel llamado contentPane. En este caso nuestro panel es uno específico que ocupa casi toda la ventana. Siempre es necesario crear algún tipo de panel porque si no añadimos nuestros componentes (labels, botones…) a un JPanel no se podrán visualizar ni colocar en un JFrame. Un label (o botón) se añade a un panel mediante la línea de código 10. </span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="text-decoration:underline;"><span style="font-size:10pt;font-family:Arial;">Línea 9.</span></span></em><span style="font-size:10pt;font-family:Arial;"> Crea un objeto de la clase importada JLabel llamado label que es capaz de mostrar texto (el pasado como parámetro) dentro de una ventana.</span></p>
<p class="MsoNormal" style="margin:0;"><em><span style="text-decoration:underline;"><span style="font-size:10pt;font-family:Arial;">Línea 11.</span></span></em><span style="font-size:10pt;font-family:Arial;"> Le da un tamaño a nuestra ventana de (100, 500) pixeles. Por tanto si queremos que el tamaño de nuestra ventana sea 4 veces más grande (como nos piden en el punto 5), tan sólo habría que cambiar esta línea de código por:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">frame.setSize(400,200);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><em><span style="text-decoration:underline;"><span style="font-size:10pt;font-family:Arial;">Línea 12</span></span></em><span style="font-size:10pt;font-family:Arial;">. Este método de la clase JFrame, mostrará (hará visible) nuestra ventana si su valor es true. Si ponemos false, se creará nuestra ventana pero no la veremos.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">Para lograr que el fondo de la etiqueta sea de color azul, como nos pedían el punto 6, hay que añadir al código anterior:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">label.setOpaque(true);<br />
label.setBackground(Color.BLUE); </span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">Lo que conseguimos con esto es: el método setOpaque, puesto a true, pone el fondo de la etiqueta opaco para que se vea (hay que hacer esto primero porque, por defecto, el fondo es invisible y aunque cambies su color no lo verás si no lo pones) y el método setBackground añade al fondo de la etiqueta el color indicado. No debes olvidar añadir al principio de la clase un <strong>import java.awt.Color; </strong>para usar la clase Color<strong>.</strong></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">Además, también podemos cambiar el color de las letras de la etiqueta, por ejemplo a blancas, mediante este otro método:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">label.setForeground(Color.WHITE);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">O se puede incluso cambiar la fuente y el tamaño de la letra:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">label.setFont(new Font(&#8220;Arial&#8221;,Font.BOLD,20));</span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;"> </span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">Pasando al punto 7, vemos que la clase Thread es capaz de controlar la ejecución del programa. Concretamente el método <code><strong><span style="font-family:Arial;"><a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#sleep(long)"><span style="color:windowtext;text-decoration:none;">sleep</span></a></span></strong></code><code><strong><span style="font-family:Arial;">(long millis)</span></strong></code><code><span style="font-family:Arial;">,</span></code> hace que el hilo que se encarga de ejecutar nuestra ventana se duerma (cese temporalmente la ejecución) durante el tiempo, en milisegundos, especificado. Por esto, al añadir el nuevo código, nuestro hilo de ejecución espera 10 segundos (que es igual a 10*1000 milisegundos) desde que lo ejecutamos desde la consola hasta que realmente empieza a trabajar y a crear <span> </span>nuestra ventana.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">Respecto al punto 9, no me pareció raro que siga funcionando el programa después de que se ha terminado el código del método <tt><span style="font-family:Arial;">main() </span></tt>(para mí lo raro es la pregunta xD), porque cuando termina el main de pintarnos la ventana no hay ninguna sentencia que le mande cerrar o terminar, por ello se sigue viendo hasta que le das al botón cerrar. Esto se comprueba al hacer el punto10 donde, como era de esperar, si añades al final del main la sentencia System.exit(0); ni siquiera te da tiempo a ver la ventana (aunque si se ha creado) pues según termina de pintarse se cierra el programa.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">Ejercicio 2: </span></strong><span style="font-size:10pt;font-family:Arial;">Para ignorar el mensaje de cierre del manejador de ventanas se utiliza la sentencia:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;color:black;font-family:Arial;">frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:black;font-family:Arial;">Para cerrar la ventana de otra manera se me ocurre poner un botón “SALIR” que cuando lo pinchas provoca un </span><span style="font-size:10pt;font-family:Arial;">System.exit(0) pero no creo que sea a lo que se refiere aquí porque aún no hemos visto botones, así que acepto ideas xD.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">Otra cosa que se trabaja en este ejercicio es el método:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">JFrame.setDefaultLookAndFeelDecorated(true);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:black;font-family:Arial;">que genera una barra superior en la ventana más bonita y con más utilidades y en cambio:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">frame.setUndecorated(true);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;color:black;font-family:Arial;">elimina la barra que viene por defecto y no aparece ninguna</span><span style="color:black;font-family:&quot;"><span style="font-size:small;">.</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">Ejercicio 3: </span></strong><span style="font-size:10pt;font-family:Arial;">Algunos datos importantes que he sacado al hacer este ejercicio son:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">- Para añadir y colocar componentes dentro del </span><span style="font-size:10pt;font-family:System;">contentPane</span><span style="font-size:10pt;font-family:Arial;">:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:System;">contentPane.add (nombreComponente, BorderLayout.ALINEACIÓN);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:System;">donde ALINEACIÓN puede tomar los valores de: CENTER, EAST, WEST, NORTH y SOUTH.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:System;">- Para colocar en texto dentro de la etiqueta, por ejemplo al centro, vertical y horizontalmente:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:System;">nombrelabel.setHorizontalAlignment (JLabel.CENTER);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:System;">nombrelabel.setVerticalAlignment (JLabel.CENTER);</span></strong><span style="font-size:10pt;font-family:System;"> <span> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:System;">- Añadir una imagen a un Jlabel:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:System;">ImageIcon nombreimagen = new ImageIcon (&#8220;imagen.jpg&#8221;);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:System;"><span> </span>JLabel nombrelabel = new JLabel(nombreImagen);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:System;">Os aconsejo guardar la imagen en la misma carpeta donde esta clase para evitar poner la dirección entera de localización de la imagen que es más lioso. De este modo vale con indicar sólo el nombre con su extensión correspondiente (jpg, gif…). No os olvidéis poner <strong>import javax.swing.ImageIcon;</strong> para poder usar iconos.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:System;">-Para que una ventana no se pueda maximizar:</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">frame.setResizable (false);<span></span></span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">- Para crear una ventana con el tamaño </span><span style="font-size:10pt;font-family:Arial;">mínimo posible pero donde aparezcan todos los componentes, se utiliza: </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">frame.pack( );</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">He comprobado si se puede poner esto y un <span style="color:black;">frame.setSize(x,y) a la vez. No me ha dado error pero no tendría mucho sentido poner el setSize ¿no?, porque saldrá con el tamaño mínimo igual.</span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:10pt;font-family:Arial;">Ejercicio 4: </span></strong><span style="font-size:10pt;font-family:Arial;">Os pongo el código que he hecho en el punto 1 porque lo he comprobado con el de las soluciones y no se parece mucho. Es más sencillo, pero también funciona xD</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:9pt;font-family:Arial;">import javax.swing.*;<br />
import java.awt.*;<br />
import java.awt.Color;<br />
import javax.swing.border.TitledBorder;<br />
import javax.swing.border.LineBorder;</p>
<p>class BorderTest {<br />
<span>  </span><br />
<span>  </span>static JPanel contentPane;<br />
<span>  </span><br />
<span> </span>public static void main(String args[]) {<br />
<span>    </span>JFrame frame = new JFrame(&#8220;Border Test&#8221;);<br />
<span>    </span>JFrame.setDefaultLookAndFeelDecorated(true);<br />
<span>    </span>frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:9pt;font-family:Arial;"><br />
<span>    </span>contentPane=(JPanel)frame.getContentPane();<br />
<span>    </span>contentPane.setBorder(new TitledBorder (new LineBorder(Color.BLACK, 1), &#8220;contentPane(GridLayout)&#8221;));</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:9pt;font-family:Arial;"><span>    </span>contentPane.setLayout(new GridLayout(20,1));</p>
<p><span>     </span>JLabel label[]=new JLabel [20];_<br />
<span>     </span>for(int a=0; a&lt;2; a++){<br />
<span>       </span>label[a] = new JLabel(&#8220;Label &#8220;+a);<br />
<span>       </span>label[a].setOpaque(true);<br />
<span>       </span>label[a].setHorizontalAlignment(JLabel.CENTER);<br />
<span>       </span>label[a].setVerticalAlignment(JLabel.CENTER);<br />
<span>       </span>contentPane.add(label[a]);<br />
<span>       </span>if (a==0 | a==2 | a==4 | a==6 | a==8 | a==10 | a==12 | a==14 | a==16 | a==18){<br />
<span>          </span>label[a].setBackground(Color.WHITE);<br />
<span>          </span>label[a].setForeground(Color.BLACK);<br />
<span>       </span>}else{<br />
<span>          </span>label[a].setBackground(Color.BLACK);<br />
<span>          </span>label[a].setForeground(Color.WHITE);</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:9pt;font-family:Arial;"><span>       </span>}<br />
<span>     </span>}<br />
<span>        </span><br />
<span>     </span>frame.pack( );<span>     </span><br />
<span>      </span>frame.setVisible(true);<br />
<span>    </span>}<br />
}<span style="color:black;"></p>
<p></span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">En el punto 2 me he atascado (vaya en el último punto de toda la práctica, casi lo consigo jejejee) porque al ejecutar la clase que te dan, me da un error: exception in thread “main” java.lang.UnsupportedClassVersionError: LayoutManagerShowTeacher &lt;Unsupported major.minor.version 49.0&gt; ¿Qué significa esto? Es que yo y el inglés…. ¿Es que necesito una versión superior a la que tengo instalada?&#8230; <strong>¡¡¡Espero vuestra ayuda!!!</strong></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p><span style="font-size:10pt;font-family:Arial;">Jo! Vaya post más largooooooo, a ver si al final va a ser mejor no ir a clase y currarse la práctica en casa… bueno, lo mejor será hacer las dos cosas si queremos aprobar. ¡¡Nos vemos por clase!!</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jorge0belen.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jorge0belen.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorge0belen.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorge0belen.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorge0belen.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorge0belen.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorge0belen.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorge0belen.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorge0belen.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorge0belen.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorge0belen.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorge0belen.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorge0belen.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorge0belen.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorge0belen.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorge0belen.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=14&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorge0belen.wordpress.com/2008/05/12/practica-9-swing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53078b7771d81c126b36241d834858dc?s=96&#38;d=identicon" medium="image">
			<media:title type="html">belen0jorge</media:title>
		</media:content>
	</item>
		<item>
		<title>Práctica 8: Algoritmia III</title>
		<link>http://jorge0belen.wordpress.com/2008/05/06/practica-8-algoritmia-iii/</link>
		<comments>http://jorge0belen.wordpress.com/2008/05/06/practica-8-algoritmia-iii/#comments</comments>
		<pubDate>Tue, 06 May 2008 18:32:18 +0000</pubDate>
		<dc:creator>belen0jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorge0belen.wordpress.com/?p=13</guid>
		<description><![CDATA[Después de unas semanas sin actualidad el blog (no sé a que es debido esta dejadez) y tras volver de un puente donde hemos recuperados fuerzas, retomamos donde lo dejamos.   Aunque ya hace tiempo que hicimos esta práctica, la recordamos porque no fue muy complicada, bueno… por eso y porque siempre guardamos todo lo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=13&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Después de unas semanas sin actualidad el blog (no sé a que es debido esta dejadez) y tras volver de un puente donde hemos recuperados fuerzas, retomamos donde lo dejamos.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Aunque ya hace tiempo que hicimos esta práctica, la recordamos porque no fue muy complicada, bueno… por eso y porque siempre guardamos todo lo que hacemos por mínimo que sea. Venga, que no nos enrollamos más y vamos al grano:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">Ejercicio 1: </span></strong><span style="font-size:11pt;font-family:Arial;">Lo primero que hicimos, como siempre, fue buscar por apuntes de clase e Internet lo que era una<span>  </span>tabla Hash, o Hash Table que queda más elegante. Llegamos a la conclusión que se utiliza frente a listas, array, vectores… porque el tiempo de búsqueda es muy pequeño independientemente del número de elementos que contenga. Además no necesita que se defina ni último ni primer elementos. Todo esto crea una gran ventaja, se consigue un gran rendimiento con una implementación bastante sencilla. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Para realizar este ejercicio, tan sólo hay que tener en cuenta estos conceptos:<strong></strong></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- Se debe importar <strong>java.util.*</strong> que es donde se encuentra la clase Hashtable.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- La tablaHash relaciona una clave con un valor, esto se consigue mediante el siguiente método: </span><strong><span style="font-size:11pt;font-family:Arial;">put (<a title="class in java.lang" href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html"><span style="color:windowtext;">Object</span></a> clave, <a title="class in java.lang" href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html"><span style="color:windowtext;">Object</span></a> valor)</span></strong><span style="font-size:11pt;font-family:Arial;">. En este ejercicio, tras crear una Hasttablese, sería:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">Hashtable ht = new Hashtable (10);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">// Se podría indicar la longitud o no.<br />
<strong>ht.put(&#8220;primero&#8221;, &#8220;Descripción del primer truco&#8221;);</strong></span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">ht.put(&#8220;segundo&#8221;, &#8220;Descripción del segundo truco&#8221;);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">// Esto repetido hasta insertar todos los valores deseados</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- El método <strong>get (clave)</strong>, devuelve el objeto valor asociado a la clave especificada. Hay que tener en cuenta que este objeto es de tipo Object y como nosotros queremos imprimirlo después, vamos a hacer una transformación a tipo String. Esto sería:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">String truco = (String)ht.get(“primero”);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Esto crea un String llamado truco con el valor de “Descripción del primer truco” que podemos imprimir por pantalla fácilmente poniendo dentro del main: </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">System.out.println (truco);</span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;"> </span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">Ejercicio 2: </span></strong><span style="font-size:11pt;font-family:Arial;">No vamos a explicar uno por uno todos los métodos recursivos que nos dan porque es siempre lo mismo. Preferimos intentar dar las claves comunes de cualquier método recursivo.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">La recursividad en un método se produce cuando se vuelve a llamar a este mismo método desde dentro del mismo. Lo más importante es tener en cuenta estas dos cosas para evitar tener un bucle infinito.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">1. Crear una <strong>condición de parada</strong>: que cuando se cumpla devuelva un valor o salga del método.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">2. Todos los métodos recursivos que nos muestran, tienen uno o más parámetros. Cuando hacemos una llamada al método desde dentro del mismo, debemos <strong>actualizar los parámetros</strong> pues si pasáramos siempre los mismos valores de estos, siempre nos haría lo mismo, creando así un bucle infinito.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Y esto fue todo lo que hicimos, a lo más difícil no nos dio tiempo… ¡ahora entiendo porque dijimos que esta práctica fue fácil! (jejejee)</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jorge0belen.wordpress.com/13/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jorge0belen.wordpress.com/13/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorge0belen.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorge0belen.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorge0belen.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorge0belen.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorge0belen.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorge0belen.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorge0belen.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorge0belen.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorge0belen.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorge0belen.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorge0belen.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorge0belen.wordpress.com/13/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorge0belen.wordpress.com/13/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorge0belen.wordpress.com/13/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=13&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorge0belen.wordpress.com/2008/05/06/practica-8-algoritmia-iii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53078b7771d81c126b36241d834858dc?s=96&#38;d=identicon" medium="image">
			<media:title type="html">belen0jorge</media:title>
		</media:content>
	</item>
		<item>
		<title>Práctica 7: Algoritmia II</title>
		<link>http://jorge0belen.wordpress.com/2008/04/17/practica-7-algoritmia-ii/</link>
		<comments>http://jorge0belen.wordpress.com/2008/04/17/practica-7-algoritmia-ii/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 18:27:41 +0000</pubDate>
		<dc:creator>belen0jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorge0belen.wordpress.com/?p=12</guid>
		<description><![CDATA[Puff… ¡Qué desastre de práctica! No conseguimos avanzar casi nada, aunque algo sí conseguimos hacer, poco… pero menos es nada (no sé de dónde saco tanto positividad).   La práctica consistía en utilizar un vector (lista dinámica) en lugar del array (lista estática) que empleamos en la anterior. La ventaja de crear un Vector para [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=12&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Puff… ¡Qué desastre de práctica! No conseguimos avanzar casi nada, aunque algo sí conseguimos hacer, poco… pero menos es nada (no sé de dónde saco tanto positividad). </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">La práctica consistía en utilizar un vector (lista dinámica) en lugar del array (lista estática) que empleamos en la anterior. La ventaja de crear un Vector para sustituir a un array, es que nuestra dimensión pasa a ser ilimitada y, además, se logra ahorrar memoria. Esto último se debe a que, si la dimensión de un array es x e introducimos menor número de elementos, tenemos algunas posiciones del array con valor null (no hay elementos en ellas) y nos están ocupando un espacio en memoria que no utilizamos. El concepto teórico de lo que es una cola dinámica está más o menos claro, pero a la hora de llevarlo a la práctica… </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Tras bajarnos las soluciones de la práctica anterior para ir modificando sobre ellas, nuestro primer pasito fue poner la siguiente secuencia para poder utilizar vectores:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"><strong>import java.util.Vector;</strong></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Después sustituimos el array por un Vector:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"><strong>Vector elementos = new Vector (numElementos +1);</strong></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Aquí surgió la primera duda: ¿Por qué asignamos una dimensión al Vector si se supone que es infinito? (Ups, pues parece que tampoco la teoría estaba muy clara) Tras comernos un poco la cabeza, averiguamos que al crear un Vector, se le puede indicar un números de elementos inicial (que no su longitud) o no indicarle nada. Entonces se nos ocurrió que, en este caso si se indicaba para lograr hacer un Vector circular, de ahí también el +1. Aunque la verdad, no nos termino de convencer esto así que si alguno lo tiene más claro… ayudarnos, please!</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Tras esta pequeña reflexión, pensamos que el método llena( ) no tendría mecho sentido para un Vector que no tiene límite de longitud por eso decidimos borrarlo. Aquí nos atascamos, intentamos compilar pero, como ya esperábamos…. ¡Error!</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Ojeamos los apuntes de clase esperando encontrar algo que nos ayudara. Nos dimos cuenta de que se necesitaría también crear una clase Nodo que consiga crear las referencias al siguiente elemento y establecer así un orden. Pero no nos dio tiempo a intentarlo.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"><span> </span></span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Y esto fue todo, esperaremos a que pongan las soluciones para mirárnoslo bien, que este tema está un poco confuso. Pero no nos desanimemos, miremos el vaso medio lleno, lo bueno es que la siguiente práctica no nos puede salir peor (en el peor de los casos igual de mal). </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p><span style="font-size:11pt;font-family:Arial;">¡¡Nos vemos en la siguiente práctica!! En la que esperamos no sufrir tanto. xD</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jorge0belen.wordpress.com/12/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jorge0belen.wordpress.com/12/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorge0belen.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorge0belen.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorge0belen.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorge0belen.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorge0belen.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorge0belen.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorge0belen.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorge0belen.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorge0belen.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorge0belen.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorge0belen.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorge0belen.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorge0belen.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorge0belen.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=12&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorge0belen.wordpress.com/2008/04/17/practica-7-algoritmia-ii/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53078b7771d81c126b36241d834858dc?s=96&#38;d=identicon" medium="image">
			<media:title type="html">belen0jorge</media:title>
		</media:content>
	</item>
		<item>
		<title>Práctica 6: Algoritmia I</title>
		<link>http://jorge0belen.wordpress.com/2008/04/10/practica-6-algoritmia-i/</link>
		<comments>http://jorge0belen.wordpress.com/2008/04/10/practica-6-algoritmia-i/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 18:44:26 +0000</pubDate>
		<dc:creator>belen0jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorge0belen.wordpress.com/2008/04/10/practica-6-algoritmia-i/</guid>
		<description><![CDATA[Al fin terminamos con la trilogía de prácticas de Orientación a Objetos, lo malo es que nos metemos en otra serie de tres, esta vez con el nombre de Algoritmia. Al llegar, (y como hacemos siempre) miramos la longitud de la prácticas y para nuestra sorpresa vimos sólo dos ejercicios ¿motivo de alegría porque son [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=11&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Al fin terminamos con la trilogía de prácticas de Orientación a Objetos, lo malo es que nos metemos en otra serie de tres, esta vez con el nombre de Algoritmia.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Al llegar, (y como hacemos siempre) miramos la longitud de la prácticas y para nuestra sorpresa vimos sólo dos ejercicios ¿motivo de alegría porque son pocos, o de acojone porque, si sólo hay dos, deben ser muy complicados? Mejor sería dejar a parte estas cuestiones que no conducen a ningún lado, y ponerse con ello.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">El primer paso para programar un juego es ponerse a pensar las clases, métodos, atributos… que vamos a necesitar implementar. Hacer esto lo primero te ayuda bastante, y no lo que hacemos nosotros que somos de los que se ponen a programar como locos, y a ver que va saliendo, cuya consecuencia es que luego te das cuenta de que había otra manera mejor de hacerlo y te toca volver a empezar (experiencia propia). Así que ya sabéis, una buena planificación de lo que vamos a tener que programar es tener gran parte del problema resuelto.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Las clases, con sus métodos correspondientes, que tendrá el Tetris serán:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">Clase Pieza</span></strong><span style="font-size:11pt;font-family:Arial;">: Se trata de una clase abstracta que nos va a indicar los métodos que van a definir una pieza. Estos son:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- quienSoy: devuelve el tipo de pieza que es: cuadrado, ele, T…</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- posición: devuelve las coordenadas x e y en las que está la pieza dentro de la pantalla.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- mover: describirá el movimiento que hace la pieza.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">- pintar: muestra la pieza por pantalla. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">De esta clase heredaran la clase PiezaL, PiezaCuadrado… que especifican el comportamiento de cada pieza según del tipo que sean. <span style="text-decoration:underline;">Ejemplo</span>: en la clase PiezaCuadrado el método quienSoy deberá devolver, Cuadrado.</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;"> </span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">Clase Cola: </span></strong><span style="font-size:11pt;font-family:Arial;">Sirve para crear los métodos que van a controlar el array de Piezas, donde se irán almacenando éstas tras ser creadas. Esta clase contendrá los métodos que intervienen en el comportamiento de un array, vistos en clase de teoría: encolar, desencolar, vacia y llena. Además tendrá dos métodos, primero y ultimo, que nos devolverán un int que indique la posición del array donde se encuentra el elemento primero o último respectivamente.</span></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;"> </span></strong></p>
<p class="MsoNormal" style="margin:0;"><strong><span style="font-size:11pt;font-family:Arial;">Clase Main:</span></strong><span style="font-size:11pt;font-family:Arial;"> Como su nombre indica, es la clase que va a contener el main. Es la encargada de:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">1. Crear el array Piezas.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">2. Crear una pieza de un tipo concreto. Por tanto, el constructor de la clase Pieza debe tener un parámetro “tipo” donde se indique que tipo de pieza es.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">3. Encolar la pieza usando el método Cola.encolar()</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">4. Pintar la pieza para poder visualizarla por pantalla. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:11pt;font-family:Arial;">Nos vemos el próximo viernes que… ¡La aventura del Tetris continúa!</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jorge0belen.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jorge0belen.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorge0belen.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorge0belen.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorge0belen.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorge0belen.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorge0belen.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorge0belen.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorge0belen.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorge0belen.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorge0belen.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorge0belen.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorge0belen.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorge0belen.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorge0belen.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorge0belen.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=11&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorge0belen.wordpress.com/2008/04/10/practica-6-algoritmia-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53078b7771d81c126b36241d834858dc?s=96&#38;d=identicon" medium="image">
			<media:title type="html">belen0jorge</media:title>
		</media:content>
	</item>
		<item>
		<title>Práctica 5: Orientación a objetos III</title>
		<link>http://jorge0belen.wordpress.com/2008/04/03/practica-5-orientacion-a-objetos-iii/</link>
		<comments>http://jorge0belen.wordpress.com/2008/04/03/practica-5-orientacion-a-objetos-iii/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 19:40:57 +0000</pubDate>
		<dc:creator>belen0jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorge0belen.wordpress.com/2008/04/03/practica-5-orientacion-a-objetos-iii/</guid>
		<description><![CDATA[Muy buenas a todos y salidos cordiales!Bueno, pues aquí estamos una vez más ya sabéis, un viernes más, una práctica más, un post más&#8230;y aquí andamos comentado la jugada del último viernes, un viernes que podía haberse dado mejor&#8230;.pero nos estamos guardando nuestras bazas importantes para Junio ^^ Esto es lo que conseguimos hacer:  Introducción: Esta [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=10&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:11pt;font-family:Arial;">Muy buenas a todos y salidos cordiales!Bueno, pues aquí estamos una vez más ya sabéis, un viernes más, una práctica más, un post más&#8230;y aquí andamos comentado la jugada del último viernes, un viernes que podía haberse dado mejor&#8230;.pero nos estamos guardando nuestras bazas importantes para Junio ^^ Esto es lo que conseguimos hacer:</span><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><b><span style="font-size:11pt;font-family:Arial;">Introducción:</span></b><span style="font-size:11pt;font-family:Arial;"> Esta parte es para aclarar algunos conceptos. Primero nos aparece esa palabra tan extraña (que además viene en negrita lo que indica que va a ser importante)<b> polimorfismo</b><span>. Como en la práctica viene todo puesto con palabras muy técnicas, esto es lo que sería en una definición de andar por casa (como diría la profesora de Mate). El polimorfismo consiste en averiguar a qué método nos referimos si en nuestro programa hay varios con el mismo nombre. Esto sucederá en dos ocasiones: </span></span></p>
<p><span style="font-size:11pt;font-family:Arial;"><span></span></span><span style="font-size:11pt;font-family:Arial;">1. <b>Sobrecarga de métodos: </b>Se distinguen por el o los parámetros que se le asignan a cada uno. Probaré a explicarlo mejor con un ejemplo:</span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;">public String toString ( ){ …}</span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;">public void toString ( int numero){ …}</span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;">Es posible crear los dos con el mismo nombre porque si ponemos nombreObjeto.toString( ); sabemos que se referirá al primero que es el que no tiene parámetros y si ponemos nombreObjeto.toString(4); será una referencia al segundo cuyo tipo de parámetro es compatible.</span><span style="font-size:11pt;font-family:Arial;">Creo que esto también se puede hacer con Constructores.</span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;">2. <b>Sobreescritura de métodos:</b><span> Esto es lo que hicimos en la práctica anterior usando Herencia, se sabe que toString ejecutar cada vez según el tipo de objeto que llama a este método. </span></span><span style="font-size:11pt;font-family:Arial;">Si ponemos atributo1.toString, donde atributo1 es un objeto de la clase Atributo, se ejecutará el toString que aparezca en la clase Atributo.</span></p>
<p><span style="font-size:11pt;font-family:Arial;">Otro concepto importante a conocer es una <b>Clase Abstracta</b>. Es aquella que sirve como base para sus clases derivadas, aquí van a aparecer los métodos (también abstractos) que deben implementarse en todas ellas. Se debe tener en cuenta que no se pueden crear objetos de las clases abstractas.</span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;">El <b>interfaz</b> es lo que se nos ha explicado en clase como contrato, una especificación de las funciones que deben cumplir los objetos. Sólo pueden tener métodos abstractos aunque no hace falta indicarlo con la sentencia abstract en ellos, pues se pone por defecto.</span><b><span style="font-size:11pt;font-family:Arial;"> </span></b></p>
<p><b><span style="font-size:11pt;font-family:Arial;"></span></b><b><span style="font-size:11pt;font-family:Arial;">Ejercicio 1: </span></b><span style="font-size:11pt;font-family:Arial;">Aquí nos dimos cuenta de la importancia que tiene manejarse bien por el API. Algo que aún tenemos un poco pendiente pero es que… ¿a nadie se le ha ocurrido traducirlo entero? Por lo demás, solo consiste en comprobar que, como todas las clases derivan de la clase Object donde se define el método toString(), cada vez que trabajemos con una cadena de caracteres (un String) se va a invoca este método por defecto. Por ello, aunque borremos la sentencía<span>  </span>toString() de todos los sitios, el resultado será<span>  </span>el mismo que en la práctica anteior.</span><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><b><span style="font-size:11pt;font-family:Arial;">Ejercicio 2:</span></b><span style="font-size:11pt;font-family:Arial;"> En este ejercicio sufrimos un poco de stress, eso de poder almacenar la información en un fichero… nos daba un poco de respeto. Luego nos chivaron que se puede conseguir con el método <b>write</b> y, aunque otra vez había que acudir a nuestro querido API, lo logramos hacer teniendo en cuenta las especificaciones de este nuevo método.</span><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><b><span style="font-size:11pt;font-family:Arial;">Ejercicio 3:</span></b><span style="font-size:11pt;font-family:Arial;"> Por fin comenzamos con la interfaz gráfica, eso de que vayan saliendo ventanitas y cosillas de esas ya nos gusta más XD. Nos quedamos en la primera parte, en la de colorear un rectángulo de amarillo. No fue muy difícil, como te dan la clase medio hecha tan sólo tienes que utilizar los métodos paint( ), pintaBorde( ) y pintaFondo( ).</span><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;">Aunque no nos dio tiempo a hacer más, habrá que mirarse lo que queda, que esta parte es muy importante para hacer el Videojuego. Si, nosotros somos unos de los locos que lo estamos intentando y esperemos que no se quede sólo en un intento.</span><span style="font-size:11pt;font-family:Arial;"> </span><span style="font-size:11pt;font-family:Arial;">Bye!</span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jorge0belen.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jorge0belen.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorge0belen.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorge0belen.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorge0belen.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorge0belen.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorge0belen.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorge0belen.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorge0belen.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorge0belen.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorge0belen.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorge0belen.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorge0belen.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorge0belen.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorge0belen.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorge0belen.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=10&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorge0belen.wordpress.com/2008/04/03/practica-5-orientacion-a-objetos-iii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53078b7771d81c126b36241d834858dc?s=96&#38;d=identicon" medium="image">
			<media:title type="html">belen0jorge</media:title>
		</media:content>
	</item>
		<item>
		<title>Práctica 4: Orientación a objetos II</title>
		<link>http://jorge0belen.wordpress.com/2008/03/26/practica-4-orientacion-a-objetos-ii/</link>
		<comments>http://jorge0belen.wordpress.com/2008/03/26/practica-4-orientacion-a-objetos-ii/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 20:28:04 +0000</pubDate>
		<dc:creator>belen0jorge</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jorge0belen.wordpress.com/2008/03/26/practica-4-orientacion-a-objetos-ii/</guid>
		<description><![CDATA[Después de una semanita de vacaciones (en la que hay que confesar que no hemos hecho nada), habrá que hacer frente a la depresión post-vacacional y recuperar los kilos que hemos ganado comiendo torrijas, sudando con las prácticas de esta (cada vez más querida) asignatura.  Los ejercicios 1,2,3,4 son para entender el concepto de “Herencia”, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=8&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-size:11pt;font-family:Arial;">Después de una semanita de vacaciones (en la que hay que confesar que no hemos hecho nada), habrá que hacer frente a la depresión post-vacacional y recuperar los kilos que hemos ganado comiendo torrijas, sudando con las prácticas de esta (cada vez más querida) asignatura.</span><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;">Los ejercicios 1,2,3,4 son para entender el concepto de “Herencia”, pero la herencia que consiste en heredar un apartamento en Torrevieja que nuestra tía-abuela segunda ganó en el “Un, dos, tres”…, no, esta herencia no, sino la herencia en Java. La herencia en Java consiste en compartir código entre clases que tienen un comportamiento parecido. Es decir, se puede crear una clase (clase derivada) a partir de otra ya hecha (clase base) y compartir las opciones de esta última con la primera y, además, poder añadir otras opciones propias de la nueva clase. Se debe tener en cuenta que la clase derivada heredará todos los métodos y atributos excepto el constructor que es propio para cada clase.</span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;">Centrándonos en lo que nos mandaban hacer en esta práctica, como ya nos daban las clases medio hechas, tan sólo había que completar el constructor usando el <b>super</b> y añadir al método toString los atributos particulares de cada clase (sin olvidar utilizar también el super para heredar el toString de la clase Miembro con los atributos comunes). Nosotros os aconsejamos crear un objeto de cada clase y comprobar por pantalla el toString de cada una.</span><span style="font-size:11pt;font-family:Arial;">Por otro lado, nos parece buena idea que se hagan las mismas clases que en la práctica anterior, así podemos comparar las dos maneras de hacerlo y comprobar que, efectivamente (por si alguno no se lo había terminado de creer), se ahorra código usando la herencia.</span><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;">Nosotros llegamos hasta el ejercicio 5. En primer lugar desciframos en lo que consiste </span><span style="font-size:11pt;font-family:Arial;">el<span>  </span></span><b><span style="font-size:11pt;font-family:Arial;">instanceof, </span></b><span style="font-size:11pt;font-family:Arial;">que permite saber si<b> </b></span><span style="font-size:11pt;font-family:Arial;">un objeto pertenece a una clase determinada devolviendo true o false.<i> </i>Además conseguimos hacer el <b>getAtributos</b></span><b><span style="font-size:11pt;font-family:Arial;">()</span></b><span style="font-size:11pt;font-family:Arial;">. Como he leído en algunos Blogs que no algunos no llegasteis hasta aquí, os pongo lo que hicimos nosotros, aunque la garantía de que este bien no supera el 70%.</span><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;"> </span></p>
<p><span style="font-size:11pt;font-family:Arial;"></span><span style="font-size:11pt;font-family:Arial;">public Atributo[ ] getAtributos() {<br />
<span>   </span>Atributo arrayAtributos[]= null;<br />
<span>   </span>int contador=0;<br />
<span>  </span>for (int i=0;i&lt;miembros.length;i++){<br />
<span>   </span>if (miembros[i] instanceof Atributo){<br />
<span>     </span>arrayAtributos [contador] = (Atributo)miembros[i];<br />
<span>     </span>contador++;<br />
<span>   </span>}<br />
<span>  </span>}<br />
<span>   </span>return arrayAtributos;</span></p>
<p><span style="font-size:11pt;font-family:Arial;">}</span><span style="font-size:11pt;font-family:Arial;"><br />
<span style="font-size:11pt;font-family:Arial;"> </span></span></p>
<p><span style="font-size:11pt;font-family:Arial;"><span style="font-size:11pt;font-family:Arial;">Admitimos opiniones de todo tipo (aunque preferiblemente buenas) sobre esta idea. Otra cosilla importante, fijaros en (Atributo)miembros[i] porque es necesaria esta conversión de tipo, pues no todos los miembros son Atributos.</span></span></p>
<p><span style="font-size:11pt;font-family:Arial;"><span style="font-size:11pt;font-family:Arial;"></span></span><span style="font-size:11pt;font-family:Arial;"><span style="font-size:11pt;font-family:Arial;">¡¡Hasta la próxima apañeros!!</span></span></p>
<p><span style="font-size:11pt;font-family:Arial;"><span style="font-size:11pt;font-family:Arial;"></span></span><span style="font-size:11pt;font-family:Arial;"><b><span style="font-size:11pt;font-family:Arial;">Nota:</span></b><span style="font-size:11pt;font-family:Arial;"> no olvidéis hacer los ejercicios complementarios para casa XD (esta novedad añadida) y terminar la práctica, que me apuesto una bandeja de torrijas a que nadie la terminó.</span></span></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jorge0belen.wordpress.com/8/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jorge0belen.wordpress.com/8/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jorge0belen.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jorge0belen.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jorge0belen.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jorge0belen.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/jorge0belen.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/jorge0belen.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/jorge0belen.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/jorge0belen.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jorge0belen.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jorge0belen.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jorge0belen.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jorge0belen.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jorge0belen.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jorge0belen.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jorge0belen.wordpress.com&amp;blog=2997376&amp;post=8&amp;subd=jorge0belen&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://jorge0belen.wordpress.com/2008/03/26/practica-4-orientacion-a-objetos-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/53078b7771d81c126b36241d834858dc?s=96&#38;d=identicon" medium="image">
			<media:title type="html">belen0jorge</media:title>
		</media:content>
	</item>
	</channel>
</rss>
