<?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>Una serie de catastróficas desdichas...</title>
	<atom:link href="http://ocaypunto.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ocaypunto.wordpress.com</link>
	<description>Recopilación de anécdotas y quebraderos de cabeza gracias a la asignatura de oca</description>
	<lastBuildDate>Sun, 18 May 2008 16:01:54 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ocaypunto.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Una serie de catastróficas desdichas...</title>
		<link>http://ocaypunto.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ocaypunto.wordpress.com/osd.xml" title="Una serie de catastróficas desdichas..." />
	<atom:link rel='hub' href='http://ocaypunto.wordpress.com/?pushpress=hub'/>
		<item>
		<title>PRÁCTICA 10</title>
		<link>http://ocaypunto.wordpress.com/2008/05/18/practica-10/</link>
		<comments>http://ocaypunto.wordpress.com/2008/05/18/practica-10/#comments</comments>
		<pubDate>Sun, 18 May 2008 16:01:54 +0000</pubDate>
		<dc:creator>ocaypunto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ocaypunto.wordpress.com/?p=42</guid>
		<description><![CDATA[Esta práctica nos ha parecido un poco extraña, ya que en un principio no sabíamos de que iban los Threads o hilos de ejecución ni tampoco estábamos muy seguros en que se diferenciaban los programas de los procesos&#8230;un lío. Menos mal que con la explicación del profe más o menos nos quedó claro. Ejercicio 1: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=42&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Esta práctica nos ha parecido un poco extraña, ya que en un principio no sabíamos de que iban los Threads o hilos de ejecución ni tampoco estábamos muy seguros en que se diferenciaban los programas de los procesos&#8230;un lío. Menos mal que con la explicación del profe más o menos nos quedó claro.</p>
<p><span style="color:#ff9900;">Ejercicio 1:</span></p>
<p>Un programa necesita procesos para funcionar (por lo tanto siempre habrá mas procesos que programas). En sí son lo mismo, lo único que los procesos son el código que estamos ejecutando, por lo tanto es más incomprensible, por eso se crean los programas (que hacen que cualquier persona lo pueda entender).</p>
<p>Al principio nos dan el código de un programa llamado Ding. Es un programa sencillo que lo único que hace es esperar a que metas algo por teclado y cuando esto ocurra si es un enter te imprime DING! y si es cualquier otra letra no hace nada.</p>
<p>El apartado 2 es muy parecido al anterior pero en vez de imprimirtelo cada vez que das al enter, lo hace cada 1000 ms (1s), además esta vez se imprime DONG!. Para hacer que lo haga cada segundo se usa la sentencia :</p>
<p><span style="color:#ff0000;">Thread.sleep(1000); //siempre va en ms</span></p>
<p>En el tercer apartado te juntan los dos anteriores, es decir que imprima DING! cada vez que das al enter y DONG! cada segundo. Este programa funciona mal, puesto que el System.in.read() bloquea el equipo hasta que se introduce el enter por teclado, por lo tanto el DONG! no sale hasta que lo introduces (en vez de salir cada segundo que es como debería). Además nos hemos dado cuenta de que hace otra cosa que no nos concuerda, ya que cuando de las a enter debería salir DING! DONG!, sale DONG! DING! DONG!, como si cada vez que le dieras al enter hubiera antes otra cosa y al hacer el if no lo cumple&#8230;no entendemos muy bien porque ocurre.</p>
<p><span style="color:#ff9900;">Ejercicio 2:</span></p>
<p>Un <strong>hilo de ejecución( o thread )</strong> es una característica que permite a una aplicación realizar varias tareas ( independientes) simultáneamente. Los distintos hilos de ejecución comparten recursos como el espacio de memoria, los archivos abiertos etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente. Cada vez que se lanza un thread se hace una nueva bifurcación en el programa para hacer lo que te van poniendo en el método run().</p>
<p>El proceso sigue en ejecución mientras al menos uno de sus hilos de ejecución siga activo. Cuando el proceso es terminado, todos sus hilos de ejecución también lo son. Además si mato a la raíz ( desde la que he lanzado los thread), mato a todos los otros hilos aunque estos no hayan acabado aún de hacer todo su código.</p>
<p>El <span style="text-decoration:underline;">apartado 1</span> tiene varias cosas que nos extrañaron,por lo que investigamos un poco:</p>
<p><span style="color:#ff0000;">Runnable r = new Runnable() {<br />
public void run() {<br />
PrintThreadName();<br />
}<br />
};</span></p>
<ul>
<li>Se trata de una clase interna: que solo se puede usar en la clase en la que esta integrada. Todo esto se podría haber hecho en otra clase, pero como solo lo vamos a usar aqui, no hace falta.</li>
<li>Runnable es una interfaz y r es un objeto que implementa a esa interfaz.</li>
<li>Siempre que implementemos la interfaz Runnable tenemos que implementar su único método que es el run(). Dentro del run ponemos lo que queremos que haga el nuevo hilo que vamos a lanzar.</li>
</ul>
<p><span style="color:#ff0000;">Thread t = new Thread(r);<br />
t.start();</span></p>
<ul>
<li>Al crear un nuevo Thread le paso por parámetro el objeto de Runnable.</li>
<li>El método start() lo único que hace es lanzar el hilo nuevo (hacer la bifurcación), va al método run() para ver que tiene que hacer, y lo ejecuta. Al método start no se le pasa nada por parámetro.</li>
</ul>
<p>Los demás hacen lo mismo. Lo único que cambia es que una hereda de Thread y la otra implementa a Runnable. Esto es lo mismo, ya que si nos vamos al api nos encontramos con que la clase Thread ya implementa a Runnable por lo que al heredarla ya lo tenemos.</p>
<p><span style="color:#ff9900;">Ejercicio 3:</span></p>
<p>En este ejercicio se tratan las condiciones de carrera que se producen cuando dos hilos intentan acceder en el mismo momento al mismo recurso.</p>
<p>Miramos el código que nos daban ( clase <span style="text-decoration:underline;">RaceCondition</span>) y nada mas verla piensas que van a salir los 10000 ceros y luego los 10000 unos ( pues así es el orden en el que está escrito), pero al compilarlo se ve que salen aleatoriamente ( según cual es el primero que llega)</p>
<p>No se nos ocurrieron muchas formas de solucionar este problema, si acaso alguna puede ser que cuando uno vaya a acceder a un recurso antes compruebe si hay otro accediendo a la vez&#8230;</p>
<p>El programa <span style="text-decoration:underline;">RaceConditionSolved</span> esta evitando que dos hilos accedan a salida estándar ( esta solucionando la condición de carrera), para ello usa vectores, miramos un poco el código y lo ejecutamos.</p>
<p>Ya no hemos avanzado mas.Se nota que ya se acercan los exámenes, el día de entregar el juego&#8230; así que estamos demasiado liados con todo&#8230;</p>
<p>Un saludo</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocaypunto.wordpress.com/42/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocaypunto.wordpress.com/42/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocaypunto.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocaypunto.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocaypunto.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocaypunto.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocaypunto.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocaypunto.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocaypunto.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocaypunto.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocaypunto.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocaypunto.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocaypunto.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocaypunto.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocaypunto.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocaypunto.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=42&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocaypunto.wordpress.com/2008/05/18/practica-10/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/095a61a5e57103c5425d324146ec16ac?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocaypunto</media:title>
		</media:content>
	</item>
		<item>
		<title>PRÁCTICA 9</title>
		<link>http://ocaypunto.wordpress.com/2008/05/05/practica-9/</link>
		<comments>http://ocaypunto.wordpress.com/2008/05/05/practica-9/#comments</comments>
		<pubDate>Mon, 05 May 2008 16:32:05 +0000</pubDate>
		<dc:creator>ocaypunto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ocaypunto.wordpress.com/?p=41</guid>
		<description><![CDATA[Ya que le hemos cogido gustillo a esto, pues no vamos a parar, que si no, nos conocemos y estamos una semana y algo sin escribir nada&#8230; Por fin empezamos con el tema de las interfaces gráficas, que la verdad es que nos parece más entretenido,porque ya no lo vamos a ver en la consola [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=41&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ya que le hemos cogido gustillo a esto, pues no vamos a parar, que si no, nos conocemos y estamos una semana y algo sin escribir nada&#8230;</p>
<p>Por fin empezamos con el tema de las interfaces gráficas, que la verdad es que nos parece más entretenido,porque ya no lo vamos a ver en la consola todo negro&#8230;si no que por fin tenemos ventanitas y cosas, aunque tiene su dificultad..pero bueno como todo.</p>
<p><span style="color:#ff9900;">Ejercicio 1:</span></p>
<p>En este ejercicio nos dan un programa y lo tenemos que compilar y ejecutar para ver lo que hace.Es un programa sencillito ( más o menos lo habíamos visto todo en la clase de teoría). Lo único que no conocíamos era el método setDefaultCloseOperation con el parámetro EXIT_ON_CLOSE, que lo buscamos en el API y vimos que sirve para que cuando le des al aspa de cerrar, el programa además de cerrarse deje de ejecutarse.</p>
<p>En el programa <span style="text-decoration:underline;">HelloWorldGUIBig</span> únicamente tenemos que cambiar los parámetros del método setSize(x,y), por ejemplo : <em><span style="color:#ff0000;">frame.setSize(400,200);</span></em></p>
<p>El siguiente programa que tenemos que hacer es el <span style="text-decoration:underline;">HelloWorldGUIColor</span>, con el fondo de la etiqueta de color azul. Para hacerlo, basta con añadir estas dos líneas de código antes de añadir al contentPane la etiqueta:</p>
<p><em><span style="color:#ff0000;">label.setBackground(Color.RED);</span> // este es el que sirve para cambiar el fondo<br />
</em></p>
<p><em><span style="color:#ff0000;">label.setOpaque(true)</span>; // se usa para poder ver la etiqueta (que no sea transparente).</em></p>
<p>La clase <span style="text-decoration:underline;">HelloWorldGUIDelayed</span> hace que la ventana no salga nada más darle a ejecutar, si no que tarde un poco más. Si añades el System.exit(0) lo que hace es que se cierra solo, ni siquiera sale la ventana.</p>
<p><span style="color:#ff9900;">Ejercicio 2:</span></p>
<p>Para hacer que un programa ignore el mensaje de cierre ( que es lo que piden en la clase <span style="text-decoration:underline;">HelloWorldGUIDeaf</span>) tenemos que usar otro de los parámetros que se le pueden pasar al método setDefaultCloseOperation quedando:</p>
<p><em><span style="color:#ff0000;">frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); </span>// que no te hace caso si le das a cerrar</em></p>
<p>Otra forma para cerrar la ventana es no poner nada, se te cierra aunque no deja de ejecutarse.</p>
<p>Luego te piden el <span style="text-decoration:underline;">HelloWorldGUIUndecorated</span> que no tenga ninguna decoración del manejador de ventanas. Para ello se usa al final del código,antes de hacerlo visible:</p>
<p><em><span style="color:#ff0000;">frame.setUndecorated(true)</span> // que no te saca la barra de menú ( ni los botones de minimizar, maximizar y cerrar)</em></p>
<p>En el último apartado de este ejercicio te dicen que utilices el Look and Feel por defecto de java para hacer la clase <span style="text-decoration:underline;">HelloWorldGUIDecorated</span>. Nos dan una gran pista en el enunciado, por lo que directamente fuimos al método setDefaultLookAndFeelDecorated():</p>
<p><em><span style="color:#ff0000;">JFrame.setDefaultLookAndFeelDecorated(true);</span></em></p>
<p>que se lo añadimos antes de crear el frame ( antes de la línea : frame = new JFrame (&#8220;HelloWorldGUIDecorated&#8221;) ) si no, no funciona.</p>
<p><span style="color:#ff9900;">Ejercicio 3:</span></p>
<p>En este ejercicio ya te piden usar Layouts que es la clase encargada de decidir como se colocan los componentes, un método de Layout muy usado es el pack() que hace que la ventana tenga el tamaño adecuado para que se vea todo lo que tenemos en ella ( ni más grande ni más pequeño) y nos quita de usar el setSize() para decirle el tamaño que queremos.</p>
<p>En el primer apartado de este ejercicio te piden el programa <span style="text-decoration:underline;">CompassSimple</span> en la que la etiqueta tenga el fondo negro, la letra blanca, y que la ventana salga directamente maximizada al tamaño completo de la ventana.</p>
<p>Después de crear la etiqueta y de decirla que no sea transparente ponemos:</p>
<p><em><span style="color:#ff0000;">label.setBackground(Color.BLACK); </span>// color de fondo<br />
<span style="color:#ff0000;">label.setForeground(Color.WHITE);</span> //color de texto</em></p>
<p>Lo de que salga directamente maximizada, no sabemos muy bien como hacerlo. Nos pasaremos por algún blog a ver si alguien lo ha hecho.</p>
<p>Luego nos piden que modifiquemos el <span style="text-decoration:underline;">CompassSimple</span> para que tenga 4 etiquetas cada una de una forma y en un sitio distinto.Tenemos que hacer 4 veces lo siguiente:</p>
<p><em><span style="color:#ff0000;">label = new JLabel(&#8220;North&#8221;);<br />
label.setOpaque(true);</span><br />
<span style="color:#ff0000;">label.setBackground(Color.BLACK); </span>// color de fondo<br />
<span style="color:#ff0000;">label.setForeground(Color.WHITE);</span> //color de texto<br />
<span style="color:#ff0000;">contentPane.add(label, BorderLayout.NORTH);</span><br />
</em></p>
<p>Pero cada uno siguiendo las indicaciones que nos dan. El siguiente tendriamos que poner SOUTH donde pone NORTH y poner Background(Color.WHITE) y el Foreground(Color.BLACK) y así con todos.</p>
<p>Para hacer el <span style="text-decoration:underline;">CompassBetter</span> tenemos que añadir en cada una de las etiquetas anteriores antes de añadirlas al ContenPane :</p>
<p><em><span style="color:#ff0000;">label.setHorizontalAlignment(JLabel.CENTER);</span> //alineación horizontal centrada<br />
<span style="color:#ff0000;">label.setVerticalAlignment(JLabel.CENTER);</span> //alineación vertical centrada</em></p>
<p>En todas es igual, ya que nos dicen que todas tengan el texto centrado. Además tenemos que poner que todas tengan el fondo negro y el texto blanco.</p>
<p>En el siguiente apartado nos piden que ya incorporemos una imagen , es el<span style="text-decoration:underline;"> CompassMuchBetter.</span> Para hacer esto, tenemos que añadir al código lo siguiente:</p>
<p><em><span style="color:#ff0000;">ImageIcon flecha = new ImageIcon(&#8220;./flecha.jpg&#8221;);</span> //creo el icono pasándole como parámetro la URL de la imagen<br />
<span style="color:#ff0000;">label = new JLabel(flecha);</span> //creo la etiqueta metiéndole como parámetro la anterior ImageIcon<br />
<span style="color:#ff0000;">label.setOpaque(true);<br />
label.setBackground(Color.BLACK);<br />
label.setVerticalAlignment(JLabel.CENTER);<br />
label.setHorizontalAlignment(JLabel.CENTER);<br />
contentPane.add(label, BorderLayout.CENTER);</span></em></p>
<p>En <span style="text-decoration:underline;">CompassMuchBetterSmall</span> lo único que hay que hacer es sustituir el setSize() por el pack() que es el que hemos explicado antes.Vamos, que sería poner : frame.pack();</p>
<p>El último apartado de este ejercicio te pide que hagas un método llamado <span style="font-family:Courier New;">centerAndShowFrame(JFrame frame, double xScale, double yScale)</span>que centre la ventana en la pantalla, la ponga con los valores mínimos necesarios en función de los parámetros xScale e yScale y la haga visible.El programa en el que está este método es el <span style="text-decoration:underline;">CompassMuchBetterCentered</span>. Este apartado no lo hemos conseguido hacer&#8230;lo hemos estado intentando, pero no nos sale, asi que si alguien nos ayuda&#8230;</p>
<p><span style="color:#ff9900;">Ejercicio 4:</span></p>
<p>El apartado 1 aún no hemos conseguido hacerlo, aunque tenemos alguna ligera idea de como hacerlo, pero no sabemos como unirlo todo.</p>
<ul>
<li>Sabemos que tiene que haber un método que me compruebe si es par o impar, un simple si el resto de dividir el entero entre 2 es 0 es par si no, es impar (para que te lo coloree blanco o negro)</li>
<li>Además hay que hacer un for que te vaya poniendo los números 1,2&#8230; y que dentro de él nos compruebe si ese número es par o impar y así te vaya poniendo el color de fondo y el color de texto de una forma u otra.</li>
</ul>
<p>Creemos que es eso lo que tenemos que hacer, pero nos da 1 error al compilar, cuando lo resolvamos ( que pensamos hacerlo) lo colgamos.</p>
<p>El apartado 2 nos ha dado bastante miedo, porque lo hemos visto muy largo, y lo hemos dejado&#8230;de todas formas al igual que el anterior, lo colgaremos cuando lo hagamos.</p>
<p>Hasta la próxima!!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocaypunto.wordpress.com/41/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocaypunto.wordpress.com/41/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocaypunto.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocaypunto.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocaypunto.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocaypunto.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocaypunto.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocaypunto.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocaypunto.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocaypunto.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocaypunto.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocaypunto.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocaypunto.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocaypunto.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocaypunto.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocaypunto.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=41&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocaypunto.wordpress.com/2008/05/05/practica-9/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/095a61a5e57103c5425d324146ec16ac?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocaypunto</media:title>
		</media:content>
	</item>
		<item>
		<title>PRÁCTICA 8</title>
		<link>http://ocaypunto.wordpress.com/2008/05/04/practica-8/</link>
		<comments>http://ocaypunto.wordpress.com/2008/05/04/practica-8/#comments</comments>
		<pubDate>Sun, 04 May 2008 17:58:19 +0000</pubDate>
		<dc:creator>ocaypunto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ocaypunto.wordpress.com/?p=38</guid>
		<description><![CDATA[Aquí estamos de nuevo&#8230; Ejercicio 1: En este apartado nos pedían implementar mediante una tabla hash una lista de trucos como en los videojuegos en los que a través de una clave podamos acceder a ellos. La tabla hash se basa en que a cada elemento que vas insertando en la tabla se le puede [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=38&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Aquí estamos de nuevo&#8230;</p>
<p><span style="color:#ff6600;"><span style="color:#ff9900;">Ejercicio 1:</span> </span></p>
<p>En este apartado nos pedían implementar mediante una tabla hash una lista de trucos como en los videojuegos en los que a través de una clave podamos acceder a ellos.</p>
<p>La tabla hash se basa en que a cada elemento que vas insertando en la tabla se le puede asociar una clave, para que luego, mediante la utilización de esta clave vamos a poder acceder al elemento que tiene esa clave y así que sea más rápido ( recordemos que con las clases Stack y Vector para encontrar un elemento hay que recorrer todos los elementos, cosa que es mucho más lenta).</p>
<p>Para ellos están los métodos :</p>
<p>1. put(clave,objeto): Inserta en la tabla el objeto que se le pasa por parámetro asociado a la clave.<br />
2. get(clave): Devuelve el objeto asociado a esa clave.</p>
<p>Para usar esta clase tenemos que hacer:  <span style="color:#ff0000;">import java.util.Hashtable;</span></p>
<p>El código es muy sencillo y basta con hacer en el main:</p>
<p><em><span style="color:#ff0000;">Hashtable trucos = new Hashtable();</span> // creamos una tabla llamada trucos</em></p>
<p><em><span style="color:#ff0000;">trucos.put(&#8220;Truco1&#8243;,&#8221;Nuevo personaje&#8221;);</span> // metemos en la tabla el truco Nuevo personaje asociado a la  //clave Truco1<br />
</em></p>
<p><em><span style="color:#ff0000;">String truco1 = (String)trucos.get(&#8220;Truco1&#8243;);</span> // recuperamos el truco1, para ello tenemos que hacer un //casting a String, ya que el método get nos devuelve objetos de tipo Object ( como todas las clases //hechas en java: Stack, Vector&#8230;)<br />
</em></p>
<p><em><span style="color:#ff0000;">System.out.println(truco1); </span>// lo imprimimos<br />
</em></p>
<p>y esto lo puedes hacer tantas veces como trucos quieras introducir</p>
<p><span style="color:#ff9900;">Ejercicio 2:</span></p>
<p>Este ejercicio se basa en analizar unos programas hechos con recursividad.</p>
<p>Nos han parecido bastante sencillo, por lo que no creemos necesario decir por aquí lo que hace cada uno, si alguien tiene algún problema que nos lo diga y lo intentamos resolver.</p>
<p><span style="color:#ff9900;">Ejercicio 3:</span></p>
<p>Este es en el que hay más dificultad. Tenemos que determinar como si fuera el juego del tetris si hay linea usando recursividad.</p>
<p>No hemos podido hacerlo, pero vamos a intentarlo en estos días, esperamos que para la semana que viene ya lo tengamos y lo colgaremos.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocaypunto.wordpress.com/38/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocaypunto.wordpress.com/38/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocaypunto.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocaypunto.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocaypunto.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocaypunto.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocaypunto.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocaypunto.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocaypunto.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocaypunto.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocaypunto.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocaypunto.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocaypunto.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocaypunto.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocaypunto.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocaypunto.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=38&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocaypunto.wordpress.com/2008/05/04/practica-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/095a61a5e57103c5425d324146ec16ac?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocaypunto</media:title>
		</media:content>
	</item>
		<item>
		<title>PRÁCTICA 7</title>
		<link>http://ocaypunto.wordpress.com/2008/05/04/practica-7/</link>
		<comments>http://ocaypunto.wordpress.com/2008/05/04/practica-7/#comments</comments>
		<pubDate>Sun, 04 May 2008 17:46:54 +0000</pubDate>
		<dc:creator>ocaypunto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ocaypunto.wordpress.com/?p=37</guid>
		<description><![CDATA[En esta práctica tenemos que crear una cola (como la de la práctica anterior) pero que sea dinámica. Por eso de que no haya máximo a la hora de encolar, y también porque si solo utilizamos 3 objetos es tontería tener una cola de 10.000 objetos. Se trata de hacerla, pero sin utlizar cosas avanzadas, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=37&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://ocaypunto.files.wordpress.com/2008/05/nodos.jpg"><img class="alignnone size-medium wp-image-39" src="http://ocaypunto.files.wordpress.com/2008/05/nodos.jpg?w=497" alt="" /></a></p>
<p>En esta práctica tenemos que crear una cola (como la de la práctica anterior) pero que sea  dinámica. Por eso de que no haya máximo a la hora de encolar, y también porque  si solo utilizamos 3 objetos es tontería tener una cola de 10.000 objetos.</p>
<p>Se trata de hacerla, pero sin utlizar cosas avanzadas, es decir, imaginar que somos los primeros en hacer una cola dinámica. En un principio pensamos en usar la clase Vector, pero nos dijeron que no teníamos que usar nada que ya estuviera hecho, así que al final recurriendo a las clases de teoría nos acercamos a la idea de crear Nodos.</p>
<p>Los nodos son clases muy sencillas que básicamente tienen 2  atributos: Pieza pieza y Nodo sig_pieza. Pieza tiene la propia pieza,  sig_pieza tiene una referencia a la siguiente pieza (si hay, si no hay que apunte  a null). Además tiene el constructor normal y los métodos pon() y dame() de cada uno de ellos.</p>
<p><a href="http://ocaypunto.files.wordpress.com/2008/05/nodos1.jpg"><img class="alignnone size-medium wp-image-40" src="http://ocaypunto.files.wordpress.com/2008/05/nodos1.jpg?w=497" alt="" /></a></p>
<p>Además tenemos otra clase Lista que tiene también dos atributos: Primero ( que nos va a apuntar al primer elemento que metamos, ya que recordemos que queremos crear una ) y Recorrido ( que va a ir apuntando al siguiente elemento que vayamos insertando); los dos van a ser de tipo Nodo. En esta clase están los métodos:</p>
<ul>
<li>El constructor que inicializa los dos atributos a null</li>
<li>vacía() que devuelve un boolean que dice si primero == null</li>
<li>llena() no estará debido a que al ser una cola dinámica nunca nos vamos a tener que preocupar de si está llena o no.</li>
<li>encolar ( Pieza p):</li>
</ul>
<p><em><span style="color:#ff0000;">public void encolar(Pieza p) {<br />
Nodo nodo = new Nodo(p,null);</span> // crea un nuevo nodo poniendo como Pieza la q le metes y que el atributo sig_pieza  apunte a null<br />
<span style="color:#ff0000;"> if (primero == null) {<br />
primero = nodo;</span> // si todavía no hay ninguna pieza que el atributo primero apunte a este nodo ( a partir de aquí este siempre será el primero, a no ser que lo saquemos que entonces será el siguiente&#8230;)<br />
<span style="color:#ff0000;"> }<br />
else { </span><br />
<span style="color:#ff0000;">ultimo.ponSig_Pieza(nodo); </span> // si no, llamo a ponSig_Pieza de la clase nodo y le digo que sig_pieza sea ahora el nodo que acabo de crear<br />
<span style="color:#ff0000;">}</span><br />
<span style="color:#ff0000;">recorrido = nodo; </span> // y digo que el atributo recorrido me apunte a nodo ( que es el ultimo nodo que he metido)<br />
<span style="color:#ff0000;">}</span></em></p>
<ul>
<li>desencolar(): que si está vacía diremos que no se puede, y si no, sacaremos el primer elemento que haya y por lo tanto, tenemos que decir que el atributo primero apunte al siguiente que había de primero&#8230;este método no nos ha llegado a salir del todo, creemos que sabemos lo que tenemos que hacer, pero el código en sí nos resulta un poco lioso&#8230;si alguien puede ayudar&#8230;nosotros lo seguiremos intentando, o si no esperaremos a que cuelgen las soluciones y a ver si así ya lo vemos claro.</li>
</ul>
<p>No hemos puesto ningún método más aunque pensamos que lo mismo para hacer el de desencolar necesitamos otro método que nos haga lo de que el segundo elemento que teníamos ( es decir, el nodo al que apunta el atributo sig_pieza del primer nodo) sea ahora el primero&#8230;</p>
<p>Bueno y esto es todo, si conseguimos hacer el desencolar lo pondremos aqui por si ayuda a alguien.</p>
<p>Un saludo.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocaypunto.wordpress.com/37/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocaypunto.wordpress.com/37/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocaypunto.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocaypunto.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocaypunto.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocaypunto.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocaypunto.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocaypunto.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocaypunto.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocaypunto.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocaypunto.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocaypunto.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocaypunto.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocaypunto.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocaypunto.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocaypunto.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=37&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocaypunto.wordpress.com/2008/05/04/practica-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/095a61a5e57103c5425d324146ec16ac?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocaypunto</media:title>
		</media:content>

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

		<media:content url="http://ocaypunto.files.wordpress.com/2008/05/nodos1.jpg" medium="image" />
	</item>
		<item>
		<title>PRÁCTICA 6</title>
		<link>http://ocaypunto.wordpress.com/2008/04/27/practica-6/</link>
		<comments>http://ocaypunto.wordpress.com/2008/04/27/practica-6/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 12:01:46 +0000</pubDate>
		<dc:creator>ocaypunto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ocaypunto.wordpress.com/?p=36</guid>
		<description><![CDATA[Empezamos con las prácticas que tienen que ver con la algoritmia ( prometemos que para después del puente de Mayo ya estará todo al día). En esta práctica nos asustamos un poco, por eso de que fuera un tetris, porque claro nosotros oímos tetris y se nos viene a la cabeza el juego, y nos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=36&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Empezamos con las prácticas que tienen que ver con la algoritmia ( prometemos que para después del puente de Mayo ya estará todo al día).</p>
<p>En esta práctica nos asustamos un poco, por eso de que fuera un tetris, porque claro nosotros oímos tetris y se nos viene a la cabeza el juego, y nos agobiamos&#8230; ¿vamos a tener que hacer que caigan ? ¿ y que al darle se muevan?pero no (y menos mal!) &#8220;simplemente&#8221; teníamos que crear piezas del tetris y meterlas en una estructura de datos que en este caso es una cola.</p>
<p><span style="color:#ff9900;">Ejercicio 1: </span></p>
<p>Para empezar teníamos unas cuantas dudas&#8230;usábamos 1 índice o 2? como se vería en realidad cuándo está llena la cola si usamos 2 índices?&#8230; esta última pregunta no la conseguiamos resolver, porque cada vez que pensamos una cosa, por ejemplo : si los dos son iguales&#8230; nos surgía algún pero : si son iguales pero apuntan al 0 ( que es como lo pensábamos inicializar en el constructor, ya que así el índice primero no se movía) no está llena, si no que está vacía&#8230; total que dijimos mira, pues con 1 índice que es menos complicado ( y el tiempo iba pasando y aún no habíamos ni empezado)</p>
<p>Bueno en este apartado lo único que hicimos era un método random() que me rellenara aleatoriamente la cola con char, estos char son los que luego encolábamos y desencolábamos. Los métodos llena, vacía, encolar y desencolar no tienen nada de especial :</p>
<ul>
<li><strong>encolar() </strong>: a este método le paso por parámetro un char y lo meto en la posición del índice + 1 ( el índice lo inicializamos a -1)</li>
<li><strong>desencolar()</strong> : en este no se le pasa nada por parámetro, si no simplemente cada vez que se le llama te devuelve el elemento que se metió primero ( el más viejo). Además cada vez que quitamos un elemento movemos todos los elementos una posición ( después nos dimos cuenta de que si hay muchos elementos, esto no va a ser muy eficiente)</li>
<li><strong>llena() </strong>: la cola está llena si el índice apunta a la última posición &#8211; 1 ( siempre hay que tener en cuenta que la primera posición del array es la 0)</li>
<li><strong>vacía()</strong> : el índice apunta a la posición -1</li>
</ul>
<p><span style="color:#ff9900;">Ejercicio 2 :</span></p>
<p>En este apartado teníamos que coger el código anterior y cambiar el objeto de tipo char por un objeto de la clase Pieza.</p>
<p>Para ello tenemos que hacer una clase Pieza, en la que están los métodos:</p>
<ul>
<li><strong>mover() : </strong>en la que se pasa por parámetro la posición x e y a la que quieras que la pieza vaya.</li>
</ul>
<p><em><span style="color:#ff0000;">public void mover(int x, int y){</span></em></p>
<p><em><span style="color:#ff0000;">this.x = x;<br />
this.y = y;</span></em></p>
<p><em><span style="color:#ff0000;"> } </span></em></p>
<ul>
<li><strong>quienSoy()</strong> : en el que se le asigna al nombre que le he pasado en el constructor, un char :</li>
</ul>
<p><span style="color:#ff0000;"><em><span> public char quienSoy(){</span></em></span></p>
<p><span style="color:#ff0000;"><em> if (nombre == &#8220;L&#8221; )<br />
tipo = &#8216;L&#8217;;<br />
else if (nombre == &#8220;cuadrado&#8221;)<br />
tipo = &#8216;C&#8217;;<br />
else if (nombre == &#8220;T&#8221;)<br />
tipo = &#8216;T&#8217;;<br />
else if (nombre == &#8220;palo&#8221;)<br />
tipo = &#8216;I&#8217;;<br />
else<br />
System.out.println(&#8220;Error, mete un valor de pieza valido : L, cuadrado, T o palo&#8221;);</em></span></p>
<p><span style="color:#ff0000;"><em> return tipo;<br />
}</em></span></p>
<ul>
<li><strong>toString()</strong> : en el que devuelvo un String con el nombre, el tipo y la posición en la que se encuentra la pieza.</li>
</ul>
<p>La clase Cola tiene como atributo un array de tipo Pieza, además de un índice ( lo podríamos haber hecho con 2, pero nos pareció así mas sencillo).</p>
<p>En el constructor le metemos por parámetro el número de elementos que va a tener nuestro array e inicializamos y creamos el array.</p>
<p>Todos los métodos serán iguales, además hemos añadido un método imprimir () que simplemente sirve para comprobar que la pila está bien implementada.</p>
<p><span style="color:#ff0000;">Nota:</span> Hemos mirado las soluciones y hemos visto que lo han hecho con dos índices, uno apuntando al inicio y otro al final, y no entendemos muy bien lo que hacen.Nuestro problema sobre todo está en el método siguiente(), este método sabemos lo que hace, pero no vemos muy claro como a partir de él podemos saber por ejemplo si está llena o el de encolar&#8230; Así que si alguien lo entiende y nos puede ayudar estaríamos muy agradecidos.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocaypunto.wordpress.com/36/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocaypunto.wordpress.com/36/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocaypunto.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocaypunto.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocaypunto.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocaypunto.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocaypunto.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocaypunto.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocaypunto.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocaypunto.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocaypunto.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocaypunto.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocaypunto.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocaypunto.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocaypunto.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocaypunto.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=36&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocaypunto.wordpress.com/2008/04/27/practica-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/095a61a5e57103c5425d324146ec16ac?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocaypunto</media:title>
		</media:content>
	</item>
		<item>
		<title>JUEGO</title>
		<link>http://ocaypunto.wordpress.com/2008/04/18/juego/</link>
		<comments>http://ocaypunto.wordpress.com/2008/04/18/juego/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 13:02:38 +0000</pubDate>
		<dc:creator>ocaypunto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ocaypunto.wordpress.com/?p=35</guid>
		<description><![CDATA[Mientras avanzamos algo más con la práctica 6, haremos caso a Pablo y hablaremos del juego. Nosotros estamos haciendo la ruleta de la suerte ( si, el famoso concurso que ahora sale en antena 3), y la verdad es que hemos tenido algunos problemillas pero más o menos los hemos ido sacando. Básicamente el juego [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=35&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Mientras avanzamos algo más con la práctica 6, haremos caso a Pablo y hablaremos del juego.</p>
<p>Nosotros estamos haciendo la ruleta de la suerte ( si, el famoso concurso que ahora sale en antena 3), y la verdad es que hemos tenido algunos problemillas pero más o menos los hemos ido sacando.</p>
<p>Básicamente el juego consiste en:</p>
<ul>
<li>Se puede elegir entre un máximo de 3 jugadores.</li>
<li>Hay dos opciones de juego : el modo normal ( con una frase que ya esté en un fichero) y el modo ahorcado ( que uno de los jugadores pueda meter la frase y los otros adivinarla).Este último no sabemos si al final sobrevivirá o lo quitaremos.</li>
<li>En el modo normal tenemos 4 tipos de paneles : películas, frases célebres, monumentos y ciudad y platos típicos.</li>
<li>A cada jugador se le pregunta si quiere : tirar la ruleta, comprar vocal ( solo puede si tiene más de 50 euros) o resolver.</li>
<li>Cada vez que se tira la ruleta hay un método random() que hace que salgan las diferentes cifras de dinero por las que puede optar, además de quiebras ( si cae aquí además de que le toca al siguiente jugador, pierde el dinero que llevaba acumulado) y pierde turnos ( simplemente pasa la partida al siguiente)</li>
<li>Cada vez que compra vocal se le quitan 50 euros del dinero que tenía. Y si aciertas alguna consonante multiplicas las veces que esa consonante esté en la palabra por el dinero que te había salido al tirar la ruleta.Bueno y claro está que si eliges una consonante o vocal que no está en la frase se pasa el turno al siguiente jugador.</li>
<li>Además hay un método que imprime asteriscos y cada vez que aciertas una letra te la va sustituyendo ( quita el asterisco de la posición y pone la letra).</li>
</ul>
<p>Y eso es todo, por ahora lo tenemos en modo consola, ya que no tenemos mucha idea de usar swing&#8230;De todas formas algo hemos hecho mirándo un poco en google, pero sin añadirselo al juego, si no que son pruebas que ya se meteran. Hemos hecho una ruleta que gira, una pantalla en la que el salir ya va ( si, es poco, pero muy gratificante cuando sale <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ) y otra en la que arriba pone bienvenidos, en el centro la ruleta y abajo el comenzar.</p>
<p>Con esto últmo hemos tenido un problema, ya que nos hemos dado cuenta de que si pones varias cosas, el rectángulo te lo divide en partes iguales, y por lo tanto se nos corta la ruleta, si alguien sabe como hacer esto pues nos sería de gran ayuda ( sabemos que todo esto ya lo daremos, pero nos gustaría avanzar algo más, así que no creemos que esté mal preguntar&#8230; si no pues seguiremos investigando)</p>
<p>Por ahora nos tomamos un poco de descanso con el juego y haremos más caso al blog.</p>
<p><span style="color:#ff0000;">¿ Y vosotr@s que tal lleváis el juego?</span></p>
<p>Pd: El martes a las 11:30 hay una manifestación contra el plan Bolonia en el campus de Getafe, lo decimos por si alguien se anima a venir.</p>
<p>Un saludo</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocaypunto.wordpress.com/35/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocaypunto.wordpress.com/35/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocaypunto.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocaypunto.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocaypunto.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocaypunto.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocaypunto.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocaypunto.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocaypunto.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocaypunto.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocaypunto.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocaypunto.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocaypunto.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocaypunto.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocaypunto.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocaypunto.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=35&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocaypunto.wordpress.com/2008/04/18/juego/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/095a61a5e57103c5425d324146ec16ac?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocaypunto</media:title>
		</media:content>
	</item>
		<item>
		<title>PRÁCTICA 5</title>
		<link>http://ocaypunto.wordpress.com/2008/04/17/practica-5/</link>
		<comments>http://ocaypunto.wordpress.com/2008/04/17/practica-5/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 14:49:42 +0000</pubDate>
		<dc:creator>ocaypunto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ocaypunto.wordpress.com/?p=34</guid>
		<description><![CDATA[Si, ya lo sabemos, vamos por la 7 y aún no hemos comentado ni la 5&#8230;hemos estado muy liados con otras prácticas y con el JUEGO, por lo que no teníamos tiempo de seguir con ellas en casa y no nos parecía muy bien poner solo lo que habíamos hecho en clase&#8230;pero bueno excusas a parte, empezamos Primero nos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=34&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Si, ya lo sabemos, vamos por la 7 y aún no hemos comentado ni la 5&#8230;hemos estado muy liados con otras prácticas y con el JUEGO, por lo que no teníamos tiempo de seguir con ellas en casa y no nos parecía muy bien poner solo lo que habíamos hecho en clase&#8230;pero bueno excusas a parte, empezamos</p>
<p>Primero nos explicaron un poco en que consistía el polimorfismo, y las maneras en las que puede aparecer:</p>
<ul>
<li><span style="text-decoration:underline;">Sobrecarga:</span> Que según entendimos consiste en tener métodos con el mismo nombre, pero con distintos tipos de parámetros o número ( si tienen los mismos parámetros sería un poco tonto hacer algo dos veces&#8230;).</li>
</ul>
<p>Por ejemplo: <span style="color:#ff0000;">metodoEjemplo(int i ) ; metodoEjemplo ( float i) ; metodoEjemplo ( int a, int i)</span></p>
<ul>
<li><span style="text-decoration:underline;">Sobreescritura:</span> Que se utiliza básicamente para reutilizar código ya existente. Es utilizar en las clases derivadas el mismo método ( nombre,retorno, etc) que tenía en la clase base pero implementando un código diferente dependiendo del comportamiento que quiero para los objetos de las distintas clases. Cualquier método se puede sobreescribir, a no ser que sea final. El ejemplo que a todos se nos viene a la cabeza es el de <span style="color:#ff0000;">obtenerArea( )</span> de las distintas figuras; también está el <span style="color:#ff0000;">toString ( )</span> de la práctica anterior, que si recordáis queríamos que cada vez devolviera distintas cadenas, por lo que cogíamos el toString( ) de Miembro y le añadíamos lo que nos pedían.</li>
</ul>
<p>También nos hablaron un poco de los <span style="text-decoration:underline;">métodos</span> y <span style="text-decoration:underline;">clases abstractas</span>.</p>
<ul>
<li>Un <span style="color:#ff0000;">método abstracto</span> es aquel que no tiene implementación ( no tiene el bloque entre las llaves { } ) y son las subclases las que deben añadirle su propia implementación según lo que quieres que haga.</li>
<li>Una <span style="color:#ff0000;">clase abstracta</span> es simplemente aquella que tiene algún método abstracto</li>
</ul>
<p>Para declarar un método o una clase abstracta se usa la palabra <span style="color:#ff0000;"><strong>abstract</strong></span>.</p>
<p><span style="color:#ff0000;"><strong>IMPORTANTE: </strong></span>Cuando en una clase derivada no se implementa un método abstracto, debemos poner que esa clase también es abstracta. <strong>Además no podemos crear objetos de clases abstractas !!! </strong>(mucho cuidado con esto último)</p>
<p>Y para acabar nos explicaron las<span style="color:#ff0000;"> interfaces</span>. Una Interface es una clase abstracta pura, es decir una clase donde todos los métodos son abstractos (no se implementa ninguno); a estos metódos no hace falta que les pongamos que son abstractos, ya que se sabe que todos lo son.</p>
<p>Para crear una <span style="text-decoration:underline;">Interface</span>, se utiliza la palabra <span style="color:#ff0000;"><span>interface</span> </span>en lugar de class, poniendola como interface estamos obligando a las clases a implementar un complortamiento que yo he definido ( tienen que implementar TODOS los métodos) . También hay que recordar que todos los métodos que declara una interface son siempre public.</p>
<p>Para indicar que una clase implementa los métodos de una interface se utiliza la palabra implements.</p>
<p><strong><span style="color:#ff0000;">IMPORTANTE : </span></strong>Una clase puede implementar a más de una interface ( al contrario que heredar, que solo puede tener una clase base)</p>
<p><span style="color:#ff6600;">Ejercicio 1:</span></p>
<p>Consiste en sobreescribir los métodos toString( ) que hemos hecho en la anterior práctica y hacerlas llamando a super. Este ejercicio para nosotros fue muy rápido, porque en la anterior entendimos que también había que llamar a super, por lo que ya lo teníamos hecho.</p>
<p>Luego en la clase Clase nos pedían que observaramos que pasaba si poníamos en el toString</p>
<p>str += miembros[i].toString();</p>
<p>El array de miembros tiene como elementos a objetos de tipo método , atributo y constructor, y por lo tanto al llamar al método toString( ) este irá a la clase a la que pertenezca el elemento de la posición desde el que llamo y ese será el método que realice. Es decir, si en miembros [0] hay un objeto de la clase Atributo, realizará el toString que esté hecho en esa clase.</p>
<p><span style="color:#ff6600;">Ejercicio 2:</span></p>
<p>En este ejercicio nos pedían implementar un método que está en la interface Almacenable, y que ( al ser una interface), el método no tiene implementación y es en la clase Clase donde tengo que hacerlo. Por lo tanto, en la clase Clase nosotros pusimos:</p>
<p><span style="color:#ff0000;">public void guarda(java.io.FileWriter out) {<br />
  try<br />
  {<br />
   out.write(this.toString());<br />
  }<br />
  catch (Exception e) {<br />
   System.out.println(&#8220;Error: fichero vacío&#8221;);<br />
  }<br />
 }<br />
</span></p>
<p>El write() es un método que está en la clase FileWriter del fichero java.io y que permite guardar el parámetro que se le pasa ( en este caso usamos el write al que se le pasa un String) . El try y catch es debido a que tengo que capturar la excepción, ya que el método que está en Almacenable me la lanza.</p>
<p><span style="color:#ff6600;">Ejercicio 3:</span></p>
<p>Empezamos con aplicaciones gráficas, y la verdad es que al principio nos asustó bastante, porque no lo habíamos visto nunca ( en clase de teoría aún no lo hemos dado), así que no sabíamos como hacerlo. Pero la verdad es que luego no fue tan tan difícil como pensábamos.</p>
<p><em>Apartado 3.1:</em></p>
<p>Teníamos que rellenar el código que faltaba de la clase ComponenteGrafico:</p>
<ul>
<li><span style="text-decoration:underline;">El constructor:</span> esto no tenía complicación pues es como siempre. <span style="color:#ff0000;">Ejemplo :this.posX = x;</span> </li>
<li><span style="text-decoration:underline;">Método paint:</span> sólo tenemos que llamar los métodos pintaFondo y pintaBorde respectivamente.</li>
<li><span style="text-decoration:underline;">Método pintaFondo:</span> para rellenar este método ya nos tuvimos que meter en el API ( cosa que no nos gusta demasiado&#8230;) y buscar y buscar. Después de mucho buscar vimos que estaban los famosos pon y dame ( aunque en inglés, claro) y ya caímos en que para establecer algo necesitamos el setColor ( si queremos poner el nombre a alguien diríamos ponNombre (Juanito), pues esto es lo mismo, aunque no lo parezca y cueste más verlo). Lo de rellenar un rectángulo con ese color nos costó muuuucho más, ya que se necesita tener más nivel de inglés para buscar cosas que no conoces de antes. Al final encontramos el fillRect() al que le tienes que meter (x, y, ancho, alto) y bueno&#8230;parece que funcionó.</li>
<li><span style="text-decoration:underline;">Metodo pintaBorde:</span> para establecer el color de borde ya lo teníamos chupado, pues era igual que el anterior ( con el setColor()) . Y el de dibujar la verdad esque tampoco nos costó mucho, pues al buscar el de rellenar el rectángulo habíamos visto algo que era drawRect(x,y,ancho,alto).</li>
</ul>
<p><em>Apartado 3.2:</em></p>
<p>Aquí ya llegan nuestros problemas.Tenemos dos clases Menú y Boton:</p>
<p>Sabemos hacer el constructor ( igual que antes), pintar el componente gráfico : super.paint(g) &#8211;&gt; llamo al de la clase ComponenteGrafico, pues heredan de ella y también sabemos establecer el color de texto,pero :</p>
<ul>
<li>Creamos un String concatenando las opciones del menu separadas por un espacio &#8211;&gt; no tenemos ni idea de a que se refiere.</li>
<li>Se pinta para que quede más o menos centrado y ajustado al borde izquierdo ( o el de: Dibujamos el texto aproximádamente para que quede centrado ) &#8211;&gt; tenemos una ligera idea ( que sería usando : <a href="http://ocaypunto.wordpress.com/java/awt/Graphics.html#drawString(java.lang.String, int, int)"><strong><span style="font-family:Courier New;">drawString</span></strong></a><span style="font-family:Courier New;">(</span><a title="class in java.lang" href="http://ocaypunto.wordpress.com/java/lang/String.html"><span style="font-family:Courier New;">String</span></a><span style="font-family:Courier New;"> str, int x, int y)</span> en el String ponemos lo que quiero que saque, y en los otros algo para que salga centrado&#8230;) bueno que no sabemos como hacerlo.</li>
</ul>
<p>Asi que si alguien es tan amable de ayudarnos estaríamos muy agradecidos.</p>
<p>Aquí nos hemos quedado, como nos quedamos atascados en este apartado no seguimos con los demás, así que no sabemos si sabemos hacerlo o no, pero ya retrasar mas el escribir esta práctica nos parecía pasarse, así que nos apañaremos con esto.</p>
<p>Dentro de muy poco pondremos la 6 que ya está más o menos&#8230;</p>
<p>Mientras haber si nos ayudais, y a ver si podemos nosotros también ayudar a alguien.</p>
<p>Un saludo<span style="color:#ff0000;"><br />
 </span></p>
<div><span style="color:#ff0000;"><span style="color:#ff0000;"> </span></span></div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocaypunto.wordpress.com/34/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocaypunto.wordpress.com/34/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocaypunto.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocaypunto.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocaypunto.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocaypunto.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocaypunto.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocaypunto.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocaypunto.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocaypunto.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocaypunto.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocaypunto.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocaypunto.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocaypunto.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocaypunto.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocaypunto.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=34&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocaypunto.wordpress.com/2008/04/17/practica-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/095a61a5e57103c5425d324146ec16ac?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocaypunto</media:title>
		</media:content>
	</item>
		<item>
		<title>PRÁCTICA 4</title>
		<link>http://ocaypunto.wordpress.com/2008/03/18/practica-4/</link>
		<comments>http://ocaypunto.wordpress.com/2008/03/18/practica-4/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 18:38:14 +0000</pubDate>
		<dc:creator>ocaypunto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ocaypunto.wordpress.com/?p=33</guid>
		<description><![CDATA[Y seguimos con las prácticas&#8230; Bueno pues esta práctica va orientada a la herencia,básicamente es hacer lo de la práctica anterior pero con herencia. Si eres un poco avispado te habrás dado cuenta de que todas las clases hechas en la práctica 3 tienen algunos atributos comunes, por lo que al hacerlas por herencia nos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=33&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Y seguimos con las prácticas&#8230;</p>
<p>Bueno pues esta práctica va orientada a la herencia,básicamente es hacer lo de la práctica anterior pero con herencia.</p>
<p>Si eres un poco avispado te habrás dado cuenta de que todas las clases hechas en la práctica 3 tienen algunos atributos comunes, por lo que al hacerlas por herencia nos ahorraremos código.</p>
<p>Bueno, empezamos:</p>
<p><font color="#ff6600">Ejercicio 1: </font></p>
<p>Te dan la clase Miembro que va a ser la clase base, y ya está implementada y todo eso.</p>
<p><b>Cuestión:</b> <i>¿Qué pasaría si se cambiara protected por private en   nuestra jerarquía de clases?</i></p>
<p>Lo que pasaría es que luego al ser heredada, no podríamos usar los atributos de esta clase, ya que (recordamos) el modificador de acceso private solo es accesible desde la clase en la que se declara. Siempre podemos arreglar esto poniendo métodos de acceso (los famosos pon() y dame()) y llamarlos desde las clases derivadas ( o si no ponerlo protected, claro)</p>
<p><font color="#ff6600">Ejercicio 2:</font></p>
<p>Hay que implementar el constructor y el método toString() de la clase Atributo ( usando herencia&#8230;) Antes de nada contestamos a la cuestión:</p>
<p><b>Cuestion: </b><i>¿Cual es la palabra reservada de Java que se usa para hacer referencia a la clase base desde una clase derivada?</i></p>
<p>La palabra reservada es extends, como demostramos en el código:</p>
<p><i><font color="#ff0000">public class Atributo extends Miembro {</font></i></p>
<p><i><font color="#ff0000">String tipo = null;</font></i></p>
<p><i><font color="#ff0000">public Atributo(String nombre, int modificadores, String tipo ) {<br />
super(nombre, modificadores);<br />
this.tipo=tipo;<br />
}</font></i></p>
<p><i><font color="#ff0000">public String toString() {<br />
String resultado= &#8220;Atributo &#8220;+super.toString()+ &#8220;TIPO = &#8221; +tipo;</font></i></p>
<p><i><font color="#ff0000">return resultado;</font></i></p>
<p><i><font color="#ff0000">// esto último se puede hacer en una línea:</font></i></p>
<p><i><font color="#ff0000">// return &#8220;Atributo &#8220;+super.toString()+ &#8220;TIPO = &#8221; +tipo;</font><font color="#ff0000">}<br />
}</font></i></p>
<p>Explicamos un poco el código:</p>
<ul>
<li>En la primera línea estamos diciendo que la clase Atributo hereda de la clase Miembro.</li>
<li>En el constructor  usamos la palabra reservada super para heredar los parámetros de la clase base que también están en la derivada.</li>
<li>En el método toString() usamos también super para heredar dicho método, ya que hay cosas comúnes en los dos toString, y así no hace falta repetir código</li>
</ul>
<p>Se puede hacer una clase PruebaAtributo para ver como sale, pero eso ya lo dejamos para que lo haga quien quiera&#8230;</p>
<p><font color="#ff6600">Ejercicio 2:</font></p>
<p>La clase Parámetro no hay que implementarla, si no que ya esta hecha, es para que la usemos&#8230;</p>
<p>En la clase Método hay que implementar de nuevo el constructor y el toString(). El toString() debe devolver algo como:</p>
<p class="MsoNormal">   <i><span style="font-family:Courier New;"> METODO   </span><span style="font-family:Courier New;">NOMBRE = &lt;nombre&gt;,   MODIFICADOR = &lt;modificadores&gt; TIPO RETORNO = &lt;tipoRetorno&gt;   PARAMETRO(0) TIPO= &lt;tipo&gt; PARAMETRO(1) TIPO=   &lt;tipo1&gt;&#8230;&#8230;PARAMETRO(n) TIPO= &lt;tipoN&gt;</span></i></p>
<p> En este apartado nos surgieron algunas dudas:</p>
<ol>
<li> No sabíamos si se podía hacer un return con un bucle dentro ( para sacar el número de Parámetro y el valor de tipo para cada uno de estos)&#8230;total que se lo preguntamos al profe y nos dijo que si, el problema es que quedaba muy raro todo ahí metido en el return ( es más no sabíamos muy bien como hacerlo&#8230;) así que creamos una variable para luego devolverla en el return, y la verdad es que las cosas se ven muuucho mas sencillas&#8230;</li>
<li>¿ Cómo lo añadimos todo?&#8230; porque claro tiene que salir todo seguido&#8230;por lo que nos acordamos el famoso a+=b (a = a+b), es decir primero te creas la variable asignándole los valores que no van a cambiar y luego después de recorrer el array, le añades los valores que dependen del array, y así al final en el return ya tienes todo junto&#8230;</li>
</ol>
<p>Total, que nos quedó algo así:</p>
<p class="MsoNormal"><font color="#ff0000"><i>public class Metodo extends Miembro {</i></font></p>
<p><font color="#ff0000"><i>String tipoRetorno = null;<br />
Parametro[] parametros = null;</i></font></p>
<p><font color="#ff0000"><i>public Metodo(String nombre, int modificadores, String tipoRetorno, Parametro[] parametros) {<br />
super(nombre, modificadores);<br />
this.tipoRetorno=tipoRetorno;<br />
this.parametros=parametros;<br />
}</i></font></p>
<p><font color="#ff0000"><i>public String toString() {</i></font></p>
<p><font color="#ff0000"><i>String resultado=&#8221;";                        // String resultado =null;</i></font></p>
<p class="MsoNormal"><font color="#ff0000"><i>    resultado += &#8220;Metodo &#8220;+ super.toString()+ &#8221; TIPO RETORNO = &#8220;+tipoRetorno;</i></font></p>
<p><font color="#ff0000"><i>for(int i=0; i&lt;parametros.length; i++){<br />
resultado=&#8221;Parametro(&#8220;+i+&#8221;)&#8221;+parametros[i].toString();}<br />
return resultado;<br />
}</i></font></p>
<p><font color="#ff0000"><i>}</i></font><br />
En el constructor se hace lo mismo que en la clase Atributo.</p>
<p><font color="#ff6600">Ejercicio 3:</font>Se pide implementar el constructor y el toString() de la clase Constructor.El método toString debe devolver algo parecido a:</p>
<p class="MsoNormal">   <i><span style="font-family:Courier New;"> CONSTRUCTOR   </span><span style="font-family:Courier New;">NOMBRE = &lt;nombre&gt;,   MODIFICADOR = &lt;modificadores&gt; TIPO RETORNO = &lt;tipoRetorno&gt;   PARAMETRO(0) TIPO= &lt;tipo&gt; PARAMETRO(1) TIPO=   &lt;tipo1&gt;&#8230;&#8230;PARAMETRO(n) TIPO= &lt;tipoN&gt;</span></i></p>
<p class="MsoNormal">Como &#8220;ayuda &#8221; nos dicen que tipoRetorno lo consideremos una cadena vacía&#8230;bueno así lo hemos hecho:</p>
<p class="MsoNormal"> import java.lang.reflect.*;</p>
<p><i><font color="#ff0000">public class Constructor extends Metodo {</font></i></p>
<p><i><font color="#ff0000">public Constructor(String nombre, int modificadores, Parametro[] parametros ) {<br />
super(nombre, modificadores,&#8221;",parametros);</font></i></p>
<p><i><font color="#ff0000">}</font></i></p>
<p class="MsoNormal"><i><font color="#ff0000">   public String toString() {<br />
String resultado = &#8220;CONSTRUCTOR&#8221; + super.toString();<br />
return resultado;<br />
}</font></i></p>
<p><i><font color="#ff0000">}</font></i></p>
<p class="MsoNormal">como podéis ver en el código, a la hora de heredar el tipoRetorno lo que hacemos es poner una cadena vacía &#8220;&#8221;, y todo lo demas lo hereda de Metodo&#8230;el toString() es totalmente igual así que con una llamada a super vale.</p>
<p class="MsoNormal">Aqui nos hemos quedado, ya se intentará hacer lo demás, que es lo mas dificil&#8230;y a ver si sabemos hacerlo&#8230;</p>
<p class="MsoNormal"><font color="#ff6600">CONSEJO:  </font> después de hacer esta práctica nos hemos dado cuenta de que cuando tienes que hacer un método que devuelva algo, es mucho mejor crearse una variable, hacer todo  lo que tengas que hacer, y luego devolver solo la variable que intentar hacerlo todo de golpe en el return. A nosotros por lo menos nos ha servido de mucho hacerlo así, si los demás preferís de la otra forma,pues nada, pero aquí queda nuestro consejo por experiencia propia <img src='http://s0.wp.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p class="MsoNormal">&nbsp;</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocaypunto.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocaypunto.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocaypunto.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocaypunto.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocaypunto.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocaypunto.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocaypunto.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocaypunto.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocaypunto.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocaypunto.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocaypunto.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocaypunto.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocaypunto.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocaypunto.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocaypunto.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocaypunto.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=33&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocaypunto.wordpress.com/2008/03/18/practica-4/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/095a61a5e57103c5425d324146ec16ac?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocaypunto</media:title>
		</media:content>
	</item>
		<item>
		<title>PRÁCTICA 3</title>
		<link>http://ocaypunto.wordpress.com/2008/03/17/practica-3/</link>
		<comments>http://ocaypunto.wordpress.com/2008/03/17/practica-3/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 18:10:18 +0000</pubDate>
		<dc:creator>ocaypunto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ocaypunto.wordpress.com/?p=32</guid>
		<description><![CDATA[Seguimos trabajando en el ahorcado ( bueno para ser sinceros lo tenemos un poco olvidado&#8230;) pero cuando lo consigamos, que lo haremos, lo pondremos aqui. Mientras tanto vamos a comentar la práctica 3 ( si, debería ser la 4, pero tranquilos que está al caer). Ejercicio 0: Ejercicio en el que simplemente hay que localizar [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=32&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Seguimos trabajando en el ahorcado ( bueno para ser sinceros lo tenemos un poco olvidado&#8230;) pero cuando lo consigamos, que lo haremos, lo pondremos aqui. Mientras tanto vamos a comentar la práctica 3 ( si, debería ser la 4, pero tranquilos que está al caer).</p>
<p><font color="#ff6600">Ejercicio 0:</font></p>
<p>Ejercicio en el que simplemente hay que localizar el nombre de la clase, los atributos&#8230; bastante sencillito por lo que no vamos a responder aqui cada pregunta ( claro que si alguien quiere que le ayudemos que nos lo pida). Os ponemos nuestra clase de Prueba:</p>
<p><font color="#ff0000"> <i>public class PruebaObjeto{<br />
public static void main(String []args){</i></font></p>
<p><font color="#ff0000"><i>Punto p1 = new Punto(2.5, 4.3);<br />
Punto p2 = new Punto(1.2, 3.3);<br />
System.out.println(p1.toString());<br />
System.out.println(&#8220;(&#8221; + p1.getX () + &#8220;,&#8221;+ p1.getY() + &#8220;)&#8221;);<br />
System.out.println(&#8220;La distancia al orígen es: &#8221; +p1.distanciaAlOrigen());<br />
System.out.println(&#8220;La distancia entre p1 y p2 es: &#8221; +p1.calcularDistancia(p2));<br />
System.out.println(&#8220;Número de objetos creados: &#8221; + Punto.contador);</i></font></p>
<p><font color="#ff0000"><i>}</i></font></p>
<p><font color="#ff0000"><i>}</i></font></p>
<p>Hacer:</p>
<ol>
<li>     <font size="3"><font face="Arial">Imprime por pantalla la cadena de caracteres     con la representación del objeto     <span style="font-family:Courier New;">p1</span>.</font></font></li>
<li>     <font size="3"><font face="Arial">Imprime</font></font><font size="3"><font face="Arial">     por pantalla</font></font><font size="3"><font face="Arial"> las coordenadas del     punto <span style="font-family:Courier New;">p1</span>.</font></font></li>
</ol>
<p>Equivale a lo mismo.Tiene sentido, ya que lo que devuelve el método toString son las coordenadas del objeto con el que llames al método. Es repetitivo hacer estas dos cosas, pero suponemos que lo pondrían para que te dieras cuenta de que es lo mismo, o quizá para que solo lo hicieras una vez&#8230;pero bueno, así lo hicimos.</p>
<p><font color="#ff6600"> </font><font color="#3366ff"><font color="#ff6600">Ejercicio 1:</font></font></p>
<p>En  los ejercicios para hacer en casa dudamos un poco bastante, entonces si alguien fuera tan amable&#8230;estaríamos bastante agradecidos.</p>
<p><font color="#ff6600">Ejercicio </font> <font color="#ff6600">2:</font></p>
<p>Hay que implementar el constructor y el método toString()  de una clase Atributo. Nuestro código:</p>
<p><i> <font color="#ff0000">public class Atributo {</font></i></p>
<p><i><font color="#ff0000">public String  nombre = null;<br />
public String tipo = null;<br />
public int modificadores = 0;</font></i></p>
<p><i><font color="#ff0000">public Atributo(String nombre, String tipo, int modificadores ) {<br />
this.nombre = nombre;<br />
this.tipo = tipo;<br />
this.modificadores = modificadores;</font></i></p>
<p><i><font color="#ff0000">}</font></i></p>
<p><i><font color="#ff0000">public String toString() {</font></i></p>
<p><i><font color="#ff0000">return &#8220;ATRIBUTO : NOMBRE = &#8221; + nombre+&#8221; TIPO = &#8221; + tipo + &#8220;MODIFICADOR ACCESO = &#8221; + Modificador.toString(modificadores);</font></i></p>
<p><i><font color="#ff0000">}</font></i></p>
<p><i><font color="#ff0000"><b>  // Hacemos el main para comprobar lo que hace nuestro método</b> </font></i></p>
<p><i><font color="#ff0000">      public static void main (String []args){</font></i></p>
<p><i><font color="#ff0000">Atributo atributo = new Atributo( &#8220;atributo&#8221;, &#8220;String&#8221;, 10 );</font></i></p>
<p><i><font color="#ff0000">System.out.println( atributo.toString());</font></i></p>
<p><i><font color="#ff0000">}<br />
} </font></i></p>
<p>Primero hemos rellenado el constructor como siempre, es decir como parámetros le pongo los que quiero que me metan al crearlo y luego digo que los atributos de antes sean los parámetros que le meto ( no sabemos muy bien como explicar esto, esperamos que se nos entienda :S). Luego rellenamos el método toString() que es un método que no imprime nada, simplemente devuelve algo ( lo que quieras) de ahí el return, en el que hemos puesto lo que dicen en el enunciado que devuelve.</p>
<p>El problema de este ejercicio ( por lo menos para nosotros ) estaba al imprimir el nombre del modificador de acceso&#8230; pero vamos que al final lo sacamos más bien por sentido común, ya que para algo tenía que estar la clase Modificador; lo único que haces es llamar al método toString ( int modificador) de la clase Modificador, que es el que está implementado para que te devuelva el modificador asociado al entero que le metes como parámetro.</p>
<p><font color="#ff6600">Ejercicio 3:</font></p>
<p>Este ejercicio es un poco repetitivo, si sacas el anterior, sacas este. No vamos a poner el código porque es más de lo mismo ( volvemos a decir, si alguien tiene algún problema que lo pida)</p>
<p><font color="#ff6600">Ejercicio 4:</font></p>
<p>Empiezan los problemas&#8230; Con lo contentos que estábamos porque nos salía todo, y no sólo eso, si no que no nos parecía complicado y llega esto y nos hace bajar de las nubes ( esque ni siquiera estábamos seguros de lo que nos pedían).Así que aquí nos quedamos.</p>
<p>Os aseguramos que esta práctica tendrá continuación cuando la acabemos, pero no podemos decir cuando será eso, ya que estamos muy liados con todo : el juego ( que también está un poco olvidado), otras prácticas, y todo hay que decirlo, las ganas de descansar, que también cuentan.</p>
<p>Aquí dejamos esta práctica, ahora continuamos con la 4, que ya que nos hemos puesto hay que aprovechar&#8230;</p>
<p><font color="#ff0000"></font></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocaypunto.wordpress.com/32/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocaypunto.wordpress.com/32/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocaypunto.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocaypunto.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocaypunto.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocaypunto.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocaypunto.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocaypunto.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocaypunto.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocaypunto.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocaypunto.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocaypunto.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocaypunto.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocaypunto.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocaypunto.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocaypunto.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=32&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocaypunto.wordpress.com/2008/03/17/practica-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/095a61a5e57103c5425d324146ec16ac?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocaypunto</media:title>
		</media:content>
	</item>
		<item>
		<title>Una queja</title>
		<link>http://ocaypunto.wordpress.com/2008/03/13/una-queja/</link>
		<comments>http://ocaypunto.wordpress.com/2008/03/13/una-queja/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 10:57:05 +0000</pubDate>
		<dc:creator>ocaypunto</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ocaypunto.wordpress.com/?p=30</guid>
		<description><![CDATA[Bueno, yo no sé si es que nosotros somos así de torpes, o realmente es un problema generalizado. Pero desde este blog quiero decir que las practicas de OCA son MUY LARGAS. No muy largas, interminables. Algunos tenemos más asignaturas (dificiles o no, como Lineales, estadistica, mates, y gente de 2º) Y no puede ser [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=30&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bueno, yo no sé si es que nosotros somos así de torpes, o realmente es un problema generalizado. Pero desde este blog quiero decir que las practicas de OCA son MUY LARGAS. No muy largas, interminables. Algunos tenemos más asignaturas (dificiles o no, como Lineales, estadistica, mates, y gente de 2º) Y no puede ser que dediquemos nuestra vida a la programación, así pasa, que suspendemos.</p>
<p>De los 5 ejercicios que pueda tener una práctica, en clase de prácticas se resuelve 1, quedando 4 para casa. Teniendo en cuenta la desorientación que nos caracteriza son muchos ejercicios y poco tiempo. Además hay que hacer el blog (que eso mal que bien lo llevamos) y además un juego, que dentro de 1 mes hay que hacer la primera entrega&#8230;</p>
<p>Al margen de eso las clases de teoria me parecen demasiado teóricas, pero eso supongo que nos da una visión más general de la programación, y menos orientada a java como lenguaje.</p>
<p>Que conste que esta opinión es solo de Oscar Leal Díaz (por lo que pueda acarrear) y sin el consentimiento de mi compañera.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/ocaypunto.wordpress.com/30/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/ocaypunto.wordpress.com/30/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ocaypunto.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ocaypunto.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ocaypunto.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ocaypunto.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ocaypunto.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ocaypunto.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ocaypunto.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ocaypunto.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ocaypunto.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ocaypunto.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ocaypunto.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ocaypunto.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ocaypunto.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ocaypunto.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ocaypunto.wordpress.com&amp;blog=2984696&amp;post=30&amp;subd=ocaypunto&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ocaypunto.wordpress.com/2008/03/13/una-queja/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/095a61a5e57103c5425d324146ec16ac?s=96&#38;d=identicon" medium="image">
			<media:title type="html">ocaypunto</media:title>
		</media:content>
	</item>
	</channel>
</rss>
