<?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/"
	>

<channel>
	<title>TrickyWeb.cl - Informática &#38; Tecnología &#187; Camilo Zambrano Lagos</title>
	<atom:link href="http://www.trickyweb.cl/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.trickyweb.cl</link>
	<description>Informática &#38; Tecnología</description>
	<lastBuildDate>Sat, 14 Nov 2009 06:34:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>HOW TO:Instalar PHP 5.3 en Fedora</title>
		<link>http://www.trickyweb.cl/2009/11/14/how-toinstalar-php-5-3-en-fedora/</link>
		<comments>http://www.trickyweb.cl/2009/11/14/how-toinstalar-php-5-3-en-fedora/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 06:29:46 +0000</pubDate>
		<dc:creator>Camilo Zambrano Lagos</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[caracteristicas php 5.3]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[php 5.3]]></category>
		<category><![CDATA[rpm]]></category>

		<guid isPermaLink="false">http://www.trickyweb.cl/?p=658</guid>
		<description><![CDATA[Hola a todos!, hace mucho tiempo que no posteaba algo.
Éste post creo que le interesará a varios desarrolladores web que quieran disfrutar de las bondades del casi nuevo PHP 5.3, algunas de las características nuevas incorporadas (que no dejan de ser, sobre todo para los que disfrutan de un trabajo &#8220;ordenado&#8221;) son las siguientes:

Namespaces - [...]]]></description>
			<content:encoded><![CDATA[<p>Hola a todos!, hace mucho tiempo que no posteaba algo.<br />
Éste post creo que le interesará a varios desarrolladores web que quieran disfrutar de las bondades del <del datetime="2009-11-14T05:44:25+00:00">casi</del> nuevo PHP 5.3, algunas de las características nuevas incorporadas (que no dejan de ser, sobre todo para los que disfrutan de un trabajo &#8220;ordenado&#8221;) son las siguientes:<span id="more-658"></span></p>
<ul>
<li><strong>Namespaces </strong>- Sí señores!!! éste recurso tan valioso por el que muchos pelearon y firmaron para su inclusión, por fin fue tomado en cuenta, claro está que aun se encuentra en su etapa primitiva, pero puedo decir por experiencia &#8211; ya testié este magnifico release &#8211; que funciona de mil maravillas!</li>
<li><strong>Late static bindings</strong> &#8211; Éste es un concepto nuevo, incorporado por PHP, que se basa en el trabajo con métodos estáticos durante el runtime, la esencia de éste concepto es más que nada &#8220;obligar&#8221; al pc, a que si se trabaja con herencia de clases, en el caso de métodos heredados o locales, usar el último elemento static definido, que a diferencia de self, puede ser de la clase padre o de la hija. (Esto es lo que yo he entendido, si alguien entendió algo diferente lo invito a corregirme en los comentarios <img src='http://www.trickyweb.cl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , éste concepto es nuevo así que es dificil entenderlo de primeras)</li>
<li><strong>Closures </strong>- Muchos esperaban también ésta característica, los closures son funciones anónimas, de manera similar a Javascript.</li>
<li><strong>Recolector de basura opcional para referencias cíclicas</strong> &#8211; PHP borra las referencias no utilizadas al finalizar un ámbito , pero al momento de definir clases o variables con referencias a veces se busca eliminar ciertas referencias antes de salir del ámbito (lo que si no es bien tratado puede producir memory leaks), lo que busca este recolector es más que nada eso, cuando se presentan referencias cíclicas facilitar el trabajo de liberación adecuada de memoria (evitándonos los molestos unsets que a más de alguno supongo le ha quebrado el cráneo buscando el problema en la fuga de memoria)</li>
<li>Nuevas extensiones, se arreglaron alrededor de 140 bugs, entre otras cosas.</li>
</ul>
<p>A continuación enseñaré como instalar PHP 5.3 en Fedora (Sí, aún no se incluye en los repos oficiales por ser relativamente nuevo).</p>
<p>Requisitos:</p>
<ul>
<li>YUM instalado</li>
<li>RPM instalado</li>
</ul>
<p>Primero instalamos el package <strong>remi-release</strong>, que es un package creado por un francés, puedes ver su <a href="http://http://blog.famillecollet.com/pages/Config-en">blog acá</a>, éste paquete provee la configuración del repositorio para YUM y la llave GPG usada para firmar el repositorio, ¿cómo se hace?, copy-pastea lo siguiente en el terminal según tu versión:</p>
<p><strong>Fedora 12 i386, ppc, ppc64 o x86_64</strong><br />
<code>rpm -Uvh http://rpms.famillecollet.com/remi-release-12.rpm</code></p>
<p><strong>Fedora 11 i386, ppc, ppc64 o x86_64</strong></p>
<p><code>wget http://rpms.famillecollet.com/remi-release-11.rpm<br />
rpm -Uvh remi-release-11.rpm</code></p>
<p><strong>Fedora 10 i386, ppc, ppc64 o x86_64</strong><br />
<code>wget http://rpms.famillecollet.com/remi-release-10.rpm<br />
rpm -Uvh remi-release-10.rpm</code></p>
<p><strong>Fedora 9 i386, ppc, ppc64 o x86_64</strong><br />
<code>wget http://rpms.famillecollet.com/remi-release-9.rpm<br />
rpm -Uvh remi-release-9.rpm</code></p>
<p><strong>Fedora 8 i386, ppc, ppc64 o x86_64</strong></p>
<p><code>wget http://rpms.famillecollet.com/remi-release-8.rpm<br />
rpm -Uvh remi-release-8.rpm</code></p>
<p><strong>Fedora 7 i386, ppc o x86_64</strong></p>
<p><code>wget http://rpms.famillecollet.com/remi-release-7.rpm<br />
rpm -Uvh remi-release-7.rpm</code></p>
<p><strong>Fedora Core 6 i386, ppc o x86_64</strong><br />
<code>wget http://rpms.famillecollet.com/remi-release-6.rpm<br />
rpm -Uvh remi-release-6.rpm<br />
</code><br />
<strong>Fedora Core 5 (repositorio no mantenido)</strong></p>
<p><code>wget http://rpms.famillecollet.com/remi-release-5.rpm<br />
rpm -Uvh remi-release-5.rpm<br />
</code><br />
<strong>Fedora Core 4 (repositorio no mantenido)</strong></p>
<p><code>wget http://rpms.famillecollet.com/remi-release-4.rpm<br />
rpm -Uvh remi-release-4.rpm</code><br />
<strong><br />
Fedora Core 3 (repositorio no mantenido)</strong><br />
<code>wget http://rpms.famillecollet.com/remi-release-3.rpm<br />
rpm -Uvh remi-release-3.rpm</code></p>
<p>Luego configuramos manualmente YUM:<br />
<code>su -<br />
cd /etc/yum.repos.d<br />
wget http://rpms.famillecollet.com/remi-fedora.repo</code></p>
<p>Se instala la llave GPG correspondiente al repositorio:<br />
<code>rpm --import RPM-GPG-KEY-remi</code></p>
<p>Luego se lista la llave instalada mediante el comando:<br />
<code>rpm -q gpg-pubkey --qf "%{summary} ->%{version}-%{release}\n"</code></p>
<p>Para todo este proceso, si quedas con dudas (y le pegas al inglés) puedes visitar el <a href="http://http://blog.famillecollet.com/pages/Config-en">blog</a>.</p>
<p>Para instalar PHP 5.3 obviamente debes tener instalados los servicios <strong>httpd </strong>(al menos en fedora 11 vienen instalados asi que no habría complicaciones).<br />
Para instalar al susodicho recurso, usaremos el siguiente comando en nuestra consola y con atributos de root:<br />
<code>yum --enable remi update php-\*</code></p>
<p>Y voilá, php 5.3 se configura igual que sus versiones anteriores, no deberías tener problemas (a menos que seas novato, para cualquier efecto, basta con configurar el <strong>php.ini</strong>, y la parte de <strong>DocumentRoot</strong> en caso que quieras cambiar la carpeta, pero eso no es tema ahora, corresponde a la configuración de PHP <img src='http://www.trickyweb.cl/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> , si quieres aprender a configurar un servidor web, mejor aprende a configurar apache que es el que mueve todo el asunto).</p>
<p>Y bueno, ahora solo queda probar las nuevas características, php proporciona una buena documentación como para entender a cabalidad y mediante ejemplos como trabajar de manera óptima con cada uno de sus elementos.</p>
<p>Si lo quieren en algún post puedo mostrar como trabajar con Namespaces y closures <img src='http://www.trickyweb.cl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ya que ese tema no va al caso ahora.<br />
Espero éste corto tutorial les sirva y puedan disfrutar, como yo, de las nuevas características de PHP 5.3 <img src='http://www.trickyweb.cl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Saludos!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trickyweb.cl/2009/11/14/how-toinstalar-php-5-3-en-fedora/feed/</wfw:commentRss>
		<slash:comments>456</slash:comments>
		</item>
		<item>
		<title>[EL2009]Resumen Día 3: Último Día</title>
		<link>http://www.trickyweb.cl/2009/10/28/el2009resumen-dia-3-ultimo-dia/</link>
		<comments>http://www.trickyweb.cl/2009/10/28/el2009resumen-dia-3-ultimo-dia/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 03:21:10 +0000</pubDate>
		<dc:creator>Camilo Zambrano Lagos</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.trickyweb.cl/?p=654</guid>
		<description><![CDATA[En el tercer y último día de  EL2009, comienza con normalidad, considerando la fiesta realizada el día anterior.
La jornada estuvo caracterizada por las charlas practicas, ya que se efectuaron 3 talleres, 2 de Android y 1 de desarrollo multimedia (FFMPEG), esto sin contar que durante todo el día se efectuó el “Gnome Day” en [...]]]></description>
			<content:encoded><![CDATA[<p>En el tercer y último día de  EL2009, comienza con normalidad, considerando la fiesta realizada el día anterior.<br />
La jornada estuvo caracterizada por las charlas practicas, ya que se efectuaron 3 talleres, 2 de Android y 1 de desarrollo multimedia (FFMPEG), esto sin contar que durante todo el día se efectuó el “Gnome Day” en el edficio T. </p>
<p>En el primer bloque paralelo, en la sala C240, se expuso y se enseño como hacer ingeniería inversa a un archivo para localizar, por ejemplo, el header. En el Salón de Honor se expuso  sobre SUSE Studio y se mostró   como crear una aplicación “Appliance”.</p>
<p>Luego a las 1130, comenzó en la sala C204 la presentación de Bacula, en la que se expuso sobre cómo este software puede ser una respuesta real como la última línea de defensa. En la sala C240 se expuso sobre JRuby on Rails, una combinación que toma Ruby on Rails, el framework de perl, y J2EE para lograr disminuir la cantidad de código dentro de un programa manteniendo las ventajas de poder migrar luego a Java ya con la idea lista, siendo una tarea mucho más fácil. Simultaneamente, en el LabComp, se realizaba la primera parte del taller de Android.</p>
<p>A las 13:00 comenzaban las charlas de Jython, Jails y X.org además de la segunda parte del taller de Android, sin olvidar el Gnome Day.<br />
Sobre Jails, se expuso la virtualización en sistemas FreeBSD, ejemplificando con usos en casos académicos.<br />
En “ X.org en segunda marcha”, se explico el porqué se separo del proyecto XFree86 y se hablo sobre &#8216;Wayland&#8217; y la innovación en un futuro próximo.<br />
La charla de Jython, se dio un acercamiento de cómo </p>
<p>Con un receso de almuerzo que comenzó a las 14:10 y se prolongo durante 1hr. y 20 minutos, se volvió a las 15:30 en punto a la última ronda de charlas paralelas.</p>
<p>El Dr. Horst Von Brand, en el Salón de Honor, en la charla “Creación de Módulos del Kernel de Linux”, expuso  y ejemplifico en este tema. En la sala C240, se realizo una charla didáctica sobre  “QTWebKit”, en la que se demostró como de manera muy simple se puede crear un web-browser con diversas restricciones a gusto del programador. En la sala C204, se explico como que es y cómo funciona proyect-389(Fedora Directory Server), siendo un sistema que implementa y maneja tecnologías de directorios, con su parte fundamental como software libre.<br />
En el LabComp estaba el desarrollo de la parte experimental de la charla de ingeniería inversa. En el Edificio T, Ivan Frade exponía para los asistentes al Gnome Day.</p>
<p>Memorable también, fue el cierre del evento, donde fueron reconocidos expositores, asistentes y organización, los que movían el evento por dentro. También durante este cierre se realizó el sorteo de los 2 G1 que faltaban, además del sorteo de 2 cursos, 1 por parte de Google  y otro por parte de Linux Latín América.</p>
<p>Luego de la finalización oficial del evento, toda la organización orquestó lo que sería el “piscinazo” de 3  organizadores del evento en el cual nadie lo pasó mal. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.trickyweb.cl/2009/10/28/el2009resumen-dia-3-ultimo-dia/feed/</wfw:commentRss>
		<slash:comments>105</slash:comments>
		</item>
		<item>
		<title>[EL2009] Resumen día 2 : Día Distribuído</title>
		<link>http://www.trickyweb.cl/2009/10/25/dia-distribuido-el2009/</link>
		<comments>http://www.trickyweb.cl/2009/10/25/dia-distribuido-el2009/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 04:37:45 +0000</pubDate>
		<dc:creator>Camilo Zambrano Lagos</dc:creator>
				<category><![CDATA[Articulos]]></category>

		<guid isPermaLink="false">http://www.trickyweb.cl/2009/10/25/646/</guid>
		<description><![CDATA[PUCV: OpenSource y Negocios
El día distribuido en la U. Católica de Valparaíso estuvo marcado por las charlas con tono cordial, donde cada expositor interactuó con sus auditores casi de manera informal, siendo notable el hecho de que un expositor, Manuel Novoa, se repitiera el plato, con Estación de Trabajo y Aplicaciones corporativas, en la primera [...]]]></description>
			<content:encoded><![CDATA[<p><strong>PUCV: OpenSource y Negocios</strong></p>
<p>El día distribuido en la U. Católica de Valparaíso estuvo marcado por las charlas con tono cordial, donde cada expositor interactuó con sus auditores casi de manera informal, siendo notable el hecho de que un expositor, Manuel Novoa, se repitiera el plato, con Estación de Trabajo y Aplicaciones corporativas, en la primera fue un repaso leve a lo que es su proyecto para Pymes y Mypes, y en la segunda abarcó de manera mas avanzada todo lo relacionado con la creación de aplicaciones corporativas utilizando JBOSS. Pero sin lugar a dudas cada charla tuvo lo suyo, esto queda demostrado con solo haber visto la asistencia que tuvo la sede (habrían unas 120-150 personas solo como asistentes)..<br />
Es más, para la charla de Benchmark (donde se mostró una herramienta para el ambiente inmobiliario)  la sala estaba casi copada, y más aun, en la charla de  Linux y Windows, en la cual fue necesario conseguir sillas en salas contiguas.<br />
Entre la segunda charla y el almuerzo se orquestó un Panel de discusión, en donde participaron todos los exponentes, y en donde, según los mas instruidos en el tema no se perdió el tiempo, fue considerado un panel productivo.</p>
<p><strong>Duoc UC: Blender Conference </strong><br />
El día comenzó con la inauguración de la primera conferencia de Blender en Chile a cargo de un arquitecto de la USM. Este conto sobre que se trata blender, ventajas, desventajas, lo que se viene, etc.</p>
<p>Luego se hablo sobre GNOME, la importancia de este como proyecto de entorno de código abierto mientras que paralelamente se realizaron talleres sobre Blender, junto a charlas que abarcaban la publicidad, composing en blender, entre otros.</p>
<p>Llegando al final una de las charlas a las que fue mucha gente, fue la  Game Engine, donde se hablo de Blender como una suite que permite crear juegos. el expositor baso su interesante charla en dar ejemplos y mostrar en vivo como funciona la lluvia, el viento, disparos y ese tipo de efectos. Al cierre del día hubo una  muestra de trabajos.</p>
<p><strong>UTFSM: Ciencia  y Tecnología</strong></p>
<p>Comenzó el día con la charla  “Desarrollo de Ciencia y Tecnologia con Software Libre”, en la que se explico el uso de diversos lenguajes de programación  y software para ofrecer varias aplicaciones al Ejercito  del Perú. Luego, con 3 charlas en el horario de las 1130 hasta las 1240. Se vio en la sala C204 RetiNEXT y RTAI. El primero, un software se permite la visión artificial a dispositivos móviles y con menos recursos de hardware, especialmente útil en robótica e inspecciones visuales en líneas de producción.<br />
Lo segundo, RTAI,  se explica la instalación de un nano-kernel entre el hardware  y el kernel de Linux, para mejorar la respuesta en ambientes donde cada milisegundo marca la diferencia.<br />
El tercer bloque fue el turno de ALMA ACS, en la que se explico el funcionamiento de las antenas, las aplicaciones y el cómo ACS reutiliza código, en vez de reinventar la rueda, además de hablar de un software para astrónomos amateurs.<br />
Después de almuerzo, en una de las charlas paralelas, se presento emdebían, Sistema Operativo diseñado para funcionar en dispositivos ARM o similares, destacando los factores de hacen que Debían fuese una opción destacable para de allí crear el proyecto emdebian.<br />
Al finalizar, el taller de OpenCV realizado en el LabComp, además de Geomapy, en la que se explico como Python podría simplificar varias cosas, siendo una característica la portatibilidad.</p>
<p><strong>UV y UPLA</strong><br />
A grandes rasgos se hablo en ambas sedes sobre el valor agregado que adquiere la educación cuando se trabaja en términos de &#8220;libertad creativa&#8221;, o sea que no se está amarrado a ninguna gran corporación a la hora de crear un plan de aprendizaje a nivel de profesores, lo cual en si es muy provechoso para los profesionales ya que pueden difundir y compartir el trabajo que se genera.<br />
La utilización de software privativo hace que el sistema educacional se amarre de una manera controversial a políticas establecidas por grandes conglomerados que en algunas ocasiones privilegian el actuar monetario por sobre los fines educacionales que buscan los usuarios de dichos software (llámese profesores y alumnos).</p>
<p>También la filosofía del Software Libre ayuda a la libre difusión de material o herramientas creadas por los propios docentes para una mayor comprensión o cercanía respecto al público estudiantil al cual se desea llegar. Tomando en cuenta que la mayoría de las aplicaciones o creaciones realizadas en software libre poseen licencias que no restringen su libre distribución, por lo tanto potencian el principio fundamental del “compartir”.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trickyweb.cl/2009/10/25/dia-distribuido-el2009/feed/</wfw:commentRss>
		<slash:comments>76</slash:comments>
		</item>
		<item>
		<title>Invitación a Key Signing Party</title>
		<link>http://www.trickyweb.cl/2009/10/21/invitacion-a-key-signing-party/</link>
		<comments>http://www.trickyweb.cl/2009/10/21/invitacion-a-key-signing-party/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 14:19:30 +0000</pubDate>
		<dc:creator>Camilo Zambrano Lagos</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.trickyweb.cl/?p=490</guid>
		<description><![CDATA[Durante el Décimo Encuentro Linux se realizará una firma de llaves PGP o también conocida como Key Signing Party.
Están todos invitados a participar, este evento se realizará el día Jueves 22 de Octubre a partir de las 19:30 hr. en el salón de Honor de la Casa Central de la UTFSM en Valparaíso, Chile.
Para mayor [...]]]></description>
			<content:encoded><![CDATA[<p>Durante el Décimo Encuentro Linux se realizará una firma de llaves PGP o también conocida como Key Signing Party.</p>
<p>Están todos invitados a participar, este evento se realizará el día Jueves 22 de Octubre a partir de las 19:30 hr. en el salón de Honor de la Casa Central de la UTFSM en Valparaíso, Chile.</p>
<p>Para mayor información, favor revisar http://2009.encuentrolinux.cl/ksp .</p>
<p>Si vas a participar del Décimo Encuentro Linux, te agradeceremos el ayudarnos a hacer promoción del evento. Puedes utilizar el siguiente botón en tu blog o website.<br />
<img src="http://2009.encuentrolinux.cl/wp-content/uploads/2009/10/yovoy.png" alt="Yo Voy Al EL2009!!" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trickyweb.cl/2009/10/21/invitacion-a-key-signing-party/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# Básico &#8211; Windows Forms</title>
		<link>http://www.trickyweb.cl/2009/09/24/c-basico-windows-forms/</link>
		<comments>http://www.trickyweb.cl/2009/09/24/c-basico-windows-forms/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 21:32:26 +0000</pubDate>
		<dc:creator>Camilo Zambrano Lagos</dc:creator>
				<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.trickyweb.cl/?p=226</guid>
		<description><![CDATA[Hola!, creo que muchos han buscado tutoriales por la red y se han aburrido de leer mucho, espero esta no sea la ocasión porque intentaré presentar de manera práctica y precisa el tema a tratar.
Esta vez presentaré un tutorial básico de C#, dirigido netamente a la creación de programas con entorno gráfico (GUI) para windows.

Para [...]]]></description>
			<content:encoded><![CDATA[<p>Hola!, creo que muchos han buscado tutoriales por la red y se han aburrido de leer mucho, espero esta no sea la ocasión porque intentaré presentar de manera práctica y precisa el tema a tratar.</p>
<p>Esta vez presentaré un tutorial básico de C#, dirigido netamente a la creación de programas con entorno gráfico (GUI) para windows.</p>
<p><span id="more-226"></span></p>
<p>Para entender a cabalidad este post recomiendo leer los posts sobre Orientación a objetos teórica, este tutorial de Orientación a objetos está en 3 partes, puedes leerlos haciendo click en los siguientes links respectivamente:</p>
<ol>
<li>Orientación a Objetos<a href="http://www.trickyweb.cl/2009/08/27/orientacion-a-objetos-parte-i-2/"> p1</a>.</li>
<li>Orientación a Objetos <a href="http://www.trickyweb.cl/2009/08/29/orientacion-a-objetos-parte-ii-2/">p2</a>.</li>
<li>Orientación a Objetos <a href="http://www.trickyweb.cl/2009/09/13/orientacion-a-objetos-parte-iii/">p3</a>.</li>
</ol>
<p>Para trabajar, hay que trabajar con un IDE apropiado para el caso, en este momento se utilizará <em><strong><a href="http://www.microsoft.com/express/vcsharp/">Microsoft Visual C# Express 2008</a></strong></em>.</p>
<p>Partamos&#8230;</p>
<p style="margin-bottom:2px"><span style="font-size:12pt;"><strong>Breve Historia &#8211; [</strong></span><span style="font-size:10pt"><a href="http://es.wikipedia.org/wiki/C_sharp#Historia">Extracto de Wikipedia</a></span><a href="http://es.wikipedia.org/wiki/C_sharp#Historia"></a><span style="font-size:12pt"><strong>]</strong></span></p>
<p>Durante el desarrollo de la plataforma .NET, las bibliotecas de clases fueron escritas originalmente en el lenguaje compilador Simple Managed C. En enero de 1999, Anders Hejlsberg formó un equipo con la misión de desarrollar un nuevo lenguaje de programación llamado Cool (C Orientado a Objetos). Este nombre tuvo que ser cambiado debido a problemas de marca pasando a llamarse C#. La biblioteca de clases de la plataforma .NET fue migrada entonces al nuevo lenguaje.<br /> <br />
Hejlsberg lideró el proyecto de desarrollo de C#. Anteriormente, ya participó en el desarrollo de otros lenguajes como Turbo Pascal, J++ y Borland Delphi.</p>
<hr />
Como se hizo notar en el post <a href="http://www.trickyweb.cl/2009/09/02/c-c-c-cual-es-la-diferencia/">C – C++ – C#: Cuál es la diferencia?</a>, C# es una extensión de C, por lo que los tipos de datos básicos con los que se trabajaba en C son iguales a los de C#, la diferencia está en que en C# tenemos tipos de datos que ahorran un trabajo inmenso en comparación con C. Como ejemplo de dichos tipos de datos, tenemos el tipo<strong> bool</strong>, <strong>string</strong>, que no aparecen en C, pero si en C#.</p>
<p>Pues bien, ya teniendo esta información a mano, vamos a comenzar a trabajar en nuestra aplicación.</p>
<ol>
<li> Para crear un nuevo proyecto, debes dirigirte a <strong>Archivo</strong> &gt;&gt; <strong>Nuevo Proyecto</strong> como se muestra en la imagen que viene a continuación.<br/>
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/1.png" rel="thumbnail" title="Archivo &gt;&gt; Nuevo Proyecto"><img src="http://www.trickyweb.cl/img/tuto_cs/1.png" width="129" height="96" alt="Archivo &gt;&gt; Nuevo Proyecto" /></a></p>
</li>
<li>Selecciona Aplicación de Windows Forms, ponle un nombre a tu proyecto y haz clic en aceptar.
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/2.png" rel="thumbnail" title="Aplicación de Windows Forms"><img src="http://www.trickyweb.cl/img/tuto_cs/2.png" width="129" height="96" alt="Archivo &gt;&gt; Nuevo Proyecto" /></a></p>
</li>
<li> Aparecerá lo siguiente:
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/3.png" rel="thumbnail" title="Nuevo Form"><img src="http://www.trickyweb.cl/img/tuto_cs/3.png" width="129" height="96" alt="Nuevo Form" /></a></p>
</li>
</ol>
<p>Vamos a hacer algo básico, que al hacer clic en un botón, aparezca un mensaje que diga &#8220;Hola Mundo!&#8221;, para ello, debemos insertar el botón, para ello insertaremos el botón en el formulario:</p>
<ol>
<li> Busca el botón(Button) en la barra de herramientas, generalmente está en un extremo izquierdo, como se puede ver en la imagen:
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/4.png" rel="thumbnail" title="Localizar Botón"><img src="http://www.trickyweb.cl/img/tuto_cs/4.png" width="129" height="96" alt="Localizar Botón" /></a></p>
</li>
<li> Selecciona el botón y arrástralo hacia el formulario
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/5.png" rel="thumbnail" title="Seleccionar y arrastrar botón"><img src="http://www.trickyweb.cl/img/tuto_cs/5.png" width="129" height="96" alt="Seleccionar y arrastrar botón" /></a></p>
</li>
<li>Es posible fijarse que el texto del botón dice button1, ¿nada bonito no? pues bien, es posible fijarse que en la esquina inferior derecha hay una ventana llamada propiedades, ahí al seleccionar el botón, podemos modificar los atributos del objeto botón (Recordar, por lo leído que C# trabaja orientado a objetos, por lo que todo lo &#8220;visual&#8221; son objetos, con métodos y atributos).<br /> <br />
En dicha ventana, busca un campo llamado <strong>Text</strong>, ahi al lado aparece el texto del botón (button1), y modificalo a tu antojo.</p>
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/6.png" rel="thumbnail" title="Cambia el texto del botón"><img src="http://www.trickyweb.cl/img/tuto_cs/6.png" width="129" height="96" alt="Cambia el texto del botón" /></a></p>
</li>
</ol>
<p>Listo, se tiene lo que se necesita, ahora vas a probar lo que tenemos creado, haz clic en el símbolo <img src="http://www.trickyweb.cl/img/tuto_cs/play.png" alt="Debug" /> para iniciar la depuración, aquí comenzará la ejecución de lo que llevamos de aplicación y en caso de haber errores, el sistema lo hará saber y marcará el lugar del error, para arreglarlo.</p>
<p>Es posible apreciar, que aparecerá la ventana con el botón en medio, y si apretamos el botón&#8230;no pasará NADA.</p>
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/7.png" rel="thumbnail" title="No pasa nada!!"><img src="http://www.trickyweb.cl/img/tuto_cs/7.png" width="129" height="96" alt="No pasa nada!!" /></a></p>
<p>¿Lamentable no?, probablemente en este punto estés algo decepcionado porque creías que esto era mágico y todo vendría para llegar y hacer, lamentablemente no es así, por lo que habrá que configurar la aparición del mensaje por nuestra cuenta, y para ello habrá que acceder directamente al código de la aplicación, para ello, detén la depuración cerrando la ventana generada.</p>
<p>Posterior a ello, haz doble clic en el botón, haciendo esto accederás al código que define a la clase Form1 (en nuestro caso), y específicamente al evento Click del objeto botón.</p>
<p>Aquí me daré el lujo de detenerme un momento, en este momento el lector se pregunta <strong>¿qué es un evento?</strong>, un evento es una acción realizada por el usuario (o bien por el mismo objeto) que el objeto captará, y en base a la acción o efecto captado por el botón, ocurrirá algo es decir, el cambio de estado de un atributo o la llamada a un método.</p>
<p>Bien, al acceder al código, al comienzo del código se verá lo siguiente:</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">using</span> <span class="kw5">System</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">Collections</span>.<span class="me1">Generic</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">ComponentModel</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">Data</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">Drawing</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">Linq</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">Text</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">Windows</span>.<span class="me1">Forms</span>;</div>
</li>
</ol>
</div>
<p>Esos elementos son librerías que el sistema utiliza para acceder a los diferentes objetos y trabajar con los diferentes recursos gráficos y de sistema, es algo asi como el <strong>#include </strong>en C.</p>
<p>Luego es posible apreciar lo siguiente:</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">namespace</span> Tutorial_CS</div>
</li>
</ol>
</div>
<p>Un <strong>namespace</strong> son agrupaciones de nombres que permiten identificar elementos con los mismos nombres, pero que pertenecen a entornos diferentes. Esto lo usarás y entenderás mas a la perfección al momento de trabajar con ejemplos más complejos.</p>
<p>Luego aparecen elementos que, si manejas POO, te parecerán conocidos:</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">public</span> partial <span class="kw4">class</span> Form1 <span class="sy0">:</span> Form</div>
</li>
</ol>
</div>
<p>&#8220;Casi&#8221; todo lo de acá es conocido, la palabra <strong>partial </strong>hace referencia a que la clase Form1 ha sido definido parcialmente mediante mas de un archivo de código fuente, por lo que algunos archivos contienen sus atributos, otros sus métodos, etc, permitiendo así entregar un código mínimo para trabajar y evitar que el usuario cometa algún error que pueda dañar la configuración central de la aplicación que se está trabajando, además de facilitar el trabajo modulado ya que más de un programador pueden trabajar en una misma clase pero en diferentes sectores de ella y facilitar la <strong>reutilización de código</strong>.</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">public</span> Form1<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; InitializeComponent<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">private</span> <span class="kw1">void</span> button1_Click<span class="br0">&#40;</span><span class="kw4">object</span> sender, EventArgs e<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>El primer método (sin tipo de dato de salida) es un constructor, generalmente es opcional, pero en éste caso es necesario (al menos en la main window) ya que mediante éste método se inicializan los componentes del form( <strong><em>InitializeComponent()</em></strong> ) y es posible cargarlo al inicio.</p>
<p>El segundo método es el que hace referencia a la acción a realizar cuando se haga click sobre el botón 1 (&#8221;Presioname!&#8221;, evento Click).<br /> <br />
Trabajaremos en éste método, agrega lo siguiente dentro de ésta función:</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1">MessageBox.<span class="me1">Show</span><span class="br0">&#40;</span><span class="st0">&quot;Hola Mundo!&quot;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Ahora, vuelve a hacer click en el botón para depurar, podrás ver lo siguiente si haces click en el botón (ver Imagen).</p>
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/8.png" rel="thumbnail" title="Vive!!"><img src="http://www.trickyweb.cl/img/tuto_cs/8.png" width="129" height="96" alt="Vive!!" /></a></p>
<p>Perfecto!! Ahora tienes tu primera aplicación hecha en C#.</p>
<p style="margin-bottom:2px"><span style="font-size:12pt;"><strong>¿Cómo trabajo con otros eventos?</strong></span></p>
<p>Es fácil (Si!, es fácil, con práctica todo es facil <img src='http://www.trickyweb.cl/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ), para crear un nuevo evento,sitúate en el constructor y escribe lo siguiente:</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">public</span> Form1<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; InitializeComponent<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; button1.</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Automáticamente, después del &#8220;.&#8221; se abrirá una ventana (ver Imagen) de la que podrás escoger tanto métodos, como manipuladores de eventos o bien atributos.<br /> <br />
Se quiere configurar un manipulador de evento, por lo que debes seleccionar alguno de los elementos que aparezcan con el ícono <img src="http://www.trickyweb.cl/img/tuto_cs/event.png" alt="Evento" />, en este caso se escogerá el evento MouseHover, que hace referencia al posicionamiento del mouse sobre el botón, sin hacer clic. Luego debes escribir lo siguiente:</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1">button1.<span class="me1">MouseHover</span> <span class="sy0">+=</span> <span class="kw3">new</span> EventHandler<span class="br0">&#40;</span>button1_MO<span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Con ello se está creando un nuevo manipulador de eventos, llamado button1_MO , que será un método que coordinará la acción a realizar cuando el mouse esté sobre el botón.<br /> <br />
Luego, basta con crear el método button1_MO (o como tu quieras llamarle):</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">private</span> <span class="kw1">void</span> button1_MO<span class="br0">&#40;</span><span class="kw4">object</span> sender, EventArgs e<span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Ahora, se va a definir una nueva acción a realizar para este MouseHover, que un texto que aparezca en el form, el que tu quieras, cambie a otro luego de poner el mouse sobre el botón.<br /> <br />
Para ello, arrastra un objeto <strong>label</strong> presente en la barra de herramientas de manera análoga a lo que se hizo con el botón y define su propiedad <strong>Text</strong> (ver Imagen).</p>
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/9.png" rel="thumbnail" title="Inserta un nuevo objeto label"><img src="http://www.trickyweb.cl/img/tuto_cs/9.png" width="129" height="96" alt="Inserta un nuevo objeto label" /></a></p>
<p>Luego, vuelve al código de la aplicación y escribe esto dentro del método button1_MO:</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1">label1.<span class="me1">text</span> <span class="sy0">=</span> <span class="st0">&quot;el texto que quieras&quot;</span>;</div>
</li>
</ol>
</div>
<p>En nuestro caso &#8220;el texto que quieras&#8221; será &#8220;Informática &#038; Tecnología&#8221;, con esto se le ordenará a la aplicación, que al posicionar el mouse sobre el botón, el texto del label cambie a &#8220;Informática &#038; Tecnología&#8221;.<br /> <br />
Ahora, puedes volver a debuggear la aplicación y probar los resultados <img src='http://www.trickyweb.cl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p style="margin-bottom:2px"><span style="font-size:12pt;"><strong>¿Cómo recibir y mostrar datos?</strong></span></p>
<p>Esto, a pesar de parecer complejo, es igual de fácil que el resto de elementos, para ingresar datos necesitarás una estructura que permita recibir datos, para ello existe una herramienta llamada <strong>TextBox</strong>, que permite ingresar texto (nada más), el resto dependerá de las órdenes que nosotros entreguemos al código.</p>
<p>Para ello deberás reestructurar el contenido del formulario con el que estás trabajando y será necesario que insertes los siguientes elementos:</p>
<ol>
<li>TextBox</li>
<li>Label</li>
<li>2 Botones</li>
</ol>
<p>El formulario debería quedar algo así:</p>
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/10.png" rel="thumbnail" title="Partir de nuevo..."><img src="http://www.trickyweb.cl/img/tuto_cs/10.png" width="129" height="96" alt="Partir de nuevo..." /></a></p>
<p>Lo que se hará, es una aplicación que reciba la edad de la persona y luego le calcule los días (utópicamente) que debería llevar viva la persona, esto es, si la persona tiene 2 años, entonces lleva vividos 2*365 días.<br /> <br />
Por lo que<br /> <br />
<img style="border:0px;vertical-align:middle;" src='http://l.wordpress.com/latex.php?latex=%5Ctextrm%7BDias+vividos%7D%3D2%2A365&#038;bg=808080&#038;fg=000000'  alt="\textrm{Dias vividos}=2*365" /><br /> <br />
Ahora, haz doble click en el botón y sitúate en el método button1_click y escribe lo siguiente:</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1"><span class="kw4">int</span> edad,dVividos;</div>
</li>
<li class="li1">
<div class="de1">edad <span class="sy0">=</span> Int32.<span class="me1">Parse</span><span class="br0">&#40;</span>textBox1.<span class="me1">Text</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">dVividos <span class="sy0">=</span> edad<span class="sy0">*</span><span class="nu0">365</span>;</div>
</li>
<li class="li1">
<div class="de1">MessageBox.<span class="me1">Show</span><span class="br0">&#40;</span><span class="st0">&quot;La persona ha vivido &quot;</span><span class="sy0">+</span>dVividos<span class="sy0">+</span><span class="st0">&quot; dias&quot;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>Como puedes apreciar, lo anterior no dista mucho al trabajo con funciones y variables locales en C, la gran diferencia, está en la concatenación de cadenas, mientras en C era necesario el uso de la función <strong>strcat</strong>, aquí basta con unir cadenas usando el operador <strong>+</strong>, permitiendo incluso concatenar cadenas con números.<br /> <br />
La otra diferencia, es el uso de la función <strong>Int32.Parse</strong>, que permite de manera sencilla, transformar una cadena en número (considerando que si hay caracteres, el sistema arrojará un error por lo que se hace <strong>necesario</strong> validar el contenido de la cadena).<br /> <br />
Aquí es posible notar que Parse() es un método de la clase Int32.</p>
<p>No te sorprendas si en algún código fuente te encuentras con <strong>System.Windows.Forms</strong>.algo o <strong>System.</strong>algo ya que a veces para evitar confusiones es necesario poner antes del nombre del método o propiedad, o bien de la clase, el namespace al que pertenecen.</p>
<p>Ahora, no olvidemos que se tiene un botón que dice &#8220;Limpiar&#8221;, la función de este botón será sencilla: limpiar el contenido del textBox.<br /> <br />
Para ello, hace doble click en el botón 2, y en el método que controla su evento click escribe lo siguiente:</p>
<div class="geshi no csharp">
<ol>
<li class="li1">
<div class="de1">textBox1.<span class="me1">Text</span> <span class="sy0">=</span> <span class="st0">&quot;&quot;</span>;</div>
</li>
</ol>
</div>
<p>Debuggea la aplicación (ver Imagen) y verás que como se dijo al principio, no era tan dificil! <img src='http://www.trickyweb.cl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . </p>
<p style="text-align:center">
<a href="http://www.trickyweb.cl/img/tuto_cs/11.png" rel="thumbnail" title="Vive!!"><img src="http://www.trickyweb.cl/img/tuto_cs/11.png" width="129" height="96" alt="Vive!!" /></a></p>
<p>Perfecto!! Ahora tenemos nuestra primera aplicación hecha en C#.</p>
<p>Ojalá haya servido este post y alivie las dudas de mucha gente que sé, necesitaba este empujoncito.</p>
<p>Deseas descargar el ejemplo? &#8211; <a href="http://www.trickyweb.cl/downloads/Tutorial_CS.zip">Bájalo acá</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.trickyweb.cl/2009/09/24/c-basico-windows-forms/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Orientación a Objetos &#8211; Parte III</title>
		<link>http://www.trickyweb.cl/2009/09/13/orientacion-a-objetos-parte-iii/</link>
		<comments>http://www.trickyweb.cl/2009/09/13/orientacion-a-objetos-parte-iii/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 21:19:09 +0000</pubDate>
		<dc:creator>Camilo Zambrano Lagos</dc:creator>
				<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[OO]]></category>
		<category><![CDATA[Orientación a Objetos]]></category>

		<guid isPermaLink="false">http://www.trickyweb.cl/?p=191</guid>
		<description><![CDATA[Pido disculpas por la tardanza en la salida de la tercera parte de este post, la semana agitada que concluye hoy no me dejó escribir algo extenso, pero ahora libero lo que es la tercera y última versión de Orientación a Objetos.
En esta parte tercera y final de los fundamentos de la Orientación a Objetos, [...]]]></description>
			<content:encoded><![CDATA[<p>Pido disculpas por la tardanza en la salida de la tercera parte de este post, la semana agitada que concluye hoy no me dejó escribir algo extenso, pero ahora libero lo que es la tercera y última versión de Orientación a Objetos.<br />
En esta parte tercera y final de los fundamentos de la Orientación a Objetos, se tratarán los conceptos planteados al final de la segunda parte, en el punto que trata los propósitos de este paradigma.<br />
<span id="more-191"></span><br />
<span style="font-size:11pt;"><strong>Jerarquía</strong></span><br />
Cuando de jerarquía hablamos, generalmente se viene a la mente del lector el tema del orden y del mando, en la orientación a objetos la definición de este concepto no dista mucho de la convención social aceptada, pero aplicada a las clases.<br />
Tenemos por ejemplo que las entidades se pueden organizar jerárquicamente tal que una clase principal pueda diversificarse en otros tipos de clases derivadas, en donde cada derivación de dicha clase, posee los atributos y métodos tanto de la clase principal, como los suyos propios, esto es lo que se conoce como comúnmente como <strong>herencia</strong>.<br />
Un ejemplo claro de ello son los animales, tenemos que los animales tienen propiedades en común, pero se dividen en clases, partiendo por los invertebrados y los vertebrados, luego, los vertebrados pueden subdividirse en mamíferos,aves, peces, anfibios y reptiles, mientras que los invertebrados pueden subdividirse en otras clases, como los moluscos, artrópodos, medusas, etc, y a su misma vez, por ejemplo, los artrópodos también pueden clasificarse en insectos,arácnidos, entre otros.</p>
<p>Para ello entonces, tendríamos una clase principal, que sería la clase <strong>Animal</strong>, con ciertos atributos y métodos. Luego extenderíamos esta clase agregándole propiedades, en éste caso le agregaremos el atributo de poseer o no esqueleto interno articulado, y así sucesivamente se irán extendiendo clases, hasta que no existan mas sucesiones jerárquicas.</p>
<p>Ésta sucesión jerárquica es posible representarla mediante <strong>árboles de herencia</strong>, en el caso del ejemplo expuesto, el árbol sería el de la imagen que viene a continuación.<br />
<img src="http://trickyweb.cl/img/arbolDeHerencia.png" alt="Arbol de Herencia de la clase Animal" /></p>
<p><span style="font-size:11pt;"><strong>Encapsulamiento</strong></span><br />
Cuando se habla de principio de encapsulamiento, a veces se generan confusiones al intentar entender la idea de este principio, ya que en sí es un poco enredado tal vez entender como se hace presente tal concepto en la cotidianeidad.<br />
El encapsulamiento se refiere a que muchos objetos poseen métodos y atributos que no son visibles a los otros objetos de su entorno, mientras que otros atributos son compartidos abiertamente con estos, dividiendo tales métodos y atributos, en interfaces públicas y privadas.<br />
Un ejemplo claro es una persona, la persona posee atributos como lo son el color de pelo, color de piel, contextura, etc, y métodos tales como hablar, pensar, reir, correr, etc.<br />
Es posible apreciar que la gran mayoría de los atributos y métodos que he mencionado como ejemplo son públicos, porque todo el entorno es capaz de apreciar el color del pelo, el color de piel, la contextura, o bien porque el entorno también puede interactuar con los métodos hablar, reir y correr,es decir, son visibles al entorno.<br />
El único caso que no cumple con la interfaz pública, es el método pensar, ¿porqué? simple, porque al pensar, solo la persona sabe lo que piensa, y la única manera de dar a conocer su pensamiento, es através de un método que permita acceder a tal pensamiento y expresarlo, por ejemplo hablar, uno expone sus pensamientos a través del habla, pero no accede a ellos directamente, a ésta tipo de métodos se le conoce como <strong>método de acceso</strong>.</p>
<p><span style="font-size:11pt;"><strong>Abstracción</strong></span><br />
Éste es un tema ya conocido, se habló bastante sobre la abstracción en la parte 2 de éste tutorial, pero para refrescar un poco la memoria al lector, cuando nos referimos al principio de abstracción estamos hablando de generar un modelo conceptual de objeto através de una representación real de dicho objeto.</p>
<p>Para re-entender mejor el concepto de abstracción, invitamos al lector a echar un vistazo a <a href="http://www.trickyweb.cl/2009/08/29/orientacion-a-objetos-parte-ii-2/">éste enlace</a>.</p>
<p><span style="font-size:11pt;"><strong>Modularidad</strong></span><br />
Éste principio se basa en el paradigma de solución llamado <strong>dividir y conquistar</strong><em> &#8211; divide and conquer -</em> usado frecuentemente para solucionar problemas que en su totalidad son complejos, pero que fragmentandolos es posible obtener una solución efectiva.<br />
Éste principio apunta principalmente a la programación orientada a objetos, ya que al fragmentar el programa en módulos, se permite comprender cabalmente el funcionamiento del sistema completo, a partir del entendimiento de cada una de las partes por separado.</p>
<p>También existen otros principios que complementan aún mas la orientación a objetos, que son fenómenos inherentes que se intentan representar y modelar conceptualmente, estos son el <strong>polimorfismo</strong> y el <strong>paso de mensajes</strong>.</p>
<p><span style="font-size:11pt;"><strong>Polimorfismo</strong></span><br />
Éste principio se basa en que un objeto, a veces presenta diferentes comportamientos según el entorno, el contexto en el que se encuentre, esto será bien entendido por el lector durante el tutorial de POO <em>- por ahora no hay apuro en entenderlo, ya que ejemplificandolo mediante código quedará totalmente entendido -</em> por lo que no se profundizará más en éste tema.</p>
<p><span style="font-size:11pt;"><strong>Paso de mensajes</strong></span><br />
Generalmente cuando se trabaja con un sistema compuesto por objetos en un entorno, en algún momento se debe efectuar un cambio de estado por parte de un objeto, sobre otro, para ello se recurre al paso de mensajes.<br />
La implementación del paso de mensajes en la POO simplemente consiste en que un objeto llame a un método del objeto al que se le realizará el cambio de estado, mientras que en la programación estructurada básicamente es llamar a una función.<br />
Un ejemplo claro del paso de mensajes, teóricamente hablando , es el caso del ataque a antígenos por parte de los anticuerpos que cada persona genera.<br />
Para atacar antígenos <em>- bacterias, virus, cualquier cuerpo extraño que ingrese al organismo -</em> primero éstos deben ser reconocidos por una anticuerpo, quien deja una marca que indica que éste cuerpo extraño debe ser atacado por el sistema inmune <em>- que a su vez está compuesto por otros objetos </em>.</p>
<p>Bueno, aquí finaliza el tutorial, ojalá sea del agrado del lector y sea entendible. Ésto solo es la parte básica de la teoría de la OO, hay más temas a tratar pero prefiero dejarlo para el tutorial de POO ya que los temas que siguen<em> &#8211; como relaciones inter objetos, polimorfismo a cabalidad, etc -</em> es mejor explicarlos mediante código y también porque algunos se escapan de la parte teórica para pasar a la parte de runtime.</p>
<p>Saludos! </p>
]]></content:encoded>
			<wfw:commentRss>http://www.trickyweb.cl/2009/09/13/orientacion-a-objetos-parte-iii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>09-09-09 &#8211; Habemus Rockband Beatles!</title>
		<link>http://www.trickyweb.cl/2009/09/09/09-09-09-habemus-rockband-beatles/</link>
		<comments>http://www.trickyweb.cl/2009/09/09/09-09-09-habemus-rockband-beatles/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 22:40:01 +0000</pubDate>
		<dc:creator>Camilo Zambrano Lagos</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.trickyweb.cl/?p=174</guid>
		<description><![CDATA[Hoy es un día muy especial para los beatlemaníacos - donde me incluyo - ya que , después de haberse cumplido 40 años de haber sido tomada la foto que inmortalizaría por décadas &#8211; y hasta el presente &#8211; a los fab four, la portada del disco Abbey Road, ha sido lanzado probablemente - y [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy es un día muy especial para los beatlemaníacos <em>- donde me incluyo -</em> ya que , después de haberse cumplido 40 años de haber sido tomada la foto que inmortalizaría por décadas &#8211; y hasta el presente &#8211; a los fab four, la portada del disco Abbey Road, ha sido lanzado probablemente <em>- y según mi opinión es totalmente cierto -</em> el mejor tributo al legado dejado por los beatles a la juventud actual y el mejor recuerdo vivo para las juventudes pasadas, si señores, hablo del ansiado (por muchos) <strong>Rockband</strong>, con nada mas y nada menos que la música de <strong>The Beatles.</strong><br />
<img src="http://www.trickyweb.cl/img/abbey.jpg" alt="Abbey Road" style="height:175px;width:250px"/><br />
<span id="more-174"></span><br />
El rockband viene con 45 canciones incluídas, que representa la transición de hits a lo largo de la carrera de los beatles <em> &#8211; ofreciendo la posibilidad de descargar y comprar canciones adicionales ofrecidas en un catálogo online (The rockband music store) -</em> , la particularidad de este juego es que viene con la posibilidad de cantar con tres armonías diferentes <em>- para emular las voces que generalmente complementaban McCartney, Lennon y Harrison</em>.</p>
<p>Abbey Road será lanzado el 20 de octubre del presente año, seguido de Sgt. Pepper&#8217;s Lonely Hearts Club Band en noviembre, y finalmente Revolver en diciembre.<br />
El juego en sí viene con las siguientes 45 canciones<em> &#8211; y los lugares donde son interpretadas-</em>:</p>
<p><strong>Cavern Club (1963):</strong></p>
<ol>
<li>Twist And Shout</li>
<li>Boys</li>
<li>Do you want to know a secret</li>
<li>I saw her standing there</li>
</ol>
<p><strong>Ed Sullivan Theater (1964):</strong></p>
<ol>
<li>I want to hold your hand</li>
<li>Can&#8217;t buy me love</li>
<li>A hard day&#8217;s night</li>
<li>I wanna be your man</li>
</ol>
<p><strong>Shea Stadium (1965):</strong></p>
<ol>
<li>Ticket to ride</li>
<li>I&#8217;m looking through you</li>
<li>Eight days a week</li>
<li>If I needed someone</li>
<li>I feel fine</li>
</ol>
<p><strong>Budokan (1966):</strong></p>
<ol>
<li>Day tripper</li>
<li>And your bird can sing</li>
<li>Drive my car</li>
<li>Taxman</li>
<li>Paperback writer</li>
</ol>
<p><strong>Abbey Road (1966-1967):</strong></p>
<ol>
<li>Yellow Submarine</li>
<li>Sgt. Pepper&#8217;s Lonely Hearts Club Band / With a little help from my friends</li>
<li>Lucy in the sky with diamonds</li>
<li>Getting better</li>
<li>Within you without you / Tomorrow never knows</li>
<li>Good morning good morning</li>
</ol>
<p><strong>Abbey Road (1967-1968):</strong></p>
<ol>
<li>I&#8217;m the walrus</li>
<li>Hello goodbye</li>
<li>Hey bulldog</li>
<li>Back in the USSR</li>
<li>Dear Prudence</li>
<li>
While my guitar gently weeps</li>
</ol>
<p><strong>Abbey Road (1968-1969):</strong></p>
<ol>
<li>Helter Skelter</li>
<li>Revolution</li>
<li>Birthday</li>
<li>Octopus&#8217;s Garden</li>
<li>Something</li>
<li>Come Together</li>
<li>Here comes the sun</li>
</ol>
<p><strong>Rooftop Concert (1969):</strong></p>
<ol>
<li>Dig a pony</li>
<li>I&#8217;ve got a feeling</li>
<li>Don&#8217;t let me down</li>
<li>I me mine</li>
<li>I want you (she&#8217;s so heavy)</li>
<li>Get back</li>
</ol>
<p><strong>Encore:</strong></p>
<ol>
<li>The End</li>
</ol>
<p><img src="http://www.trickyweb.cl/img/beatles2.jpg" alt="Abbey Road" style="height:175px;width:250px"/><br />
Como fue anunciado antes, <em>All you need is love</em> es lanzado hoy, através del LIVE de XboX por tiempo limitado, como un track descargable para el Rockband. Con eso las empresas detrás de este éxito,<br />
beneficiarán a la institución Médicos Sin Fronteras (MSF).</p>
<p>Como muchos ya saben, se ofrecen en conjunto al juego las réplicas de los instrumentos que hicieron famosos a John, Paul, George y Ringo.<br />
<img src="http://www.trickyweb.cl/img/rbb.jpg" alt="Abbey Road" style="height:175px;width:250px"/><br />
El precio ofrecido en Chile es entre aproximadamente 39 y 44 mil pesos, esto sin inclusión de las réplicas, si deseas comprar el juego con las replicas, el precio asciende a más de 100 mil pesos.</p>
<p>Aún asi el juego será compatible con los controles/instrumentos del Rockband, asi como Guitar Hero y  todos los juegos de éste genero autorizados, con sus perifericos y microfonos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trickyweb.cl/2009/09/09/09-09-09-habemus-rockband-beatles/feed/</wfw:commentRss>
		<slash:comments>105</slash:comments>
		</item>
		<item>
		<title>TrickyWeb te invita a opinar!</title>
		<link>http://www.trickyweb.cl/2009/09/08/trickyweb-te-invita-a-opinar/</link>
		<comments>http://www.trickyweb.cl/2009/09/08/trickyweb-te-invita-a-opinar/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 06:25:47 +0000</pubDate>
		<dc:creator>Camilo Zambrano Lagos</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.trickyweb.cl/?p=162</guid>
		<description><![CDATA[Estimados Lectores:

Este post no tiene como objetivo enseñar , más bien es un aviso/noticia.
Nos gustaría partir agradeciendo a los lectores, que nos visitan a diario y que gracias a ello puedo anunciar con gusto, que en los primeros 4 días como trickyweb.cl hemos recibido más de 600 visitas (un logro no menor , y mayor [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Estimados Lectores:<br />
</strong><br />
Este post no tiene como objetivo enseñar , más bien es un aviso/noticia.<br />
Nos gustaría partir agradeciendo a los lectores, que nos visitan a diario y que gracias a ello puedo anunciar con gusto, que en los primeros 4 días como trickyweb.cl hemos recibido más de 600 visitas (un logro no menor , y mayor de lo que esperábamos).<br />
<span id="more-162"></span><br />
Seguido a lo anterior, me gustaría invitarlos a sugerir en este mismo post, algún tema que les interesase apareciera como artículo, tutorial, etc, la idea es satisfacer sus mentes ansiosas y hambrientas de conocimiento, por lo que en éste post ofrecemos la oportunidad de que planteen lo que quieren leer y nosotros redactaremos a su debido tiempo cada tema, bien detallado y bien arreglado, como corresponde.</p>
<p>Espero sigan visitandonos y esperamos las sugerencias ^^!<br />
Saludos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trickyweb.cl/2009/09/08/trickyweb-te-invita-a-opinar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TrickyWeb.cl &#8211; Un nuevo paso</title>
		<link>http://www.trickyweb.cl/2009/09/05/trickyweb-cl-un-nuevo-paso/</link>
		<comments>http://www.trickyweb.cl/2009/09/05/trickyweb-cl-un-nuevo-paso/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 03:11:26 +0000</pubDate>
		<dc:creator>Camilo Zambrano Lagos</dc:creator>
				<category><![CDATA[Noticias]]></category>

		<guid isPermaLink="false">http://www.trickyweb.cl/?p=149</guid>
		<description><![CDATA[Hola!!!, el presente post no es precisamente para mostrar un tutorial o un artículo, es para presentar la noticia que muchos preveían pero nunca pasaba.
Si!, el .cl por fin es realidad, estamos muy felices de presentar esta versión de trickyweb, esperamos las visitas sean cada vez mayores, y nos aseguraremos de que cada uno de [...]]]></description>
			<content:encoded><![CDATA[<p>Hola!!!, el presente post no es precisamente para mostrar un tutorial o un artículo, es para presentar la noticia que muchos preveían pero nunca pasaba.</p>
<p>Si!, el .cl por fin es realidad, estamos muy felices de presentar esta versión de trickyweb, esperamos las visitas sean cada vez mayores, y nos aseguraremos de que cada uno de nuestros  visitantes aprendan y queden satisfechos con lo que ofrecemos!.<br />
<span id="more-149"></span><br />
Hemos añadido nuevas herramientas, como por ejemplo, el del rating a los comentarios, la idea es motivar a los editores mediante la votación a sus posts, ojalá las votaciones sean coherentes y bien utilizadas <img src='http://www.trickyweb.cl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Así mismo, tambien buscamos editores, gente que quiera entregar sus conocimientos a los lectores de una manera entretenida y entendible &#8211; que tanto nosotros como los lectores buscamos &#8211; los interesados pueden enviar un correo a camilo@trickyweb.cl o a leopizarro@trickyweb.cl.</p>
<p>Ah! si, se me olvidaba!!  tambien buscamos diseñadores interesados en crear un logo interesante a TW, los interesados envíen sus creaciones a los correos que ya entregamos arriba, cuando recibamos un número amplio de logos, los postearemos para que elijan .</p>
<p>Saludos y sean bienvenidos a la nueva version de TW!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trickyweb.cl/2009/09/05/trickyweb-cl-un-nuevo-paso/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>C &#8211; C++ &#8211; C#: Cuál es la diferencia?</title>
		<link>http://www.trickyweb.cl/2009/09/02/c-c-c-cual-es-la-diferencia/</link>
		<comments>http://www.trickyweb.cl/2009/09/02/c-c-c-cual-es-la-diferencia/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 02:06:00 +0000</pubDate>
		<dc:creator>Camilo Zambrano Lagos</dc:creator>
				<category><![CDATA[Articulos]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[diferencia]]></category>

		<guid isPermaLink="false">http://trickyweb.webatu.com/?p=140</guid>
		<description><![CDATA[Hola de nuevo!, bueno, el presente post será corto, pero no por eso menos interesante.
Probablemente hayas escuchado muchas veces hablar del lenguaje C,C++,C# y te hayas preguntado ¿Cuál es la diferencia entre uno y otro?¿Cuál debo aprender primero?, ¿Cuál es mejor?.
Bueno, la idea es que al terminar de leer este post, puedas emitir tu propio [...]]]></description>
			<content:encoded><![CDATA[<p>Hola de nuevo!, bueno, el presente post será corto, pero no por eso menos interesante.<br />
Probablemente hayas escuchado muchas veces hablar del lenguaje C,C++,C# y te hayas preguntado ¿Cuál es la diferencia entre uno y otro?¿Cuál debo aprender primero?, ¿Cuál es mejor?.</p>
<p>Bueno, la idea es que al terminar de leer este post, puedas emitir tu propio juicio <em>-ojalá posteandolo através de este medio &#8211; </em> y adquieras mas conocimientos y sepas cuando y con qué trabajar.<br />
<span id="more-140"></span><br />
<strong>¿Qué es C?</strong><br />
C es un lenguaje de programación, debilmente tipificado de medio nivel, con ciertas características de bajo nivel, aunque a pesar de lo anterior, no deja de tener contenidos estructurales de lenguajes de alto nivel.<br />
El tipo de programación que este lenguaje maneja y acepta, es la programación estructurada, ya que por época y por estructura, no implementó ciertos paradigmas de programación.<br />
Este lenguaje está orientado a la implementación de sistemas operativos del tipo Unix.<br />
A pesar de todas las ventajas que ofrece <em>- que no tocaremos en éste topico -</em> tambien posee desventajas considerables en cuanto a implementación y trabajo con memoria <em>- en relación a otros lenguajes actuales &#8211; </em>pero no por eso ha dejado de tomar importancia en la actualidad.</p>
<p><strong>¿Qué es C++?</strong><br />
C++ en pocas palabras, es una extensión del lenguaje C. Es un lenguaje que favorece la orientación a objetos, por lo que al ser creado, se le añadieron características, funcionalidades y ciertas cualidades de las que C carecía.<br />
Lo bueno de este lenguaje &#8211; en comparación con aprender otros lenguajes orientados a objetos &#8211; es que si ya manejas C, este lenguaje debería ocupar poco tiempo en ser aprendido.</p>
<p><strong>¿Qué es C#?</strong><br />
C# es la variante &#8220;mas joven&#8221; de C <em>- presentado por Microsoft el año 2000 en conjunto con la plataforma .NET que muchos ocupan en la actualidad &#8211; </em>, este lenguaje podría tratarse como una mezcla entre C++ y Java <em>- de hecho, es prácticamente una réplica de Java, a opinión del autor de éste artículo -</em>, lo que lo caracteriza, es la capacidad de combinar operadores <em>- característica de C++ -</em> y la posibilidad de trabajar netamente orientado a objetos <em>- como lo es Java.<br />
La particularidad de éste lenguaje, es que es &#8220;tanta&#8221; su orientación a objetos ofrecida, que la misma plataforma está encapsulada en una clase.<br />
Cabe decir que C# está dentro de los lenguajes más utilizados en la actualidad.</p>
<p>Bueno, el post fue bastante corto, lo que se busca, mas que aprender el lenguaje &#8211; eso queda para más adelante &#8211; es que se vea cual es la diferencia entre cada uno y el lector se arme una idea de cuándo, cómo, y que debe conocer para trabajar con cada lenguaje.<br />
Ojalá posteen sus opiniones, espero durante esta semana y la otra tener lista la tercera parte de orientación a objetos.</p>
<p>Saludos!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.trickyweb.cl/2009/09/02/c-c-c-cual-es-la-diferencia/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
