<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Aprendiendo Orientación a Objetos observando (I).</title>
	<atom:link href="http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/</link>
	<description>Programación e informática en general</description>
	<lastBuildDate>Sat, 06 Mar 2010 19:55:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Javier</title>
		<link>http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/comment-page-1/#comment-334</link>
		<dc:creator>Javier</dc:creator>
		<pubDate>Wed, 08 Aug 2007 15:20:36 +0000</pubDate>
		<guid isPermaLink="false">http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/#comment-334</guid>
		<description>Hola.

  Solamente quería felicitarte por este magnífico blog, en el q creo somos muchos los q hemos resuelto bastantes dudas y aprendido bastante en un lenguaje muy claro.

  Te animo a seguir así, salu2!</description>
		<content:encoded><![CDATA[<p>Hola.</p>
<p>  Solamente quería felicitarte por este magnífico blog, en el q creo somos muchos los q hemos resuelto bastantes dudas y aprendido bastante en un lenguaje muy claro.</p>
<p>  Te animo a seguir así, salu2!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chuidiang</title>
		<link>http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/comment-page-1/#comment-297</link>
		<dc:creator>Chuidiang</dc:creator>
		<pubDate>Wed, 25 Jul 2007 05:08:28 +0000</pubDate>
		<guid isPermaLink="false">http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/#comment-297</guid>
		<description>Hola:

No es correcto al 100%, pero aquí tienes un ejemplo que quizás te permita aclarar dudas.

http://www.chuidiang.com/ood/patrones/modelo_vista_controlador.php

Se bueno.</description>
		<content:encoded><![CDATA[<p>Hola:</p>
<p>No es correcto al 100%, pero aquí tienes un ejemplo que quizás te permita aclarar dudas.</p>
<p><a href="http://www.chuidiang.com/ood/patrones/modelo_vista_controlador.php" rel="nofollow">http://www.chuidiang.com/ood/patrones/modelo_vista_controlador.php</a></p>
<p>Se bueno.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Guillermo</title>
		<link>http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/comment-page-1/#comment-296</link>
		<dc:creator>Guillermo</dc:creator>
		<pubDate>Wed, 25 Jul 2007 04:36:25 +0000</pubDate>
		<guid isPermaLink="false">http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/#comment-296</guid>
		<description>podrian publicar un ejemplo de programacion en 3 capas para analizarlo?... muchas personas me han dicho cosas distintas sobre la estructura de la programacion a 3 capas, pero necesito ver un ejemplo funcionando para aclarar mis dudas... un ejemplo pequeño no mas.


se los agradeceria.


adios</description>
		<content:encoded><![CDATA[<p>podrian publicar un ejemplo de programacion en 3 capas para analizarlo?&#8230; muchas personas me han dicho cosas distintas sobre la estructura de la programacion a 3 capas, pero necesito ver un ejemplo funcionando para aclarar mis dudas&#8230; un ejemplo pequeño no mas.</p>
<p>se los agradeceria.</p>
<p>adios</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aprender Programación Orientada a Objetos</title>
		<link>http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/comment-page-1/#comment-205</link>
		<dc:creator>Aprender Programación Orientada a Objetos</dc:creator>
		<pubDate>Thu, 10 May 2007 23:40:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/#comment-205</guid>
		<description>[...] aprender Programación Orientada a Objetos y aplicar patrones de diseño mirando el API de Java(1, 2 y [...]</description>
		<content:encoded><![CDATA[<p>[...] aprender Programación Orientada a Objetos y aplicar patrones de diseño mirando el API de Java(1, 2 y [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chuidiang</title>
		<link>http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/comment-page-1/#comment-198</link>
		<dc:creator>Chuidiang</dc:creator>
		<pubDate>Sun, 06 May 2007 18:57:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/#comment-198</guid>
		<description>Hola de nuevo:

Cuando escribí lo del ajedrez no tenía muy claro el patrón MVC -tengo que corregirlo un día-. De todas formas, esto de los patrones tampoco debería -y es sólo mi opinión- tomarse a rajatabla. Un patrón es una solución que ha demostrado ser eficiente al resolver un problema de diseño, pero quizás no se ajuste exactamente a nuestro problema, por lo que podemos tomarnos la libertad de modificar el patrón un poco según nuestras necesidades.

El algoritmo de ajedrez sí podría entrar como parte del controlador, puesto que no forma parte del modelo de datos -el tablero- ni de las reglas del ajedrez. Tampoco forma parte de la vista, pero actúa sobre el modelo. Sin embargo, también podríamos suponerlo como algo externo a nuestro sistema, igual que el jugador, y no formaría para nada parte del MVC. Lo importante sería conseguir un juego de ajedrez en el que podamos reaprovechar lo máximo posible para otro futuro juego que hagamos. El modelo del tablero y las reglas de ajedrez debería quedar hechas de una vez para siempre, ya que el tablero siempre es de 8x8, las reglas son fijas y el número de piezas también, no cambian de un día para otro. La interface de usuario debería poder cambiarse con facilidad y el algoritmo también.

En cuanto a tres capas, depende de en que nivel apliques el patrón. Puedes aplicarlo a tres clases tontas -un JButton, un ActionListener y una clase a la que se modifique un atributo cuando se apriete el botón- o puedes aplicarlo a la totalidad de la aplicación en conjunto. En este segundo caso iría más lo de las tres capas. La primera capa sería el modelo de datos y serían muchas clases que conforman el modelo de datos. Idem para la vista y para el controlador.

En J2EE, por ejemplo, siempre se ha hablado de que está organizado según la estructura de 3 capas o MVC. ¿Por qué?. Porque J2EE contempla la base de datos y los EJBs de entidad -unas clases- como parte del modelo. Sólo contienen datos. Los Servlets serían el controlador -clases que atienden las peticiones y actúan sobre el modelo-. Mientras que las páginas JSP harían de vista. Está organizado en tres capas porque te proporciona tres tipos de &quot;herramientas&quot; -EJBs, Servlet y JSP- que puedes usar y cada una está muy orientada a una de estas funciones MVC.

Aunque es del otro artículo -el del patrón decorador, el II- simplemente comentarte que lo que hay en java sobre los InputStream no es estrictamente un patrón decorador. En este patrón, todas las capas de cebolla deberían implementar exactamente el mismo método. Cada una llamaría al método de la capa interior, haría algo adicional con los resultados y lo devolvería hacia arriba. Pero, como te comento, es mejor ser un poco flexible y aprovechar la filosofía del patrón decorador -hacer capas de cebolla- aunque hagas &quot;la vista gorda&quot; con redefinir exactamente el mismo método en todas las capas.

Se bueno.</description>
		<content:encoded><![CDATA[<p>Hola de nuevo:</p>
<p>Cuando escribí lo del ajedrez no tenía muy claro el patrón MVC -tengo que corregirlo un día-. De todas formas, esto de los patrones tampoco debería -y es sólo mi opinión- tomarse a rajatabla. Un patrón es una solución que ha demostrado ser eficiente al resolver un problema de diseño, pero quizás no se ajuste exactamente a nuestro problema, por lo que podemos tomarnos la libertad de modificar el patrón un poco según nuestras necesidades.</p>
<p>El algoritmo de ajedrez sí podría entrar como parte del controlador, puesto que no forma parte del modelo de datos -el tablero- ni de las reglas del ajedrez. Tampoco forma parte de la vista, pero actúa sobre el modelo. Sin embargo, también podríamos suponerlo como algo externo a nuestro sistema, igual que el jugador, y no formaría para nada parte del MVC. Lo importante sería conseguir un juego de ajedrez en el que podamos reaprovechar lo máximo posible para otro futuro juego que hagamos. El modelo del tablero y las reglas de ajedrez debería quedar hechas de una vez para siempre, ya que el tablero siempre es de 8&#215;8, las reglas son fijas y el número de piezas también, no cambian de un día para otro. La interface de usuario debería poder cambiarse con facilidad y el algoritmo también.</p>
<p>En cuanto a tres capas, depende de en que nivel apliques el patrón. Puedes aplicarlo a tres clases tontas -un JButton, un ActionListener y una clase a la que se modifique un atributo cuando se apriete el botón- o puedes aplicarlo a la totalidad de la aplicación en conjunto. En este segundo caso iría más lo de las tres capas. La primera capa sería el modelo de datos y serían muchas clases que conforman el modelo de datos. Idem para la vista y para el controlador.</p>
<p>En J2EE, por ejemplo, siempre se ha hablado de que está organizado según la estructura de 3 capas o MVC. ¿Por qué?. Porque J2EE contempla la base de datos y los EJBs de entidad -unas clases- como parte del modelo. Sólo contienen datos. Los Servlets serían el controlador -clases que atienden las peticiones y actúan sobre el modelo-. Mientras que las páginas JSP harían de vista. Está organizado en tres capas porque te proporciona tres tipos de &#8220;herramientas&#8221; -EJBs, Servlet y JSP- que puedes usar y cada una está muy orientada a una de estas funciones MVC.</p>
<p>Aunque es del otro artículo -el del patrón decorador, el II- simplemente comentarte que lo que hay en java sobre los InputStream no es estrictamente un patrón decorador. En este patrón, todas las capas de cebolla deberían implementar exactamente el mismo método. Cada una llamaría al método de la capa interior, haría algo adicional con los resultados y lo devolvería hacia arriba. Pero, como te comento, es mejor ser un poco flexible y aprovechar la filosofía del patrón decorador -hacer capas de cebolla- aunque hagas &#8220;la vista gorda&#8221; con redefinir exactamente el mismo método en todas las capas.</p>
<p>Se bueno.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jorge</title>
		<link>http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/comment-page-1/#comment-195</link>
		<dc:creator>Jorge</dc:creator>
		<pubDate>Sun, 06 May 2007 13:13:19 +0000</pubDate>
		<guid isPermaLink="false">http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/#comment-195</guid>
		<description>Hola:

Muchas gracias por la aclaración. Ahora una  pregunta mas si no molestarte mucho pero me surge una duda en definir ¿Cúal es la diferencia entre 3 capas y MVC? ¿Cuándo aplicamos cada uno?.

Y otra duda en un ejemplo sobre el patrón MVC(el juego del ajedrez) tu dices de que el controlador es el encargado del algoritmo del juego(Inteligencia Artificial) pero en la respuesta que me diste acá me dices de que en realidad es el encargado de gestionar los eventos ¿Pueden existir variaciones?</description>
		<content:encoded><![CDATA[<p>Hola:</p>
<p>Muchas gracias por la aclaración. Ahora una  pregunta mas si no molestarte mucho pero me surge una duda en definir ¿Cúal es la diferencia entre 3 capas y MVC? ¿Cuándo aplicamos cada uno?.</p>
<p>Y otra duda en un ejemplo sobre el patrón MVC(el juego del ajedrez) tu dices de que el controlador es el encargado del algoritmo del juego(Inteligencia Artificial) pero en la respuesta que me diste acá me dices de que en realidad es el encargado de gestionar los eventos ¿Pueden existir variaciones?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chuidiang</title>
		<link>http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/comment-page-1/#comment-194</link>
		<dc:creator>Chuidiang</dc:creator>
		<pubDate>Sun, 06 May 2007 04:46:40 +0000</pubDate>
		<guid isPermaLink="false">http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/#comment-194</guid>
		<description>Hola:

El controlador es el que actúa sobre el modelo y a veces sobre la vista. Me explico.

Cuando sobre la vista ocurre un evento de ratón o teclado -un click en un botón, por ejemplo-, la vista debería avisar al controlador de este evento y el controlador es el que tiene que hacer lo que sea -mostrar otra ventana, cambiar datos en el modelo, etc-. Un ejemplo, en el caso de java, los ActionListener que añades al botón serían los controladores.

En este caso de la tabla no los menciono porque entre las clases mencionadas no hay ningún controlador. Sin embargo, internamente si debería haberlos, aunque no se ven. Por ejemplo, si haces doble click en una celda para editar, un controlador interno que tenga la tabla sería el encargado de hacer que la celda &quot;cambie&quot; para mostrar un editor. Cuando termines de editar -pulsando &lt;intro&gt; por ejemplo- un controlador sería el encargado de recoger ese dato del editor y meterlo en el modelo. De todas formas, ya te digo, esos supuestos controladores son internos al JTable y ni siquiera se si realmente están ahí.

En resumen, el modelo son los datos y no deben ver a nadie, únicamente implementar un patrón observador.

La vista es la ventana y debería ser tonta. Unicamente pedirle datos al modelo para visualizarlos, suscribirse a cambios en el modelo para visualizarlos e implementar algún tipo de observador para eventos de teclado y ratón.

El controlador es el que se suscribe a los eventos de teclado y ratón en la vista y el que actúa tanto sobre la vista -para mostrar u ocultar ventanas, habilitar botones, etc- y sobre el modelo -cambiar datos-.

Se bueno.</description>
		<content:encoded><![CDATA[<p>Hola:</p>
<p>El controlador es el que actúa sobre el modelo y a veces sobre la vista. Me explico.</p>
<p>Cuando sobre la vista ocurre un evento de ratón o teclado -un click en un botón, por ejemplo-, la vista debería avisar al controlador de este evento y el controlador es el que tiene que hacer lo que sea -mostrar otra ventana, cambiar datos en el modelo, etc-. Un ejemplo, en el caso de java, los ActionListener que añades al botón serían los controladores.</p>
<p>En este caso de la tabla no los menciono porque entre las clases mencionadas no hay ningún controlador. Sin embargo, internamente si debería haberlos, aunque no se ven. Por ejemplo, si haces doble click en una celda para editar, un controlador interno que tenga la tabla sería el encargado de hacer que la celda &#8220;cambie&#8221; para mostrar un editor. Cuando termines de editar -pulsando <intro> por ejemplo- un controlador sería el encargado de recoger ese dato del editor y meterlo en el modelo. De todas formas, ya te digo, esos supuestos controladores son internos al JTable y ni siquiera se si realmente están ahí.</p>
<p>En resumen, el modelo son los datos y no deben ver a nadie, únicamente implementar un patrón observador.</p>
<p>La vista es la ventana y debería ser tonta. Unicamente pedirle datos al modelo para visualizarlos, suscribirse a cambios en el modelo para visualizarlos e implementar algún tipo de observador para eventos de teclado y ratón.</p>
<p>El controlador es el que se suscribe a los eventos de teclado y ratón en la vista y el que actúa tanto sobre la vista -para mostrar u ocultar ventanas, habilitar botones, etc- y sobre el modelo -cambiar datos-.</p>
<p>Se bueno.</intro></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jorge</title>
		<link>http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/comment-page-1/#comment-193</link>
		<dc:creator>Jorge</dc:creator>
		<pubDate>Sat, 05 May 2007 22:16:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/#comment-193</guid>
		<description>Perdon me olvide de comentar algo mas!! (se me vino a la cabeza luego del ultimo posteo).

Me tiene confundido los conceptos que lei respecto a las funciones de la clase(s) controlador, pues indican de que esta o estas son las encargadas de comunicar a la vista y al modelo y bueno en consecuencia gestionan los eventos de la vista.</description>
		<content:encoded><![CDATA[<p>Perdon me olvide de comentar algo mas!! (se me vino a la cabeza luego del ultimo posteo).</p>
<p>Me tiene confundido los conceptos que lei respecto a las funciones de la clase(s) controlador, pues indican de que esta o estas son las encargadas de comunicar a la vista y al modelo y bueno en consecuencia gestionan los eventos de la vista.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jorge</title>
		<link>http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/comment-page-1/#comment-192</link>
		<dc:creator>Jorge</dc:creator>
		<pubDate>Sat, 05 May 2007 22:12:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.chuidiang.com/2007/05/04/aprendiendo-orientacion-a-objetos-observando-i/#comment-192</guid>
		<description>Muy interesante y valida tu observación, yo recien estoy en esto de los patrones y pues aún ando un poco confundido pero leyendote pues se me van despejando dudas.

Ahora la dude que me surge es en la ultima parte donde mencionas el patron MVC pero no indicas cual es la clase o interfaz que representa al controlador ¿existe o esta fusionada con la vista?</description>
		<content:encoded><![CDATA[<p>Muy interesante y valida tu observación, yo recien estoy en esto de los patrones y pues aún ando un poco confundido pero leyendote pues se me van despejando dudas.</p>
<p>Ahora la dude que me surge es en la ultima parte donde mencionas el patron MVC pero no indicas cual es la clase o interfaz que representa al controlador ¿existe o esta fusionada con la vista?</p>
]]></content:encoded>
	</item>
</channel>
</rss>
